From d4823258187e315eead5a1271907dcc9251cc080 Mon Sep 17 00:00:00 2001 From: DefTruth <31974251+DefTruth@users.noreply.github.com> Date: Mon, 15 Aug 2022 14:21:06 +0800 Subject: [PATCH 01/14] update (#21) * [feature][docs] add prebuilt windows python whl and cpp libs (#113) [feature][docs] add windows python whl and cpp libs * Add ernie ie task (#100) * Modify API Result Docs (#112) * first commit for yolov7 * pybind for yolov7 * CPP README.md * CPP README.md * modified yolov7.cc * README.md * python file modify * delete license in fastdeploy/ * repush the conflict part * README.md modified * README.md modified * file path modified * file path modified * file path modified * file path modified * file path modified * README modified * README modified * move some helpers to private * add examples for yolov7 * api.md modified * api.md modified * api.md modified * YOLOv7 * yolov7 release link * yolov7 release link * yolov7 release link * copyright * change some helpers to private * change variables to const and fix documents. * gitignore * Transfer some funtions to private member of class * Transfer some funtions to private member of class * Merge from develop (#9) * Fix compile problem in different python version (#26) * fix some usage problem in linux * Fix compile problem Co-authored-by: root * Add PaddleDetetion/PPYOLOE model support (#22) * add ppdet/ppyoloe * Add demo code and documents * add convert processor to vision (#27) * update .gitignore * Added checking for cmake include dir * fixed missing trt_backend option bug when init from trt * remove un-need data layout and add pre-check for dtype * changed RGB2BRG to BGR2RGB in ppcls model * add model_zoo yolov6 c++/python demo * fixed CMakeLists.txt typos * update yolov6 cpp/README.md * add yolox c++/pybind and model_zoo demo * move some helpers to private * fixed CMakeLists.txt typos * add normalize with alpha and beta * add version notes for yolov5/yolov6/yolox * add copyright to yolov5.cc * revert normalize * fixed some bugs in yolox * fixed examples/CMakeLists.txt to avoid conflicts * add convert processor to vision * format examples/CMakeLists summary * Fix bug while the inference result is empty with YOLOv5 (#29) * Add multi-label function for yolov5 * Update README.md Update doc * Update fastdeploy_runtime.cc fix variable option.trt_max_shape wrong name * Update runtime_option.md Update resnet model dynamic shape setting name from images to x * Fix bug when inference result boxes are empty * Delete detection.py Co-authored-by: Jason Co-authored-by: root Co-authored-by: DefTruth <31974251+DefTruth@users.noreply.github.com> Co-authored-by: huangjianhui <852142024@qq.com> * first commit for yolor * for merge * Develop (#11) * Fix compile problem in different python version (#26) * fix some usage problem in linux * Fix compile problem Co-authored-by: root * Add PaddleDetetion/PPYOLOE model support (#22) * add ppdet/ppyoloe * Add demo code and documents * add convert processor to vision (#27) * update .gitignore * Added checking for cmake include dir * fixed missing trt_backend option bug when init from trt * remove un-need data layout and add pre-check for dtype * changed RGB2BRG to BGR2RGB in ppcls model * add model_zoo yolov6 c++/python demo * fixed CMakeLists.txt typos * update yolov6 cpp/README.md * add yolox c++/pybind and model_zoo demo * move some helpers to private * fixed CMakeLists.txt typos * add normalize with alpha and beta * add version notes for yolov5/yolov6/yolox * add copyright to yolov5.cc * revert normalize * fixed some bugs in yolox * fixed examples/CMakeLists.txt to avoid conflicts * add convert processor to vision * format examples/CMakeLists summary * Fix bug while the inference result is empty with YOLOv5 (#29) * Add multi-label function for yolov5 * Update README.md Update doc * Update fastdeploy_runtime.cc fix variable option.trt_max_shape wrong name * Update runtime_option.md Update resnet model dynamic shape setting name from images to x * Fix bug when inference result boxes are empty * Delete detection.py Co-authored-by: Jason Co-authored-by: root Co-authored-by: DefTruth <31974251+DefTruth@users.noreply.github.com> Co-authored-by: huangjianhui <852142024@qq.com> * Yolor (#16) * Develop (#11) (#12) * Fix compile problem in different python version (#26) * fix some usage problem in linux * Fix compile problem Co-authored-by: root * Add PaddleDetetion/PPYOLOE model support (#22) * add ppdet/ppyoloe * Add demo code and documents * add convert processor to vision (#27) * update .gitignore * Added checking for cmake include dir * fixed missing trt_backend option bug when init from trt * remove un-need data layout and add pre-check for dtype * changed RGB2BRG to BGR2RGB in ppcls model * add model_zoo yolov6 c++/python demo * fixed CMakeLists.txt typos * update yolov6 cpp/README.md * add yolox c++/pybind and model_zoo demo * move some helpers to private * fixed CMakeLists.txt typos * add normalize with alpha and beta * add version notes for yolov5/yolov6/yolox * add copyright to yolov5.cc * revert normalize * fixed some bugs in yolox * fixed examples/CMakeLists.txt to avoid conflicts * add convert processor to vision * format examples/CMakeLists summary * Fix bug while the inference result is empty with YOLOv5 (#29) * Add multi-label function for yolov5 * Update README.md Update doc * Update fastdeploy_runtime.cc fix variable option.trt_max_shape wrong name * Update runtime_option.md Update resnet model dynamic shape setting name from images to x * Fix bug when inference result boxes are empty * Delete detection.py Co-authored-by: Jason Co-authored-by: root Co-authored-by: DefTruth <31974251+DefTruth@users.noreply.github.com> Co-authored-by: huangjianhui <852142024@qq.com> Co-authored-by: Jason Co-authored-by: root Co-authored-by: DefTruth <31974251+DefTruth@users.noreply.github.com> Co-authored-by: huangjianhui <852142024@qq.com> * Develop (#13) * Fix compile problem in different python version (#26) * fix some usage problem in linux * Fix compile problem Co-authored-by: root * Add PaddleDetetion/PPYOLOE model support (#22) * add ppdet/ppyoloe * Add demo code and documents * add convert processor to vision (#27) * update .gitignore * Added checking for cmake include dir * fixed missing trt_backend option bug when init from trt * remove un-need data layout and add pre-check for dtype * changed RGB2BRG to BGR2RGB in ppcls model * add model_zoo yolov6 c++/python demo * fixed CMakeLists.txt typos * update yolov6 cpp/README.md * add yolox c++/pybind and model_zoo demo * move some helpers to private * fixed CMakeLists.txt typos * add normalize with alpha and beta * add version notes for yolov5/yolov6/yolox * add copyright to yolov5.cc * revert normalize * fixed some bugs in yolox * fixed examples/CMakeLists.txt to avoid conflicts * add convert processor to vision * format examples/CMakeLists summary * Fix bug while the inference result is empty with YOLOv5 (#29) * Add multi-label function for yolov5 * Update README.md Update doc * Update fastdeploy_runtime.cc fix variable option.trt_max_shape wrong name * Update runtime_option.md Update resnet model dynamic shape setting name from images to x * Fix bug when inference result boxes are empty * Delete detection.py Co-authored-by: Jason Co-authored-by: root Co-authored-by: DefTruth <31974251+DefTruth@users.noreply.github.com> Co-authored-by: huangjianhui <852142024@qq.com> * documents * documents * documents * documents * documents * documents * documents * documents * documents * documents * documents * documents * Develop (#14) * Fix compile problem in different python version (#26) * fix some usage problem in linux * Fix compile problem Co-authored-by: root * Add PaddleDetetion/PPYOLOE model support (#22) * add ppdet/ppyoloe * Add demo code and documents * add convert processor to vision (#27) * update .gitignore * Added checking for cmake include dir * fixed missing trt_backend option bug when init from trt * remove un-need data layout and add pre-check for dtype * changed RGB2BRG to BGR2RGB in ppcls model * add model_zoo yolov6 c++/python demo * fixed CMakeLists.txt typos * update yolov6 cpp/README.md * add yolox c++/pybind and model_zoo demo * move some helpers to private * fixed CMakeLists.txt typos * add normalize with alpha and beta * add version notes for yolov5/yolov6/yolox * add copyright to yolov5.cc * revert normalize * fixed some bugs in yolox * fixed examples/CMakeLists.txt to avoid conflicts * add convert processor to vision * format examples/CMakeLists summary * Fix bug while the inference result is empty with YOLOv5 (#29) * Add multi-label function for yolov5 * Update README.md Update doc * Update fastdeploy_runtime.cc fix variable option.trt_max_shape wrong name * Update runtime_option.md Update resnet model dynamic shape setting name from images to x * Fix bug when inference result boxes are empty * Delete detection.py Co-authored-by: root Co-authored-by: DefTruth <31974251+DefTruth@users.noreply.github.com> Co-authored-by: huangjianhui <852142024@qq.com> Co-authored-by: Jason Co-authored-by: root Co-authored-by: DefTruth <31974251+DefTruth@users.noreply.github.com> Co-authored-by: huangjianhui <852142024@qq.com> Co-authored-by: Jason <928090362@qq.com> * add is_dynamic for YOLO series (#22) * first commit test photo * yolov7 doc * yolov7 doc * yolov7 doc * yolov7 doc * add yolov5 docs * modify yolov5 doc * first commit for retinaface * first commit for retinaface * firt commit for ultraface * firt commit for ultraface * firt commit for yolov5face * firt commit for modnet and arcface * firt commit for modnet and arcface * first commit for partial_fc * first commit for partial_fc * first commit for yolox * first commit for yolov6 * first commit for nano_det * first commit for scrfd * first commit for scrfd * first commit for retinaface * first commit for ultraface * first commit for yolov5face * first commit for yolox yolov6 nano * rm jpg * first commit for modnet and modify nano * yolor scaledyolov4 v5lite * first commit for insightface * first commit for insightface * first commit for insightface * docs * docs * docs * docs * docs * add print for detect and modify docs * docs * docs * docs * docs test for insightface * docs test for insightface again * docs test for insightface * modify all wrong expressions in docs * modify all wrong expressions in docs * modify all wrong expressions in docs * modify all wrong expressions in docs * modify docs expressions * fix expression of detection part * fix expression of detection part * fix expression of detection part * add face recognition result doc * modify result docs * modify result docs * modify result docs Co-authored-by: Jason Co-authored-by: root Co-authored-by: DefTruth <31974251+DefTruth@users.noreply.github.com> Co-authored-by: huangjianhui <852142024@qq.com> Co-authored-by: Jason <928090362@qq.com> Co-authored-by: Jack Zhou Co-authored-by: ziqi-jin <67993288+ziqi-jin@users.noreply.github.com> Co-authored-by: Jason Co-authored-by: root Co-authored-by: huangjianhui <852142024@qq.com> Co-authored-by: Jason <928090362@qq.com> --- FastDeploy.cmake.in | 4 + csrc/fastdeploy/core/config.h.in | 8 + docs/api/vision_results/README.md | 5 +- .../vision_results/classification_result.md | 4 +- docs/api/vision_results/detection_result.md | 6 +- .../vision_results/face_detection_result.md | 8 +- .../vision_results/face_recognition_result.md | 24 +++ docs/api/vision_results/matting_result.md | 10 +- docs/compile/prebuilt_libraries.md | 10 +- docs/compile/prebuilt_wheels.md | 11 +- .../ernie/cpp/CMakeLists.txt | 25 +++ .../information_extraction/ernie/cpp/infer.cc | 182 ++++++++++++++++++ examples/vision/README.md | 1 + 13 files changed, 274 insertions(+), 24 deletions(-) create mode 100644 docs/api/vision_results/face_recognition_result.md create mode 100644 examples/text/information_extraction/ernie/cpp/CMakeLists.txt create mode 100644 examples/text/information_extraction/ernie/cpp/infer.cc diff --git a/FastDeploy.cmake.in b/FastDeploy.cmake.in index 082fa30f30b..ccd1039be29 100644 --- a/FastDeploy.cmake.in +++ b/FastDeploy.cmake.in @@ -95,6 +95,10 @@ endif() if (ENABLE_TEXT) # Add dependency libs later + find_library(FASTER_TOKENIZER_LIB core_tokenizers ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/faster_tokenizer/lib NO_DEFAULT_PATH) + list(APPEND FASTDEPLOY_LIBS ${FASTER_TOKENIZER_LIB}) + list(APPEND FASTDEPLOY_INCS ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/faster_tokenizer/include) + list(APPEND FASTDEPLOY_INCS ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/faster_tokenizer/third_party/include) endif() if(ENABLE_PADDLE_FRONTEND) diff --git a/csrc/fastdeploy/core/config.h.in b/csrc/fastdeploy/core/config.h.in index 7713925867a..b29113f1fdb 100644 --- a/csrc/fastdeploy/core/config.h.in +++ b/csrc/fastdeploy/core/config.h.in @@ -45,6 +45,10 @@ #cmakedefine ENABLE_VISION #endif +#ifndef ENABLE_TEXT +#cmakedefine ENABLE_TEXT +#endif + #ifndef ENABLE_OPENCV_CUDA #cmakedefine ENABLE_OPENCV_CUDA #endif @@ -52,3 +56,7 @@ #ifndef ENABLE_VISION_VISUALIZE #cmakedefine ENABLE_VISION_VISUALIZE #endif + +#ifndef ENABLE_FDTENSOR_FUNC +#cmakedefine ENABLE_FDTENSOR_FUNC +#endif diff --git a/docs/api/vision_results/README.md b/docs/api/vision_results/README.md index 844388cca86..64ea4fc671b 100644 --- a/docs/api/vision_results/README.md +++ b/docs/api/vision_results/README.md @@ -6,5 +6,6 @@ FastDeploy根据视觉模型的任务类型,定义了不同的结构体(`csrcs | :----- | :--- | :---- | :------- | | ClassificationResult | [C++/Python文档](./classification_result.md) | 图像分类返回结果 | ResNet50、MobileNetV3等 | | DetectionResult | [C++/Python文档](./detection_result.md) | 目标检测返回结果 | PPYOLOE、YOLOv7系列模型等 | -| FaceDetectionResult | [C++/Python文档](./face_detection_result.md) | 目标检测返回结果 | PPYOLOE、YOLOv7系列模型等 | -| MattingResult | [C++/Python文档](./matting_result.md) | 目标检测返回结果 | PPYOLOE、YOLOv7系列模型等 | +| FaceDetectionResult | [C++/Python文档](./face_detection_result.md) | 目标检测返回结果 | SCRFD、RetinaFace系列模型等 | +| FaceRecognitionResult | [C++/Python文档](./face_recognition_result.md) | 目标检测返回结果 | ArcFace、CosFace系列模型等 | +| MattingResult | [C++/Python文档](./matting_result.md) | 目标检测返回结果 | MODNet系列模型等 | diff --git a/docs/api/vision_results/classification_result.md b/docs/api/vision_results/classification_result.md index 113db39608a..bf94d0ff159 100644 --- a/docs/api/vision_results/classification_result.md +++ b/docs/api/vision_results/classification_result.md @@ -2,7 +2,7 @@ ClassifyResult代码定义在`csrcs/fastdeploy/vision/common/result.h`中,用于表明图像的分类结果和置信度。 -## C++ 结构体 +## C++ 定义 `fastdeploy::vision::ClassifyResult` @@ -20,7 +20,7 @@ struct ClassifyResult { - **Clear()**: 成员函数,用于清除结构体中存储的结果 - **Str()**: 成员函数,将结构体中的信息以字符串形式输出(用于Debug) -## Python结构体 +## Python 定义 `fastdeploy.vision.ClassifyResult` diff --git a/docs/api/vision_results/detection_result.md b/docs/api/vision_results/detection_result.md index e44a27b34c3..a702d49899f 100644 --- a/docs/api/vision_results/detection_result.md +++ b/docs/api/vision_results/detection_result.md @@ -2,7 +2,7 @@ DetectionResult代码定义在`csrcs/fastdeploy/vision/common/result.h`中,用于表明图像检测出来的目标框、目标类别和目标置信度。 -## C++ 结构体 +## C++ 定义 `fastdeploy::vision::DetectionResult` @@ -22,10 +22,10 @@ struct DetectionResult { - **Clear()**: 成员函数,用于清除结构体中存储的结果 - **Str()**: 成员函数,将结构体中的信息以字符串形式输出(用于Debug) -## Python结构体 +## Python 定义 `fastdeploy.vision.DetectionResult` - **boxes**(list of list(float)): 成员变量,表示单张图片检测出来的所有目标框坐标。boxes是一个list,其每个元素为一个长度为4的list, 表示为一个框,每个框以4个float数值依次表示xmin, ymin, xmax, ymax, 即左上角和右下角坐标 - **scores**(list of float): 成员变量,表示单张图片检测出来的所有目标置信度 -- **label_ids(list of int): 成员变量,表示单张图片检测出来的所有目标类别 +- **label_ids**(list of int): 成员变量,表示单张图片检测出来的所有目标类别 diff --git a/docs/api/vision_results/face_detection_result.md b/docs/api/vision_results/face_detection_result.md index 6c9c09f0073..000b42a6be0 100644 --- a/docs/api/vision_results/face_detection_result.md +++ b/docs/api/vision_results/face_detection_result.md @@ -1,8 +1,8 @@ # FaceDetectionResult 人脸检测结果 -FaceDetectionResult 代码定义在`csrcs/fastdeploy/vision/common/result.h`中,用于表明图像检测出来的目标框、目标类别和目标置信度。 +FaceDetectionResult 代码定义在`csrcs/fastdeploy/vision/common/result.h`中,用于表明人脸检测出来的目标框、人脸landmarks,目标置信度和每张人脸的landmark数量。 -## C++ 结构体 +## C++ 定义 `fastdeploy::vision::FaceDetectionResult` @@ -11,7 +11,6 @@ struct FaceDetectionResult { std::vector> boxes; std::vector> landmarks; std::vector scores; - ResultType type = ResultType::FACE_DETECTION; int landmarks_per_face; void Clear(); std::string Str(); @@ -25,10 +24,11 @@ struct FaceDetectionResult { - **Clear()**: 成员函数,用于清除结构体中存储的结果 - **Str()**: 成员函数,将结构体中的信息以字符串形式输出(用于Debug) -## Python结构体 +## Python 定义 `fastdeploy.vision.FaceDetectionResult` - **boxes**(list of list(float)): 成员变量,表示单张图片检测出来的所有目标框坐标。boxes是一个list,其每个元素为一个长度为4的list, 表示为一个框,每个框以4个float数值依次表示xmin, ymin, xmax, ymax, 即左上角和右下角坐标 - **scores**(list of float): 成员变量,表示单张图片检测出来的所有目标置信度 - **landmarks**: 成员变量,表示单张图片检测出来的所有人脸的关键点 +- **landmarks_per_face**: 成员变量,表示每个人脸框中的关键点的数量。 diff --git a/docs/api/vision_results/face_recognition_result.md b/docs/api/vision_results/face_recognition_result.md new file mode 100644 index 00000000000..83160561843 --- /dev/null +++ b/docs/api/vision_results/face_recognition_result.md @@ -0,0 +1,24 @@ +# FaceRecognitionResult 人脸识别结果 + +FaceRecognitionResult 代码定义在`csrcs/fastdeploy/vision/common/result.h`中,用于表明人脸识别模型对图像特征的embedding。 +## C++ 定义 + +`fastdeploy::vision::FaceRecognitionResult` + +``` +struct FaceRecognitionResult { + std::vector embedding; + void Clear(); + std::string Str(); +}; +``` + +- **embedding**: 成员变量,表示人脸识别模型最终的提取的特征embedding,可以用来计算人脸之间的特征相似度。 +- **Clear()**: 成员函数,用于清除结构体中存储的结果 +- **Str()**: 成员函数,将结构体中的信息以字符串形式输出(用于Debug) + +## Python 定义 + +`fastdeploy.vision.FaceRecognitionResult` + +- **embedding**: 成员变量,表示人脸识别模型最终提取的特征embedding,可以用来计算人脸之间的特征相似度。 diff --git a/docs/api/vision_results/matting_result.md b/docs/api/vision_results/matting_result.md index 3418400ecaa..67bcbc79d21 100644 --- a/docs/api/vision_results/matting_result.md +++ b/docs/api/vision_results/matting_result.md @@ -1,15 +1,15 @@ # MattingResult 抠图结果 -MattingResult 代码定义在`csrcs/fastdeploy/vision/common/result.h`中,用于表明图像检测出来的目标框、目标类别和目标置信度。 +MattingResult 代码定义在`csrcs/fastdeploy/vision/common/result.h`中,用于表明模型预测的alpha透明度的值,预测的前景等。 -## C++ 结构体 +## C++ 定义 `fastdeploy::vision::MattingResult` ``` struct MattingResult { - std::vector alpha; // h x w - std::vector foreground; // h x w x c (c=3 default) + std::vector alpha; + std::vector foreground; std::vector shape; bool contain_foreground = false; void Clear(); @@ -25,7 +25,7 @@ struct MattingResult { - **Str()**: 成员函数,将结构体中的信息以字符串形式输出(用于Debug) -## Python结构体 +## Python 定义 `fastdeploy.vision.MattingResult` diff --git a/docs/compile/prebuilt_libraries.md b/docs/compile/prebuilt_libraries.md index 6cec3721acd..bd58fc4b0b8 100644 --- a/docs/compile/prebuilt_libraries.md +++ b/docs/compile/prebuilt_libraries.md @@ -19,17 +19,17 @@ FastDeploy提供了在Windows/Linux/Mac上的预先编译CPP部署库,开发 ### Windows 10 x64平台 -| 部署库下载地址 | 硬件 | -| :------------- | :--- | -| [comming...] | CPU | -| [comming...] | CPU/GPU | +| 部署库下载地址 | 硬件 | 说明 | +| :------------- | :--- | :--- | +| [fastdeploy-win-x64-0.2.0](https://bj.bcebos.com/paddlehub/fastdeploy/cpp/fastdeploy-win-x64-0.2.0.zip) | CPU | Visual Studio 16 2019 编译产出 | +| [fastdeploy-win-x64-gpu-0.2.0](https://bj.bcebos.com/paddlehub/fastdeploy/cpp/fastdeploy-win-x64-gpu-0.2.0.zip) | CPU/GPU | Visual Studio 16 2019,cuda 11.2, cudnn 8.2编译产出 | ### Linux aarch64平台 | 安装包 | 硬件 | | :---- | :-- | | [comming...] | CPU | -| [comming...] | Jetson | +| [comming...] | Jetson | ### Mac OSX平台 diff --git a/docs/compile/prebuilt_wheels.md b/docs/compile/prebuilt_wheels.md index 14ba7d40044..e3ada892e11 100644 --- a/docs/compile/prebuilt_wheels.md +++ b/docs/compile/prebuilt_wheels.md @@ -38,15 +38,20 @@ python -m pip install fastdeploy_python-0.2.0-cp38-cp38-manylinux1_x86_64.whl | CPU 安装包 | 硬件 | Python版本 | | :---- | :-- | :------ | -| [comming...] | CPU | 3.8 | -| [comming...] | CPU | 3.9 | +| [fastdeploy_python-0.2.0-cp38-cp38-win_amd64.whl](https://bj.bcebos.com/paddlehub/fastdeploy/wheels/fastdeploy_python-0.2.0-cp38-cp38-win_amd64.whl) | CPU | 3.8 | +| [fastdeploy_python-0.2.0-cp39-cp39-win_amd64.whl](https://bj.bcebos.com/paddlehub/fastdeploy/wheels/fastdeploy_python-0.2.0-cp39-cp39-win_amd64.whl) | CPU | 3.9 | + +| GPU 安装包 | 硬件 | Python版本 | +| :---- | :-- | :------ | +| [fastdeploy_gpu_python-0.2.0-cp38-cp38-win_amd64.whl](https://bj.bcebos.com/paddlehub/fastdeploy/wheels/fastdeploy_gpu_python-0.2.0-cp38-cp38-win_amd64.whl) | CPU/GPU | 3.8 | +| [fastdeploy_gpu_python-0.2.0-cp39-cp39-win_amd64.whl](https://bj.bcebos.com/paddlehub/fastdeploy/wheels/fastdeploy_gpu_python-0.2.0-cp39-cp39-win_amd64.whl) | CPU/GPU | 3.9 | ### Linux aarch64平台 | 安装包 | 硬件 | Python版本 | | :---- | :-- | :------ | | [comming...] | CPU | 3.7 | -| [comming...] | CPU | 3.8 | +| [comming...] | CPU | 3.8 | | [comming...] | CPU | 3.9 | ### Mac OSX平台 diff --git a/examples/text/information_extraction/ernie/cpp/CMakeLists.txt b/examples/text/information_extraction/ernie/cpp/CMakeLists.txt new file mode 100644 index 00000000000..1189820cb79 --- /dev/null +++ b/examples/text/information_extraction/ernie/cpp/CMakeLists.txt @@ -0,0 +1,25 @@ +# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +PROJECT(infer_demo C CXX) +CMAKE_MINIMUM_REQUIRED (VERSION 3.12) + +option(FASTDEPLOY_INSTALL_DIR "Path of downloaded fastdeploy sdk.") + +include(${FASTDEPLOY_INSTALL_DIR}/FastDeploy.cmake) + +include_directories(${FASTDEPLOY_INCS}) + +add_executable(infer_ernie_demo ${PROJECT_SOURCE_DIR}/infer.cc) +target_link_libraries(infer_ernie_demo ${FASTDEPLOY_LIBS}) diff --git a/examples/text/information_extraction/ernie/cpp/infer.cc b/examples/text/information_extraction/ernie/cpp/infer.cc new file mode 100644 index 00000000000..7f3b9318664 --- /dev/null +++ b/examples/text/information_extraction/ernie/cpp/infer.cc @@ -0,0 +1,182 @@ +// Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +#include +#include + +#include "fastdeploy/function/reduce.h" +#include "fastdeploy/function/softmax.h" +#include "fastdeploy/text.h" +#include "tokenizers/ernie_faster_tokenizer.h" + +using namespace paddlenlp; + +void LoadTransitionFromFile(const std::string& file, + std::vector* transitions, int* num_tags) { + std::ifstream fin(file); + std::string curr_transition; + float transition; + int i = 0; + while (fin) { + std::getline(fin, curr_transition); + std::istringstream iss(curr_transition); + while (iss) { + iss >> transition; + transitions->push_back(transition); + } + if (curr_transition != "") { + ++i; + } + } + *num_tags = i; +} + +template +void ViterbiDecode(const fastdeploy::FDTensor& slot_logits, + const fastdeploy::FDTensor& trans, + fastdeploy::FDTensor* best_path) { + int batch_size = slot_logits.shape[0]; + int seq_len = slot_logits.shape[1]; + int num_tags = slot_logits.shape[2]; + best_path->Allocate({batch_size, seq_len}, fastdeploy::FDDataType::INT64); + + const T* slot_logits_ptr = reinterpret_cast(slot_logits.Data()); + const T* trans_ptr = reinterpret_cast(trans.Data()); + int64_t* best_path_ptr = reinterpret_cast(best_path->Data()); + std::vector scores(num_tags); + std::copy(slot_logits_ptr, slot_logits_ptr + num_tags, scores.begin()); + std::vector> M(num_tags, std::vector(num_tags)); + for (int b = 0; b < batch_size; ++b) { + std::vector> paths; + const T* curr_slot_logits_ptr = slot_logits_ptr + b * seq_len * num_tags; + int64_t* curr_best_path_ptr = best_path_ptr + b * seq_len; + for (int t = 1; t < seq_len; t++) { + for (size_t i = 0; i < num_tags; i++) { + for (size_t j = 0; j < num_tags; j++) { + auto trans_idx = i * num_tags * num_tags + j * num_tags; + auto slot_logit_idx = t * num_tags + j; + M[i][j] = scores[i] + trans_ptr[trans_idx] + + curr_slot_logits_ptr[slot_logit_idx]; + } + } + std::vector idxs; + for (size_t i = 0; i < num_tags; i++) { + T max = 0.0f; + int idx = 0; + for (size_t j = 0; j < num_tags; j++) { + if (M[j][i] > max) { + max = M[j][i]; + idx = j; + } + } + scores[i] = max; + idxs.push_back(idx); + } + paths.push_back(idxs); + } + int scores_max_index = 0; + float scores_max = 0.0f; + for (size_t i = 0; i < scores.size(); i++) { + if (scores[i] > scores_max) { + scores_max = scores[i]; + scores_max_index = i; + } + } + curr_best_path_ptr[seq_len - 1] = scores_max_index; + for (int i = seq_len - 2; i >= 0; i--) { + int index = curr_best_path_ptr[i + 1]; + curr_best_path_ptr[i] = paths[i][index]; + } + } +} + +int main() { + // 1. Define a ernie faster tokenizer + faster_tokenizer::tokenizers_impl::ErnieFasterTokenizer tokenizer( + "ernie_vocab.txt"); + std::vector strings_list = { + "导航去科技园二号楼", "屏幕亮度为我减小一点吧"}; + std::vector encodings; + tokenizer.EncodeBatchStrings(strings_list, &encodings); + size_t batch_size = strings_list.size(); + size_t seq_len = encodings[0].GetLen(); + for (auto&& encoding : encodings) { + std::cout << encoding.DebugString() << std::endl; + } + // 2. Initialize runtime + fastdeploy::RuntimeOption runtime_option; + runtime_option.SetModelPath("nano_static/model.pdmodel", + "nano_static/model.pdiparams"); + fastdeploy::Runtime runtime; + runtime.Init(runtime_option); + + // 3. Construct input vector + // 3.1 Convert encodings to input_ids, token_type_ids + std::vector input_ids, token_type_ids; + for (int i = 0; i < encodings.size(); ++i) { + auto&& curr_input_ids = encodings[i].GetIds(); + auto&& curr_type_ids = encodings[i].GetTypeIds(); + input_ids.insert(input_ids.end(), curr_input_ids.begin(), + curr_input_ids.end()); + token_type_ids.insert(token_type_ids.end(), curr_type_ids.begin(), + curr_type_ids.end()); + } + // 3.2 Set data to input vector + std::vector inputs(runtime.NumInputs()); + void* inputs_ptrs[] = {input_ids.data(), token_type_ids.data()}; + for (int i = 0; i < runtime.NumInputs(); ++i) { + inputs[i].SetExternalData({batch_size, seq_len}, + fastdeploy::FDDataType::INT64, inputs_ptrs[i]); + inputs[i].name = runtime.GetInputInfo(i).name; + } + + // 4. Infer + std::vector outputs(runtime.NumOutputs()); + runtime.Infer(inputs, &outputs); + + // 5. Postprocess + fastdeploy::FDTensor domain_probs, intent_probs; + fastdeploy::Softmax(outputs[0], &domain_probs); + fastdeploy::Softmax(outputs[1], &intent_probs); + + fastdeploy::FDTensor domain_max_probs, intent_max_probs; + fastdeploy::Max(domain_probs, &domain_max_probs, {-1}, true); + fastdeploy::Max(intent_probs, &intent_max_probs, {-1}, true); + + std::vector transition; + int num_tags; + LoadTransitionFromFile("joint_transition.txt", &transition, &num_tags); + fastdeploy::FDTensor trans; + trans.SetExternalData({num_tags, num_tags}, fastdeploy::FDDataType::FP32, + transition.data()); + + fastdeploy::FDTensor best_path; + ViterbiDecode(outputs[2], trans, &best_path); + // 6. Print result + domain_max_probs.PrintInfo(); + intent_max_probs.PrintInfo(); + + batch_size = best_path.shape[0]; + seq_len = best_path.shape[1]; + const int64_t* best_path_ptr = + reinterpret_cast(best_path.Data()); + for (int i = 0; i < batch_size; ++i) { + std::cout << "best_path[" << i << "] = "; + for (int j = 0; j < seq_len; ++j) { + std::cout << best_path_ptr[i * seq_len + j] << ", "; + } + std::cout << std::endl; + } + best_path.PrintInfo(); + return 0; +} diff --git a/examples/vision/README.md b/examples/vision/README.md index 9f05d2d7f6d..d95a315d798 100644 --- a/examples/vision/README.md +++ b/examples/vision/README.md @@ -8,6 +8,7 @@ | Segmentation | 语义分割,输入图像,给出图像中每个像素的分类及置信度 | [SegmentationResult](../../docs/api/vision_results/segmentation_result.md) | | Classification | 图像分类,输入图像,给出图像的分类结果和置信度 | [ClassifyResult](../../docs/api/vision_results/classification_result.md) | | FaceDetection | 人脸检测,输入图像,检测图像中人脸位置,并返回检测框坐标及人脸关键点 | [FaceDetectionResult](../../docs/api/vision_results/face_detection_result.md) | +| FaceRecognition | 人脸识别,输入图像,返回可用于相似度计算的人脸特征的embedding | [FaceRecognitionResult](../../docs/api/vision_results/face_recognition_result.md) | | Matting | 抠图,输入图像,返回图片的前景每个像素点的Alpha值 | [MattingResult](../../docs/api/vision_results/matting_result.md) | ## FastDeploy API设计 From 8d3e7d4d1929a9e23f70f7bc546be8b3fa1b753c Mon Sep 17 00:00:00 2001 From: DefTruth Date: Mon, 15 Aug 2022 08:51:26 +0000 Subject: [PATCH 02/14] [feature][docs] update README.md and logo --- README.md | 261 ++++++++++++++++++----------- docs/compile/prebuilt_libraries.md | 2 +- docs/logo/fastdeploy-logo.png | Bin 0 -> 133793 bytes 3 files changed, 167 insertions(+), 96 deletions(-) create mode 100644 docs/logo/fastdeploy-logo.png diff --git a/README.md b/README.md index 5619db16009..77256586273 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,7 @@ -# ⚡️FastDeploy +![⚡️FastDeploy](docs/logo/fastdeploy-logo.png)

------------------------------------------------------------------------------------------- -

@@ -18,75 +16,142 @@ **⚡️FastDeploy**是一款**简单易用**的推理部署工具箱。覆盖业界主流**优质预训练模型**并提供**开箱即用**的开发体验,包括图像分类、目标检测、图像分割、人脸检测、人体关键点识别、文字识别等多任务,满足开发者**多场景**,**多硬件**、**多平台**的快速部署需求。 -## 发版历史 +## 0. 发版历史 - [v0.2.0] 2022.08.18 全面开源服务端部署代码,支持40+视觉模型在CPU/GPU,以及通过GPU TensorRT加速部署 -## 服务端模型 - -| 任务场景 | 模型 | CPU | NVIDIA GPU | TensorRT | -| -------- | ------------------------------------------------------------ | ------- | ---------- | ------------------- | -| 图像分类 | [PaddleClas/ResNet50](./examples/vision/classification/paddleclas) | √ | √ | √ | -| | [PaddleClas/PPLCNet](./examples/vision/classification/paddleclas) | √ | √ | √ | -| | [PaddleClas/EfficientNet](./examples/vision/classification/paddleclas) | √ | √ | √ | -| | [PaddleClas/GhostNet](./examples/vision/classification/paddleclas) | √ | √ | √ | -| | [PaddleClas/MobileNetV1](./examples/vision/classification/paddleclas) | √ | √ | √ | -| | [PaddleClas/MobileNetV2](./examples/vision/classification/paddleclas) | √ | √ | √ | -| | [PaddleClas/ShuffleNetV2](./examples/vision/classification/paddleclas) | √ | √ | √ | -| 目标检测 | [PaddleDetection/PPYOLOE](./examples/vision/detection/paddledetection) | √ | √ | √ | -| | [PaddleDetection/PicoDet](./examples/vision/detection/paddledetection) | √ | √ | √ | -| | [PaddleDetection/YOLOX](./examples/vision/detection/paddledetection) | √ | √ | √ | -| | [PaddleDetection/YOLOv3](./examples/vision/detection/paddledetection) | √ | √ | √ | -| | [PaddleDetection/PPYOLO](./examples/vision/detection/paddledetection) | √ | √ | - | -| | [PaddleDetection/PPYOLOv2](./examples/vision/detection/paddledetection) | √ | √ | - | -| | [PaddleDetection/FasterRCNN](./examples/vision/detection/paddledetection) | √ | √ | - | -| | [WongKinYiu/YOLOv7](./examples/vision/detection/yolov7) | √ | √ | √ | - -## 快速开始 - -#### 安装FastDeploy Python - +## 1. 内容目录 +* [服务端模型列表](#fastdeploy-server-models) +* [服务端快速开始](#fastdeploy-quick-start) + * [Python预测示例](#fastdeploy-quick-start-python) + * [C++预测示例](#fastdeploy-quick-start-cpp) +* [更多服务端部署示例](#fastdeploy-server-cases) +* [轻量化SDK快速实现端侧AI推理部署](#fastdeploy-edge-sdk) + * [边缘侧部署](#fastdeploy-edge-sdk-arm-linux) + * [移动端部署](#fastdeploy-edge-sdk-ios-android) + * [自定义模型部署](#fastdeploy-edge-sdk-custom) +* [社区交流](#fastdeploy-community) +* [Acknowledge](#fastdeploy-acknowledge) +* [License](#fastdeploy-license) +## 2. 服务端模型列表 + +

+ +符号说明: (1) √: 已经支持, (2) ?: 待详细测试, (3) -: 暂不支持, (4) contrib: 非飞桨生态模型 +| 任务场景 | 模型 | API | CPU | NVIDIA GPU | Paddle Inference | TensorRT | ORT | +| -------- | ------------------------------------------------------------ | ------- | ------- | ---------- | ---------| ---------| ---------| +| 图像分类 | [PaddleClas/ResNet50](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/PPLCNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/PPLCNetv2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/EfficientNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/GhostNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/MobileNetV1](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/MobileNetV2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/MobileNetV3](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/ShuffleNetV2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/SqueeezeNetV1.1](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/Inceptionv3](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/PP-HGNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/SwinTransformer](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 目标检测 | [PaddleDetection/PPYOLOE](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | √ | ? | +| 目标检测 | [PaddleDetection/PicoDet](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | √ | ? | +| 目标检测 | [PaddleDetection/YOLOX](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | √ | ? | +| 目标检测 | [PaddleDetection/YOLOv3](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | √ | ? | +| 目标检测 | [PaddleDetection/PPYOLO](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | - | ? | +| 目标检测 | [PaddleDetection/PPYOLOv2](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | - | ? | +| 目标检测 | [PaddleDetection/FasterRCNN](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | - | ? | +| 目标检测 | [Contrib/YOLOX](./examples/vision/detection/yolox) | [Python](./examples/vision/detection/yolox/python)/[C++](./examples/vision/detection/yolox/cpp) | √ | √ | ? | √ | √ | +| 目标检测 | [Contrib/YOLOv7](./examples/vision/detection/yolov7) | [Python](./examples/vision/detection/yolov7/python)/[C++](./examples/vision/detection/yolov7/cpp) | √ | √ | ? | √ |√ | +| 目标检测 | [Contrib/YOLOv6](./examples/vision/detection/yolov6) | [Python](./examples/vision/detection/yolov6/python)/[C++](./examples/vision/detection/yolov6/cpp) | √ | √ | ? | √ |√ | +| 目标检测 | [Contrib/YOLOv5](./examples/vision/detection/yolov5) | [Python](./examples/vision/detection/yolov5/python)/[C++](./examples/vision/detection/yolov5/cpp) | √ | √ | ? | √ |√ | +| 目标检测 | [Contrib/YOLOR](./examples/vision/detection/yolor) | [Python](./examples/vision/detection/yolor/python)/[C++](./examples/vision/detection/yolor/cpp) | √ | √ | ? |√ | √ | +| 目标检测 | [Contrib/ScaledYOLOv4](./examples/vision/detection/scaledyolov4) | [Python](./examples/vision/detection/scaledyolov4/python)/[C++](./examples/vision/detection/scaledyolov4/cpp) | √ | √ | ? | √ | √ | +| 目标检测 | [Contrib/YOLOv5-Lite](./examples/vision/detection/yolov5lite) | [Python](./examples/vision/detection/yolov5lite/python)/[C++](./examples/vision/detection/yolov5lite/cpp) | √ | √ | ? | √ | √ | +| 目标检测 | [Contrib/NanoDet-Plus](./examples/vision/detection/nanodet_plus) | [Python](./examples/vision/detection/nanodet_plus/python)/[C++](./examples/vision/detection/nanodet_plus/cpp) | √ | √ | ? | √ | √ | +| 图像/人像分割 | [PaddleSeg/PP-LiteSeg](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ | √ | ? | +| 图像/人像分割 | [PaddleSeg/PP-HumanSeg-Lite](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ | √ | ? | +| 图像/人像分割 | [PaddleSeg/PP-HumanSeg-Lite](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | +| 图像/人像分割 | [PaddleSeg/HRNet-w18](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | ? | +| 图像/人像分割 | [PaddleSeg/PP-HumanSeg-Server](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | +| 图像/人像分割 | [PaddleSeg/Unet](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | +| 图像/人像分割 | [PaddleSeg/Deeplabv3-ResNet50](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | +| 人脸检测 | [Contrib/RetinaFace](./examples/vision/facedet/retinaface) | [Python](./examples/vision/facedet/retinaface/python)/[C++](./examples/vision/facedet/retinaface/cpp) | √ | √ | ? | √ | √ | +| 人脸检测 | [Contrib/UltraFace](./examples/vision/facedet/utltraface) | [Python](./examples/vision/facedet/utltraface/python)/[C++](./examples/vision/facedet/utltraface/cpp) | √ | √ | ? |√ | √ | +| 人脸检测 | [Contrib/YOLOv5Face](./examples/vision/facedet/yolov5face) | [Python](./examples/vision/facedet/yolov5face/python)/[C++](./examples/vision/facedet/yolov5face/cpp) | √ | √ | ? |√ | √ | +| 人脸检测 | [Contrib/SCRFD](./examples/vision/facedet/scrfd) | [Python](./examples/vision/facedet/scrfd/python)/[C++](./examples/vision/facedet/scrfd/cpp) | √ | √ | ? | √ | √ | +| 人脸识别 | [Contrib/ArcFace](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | √ | √ | ? |√ | √ | +| 人脸识别 | [Contrib/CosFace](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | √ | √ | ? |√ | √ | +| 人脸识别 | [Contrib/PartialFC](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | √ | √ | ? |√ | √ | +| 人脸识别 | [Contrib/VPL](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | √ | √ | ? |√ | √ | +| 人像抠图 | [Contrib/MODNet](./examples/vision/matting/modnet) | [Python](./examples/vision/matting/modnet/python)/[C++](./examples/vision/matting/modnet/cpp) | √ | √ | ? | √ | √ | + + +## 3. 服务端快速开始 +
+ +
+💡 安装FastDeploy Python/C++ 用户根据开发环境选择安装版本,更多安装环境参考[安装文档](docs/quick_start/install.md). -``` +```bash pip install https://bj.bcebos.com/paddlehub/fastdeploy/wheels/fastdeploy_python-0.2.0-cp38-cp38-manylinux1_x86_64.whl ``` - -准备目标检测模型和测试图片 +或获取C++预编译库,更多可用的预编译库请参考[C++预编译库下载](docs/compile/prebuilt_libraries.md) +```bash +wget https://bj.bcebos.com/paddlehub/fastdeploy/cpp/fastdeploy-linux-x64-0.2.0.tgz ``` +准备目标检测模型和测试图片 +```bash wget https://bj.bcebos.com/paddlehub/fastdeploy/ppyoloe_crn_l_300e_coco.tgz tar xvf ppyoloe_crn_l_300e_coco.tgz wget https://gitee.com/paddlepaddle/PaddleDetection/raw/release/2.4/demo/000000014439.jpg ``` +
-加载模型预测 -``` -import fastdeploy.vision as vis +### 3.1 Python预测示例 +
+ +```python import cv2 +import fastdeploy.vision as vision -model = vis.detection.PPYOLOE("ppyoloe_crn_l_300e_coco/model.pdmodel", - "ppyoloe_crn_l_300e_coco/model.pdiparams", - "ppyoloe_crn_l_300e_coco/infer_cfg.yml") +model = vision.detection.PPYOLOE("ppyoloe_crn_l_300e_coco/model.pdmodel", + "ppyoloe_crn_l_300e_coco/model.pdiparams", + "ppyoloe_crn_l_300e_coco/infer_cfg.yml") im = cv2.imread("000000014439.jpg") result = model.predict(im.copy()) print(result) -vis_im = fd.vision.vis_detection(im, result, score_threshold=0.5) +vis_im = vision.vis_detection(im, result, score_threshold=0.5) cv2.imwrite("vis_image.jpg", vis_im) ``` +### 3.2 C++预测示例 +
-预测完成,可视化结果保存至`vis_image.jpg`,同时输出检测结果如下 -``` -DetectionResult: [xmin, ymin, xmax, ymax, score, label_id] -415.047363,89.311523, 506.009613, 283.863129, 0.950423, 0 -163.665710,81.914894, 198.585342, 166.760880, 0.896433, 0 -581.788635,113.027596, 612.623474, 198.521713, 0.842597, 0 -267.217224,89.777321, 298.796051, 169.361496, 0.837951, 0 -104.465599,45.482410, 127.688835, 93.533875, 0.773348, 0 -... +```C++ +#include "fastdeploy/vision.h" + +int main(int argc, char* argv[]) { + namespce vision = fastdeploy::vision; + auto model_file = "ppyoloe_crn_l_300e_coco/model.pdmodel"; + auto params_file = "ppyoloe_crn_l_300e_coco/model.pdiparams"; + auto config_file = "ppyoloe_crn_l_300e_coco/infer_cfg.yml"; + auto model = vision::detection::PPYOLOE(model_file, params_file, config_file); + + auto im = cv::imread(image_file); + auto im_bak = im.clone(); + + vision::DetectionResult res; + model.Predict(&im, &res) + + auto vis_im = vision::Visualize::VisDetection(im_bak, res, 0.5); + cv::imwrite("vis_result.jpg", vis_im); + std::cout << "Visualized result saved in ./vis_image.jpg" << std::endl; +} ``` -## 更多服务端部署示例 +## 4. 更多服务端部署示例 +
FastDeploy提供了大量部署示例供开发者参考,支持模型在CPU、GPU以及TensorRT的部署 @@ -99,67 +164,71 @@ FastDeploy提供了大量部署示例供开发者参考,支持模型在CPU、G - [人脸检测模型部署](examples/vision/facedet) - [更多视觉模型部署示例...](examples/vision) -### 📱轻量化SDK快速实现端侧AI推理部署 +## 5. 📱轻量化SDK快速实现端侧AI推理部署 +
| 任务场景 | 模型 | 大小(MB) | 边缘端 | 移动端 | 移动端 | | ------------------ | ---------------------------- | --------------------- | --------------------- | ---------------------- | --------------------- | -| ---- | --- | --- | Linux | Android | iOS | -| ----- | ---- | --- | ARM CPU | ARM CPU | ARM CPU | -| Classfication | PP-LCNet | 11.9 | ✅ | ✅ | ✅ | -| | PP-LCNetv2 | 26.6 | ✅ | ✅ | ✅ | -| | EfficientNet | 31.4 | ✅ | ✅ | ✅ | -| | GhostNet | 20.8 | ✅ | ✅ | ✅ | -| | MobileNetV1 | 17 | ✅ | ✅ | ✅ | -| | MobileNetV2 | 14.2 | ✅ | ✅ | ✅ | -| | MobileNetV3 | 22 | ✅ | ✅ | ✅ | -| | ShuffleNetV2 | 9.2 | ✅ | ✅ | ✅ | -| | SqueezeNetV1.1 | 5 | ✅ | ✅ | ✅ | -| | Inceptionv3 | 95.5 | ✅ | ✅ | ✅ | -| | PP-HGNet | 59 | ✅ | ✅ | ✅ | -| | SwinTransformer_224_win7 | 352.7 | ✅ | ✅ | ✅ | -| Detection | PP-PicoDet_s_320_coco | 4.1 | ✅ | ✅ | ✅ | -| | PP-PicoDet_s_320_lcnet | 4.9 | ✅ | ✅ | ✅ | -| | CenterNet | 4.8 | ✅ | ✅ | ✅ | -| | YOLOv3_MobileNetV3 | 94.6 | ✅ | ✅ | ✅ | -| | PP-YOLO_tiny_650e_coco | 4.4 | ✅ | ✅ | ✅ | -| | SSD_MobileNetV1_300_120e_voc | 23.3 | ✅ | ✅ | ✅ | -| | PP-YOLO_ResNet50vd | 188.5 | ✅ | ✅ | ✅ | -| | PP-YOLOv2_ResNet50vd | 218.7 | ✅ | ✅ | ✅ | -| | PP-YOLO_crn_l_300e_coco | 209.1 | ✅ | ✅ | ✅ | -| | YOLOv5s | 29.3 | ✅ | ✅ | ✅ | -| Face Detection | BlazeFace | 1.5 | ✅ | ✅ | ✅ | -| Face Localisation | RetinaFace | 1.7 | ✅ | ❌ | ❌ | -| Keypoint Detection | PP-TinyPose | 5.5 | ✅ | ✅ | ✅ | -| Segmentation | PP-LiteSeg(STDC1) | 32.2 | ✅ | ✅ | ✅ | -| | PP-HumanSeg-Lite | 0.556 | ✅ | ✅ | ✅ | -| | HRNet-w18 | 38.7 | ✅ | ✅ | ✅ | -| | PP-HumanSeg-Server | 107.2 | ✅ | ✅ | ✅ | -| | Unet | 53.7 | ❌ | ✅ | ❌ | -| OCR | PP-OCRv1 | 2.3+4.4 | ✅ | ✅ | ✅ | -| | PP-OCRv2 | 2.3+4.4 | ✅ | ✅ | ✅ | -| | PP-OCRv3 | 2.4+10.6 | ✅ | ✅ | ✅ | -| | PP-OCRv3-tiny | 2.4+10.7 | ✅ | ✅ | ✅ | - - -#### 边缘侧部署 - -- ARM Linux 系统 +| --- | --- | --- | Linux | Android | iOS | +| --- | --- | --- | ARM CPU | ARM CPU | ARM CPU | +| 图像分类 | PP-LCNet | 11.9 | ✅ | ✅ | ✅ | +| 图像分类 | PP-LCNetv2 | 26.6 | ✅ | ✅ | ✅ | +| 图像分类 | EfficientNet | 31.4 | ✅ | ✅ | ✅ | +| 图像分类 | GhostNet | 20.8 | ✅ | ✅ | ✅ | +| 图像分类 | MobileNetV1 | 17 | ✅ | ✅ | ✅ | +| 图像分类 | MobileNetV2 | 14.2 | ✅ | ✅ | ✅ | +| 图像分类 | MobileNetV3 | 22 | ✅ | ✅ | ✅ | +| 图像分类 | ShuffleNetV2 | 9.2 | ✅ | ✅ | ✅ | +| 图像分类 | SqueezeNetV1.1 | 5 | ✅ | ✅ | ✅ | +| 图像分类 | Inceptionv3 | 95.5 | ✅ | ✅ | ✅ | +| 图像分类 | PP-HGNet | 59 | ✅ | ✅ | ✅ | +| 图像分类 | SwinTransformer_224_win7 | 352.7 | ✅ | ✅ | ✅ | +| 目标检测 | PP-PicoDet_s_320_coco | 4.1 | ✅ | ✅ | ✅ | +| 目标检测 | PP-PicoDet_s_320_lcnet | 4.9 | ✅ | ✅ | ✅ | +| 目标检测 | CenterNet | 4.8 | ✅ | ✅ | ✅ | +| 目标检测 | YOLOv3_MobileNetV3 | 94.6 | ✅ | ✅ | ✅ | +| 目标检测 | PP-YOLO_tiny_650e_coco | 4.4 | ✅ | ✅ | ✅ | +| 目标检测 | SSD_MobileNetV1_300_120e_voc | 23.3 | ✅ | ✅ | ✅ | +| 目标检测 | PP-YOLO_ResNet50vd | 188.5 | ✅ | ✅ | ✅ | +| 目标检测 | PP-YOLOv2_ResNet50vd | 218.7 | ✅ | ✅ | ✅ | +| 目标检测 | PP-YOLO_crn_l_300e_coco | 209.1 | ✅ | ✅ | ✅ | +| 目标检测 | YOLOv5s | 29.3 | ✅ | ✅ | ✅ | +| 人脸检测 | BlazeFace | 1.5 | ✅ | ✅ | ✅ | +| 人脸检测 | RetinaFace | 1.7 | ✅ | ❌ | ❌ | +| 人体关键点检测 | PP-TinyPose | 5.5 | ✅ | ✅ | ✅ | +| 图像/人像分割 | PP-LiteSeg(STDC1) | 32.2 | ✅ | ✅ | ✅ | +| 图像/人像分割 | PP-HumanSeg-Lite | 0.556 | ✅ | ✅ | ✅ | +| 图像/人像分割 | HRNet-w18 | 38.7 | ✅ | ✅ | ✅ | +| 图像/人像分割 | PP-HumanSeg-Server | 107.2 | ✅ | ✅ | ✅ | +| 图像/人像分割 | Unet | 53.7 | ❌ | ✅ | ❌ | +| OCR | PP-OCRv1 | 2.3+4.4 | ✅ | ✅ | ✅ | +| OCR | PP-OCRv2 | 2.3+4.4 | ✅ | ✅ | ✅ | +| OCR | PP-OCRv3 | 2.4+10.6 | ✅ | ✅ | ✅ | +| OCR | PP-OCRv3-tiny | 2.4+10.7 | ✅ | ✅ | ✅ | + +### 5.1 边缘侧部署 +
+ +- ARM Linux 系统 - [C++ Inference部署(含视频流)](./docs/ARM-Linux-CPP-SDK-Inference.md) - [C++ 服务化部署](./docs/ARM-Linux-CPP-SDK-Serving.md) - [Python Inference部署](./docs/ARM-Linux-Python-SDK-Inference.md) - [Python 服务化部署](./docs/ARM-Linux-Python-SDK-Serving.md) -#### 移动端部署 +### 5.2 移动端部署 +
- [iOS 系统部署](./docs/iOS-SDK.md) - [Android 系统部署](./docs/Android-SDK.md) -#### 自定义模型部署 +### 5.3 自定义模型部署 +
- [快速实现个性化模型替换](./docs/Replace-Model-With-Anther-One.md) -## 社区交流 +## 6. 社区交流 +
- **加入社区👬:** 微信扫描二维码后,填写问卷加入交流群,与开发者共同讨论推理部署痛点问题 @@ -167,11 +236,13 @@ FastDeploy提供了大量部署示例供开发者参考,支持模型在CPU、G -## Acknowledge +## 7. Acknowledge +
本项目中SDK生成和下载使用了[EasyEdge](https://ai.baidu.com/easyedge/app/openSource)中的免费开放能力,再次表示感谢。 -## License +## 8. License +
FastDeploy遵循[Apache-2.0开源协议](./LICENSE)。 diff --git a/docs/compile/prebuilt_libraries.md b/docs/compile/prebuilt_libraries.md index bd58fc4b0b8..f960b105ba0 100644 --- a/docs/compile/prebuilt_libraries.md +++ b/docs/compile/prebuilt_libraries.md @@ -1,4 +1,4 @@ -# FastDeploy 预编编译Python Wheel包 +# FastDeploy 预编编译 C++ 库 FastDeploy提供了在Windows/Linux/Mac上的预先编译CPP部署库,开发者可以直接下载后使用,也可以自行编译代码。 diff --git a/docs/logo/fastdeploy-logo.png b/docs/logo/fastdeploy-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fe94ed2f5d781c19546bf05bc7b3643486ffd618 GIT binary patch literal 133793 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

6Q)H>vQ_jFum<2?wpC;q*=7 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ΞA_x^Fgr@$Gbvqqj~*jmk7i&B$>4L@r?TaN!=@ z5@rTiUJe2c;ahz}2BYyhV*L4ZEYVoSLVRw78s-u1Ztidg{ozj(i4Y}X3rowSBlDT+ zT)!jBQFWcwn&86ZB&zwy_Y!}NO#DDbl&#w=-FO|}E`TmeV<$?#oJzZkl5g7R4m^*Y5U>o!gOXUi1#7uUq`6@IwOkP!UcboMQ@0mQ=P2jX=z@sebwt~w+ zfPi{Ftm`#D?mKqHmYGjgh~eK$hw!9u zeGQy3iU@&x-$Q+aYj9_d4^dEya%>BK$2-;O^KIY0TLN8+tV!~$a)P0@!aAsv&a9(F zmJ-ru@aYBKn2Ws_9y;BtSYz!$qj+JX?(F9g1aH}5Y+_m~jzMsoA)oPP54x9Hv#Ct7 zA39t%%pX7|UDGS>YWTX_%rE2%hep_Ya=madm+UknPqcA&u#bSPZ&@#+VHT!X>d{Q8>n!X_zMX$pv4x)LkcQfDMg&{qw8pbSMFUK2}TE{vpX zI=ciC?))OXK;zrTubyw1@g@~0_=I9=wH2*NEx9WO)#o-OTa2mBFL|Bwsj0JT4*WFt zsjennS*(&1FbXpXFI(D!rQ`oJt;PH=vlkt3?r8~K#}YmhzRcz+e)mDZ%6!bC z$j{a_2tx?i8yIJlyHY8P-j)4YBY9Raf%t!cIfVmjJW zwow!vR|`QixW|Can2sFbn!d>`e_N`AdPwHWkq6Yy(w%9cQqRd7I zTn{<-a?YmoCEV-t3U?Y6`6;00Qt<*4tEP6EMInQSmcUoE`L_|M5L<{Pq#X4d11G=- ztp>ZLQSY5HlslXYryw1azH#9YyoEBDG!=XlWfOuiYx35_cOVk3t!Nq>#V5n}UoXQW zm8puP!;&+-zQgKBO1J**ze=NU0GE{f2f*#=S(#4>jf!dov=z3yv`DrS47` z5`Im!GGr1$ZX%W)4TCwSU9)g9f3Dp1^qXH8DYw> zB#M$7Uw^p6YH}NP=$te0&^=>kZYM{O*Y`X9{K#(v#2|c4Amd5;HW^tmS^yU`ThL0? zzz;$E?Sknm{KX~u0*q|KNMF9puLnrekt5wx2=I}gZ?Y^!R=&7|aBrcUgZ7Jb zOu~XAZqH7t&anZ~l8|p#wxlTlUkV{y?}Ty?YeEBW`+3}IO7;eiZS$7)^uonx0wgjY zC@VGJ1mJ1~lsLa~{=SO(ZA0>TV%k@&hiZ=G43L zxrpWCtzNU5riL-{+ibZ(hRI8f`WNKEdts@7EKQi7j6?_0oFYJ&;GxtY!M>#z7z(Ow z=QzF1nE#e;gA$)Dd6+vJf*)G1k2#6!*j8K2>3HtY#qBvTGyYM>vT2 z>zJ&TKx{d}fnm{Z0{g*W>gDp-z@JG-ZvhKxn#_uP zID@#Fl{9o_Cf9HH|I48NiWa_BWf56DsO!8o7?o5Csix0+^OTekfbC^PjYg4;x@?1K zEb+dvFhnKNf~91sAP>mC_f5$W-f3xMWauLv0gs*FU#s1F7lJpmK_@tFq5aVbdA2|z zY^E4a;65=Ya$s^kze1l}9|G(%=Tqmq%S7L}ei#U()erIkL zo`L6!WPbL+Iyxg&`!p{>(dme5Sfh>oTptG|e@?9;SJAgKOz))V#_<#>eQJLB=2fi) zCfa0RSw3NGg~WxkNQcGjF^|4D_O#49A)-@qo6t;4{M=W`u8AYCEF&VMt#Xe|;>92M z!i`0*$owOFANU+a5%Ytz^0(NmmqLAI*)PSvs`=1=rZ31FU3vQ~!pc=^sLof||5obY^Hu>Ssjs+d6%b}XsgF-Tl|bBK ztx|McDI|xU@{yXIzZ8q|NEnn~%a^@0pui&o3mko;NTb8S{njzRoh^yjF8ycHZb9p8 zpV>u0&(%up4k7D-1Ukb))*ltfHQ)L21_7d4e@=DGav@r0K+F_{FQRscIKm5EYma)s zid3Dp#ou4oFfV_14_Vv4w|d0mgDybvWo-F$!ngg_#Q_U)0{A-<*HZ34mvX=E#!6jB z!XZ>4ELRs6sm~hso-dyDK(H#m=GEo~pe@Mj*>Km~`Bg#pKF`mPiQ3VotOw}s0N1j5 zJA^l;jj)w!-+g~1Ts7dn-s%qyLSj)Xo zlt+=weORw$Ye|Thd#VrqW@4XSU*H}- z^rRMM0gaw@frVZ)06ye?xs_hxYdZ~0UeRl2m zYv}Ek5>oBd<-TKSw!12IW*;mCK3MCxAsZ6%m}c#36J1!+Vr-N?n%^cS#ax%(oiAM% zN4mI1u*~(>*%!(9uq@3_vl_5`$X6kc%#TH`aZWA0)e#CDQk)%NLqnB}S216pzUWOU ztOYg~Hj5vjd4IXX^V`H-Qn^HdvvHT_8LozRXgb67O~T1yzv9rp1d%Dgr^X_rG^c2L ztSFt+wKu3|wb|F&@OnGcNG7 zu5N0Jy^qPe4c2EPrh6{yF5^@k?X8CrJV=Y}DZKBU5{JgOqN3$%5-{qqU?fekfPUtF z4vzCc9`+i@{+L^*7euIji|%lf6Ox+XHfxZ`$rP(zdM&psEM#1H4R<%Ir_QheNKB8) zm7F7m5lvygvM3TBP^#-lp#Ij$Ee5WM#j=7kHmp~l>1Jz;PBwu$c7JO^7fp^v60nY* zi<51m3136b$u&aIw8MUVKfL0H_3BUF?8L<%1DBk^`qS7`u^%&OpVbrqYa-qlz1*L~ z&!(PM_bbF^>8E9@?!qoXF`?AW5~-5LKF)^unFEWG{}9wTFm zIZD@837uyj*Ja5pY$t_~(+5&Ml0_KKXs~3ei{k$TITdaq8KoExbuy9u_6S;X_OfNN zqk_iz62@pJ`5K7+!LtkJn=}OYTuXgu!jv=>{zZ3DcsV~%#O8Xu)GsrCCahe@8^Az2dJIlcHN^~lxyhn{SI zWIHsS5@K+DZCzF0k?*?!v6)x51Y~6Z1PBYn7J1J;6LR;sfJ%o!)o-s6Bacu-WwNsJ79t2zzEBvPHWH*M;EhE$Zdod#2qp-SqyFiKgr|F_3$rL9c+6Zl9zecnDF@ncre~d zf4wT2YNq_%0l9u4pWwJ;J~6tpg~2Fu1fnkl_LWRD18 zTeD8x*4>4^cuU!wc=KK6z==X#q-BQ3UHqX##J%Q~^@oJr6)*-eVA7U>N1vmNw3#g? z{pTW%{1snsbM|Ed_|$gk0ARZ&y_a+6EB}3a!&N_vE-gvjJ?r97+FJGa2y8Rl`HT{Y z)xjnCogjs<9=)`>ijg8Oyl_4prCZq8s{!Xn^-@%Uo-Pg|w(^HVcd@K3l3q7&84Qw9 zdKxg14+ImC#`@OAv{b!zlxH-HY!3#5ptw-Uw5`um$ERv#;b;`NlDwU?=)RaB#Q9dEbU>l>N}2I z31YT&Pwz#74C{#{RIA&2=O{2f+dfI@V_uk42Dud6OXph0)|)pOir0TV}uN z+1%$p)pVoi!+ToODdJub6o2Lmn=Np!Mt$u z4CB;?N&>f|`_wjtNQX(BEeEZ4DZpEcDnC$SY-syN4{D2OFC=L_J%HKRt*WytIs(pz zo)Dl*@wkFap_bhARI!mex)-WuDnv=y)5WV7sOB%kr!m|rW#p9?rHUVE9;MmR{RK_& za4!gUcX1)FxxRPm3A*q-bJifQn?e#wbsG2OlDBMSf*;=25kVN60yl4Sapy2w!llhC zkq2x*&wI99N~)48p@)4b4OCrX*>mxj)(K0or}72ZDMqXPGyq})FKyvJD`v{QZ-CX>X0Uh7qqv zB_Mfg_4N7L)K@R)op`2irl{&E{$d^Nzry3F(Bi;tz({b?LG^rOBv?*`^On{^Jh7Wer}d6$_| zoPN6DvUFF~YT#k1Em`^ljqIHo%U0WWQ`xC008A&-gr5}IOhBTu|Eyc*h_8g%}?Kf!5YElq#R)04cDme^bV=WV{wWMyGKE6s#=T`$c_d)vsUJ0{n6MX z6!kGI&0J}rIVpNkX+qFI5kQi$=^JmbFYNHOZb7HjrRZ99cCb=ciO~Fy#`mt5F7#o2<|Sy-Ccrf6Y)X*P2VcC0jnb} zFGwT%#Qn87_K^^qHr*wHBbqBz^Uh~Ey7!~k-*qRVYgM#ClX^?Vh&1_~P8PXMLT@Y~QK?7Lg1T$~M;p z@y`YoRTm1FtVhfikw!-f#H73IgcGZV?E;76J<-js?vO%|DUFuUVt)WTK5!%R|L{K6 ziCfRk)!ldRy`{&NjR^JhL+JjfX;o{-r(XNA50W{Mfae|#F+K3j%MZ_% zEFS!%?9MN=Ia&5(_70qQ&U===J`7K1U;shq^xy2xkJsT~>_mp~U#B1++wrRL77r1}A{%RbQQC5_I4bQK~A{fRo-q<3+D zn6`ofP2g{EgWtS}Zk0$sK-71qnb#<1|2;0CQLEqNaFEdiE!Bq&hWQICq;q3rZ9^#l z>tl|phiS?vJ@pXWF3dk1@7J(Q!$&d;D*2ZMutTkdj=*sxa`fDUF-)?ui$0UZcxgI* zLER3Ghe?zV`mJ8_DFn$Kf#Zq(Qt8CJ+5*YfFVL5qH_i2l)oGZ9NVK4(nTbZvlhCOr zn|_jES$=Ef`{d16U{pwA){48go}Lr8?F#3VT(SpMHK&vR17pOAN8h`Zct(=DODh5{ zV`_dV&Z=S6uzQ&f{5%r?VS|i^!H{#{I0+W50}nb197Y-zpC_t{g42Z571SZ)EY}PD z%mPX6*l;4dg{XYQw9Nfl_@mcHJFz&ZpI84 zt9;ix!FVs4gSK8h0%o6Va))LOlHXt|&b+8ZK$|U@du$8PqKi#D%1RNC$YraK1T$vM z!Jo`*wg#y#6yzvi1;TA=jNG3rCLe$@i;nzC$XmwUJoq^jtMjzZfth(P-2U&33PB$u zQ8zTCooKg5zAEVuk1Dnpi%a;bd=O0WPcvVWEfMXUP2s5)VRlmmU>Pw3CfCGiG4yA#qf8e~2UBblm3BUv&fO4}Cx$rK|89i_#5*X&xB*2l=JE%u(*uQIlCG;P%vuePv5cIM? zleFQO`s>}GWm%W%!KfX4#BlP73Gv-f-9*PEbZiu2B2*q*x_!CQuJFh$1fQbML1HT4 zExSUKqOY}*K&?OQ`twtEt0ONqOMeuT*GMsUV5&)U?U4+D4+r*(I^1Es2Vxzi4qu9% ziL|R>9Gl{5f=nC5p#pe8^TXgdk&}}T$?TmOh&?a+GnoJ#6^8S0*nn%E*uMSCTW6@7 zF@SxYOIG5?tDk9Z@BB2{M$Cb#@lI!=$Xd7S*u&KsK@w6pBtYlcpeC7mhXa{>`va@W zt2qa*7BBZ)upUn^Shfz=bn%%=Cde^;Pm5v5tundl~4VVOv|3>}3a zzl*;tfTG)agc>#3yH9tHnw$gt23?ywO=H7a^YCi*g^%z&sT81Mxlx~3rv9!P(mddb z3BBRfwD|~juU5Ypq{@Mv?`G0U*0k>yT(e9K{(vxu+P0~`^P&;-Egg*4_S@XIH(Xem z2;;#Zj95IT@^s0uX+iUg!~xYhaiY$O}`d(u^9xw*+)1t4GSempbEN zNfIu0-3>9hNv(28jOcoi-5TbCVcbpi3+YzrbR?2maGnnyF)4v3bVtzp!xGE+@#(q<4N87) z7}S!4x=;>m8S}>1;F2SONI(w`5yS4&<<=B`#-kMcE#(<5jFA58GbAR`p9Hm#0BmM_ z`wjrZrHo$D2~B$bz!%KpIea*-J9#$haoYJRTJ-|ZoauD`aDJ$HW012J0l#*+5bav` zcb>GF9fU@HsOPGaTs^iVd~KeshpN|w9b}T0sx$_AEB=Hu-#e-}&)W@M@vhBo?3wDI zJv-%HKTNK7inH3Vp4(hPrZ+vdtFoQpa)BCD1<-~^ z=V<67m20v~we-|&yGEaPBbgnkZCCsIhF3i_>)14*9bcOU=L2iZ6KlyHzgQ^`RcvL= z3a39G-fq(NIlG&~xgcf&UE}O$aUp_^R-N1xpJ_kr7i!l&=hBrRc&bW>J}#&P#YsLH zai+SA{M}XY6ByBCxN=wlYv!tL8pJijteW{xss0q^+S)itGfmGJW=MTvyn~QmSaGBl zxFjKcFq_8Ae7%-BLk^H6`$pl0!{OQqgRLNE`Zz%)H|Et-Hg9Bv>H5bVn^Dw3 z+;lj}<-mCAy1OZgC0(3tntJ{XK<3J=$inJ`n)UK+&vkvIX){t1X#T<;fhubINIxPI zrft8pJL!vN;N33@^*ptCA%)L_G8g)KpB>=rWg|Y_cD?u}(E;!s{ct)`-ywJrA1~=6 zwfajaKwX%yOAk6B@;+IE<#!|tZVYVms{oSn;z3xskpDa<#)szQ%CUN=i|Ipc2I#-m`==zJG?P2zpR~~OKS?%oqrKG|t_N7_Io<8B^vzqz?Dg?}lIh=ZW^&kYBcv)wCS0Cglm3 zk24|T;x(!p%ZFF1e8JspVXZO}7^$X4R6K`1x-#||1jPXS*)Js99wKHy;Ao+v9Db`E ze>7*8CHcAbV*`==iwurNK~0JMsKU)yn*wuHykCde9axTq{u z1}Ai$utveBK;3-nNn+V8G|MAiWV(Dl(+!ZF>-N{S%_DIgmPSgZe4+a{x>?03Tb%Di zc1TN${$&KplHbNVNF02HFIZbkYFcS`;ahMXXzdw50P-M%VXl2(Z zn=mN3o4Nrb1`M6D_9rJ+m5?uzQ}t1x?OZiJrmZHJ+g~gao+4B_Raf-X*!fSvOIWE* zSV3&CExiKRGT-I<<&o+VzIc=F`s=B$XTfF35#Q}ssR*QKX8EF_aYPL8AFc)UNi&ff^$pL<8a{Y{t z)2baDYi6wy@2M)WEL3{+;tXHCw!hW%3llPmUC;?<8 z7F%#sS0DKa&8@nocKl$Z!dQEqJ5^p>(7alFxxN)p^1Hr-C6vv)|fVc-a83McV)RS|45;MX(NPmBXKjuSWkz z!UU@;^=&*ArL=CEjyI;M`ug;DL@o9F$+<1oiHv&_ak5?ZMET-u@1jsr{@ARQV^v=a zha*9hQ~DkExh8xB5Ha!&UajBfU=Q3G^mBT<)A2j=oV;-FTXslBzuf;TZf`TJKD)A+ zq6R13_<|tUCY1p)3(2fJ3lG^&_SeaBZ~oLYwF(#u;zglp(V7^D(*tv93BU%2Sy(N7 zRUsL6veY#F2_=Xfrk?V|DVSXm!}WD(SZMtdc8~%8%?EpwbfI_DzXOaLatjA3pr!_<0w|>^}=Rwd`dqB5MXscK3=XB8~S)%k8jHk{B*|G5A~e zn!FP8f}Kds%$o&6tu_uU#q>`E(@BkYIZNuke5rcDBSI{4VU5?&SEK&s0!rd*A1@_y z4AD#?5c~ILy>$=OY8iC8LeLmvjx^}jXWXEPwOCBBtx`%SlZjEYV1*rK?$nCo0*tAg2x=P3X=!O)g)WXq#%zYUp1y1Zx4qzsFGRD ze1U83p1&nP%U_0fcgicaWa^X%ci7`qx37oZDjqpJM)rV71{~!jA(ez)d$yVWhG`bh zc=j9o2&SXXHsZ8X6EtU5MBcz?khmmFIEPp?N7Wy?OIW=%$3xBY$mfsoj8$dCay99q zzrF-C%1V1YG1jI15M2eHxXMEr$uoj?j;b})^0CV)tADr(m<8ycXPksELZ)o8Nil;6 z;G?{cV=Swe!r|`qz#{rLfy@@<9*mXEh}D5d4snU13-ifgnr7qrq2=khL#u0_IL?%9 zdOfu=FI1+zYND)ph%4tuPU2q-K-XB8N_{kv{wZYLVvBojd9S|SqKAS>KK>Mw2jkHu zKXkI0z&Cn1o0+s(OoP@0fUz2^v#7-*+=6rt@0wD$RJ2s21aXMcBrAN8EiK zsP1FX`%7!<@X{yyl=!Y=2-?~na`HY(dzA%iX01DN; znVZVB8~SI2Q~~t2Rhy(4rRvZTbIu_9o}$=ynsB*Pd9DDacojp?SHbln)9ApZqI!ze z88>x_=z@}gr}2el8_gewwNMe3pE$=Gds}~-adNDbN1Ti#+#;8SEf@58NfHwpdMe8C z7JXP-IMUR!g?35=gULK13pL{sj}%Q)It;a@HOrHO&#d(E)_usXR?LFiTPf}C-u-qB z;>X6nP1`C5vVO1hfH3jrxvcgg>krNfCx2#U876uSg)Wo^)y^Fv>Pms{h;dmzsE_}4F+y%WH+#$Xj@0H7o{KLDc>k-+f&I-l_KSyUwG8yJ- zZr_p!_Zw_f0WAfliYjZDb|!38sD9tGgT6XGTn(XCMm!lD7h=t1zZ4w{EmokMo{9yb zK?kaW(VufG9==CaFlVr|Hg@utQUY49CP*&$p{q&hxlJLm{m4=!IJnTYX?0lFzp!#!!WuceR`J75EELllU;ZGyRK~$COjMi^-^@gU7-mu(0O?(x zfAUe^(w(Dc{StLR8jmrq45&nE2HCBW-Cnh9kTSJQE&2=tP3Y%C6^qiIeU$R}V^%{J9 zDg%EzeE)a(6Vs;#BN@UQQ}|ypTMZiO;mtd|wVM0*w_ECQMk{PwiLCZrSPgOMF%eo; z737*DvZH>)7G-Sde1;BA)r-y{W1MF>P#CdWEKIfs1t9vaUz6PwX(G;cb9^P@ICCh{ zjaqANBk0t9)SL;{Re}2?>{v6G2nUL`#VK+Q@avX;=Hz=V zID9^aZXJDi7n@reZf@pU65GeUCAmP2LRG2iUt|tQ>B)9rJvMbr7ijSyp*LM+&h10$ z!waHf{HA`Ty?^fGmDygOYX*l&p+;WB3F3)nxTK`^R?jNOEVc2_Ecso5#t!COP0k~Q z1c}rP0{(N$+qsOHcB@{9x466)bBF?q<+jFvgY>07Gk9_4VaeUxI6~ddlCLD=o79Q! z@O>~OL*`S;T+I6Tk%6C3_s}B zLl{chbh%ypEVcw3rqc6;VnPxvq?}M@nADI8&Qj7WB*Y)63IwB4V4_u-%2eH!g?=cl z#u(i^+o-rBuQG<25}lO_I>>j$#-i|hMd#NJF9jtHiM4_f@-;w&AWweR!70+weE(o! z#(6y^++1U;PKi=@K?G)P6aqEMS#N6O^aR7U9^jo1!c9sDL(dpQ|Ex5GVECDr;BSeS zJtF0ak3$R0f0&)PwnLwQ3&DhZiLX=tjHa_(vi8c08HfD9Fj5j$@6*z4q24=cTSXVSy=peNiN<+o5(3Vx(`rMgxIsx2bBWt zn>qG0ONHCd=?+`^(FF984FQao9rmH(jP$agPi%boujL7DmHItki=likVnmJwzM$*7 z?sLvnai88f$5p91PI6tCGP~@*^C>4~;q-Ee|$bF{IXnD zE4wkn(lJ4ZEp2Me031%ee_YQCE8a*}o5%Uy;Bf>$CA-4rQF*yoeKW2QKRCP$SjEK1 z-wAmknl&d06H1}upPEw8=vW;3&c}5**0KG!gF9W8>YoS=>I^lfgO8XvR=I^!8o@6e z2zejxaC#KS&(Vt_&qWsK=?MJCWRRdN@oLkcOcyA7(u?^@^J|FakM3$~MXkWwso+dU z;tB{+?zFk>;p)vRtLtJf5Jeb3XD65;ypRicbdTdV%ofR0wO~EG{C4znnwz119x^y8 zO(mq&^rVKDKt^#H(ve>{AIy z@#h=aPV$e{Y29ka6k76)e-rjBWQ%%YxD_zhElfR(srT`z7PHmq{hwr5{BwKrx6<7I z|MF~tQ|T@*@~YZ4ewv$Pce`(Ou_OuW3GSAay7@i(?cgtqoAGA-ksf+<&ZuES(~2Ze znz0H96b3a~_fvV@0|nT(l3T)ViyR4>^`0(%=EwfRL#xsW3{-YHxRd?G6i8H7s@d)f z4eQK!_euDdx^3rN-p};dm&M+ny(dd?slbs~J-Mu2o1KYn>sYZ6UnCdqSL?YnEKAVk zBu1{IAzk1n$Zde7z;J_TE{aQ)EZMvZa}LsX8!m&0^4qVAbSh%CuWR)XfbX{k1oOT= zKY4RY(n<*i=4*;d`U5EjCiOjgxy!`&*eZ_WUp{R&2)e6DJZ#krP;7NY6bh9fkPm=9ISvP_}#H2)5}d z_o*nAu-}OnGQuCgnkFyaXqv`FaxkUq0UV;7iE($>Bog$a$ZdoPbz>MFZCYLoNffr2)Av^Q0Mbi!fsBj@PK*&K%Q^wiY@!2KOG0lL7p z-U{PjQ>1UeU_fD(bOrXLiDG?mAs2pAV9z96UoWL#U?mfdjD`8=Ib9(y(^Yrb!|{-P zjx1YNCsjLJh&C;riOPX#W_0)pzm9u^HclVmQf^8O9%NLl;TQ28=U5W}{@I)j3RmT^ zC{`w-p#8=`iUHS@QdM(!p#jU5J+`U4HVnj6ERXEc^!(LvT<&`;cemSz!q`vTHSJRk zK{XxTUio^uN3}Hdl$dU46D>ysD=Wt9xGmyyL2RnZT@Yj%-oH2Cq zn8m!~(Z|!NFZBhp(#H>vb$CETcCX6R$=Tj0fVy^J`bh*VUBt%hi)itf<=i>jNf*#Dx!? zmU;xYl;4S0=)lgOTNMq<@$KLL8M%^9Id~M-IY7-F39iIyAP=ZOUPUg}l`J2VrC&HD z*?WpLp;$Mkacp#EOkWR)pT7X6{ss$!F*I~39h&o_mOM$;fY;2~7iOBofyiGY&9Q*} zB8tzCPD=xH{i9Myn=s8-2Fs1VKz|FqJmB6Y)qQna9|6N^RA4Y0USA)-e#?rq7pxJx zJ2c~keMG$c^^sEWZC0=-(TiK7Obvdq*-A%x7BXti5S|zh!O&h-@b}i-!ABg1Taur< z_qUI*wLShpkNk(hj*O`kJXsO_gYllMfvc!^-^w+Vnn6E%0lBTI*+*Id>rEte{M2gk@VjG?~Wng5^?=uZ~xx-|u^TK$)a~b`locek$+i$>mgyr3QZCuwZ#&hY9;u39DKvS z5c503HPB0;0eEn(b31o3PA)Vh_Mf0UZ>k;t>ci)!@XTE~Flpz@l^p;Z?(&3X^WE!U zk_@ZhB!v~zN;&q8Ry{+fw(0ze3)D-X=>?(pKNH2aoh5&I0fthF% zcKj*>RLLs++~7Cw&skkNxN03#`&m#7!2wBbIlt^a;r5lKB(PxjOZ^3)A`VrMwe z?~v>%H!?bmBmhV>0PC_Q5-nuVJ{h9U%y(q|hP|XF@*u)v7M!;UP4ra(zXa^H*L(Q% zD}Wuc=(_>ExMNRtHaKPZ8`GLk4Yn(sXkz4tRKW9P9*qCfe$?(*yHkm^LptR;cTBJ5 zK;K(tI-k{~Rc|El2w2BVO+brg=`8&BqWI%nui9O%YM=EN%IN<+)KBa42iDZBF`DNJ zdCg5kFDYB_H{q1CAAGbI->j-TX-}I3loHcp@12_hIn&c)Ne`djQ$E0}`*&heA^6;Y zmuA5Tq@v2mnNKt_MH6+!`O2T`tn%fi`+VV$R<)$d6(FIK;9_CgzD-8sFI&=aZFSi+FsGi4z^E?-0Ob3@gODw zIGIT@5vJUeesAihwX@)4Waha^WhRBeO&?`+z}0C?`;S!$!ZtD0bsOubzy?UJC3zcn zLmQ+--2-iP{?5ED6?JV=Q?owCF%oLV|3OW7%k=7o^yZ%HU2;P5jK+D%$g(1@yeBVT z4ui{9Aiqe}AF%Czrs1WXt;e5-`~o|qFsTNJ!=K-o)wdwicG+FUAkkn?$`yKMo-jjg zWFY5aMz)uhr81=EzMsF{;QrJ7l@)V*;nj2OG;Yz8UZ(1Z(bTsY1#PD`-vd_Y;H#i` zr&mWuvaG+XNolTx90aZfBjZMu>8cLO`V}kF(dAScX1DK$&mGpf0slqkcEx zWI4&%v(1!*y}3_j$oC#%^@7}o#h<~SxwFRh*=$RqyAFR!@ze--D5ajrOo@o1Wv512 zm?Oz|b!T=L7(Mg(6)97)e#W5!Ze~aaE=3XNgmD5sUB=>sr;H|fUZrs(8gJs)lM>JD zOGGQ=+ZdU?hnzMttVAx+HsP+wHFp2(KenGTl$@Zr=QF*5MAesiRyOtvq97qCbSO(- zOkA`uTFSQOv0t36T5K}3?Fa)xZK7@c~bX^Y}$IX}{0sztA2LE?}n4KJ7T#5c&75%e% zpST*jJR|uZOiwST*E|zdzV+_O$umJC{{e??02km#xpzm$^Fq1XCYRDGIP>waRf_$9aF^61Koa>cm&nUZJe(aX*a$e|W`AyupBeG!O#k4@uqyh? z2z7T>t%*+Uk6Tt}gYoKv7171k4VNy-n5Gp7Pl(`KSz;N>t-x)euywIulH0u*suB2d z#HRe<_{UGtC?haI5S02D*eXkPE(Mq}{anHX2H3bw0TNHAn?>sP`cL+qluT;&Htwfl zvK{$fWAKjU&mo5HxrPIUkM}*8TNbPm#s6D8VZ+g6*y+A_{8joB9T)N4E`}I zQ~oWZxZ6moH*QY*em8l6|Rfja5)KDRu- z~t%$5db7+a{!BlgWK=I!`rPs>Lu83;?)roSX30_HZ`BOdwLziPQnOJCP* zh*#i$g^FW9$^5{a7WJ+e!Z zj!2EP`;Y^NGt=L2jtJ@*#5|tc^Qj}1K7EqEX*vQ|-I9Q< z=~eMOP`BPVr^XOWe*qeTLwxgiW^AmNydbAWQM{t-@Nl6P9UKF6sYfnb!Yz;ee!C8U ztlG~eILhHd7&tRMK#dmI#XCosLt`6(wAUjJw2^H!(|^7~nnHpXA#&Zd(oa6^Pmva* zPiZd?;&yRRgTwYAMz_|VZchE0ABSOzx^u!FG6@t?=-}Snmi=8$-YEcgTlR2kqp~bq z!+HBzoC=1j8%CO?-s4Dc*yJ-^Xg-cvz^DoH_C3zpOnd4$4{%4QZf+U=CWKlz>^q{+ zOK|Y3tNj#;$03Rk_4GQAEBrFrrLa6FCq2IsW|+jQWJhJX-ZhLtc;coJ^>MII((*=q z=uI~%cD|T+!$2Ocu<{%l3r<8aY76Fc@S{vs+T~tH>v}wBR7I#`woLFFuz7o=Id7fB z^Ri|izA7kf-pOe}NiHz$_z|mF4QLJCs`1aL1ZsbK?#aFcK4lOs#s)~{#q*(yD%nwa zm64a#e(Kfew4-k13*SwtDPRlJsnFOY`~6uzeFIOpT|vmd8gz%rhr87R8o6^2kia(~ zRbg5$+ss-cZm<1r_cSiT@T3bwAEQ~a-fq-hw?@q(=66ompU?bK?B5el)-y>CkvM~W zs9335U9dK%?VEFZu&;4oU`Qija6ER`Mjk*};8iL@YIb)XLyfp7bnby{EZfe}-E!`f zRMS-x2GlkB2UQZqT zzoJMI7YmV(P?EN7lZX1ZuBb187mm;C)p*scCZoNXI4mPB^PV2k*wku{#wg7l} zgKbTz7m~qCY?~4HV&0c6{qj4_;|sFnH@AHwqcg$Y7g$#%p{JezWKaQcPCo;!=eG2E(#_Oy`KDrvn{N)^eePDnosF(r4SGx>W|=p! zNMBOFYnmhv?$19%m%4d0lN!mAPk)l6&WC_c3b1ylxQ;1U`lH98bFa$@_dXntQa4Ua zUb!QXohU@FB5Q0;QGhT7;T@EW(L6acVVrGLXeo5Pr_W%GWVc#sLIA2@Rud~=8wKIu ztUeai%ntarwQ^_;uW6PxB3);cGp^!7UI1krz#%^&i!dTEo6C(86VV^N>b~9*$-8EA zDBddTSY>}9(<(eA$1YE#$We-eVRwox=hdiVHOeN0@(t?LQ8Mr2I zL6S0YuIyoDxA*JJj~4<9J?2p72GW0AP=+}m%`qU8qf%?SL1r7Wgb7(33{ZSW54ySK zi^vwgrc2Dl)Junnh_F0M=`nM^&v86*PQ0C!a~qgVW-dC7_6U9Wo8KW+-tIqo#thb( z8aPqC2{80Z;yQjm?EFExnWw(ycQ;}O-+XH?Pn2#@&g4>(0lRpC$zPLduQjI#-KjWa zp9tZ}aXRM_U%JTsciT#g{5Yq-`41Cwg1cvc3PP<2KTk!rUTGGr^$dOSS}0Ya1NC|# z#(KD8x0CpH2uMkKNrY{wwcMKTi;ey<9LbJ*!-jN?iO4Ut)aQ6r{Hk+B*B%y*RGuPo z<^r|o+%}Lf{cH$TUzXtJH<`l-6osCHZ==M|{b29K(xMw%DBgaNUTR3%9M_n6QoOdu zW|xHVH&O}%&fG?@&);+PTFlTUuGW1@tLxAW^}r_{A`UZX(am-Cz_A`l2WI>@{TS>i_kfj@VV8ECX2PSSvIHxqBI(_ zuXRzB(lnlC|8PFpNZb@Er5pR(b?;@q;xFYW*Kuw1xwGeFT%dl7?citwTrAU+B}Cn+ z`wK~|Mt5`yQf$v>b-H`?uQhv-aFQ{pNBQsJM41284<#tK#Upl$I0_U#dGi01>9k_s z#OvNdELr1Fh_;EI`_12by+@Rth4}tH?NA}UCX6g629e{pIT7-P;2Eol7JdyRuYiuV zcV(%hxszIX-R}w={wdtMG{6jDr}08R_+zDed%nAi7hSJ|tckS;AEM1_A(&CSM{T-t zl=oqe>c@B7v$pd1WuBYg?~`dd8;lz*zD9U_`!CW~wuMjpRHHk~Pjp+6QD%CV|XR`47h1E!mVGzsF_oChQ@#DLCBoJAbNaqhgkitojY53 zUhsuv43W9s$^s<=YxP-`=8ROM9ALRpnMZT1wZ~tPNS^qa_?j%F6%G={ACtYg*_GYm z!oQ>b+yXxy0 z^EhJ8U7*pL>FBCq{C!wV!l`EH_QKQL3(+Fe?&!Nhh$mkQt2@?Gel{WhUx7)T`-{XD z6bI(ywnl@Sh{IpC8{;WYuVOb|QT|;{+m|tWH--?tir)EShUq>d#4py(8A~;d?yt(?8M61_kHc%7@$iS$9`^*QtogA3{6t9u>NN7*+sRuf@S9utPQb5P-XUePM!%G+O>^Z z#av=fS*tj|b5UKNz$Sq8eR2vg{AKMuehO(lwoSfNRatP(6&X^Ya+HYasA?%%16DkWWarDcUYOweDyqfmlGVM&1^|t;_PMgq*`f)Q-7+Un3Tf zSrm6;=OZRJF$G61=>` z1AmV=l)fpOEC2uIUk>w&EY$nUtW2Cq;hN|_-G65!J8=yoQZ9kvHUf)5T|pBN`nR7H z44UpAksCiuQQ%oI_k6-C_B$WL(?s!DWAPY>I)d#o@PfMe>a2?A6NmGfE7<@*7;!H1 z^a9pLc{Z@WM>BrCDXz%0*|sw2>O!rA=ILF5>XB}X{`K7VShZEL^<7sVxe{&OO;e2J zIggG-pUSaGzuJeY*LkC3TNxR(jbtt=3<2{}IfveM3qcvh0L$bXN%3n>_9Z=H z$w>`iF|mrhQc{e6EmzRJCRfJ2bzrcaQ{J0|WQa0(btQD(6Wvp&BjJCN8-=_f;_d-< zFJO?~KhIsb`6PLeGk(|1OIFf5^gThqahnT}>>Rb$GpfEgHQ}y+e+asCPj*Eya#V>ivWXgRMKntl()7Y3UM5)+uW3)BwkiGz?T1VYB4i@sZ*@P)pB<2vmr)O{0ZtZL?TC6qYM4YXD;y zgn|z+x)9)2(-M#DaUUld!o~Efx<1GlM`8O8R=zfdJ4lLJS=ug|Ydp7|m9Tt_ASBF0`^2fc>zCIACJAs+#1DBKGR!kn%A zR*rXuT$`uXm3LpM$ZKjhpR^M@{!p*Q;Du(F(zcw3kw_G=^;S|BEMRP4QR zJ4$Hp1CoW}kE&)BVvG!KcmsfZVqGn63xPuzO#GEUqXX9{Mxl9+b|?PrNQOm7E{USG zx3^PkmFC;40}&LuqN&bkx{os}a(R5(eie$X!iMSh_|PI*6rxS4W4XP2irnuR^{k8h zHwE_JrjPmB+#U^br-nFj9ma4quHI8%f@vDiZ8frNsfD}-feGD&PRyCVgwHxI_k6nzX+qjp zmWX(toX4Uc0>)c9WOO?RJp58mErUr5QtSE?)SyXzGfumsBn8x|^u9??&EKu$e4$5l zUb%A9y`&QGSG>73@^bO?WPuecpt;Tg6EjT|w<=#Nsv@{Gb^cy>F(ttK@o!P8O zc!F6#{m)3Xn-dJ&U%B}sW+km_3GOd+h&!62d(I?^&Z?T`^H9s} zE4V+LZHBH@{CjKfV?b`|<(dX-YqsFO?mZ34hCV#U`5_yghh{C~V5;5k1=EWcY5RowO*YK zAMKe@`pN?`=SRJi69Lv_jvs+T%h|ob^lJDSE?M2Ov?SLQg{N6udc)79RA(zMAoXZQ zWl+%Glao)2mA%AV$_3+6G1C?UR$vJ4qN8s^HaS$MYL-ZWh@S_Gy<4h`fW6DTr0!6Q zlrkZnf2%>Xf3}Qc_tP zv%b%53m694__b1I=G7+}Z-R8G@6xE_|6A-Io18G-&|B`gFaPTOK{3pm&+6_*+H{_< zZ|EBEG`$^p*Epooqn~J?cLVd7;~}0j)|u~t+C|fS^E2Kc=RC$Lx!_x`Tqd$BiYV*g z1E$bOFY=n${!iZ3cL(QIdd*8o_qQ5vt)X}8Qyxb^ZJBCs%ud?eDpxTwTf%gwc4pXL zt7>jU$hb6p^i`K|E=razqt!>x>fCIv=`%i-fQ{kUEQDLtNNUKf$w;vSyO~!94Z$^@ zhQ7LvK4kEK9AxYezE9K`>eb!)ajgTKPWD-@I8BCV1w=%j7*R+{$DKSo zLqBRBfaJa-CGYsbVw0byj?;p-o=eXqI0%{+k7x+(`mhwieVrOD@<1c)bf|zl2?-CD zpXYjDNB{=M5~ytx*uU@3HDMMz{}ta3p#hmly!k`HofB)t8)k^$Nr=r{T`HjNaYF16 zL+Hvxt(%eU5~IaKaE)1x>m_(D^wXLBN_8BH$^x>fp@0XBqSgq{2r01Or?-NX>%PQv z7>Ick$Oa5z+z1?Ps0mTp<5(QpX?ggFb7aOQj3UNq514(uP(6yt&@RfaZPeo1Lj7d8 z;0N_Y<2Bw5S$V+`e*cq193eP_M~dxbCyrw}?JC#GW;VI+e*?e!fEBFlC3i zL%h7iOW#T~^M$26Cq-*;TQr2GeIJ$t>1hgwM3651lT_7(h#-~y)b+W?cn}vyarHY} ziHns@biQCVStZ;Ywzc+X7z-G#1$GHX#U&e5iGE;)Zb5>6*`J{%HiYK@cjv7<{a06(PEByjZ7eJX{ivn~)a1ymqS<5?fBgw(qg znB(A4ay3usL3}fggkILIT*b7?g0}GDfaoZ(fxmbn=yr1m@2#x%qZQF2fdyNFlOud$fz0H)%VUl&VS?wz`ke8w_P_^1)7oE9W_`(m3yaW`l5S>V{U_oeFF z=L`BFf(8UF)T#~@qIfei-CULrGQB zgvIbW0ar4Obs(-+OLj`faSP3l-T<7dk)wc2JbBrBJG-8q9b*y|^uJ;SC{0>%OU1cV zx<;~|u{MI&M!3?Xe`8D(@dd_D6+v+sMjp~8ZV?ucFGf4v*~544u?QMJN?M?pz;$A0H(U-`KE`MCV}{}%3V-?8!GhC?ue0ID|5J_8$J z^TtkE*<1GEc{3r*?0i2Qfz|rS~oEmIZn4HB5r1ry| z*3n#OpEJ5t<|9=+isl0+{JE&Q5jp`LzAZ#NIatpW5%~U+I_dyX(S3lX9U0&vD3?`x zYvhKvVjM0H&V5EroLwh{ACFW1JEs-Zo22z%jct2qMV7Qs2^)ts#JzujT=Gb#7||uu zka5Tqa)Z!!w~E|u>yrz7`G|1V_>Z1=#Dh=ZRU`z(XQpI2yN98aYJ*U`Dp~f;Eenw?T8akawu(NEtff;6m=;XbK7+&2B9NVOM;WJi*Uzakw|q~h z>%JLXZ|B3Dy=B24LBmZO0{(gvw^XerZF%)3<>1l%fZ>|m4O2yc`$W+bfm@G)?^9pZ zGI#v{Hfhws#){-WG+k>)vY!?I+fL&XA{u&~z;!ydnVxY(JDD`P9n_#XLO7K|1Q5K5 zw#%*h*xR;(6{F?QBb+@tje3%pe~i!j|FNbl&p3a#H5Y8ilx%|aQ33a^fgS098Ok|* zhsT_@Q;2hUfwZspI%90f#1_0PwwRnmf8&!@nVsab)+-Evzp|fd16loEyN&&L(ykFP zXtuKmeBh`5A6Z`&6xZ5di@P*#0U9SraCdiicXto&5P}4E50K#Q9^5s!ySq1X`^?<) z&)mAj!>-y-&_%EMmVO7PcpX))X4IJRb*|)MwiZ$u9ciClZ*vlA* zyoj)hsNA2?8T{DVw*r$)f~uWS6J#uCx0U8a4e~6Gf-43>nA#%@9ZR+A(1M@3%kY!s z^EoN?xUKu4Ae8{XbF-E$GnDx^^P*lr%Urbld`=&gc8(nAfs|eGTdlSd0Q>4fYr;AV z{AuQLd`=v`m_-T3PW6ZhMUH#$fE@D3ZW7IzZI6x27YIoJ;_W_P(=3-F%u`J#kxHkT z!YJ>K2V=!c{MzChdGEh%-Z_l0?^)=wER(94mZD>CGa@UM92IZMG0li@U^&z zsX;?ri;|u)46mSv1r5Fxzo&piwOJYPssNyj>&XGuByf;GNgpqfS~o8mZ(13Vfy_{x zyMVtFgIefB#Qd0sc^%1A26*OV)!CC!o=U<3+J}X8QhKIOnEBWFnQ2YhgAi)*zOi^p zqX45gVeH*utxGVdH^j+8T?Ku-On`-Di$AjDXpv&H>A*~XA zUgV=@=diK984n#6QvTa57+fA;3aNrlQeE%1(|V(WtsL zWMS11g_5Uj9oL24FQJU#3`bKb{X9i|EQ;|oeX#O&PfX=CKolcpvf4v>xr1KQ?eAio*dL{u#C_{jCmMyL~|GL z49o##Rgw956!!c$9dI?BLLR^}prBy?jnkDubyx$?Y4~xPb>ovm6m7OTG3-!PZM}NG zG7vjZfBu5lDI$1Fc1oN*nX(9G_gL$Y>q!pJmY!W`d_umR!?63 z$?TrCk^G6Enf)Mj=$7pP%O}PUR>-WHVojS}$PB?D(NM6aoEw$l{|c4=$d&nyh?JsP zZB*GSO8*x|wVkN0Hc4$S2R8hDdKm-S8SGIWnaAtSU)ht8i>2(T&OME6$XMu}_@~6% z#;w|)-0@=FDN=1{>W}4_1+hLW>fGno>w~(Fk%cy*ix!%THnYj!2IK;|_Na>+D?eir z$xnxuPfE_7C>$KOW!)`jRq1r>1WUdCJb@kZX@9WHY9U=j-@A*sSLU{Am6S+5&j^p$ z)%WeO!?_kE45pypLua`P2xa3*lQM6J#ei^jy|^;)_@Zx)@vV!sd%SGL(Dx0130sG= z&A*`pFn;6dgK$0o1s51jl|8xmOHTsQx9;e;GA-CX>8d+JnN2pA7W=mBFNZtXU%3n+ zW&|-IE5jjh_L_9d#y{Eni#-LKi9c7kgKy*;7X|2{0OVoFz*lvriiKP(x0g^*AAN$p zG4VSi#wCv^6v#Eh5si1Od#)==^Q32=xHJi_uydFpo)m#69ON*-=_-eDyJ6(%7SHMk zcdTTYn*QY~IV8+?H$v|3QGgu8z= zG!J}CEiOMdO^$6fQ7Yv9Wail-NDq!hA;(#2qg2v4&TkaOtcJH?drisNyBdQ6%a_IS zVUJ6ChE+2`=hY<`D!5|bCfH*Xd+7N`&`1Z!vt%cH6&W(e|uwupBxjxZJ`-3Tt`X-rikCYHx+vkC<> zRw}(9oTeUsDPM~?M!&UuSHKoPG38ot=6gcB4}pNYahrS_cH~rDDSOObSF zt|FH=HcGlHtf5Ph6`Sq{&B~;+>-_}SUXg_5q66cohdlt!qFqAaaj;nmF}_dJ0f*|| zLIqYMTJs4xXr4dskA|1MU*U+!oTd}-Y%=(OnQ_?yULUXyzxD3ro@ozH_3FJHs(!S- zg=~Oq7L6U7w{sBM;oW>9iE#G5r-0qo`s@I`(gZ&G4`~YBZL}FCibk&c*Gz&LriU?B zH2?AjO}>8M%jbiC9Cv+BE5h$mt&$Fhd!Lu(k1lR-9NHO)cTyLvR__%A)C}{IkQ>f< z1vX;`!2oF~xd$;~vYwv2$hGI5YrfR5Lpp(>)wvb@?pEuirk^nhv`?;_kh8tIHtK7 z$L=GqkY#Cbyd+4MQ^;)b+kw^i^OxiO#_HjDk^iJLgcE!6Wq}K1fy#$zgDL-^`O|oa zYY$igX1#>O0Lc$EA-6xL9c+N~|MOSN@FJhL$ht%}J}+ zYT4)Yidk&yZ&Tv#YOjHO-jnt)yyxb8@=w*Or>nCAn@M2$uG=nr!)TL8D#RfXU>%Ur z;JFMHcwR=8_r8Cb=4alG6Nu7zc0A@rGN|aU_Umw5rjPrT&P;HDgI%{cnBZhbc$~`O zcfEm?n>jAn0W+h3m*3UyR@&;&q40%W$f)8bBD{3928dbd6%f3MMs{gjSVyxx+5?Rr zSvUYEVR2qUGDhf?$<@%TtY{3cErLLr?6JNrk9Z<1kyEkgSJA^yp}T+PvpWrU2kV4m zmV$=+cCrV#oeh`tFoRb-LW6L#9fsS~acN|HM3(;;jAG1-0@MtEz|;N?^m1rQ&`UEN z_s@8oXnAmg00B8ehb^OU%MPrV40nXp6VMu!ZBsWv{w%tl1BOwb&T)BVN^7LHVhIj4kT3NfZ`<^97-PK7iQSOr`Pa zT9nI^}93drf=tcQtl!cQee z=q;g^$0OB&uw)LvZ-H35^N3~JL!z(BO>$i(dGY;*1kfa!UYkvDJr>v5Xu z79D>r=go)oYyB z;BHup_GkrT6J|;LrEPzG@QY2OoyjVhjwm>7Q|31Y{JJd|8M8YFiD_}50UwXk@6eHF zaqhBoZAIR9&N;ZK)zIx>m$&(={X45_TYXH5uwVrq<`?;8%!)9z4w?e5Ss2SiDqBF$ z#vc+aq%$eNUn+d6c#M38X;@br_r1S91$-R=#5_|lq$L#14L|i9n_!jbH8#iZl%X!m zcfbwLgVbFBF4#0iPoYmiD6H=rib%AO=Q0(l`Y~p)=d0n|-m#%Q=kL$?MW}$~d0bF1 zOK>T1E}dxNHLkFitKN;RO#)xnCtfc%VPYQcp8$eZ&3V<|B(ubiarT+)uQcOLr+2zs zgj4@GOaad^!bOU&l8Qea=Or=sY3@MAJB-z0YucXZLW>wqV0F`|@O+nNSvDg~&}(_9 zn0fZ64#`cqTi%#q1vIA5^?FUV3K<_-CtjF4LYC^bGKpCnWn73eU9$eKqbv~IB;-@@ zd=%cHRqQn1)bU`yz`;w6mbu&18^DOV`f=EzDRTM3qK3##kZd*>cM(b7 z%D%bw?#`h|K{`8VYC>QIPQ8D>DX=V>?>OYD1Co=)`QZOaEpw;mdQJ`-Xz5UDUiTeWi`U$R9E5UCP6v*iJ{i zCgZ=ccBy_h9o-DidviZpn0YSe>)Goy{ndm}Q3A?b*aaM3iotr9-4IL$&s0i-!+_+- z_;Uk4oAp4+g=!A+?lc4O2gPwL23&}lSBm_VJ+1j!f59JD#80fSA$E$Xcl|bWwQfl& zVJ`Co;%c590Hm#cQlz?|2Uc2kcfT_w^HB2NKorGl&!3HnQDLz|+AB)d=+E{)nzrz& zSk7M>8#LyZ*{4Rw4e^k&?+_=+l#9|3Mht~Z3g~oVR}W!b&|!FLgBQZwfR}LnRvNYC zMWpg7h?zb7%k-xZ;s!8Z!;Cox2je|U=%W+m;6UqioMF)Dn|+(=_K_$0<`f^`8%-n@ zHCT19Vq}%|aG-=1SO^My5kF-)57x(LGEdsw3d=*WVMfS7p=VHoyq5`t-z9pSXwc&2 zVSLUsU`n+SE5Ex42Rv`rC0Wx)QbA#&On#c%7D)s;qDWM4+OQ74Q9|iZL*_Fh4K?vy z#kgD`!?p>C9Mobc;A^Wh&_J#J%SIvoAuIKM3Y{|cYZ8c zo)olCu*m46L40VCM5|g1M65{@dnZKdGJz4hV{L)pJCX_=Nxk5$Z=Wc13m+}$d|jn8 zFOO)sDi)}zZ2IAa{25u2QBMC_e?-3R@8`u^N|AUhqQGRB)*S*2!h;=DQ%Cv?61O#; zKinmDQ0>rer~|&PvoX^?7NcUWK^JN`05m{YbY&${4W0-9)3Go21cz08xVl2bT5~7N zbP~WK5+@O)%A}H#jqQ)yxqt+<#qb!K?P2J6mJD<~5LnGD7p>q~t>NaI^Rm9;el%O~ zM`N`{E|t=`E@}T>m)KUHJ+MKtf^5h<6+ix{duK%^9fUG!OM#wa)_k*8Du#=TboRHi zfhsJ{X=@BrQg%G7$mH>}5k$I1CM8tBxYy@yzWA+#!VTW3k+HfRH=EkMF|{4X(!g@1 zaet`sM|QBgzba9ym>gE~L`#*wT6fYsRyboln%eHH*8ztG!BItz^MBQhRdJS)r=bjW4OnD9Q1)gTOmzd}#S=nO?_bfXo zXh+GnH?BVWK8Q)TRQ5QAJJ4XSsm1rx;&Pwf2-I%D$N&)jrl6F&$@?C>YcK36N%%fd z`1i4Hn^f;AO`EP4o^u$jj@qd*R?dD~YId6c=IH#BAfcc4YT|5zn;m16rz(Le`V$?c zf%n5uiu=A#YQ2-C3w%3FQ$VeqdDDJysE|n338w)iO?_Ui-QB_z_f^cT-ap4UaM%ug z4O0dU#ITzi-n)nA*N=xtF>xOT!LrPPm>Z&B*L1>6eIO+mV4z ztV-{tkI7A|syF@Ecn=SS)9NZ|7!zN;V~1NmixR!>*ZCF~s=OPe+# ztx4hZb39Gr3Z3t<-*FgiIME(nd_E+}p^5rw&xfQDB4k6#Z>_EQ5wg#ZXs;J&YF+pZ%*rc>KHFAh(r-yh(Wr z;%RAG)?vSL@>v4wh|=8oMJk*nOjF_)S^nVnGBlfo0JY8&%&!LF6}Nt%;fh5>`fKEK zeuG(bdc`qWaR{A_B&*{rF~P&D>2XhhmSFcz_NeBee%~W=^6&b3e{;wY?d7vOiyz{RfwZIh8MKUwFN-abl1QB34@`csiPtW0nB(rDOmsM# zz=;c^BjGxaua8<$8uz(uzwe7%|xr+vPc zI!b^J+Z^vh+PWBXA8(HnFlnlJwKg4IwggvlO5~cdNCZE?b?$Cv@U0LyKt>dW)471| z9T%@;JXZ(ds(qr#GnAnG$CWy-tqdL71E@oLt0??Bo+Hg5T!-|mgp);0d6jyr!nG>) zmj{e;&WMFdoxl#=WAO081tEjE%6SgI;cP~+Zw}ozc(g~T+RHcS$OIfIB_NqB?L`(= zZRCR7zW3G8ac*WsK7~_BTFaY!6I;^j?KRx#a21A>)WeXq-o)GhXR4T~4(Xdu_jSsGoQZn+YWr1LK+jT`IX+=WuF$qhY z^Uy9~(gl84lya@nNT}e)@acpBvL~)~e(bu4XxB_aQs0t8J91+?UyWDOdW^hrqaYQj z<*G;Q*Cqp@f}i`L7Z9U@%|fH6I*#&bDV5A>JVI5ZBNmi5``cj3Lu7CC`z9%)iBjgF z>~dGle6sOuSJjdajmo<>vQPkICBbsckr-FDBAxca@{Ql+8hpJ%}!HEFSbp$-gx-7s}M-{u;#ikMD4*ZJDx22vtA>|Pt(rT~Jq?&5Zr zO$8l&P9CbR4u~t+X<3ICdqrd&gWfjct~?Zxb{`>1kB^FY?M;Dr`m7oAD<_I?DN!wF zqrJ@?y5(A9PVJ4jf)F2EJ1)OQ1~29n1KFNT=@=Tcm6X{ii&R48E795Uw;2zZI$5SsjvQO4Fu7D--~P z7)3ZCN#wllSV8V4(uW4%QfRI*(Qxny1mq_e*Dxqi%yfJ+_#+mykVVlbjA6Qoucl@; z@3GZ8!UHelz&f-cm6f+Tli6(1rbKb)XjquyLM8CX0Lz71rnwT&hjlI-ZBjpt-iD z>F{A@>ybhm|Aoh~5oytSiKO!`M;gb|Y#-ezE(NrO5BFI4KtiAY&ftqjXTd5B9_w?J zNx?0i{@(gAvyf>;?#sW-altIFMJ!piNrWiuOk4)KV*FZ?;0#=-D2sP<3#b-lW|{j` zgD$K}jD*1SWT{RTgm8|P#hQ`Rj8GwMc_IX}kWu;+mG}@lzo7BlN@6;~8&uB=`HCAz zyuku>WERR69Ij0usxnM%x{Dwaf2tcyjBI+qR)GqhmG5B->1HU(BJ+847khFZ0E$Zo z;CtDdPGt032+-r4`%g>b&Ipnq=mKp^iL$YPBbH2bq4;4d5<*5J=OasuWn0EFLj;6D z!xx4TJ{Dy~|HVh`GLonS7Bw5y8AG%kymU@EfB0{|s0vi+S!bgMcGeu<+V3aoMX1gB zL#lJqrKja8mG#RJu-_Y*!f+#`Tb{FK()bL5`Cinu1OBJn?>7)b=%||UYbGCy!y^X! z5fR&ONCUR9M=Tfd8_S+=ENyuQ7UFXzO$NUf+h)Khg~cP{b^I=_2x?JTU+T1e#O$)U zBDh-FjLldOeS}1nL_GDX_P+yM{cZXo*W}M%_d!=wA3wDKdqF@J(?FSg^eJiI5SLYE z(x1gxVF_o~&(PvEUR%u40rt^{vRIau404ximwk~LWSxw!@k$P+mIfsmo7Twr%p`obZpAQ$AQLyo@oQ+p$_R>vsCD{z?}3;MGqN$9Yk^p6fe1)-FT)CiuUR z2uNw{5>N0g_?HMJ;=eyAi7>A}SS_!WPCU<(6PCBozOCwtSohsCyfO`NFlrH%Q*Fxd zLoXte*(#d@Li+Ov3KZV0t{-=h4V_1@|D>OfZHz<<87vo~?CSSD;g&Y8s&U+Gh3h7xyq=bt2&NOVmG?S-kEqb zbydb-AApq!A_UQ-i#)DA>ZF5W%*>Kwfd>TRPRVnA-i*mpP(RZ~ZRYreu@5;uZ6aQj zhs<#(!MAFil4=lU6nueP=FZZ+rjhZLZd+Ipj`D%I#x%$O9!bDf>-iuy_yQm1nadZl zJ8cAS5@Ny)trd>)nR_e}sxX-j5~AP@HtiA1=SPQTnAW`ATDl;Xz7quf9%R6oPHNEo zPYTPU9iFfxWSPy%Wtq0yQj9Y=?>MSHr*RZ@m{vn96PW@LQG_rx)tuj=ql3-mal-kR z(msY;Mb8n58N8efy=muWTc9CB1-|WG0t;+5lHy3gUT!}vP5Ue40<)VIi=w_hpH`X7`lG5TXpl=o7@*u- zOxF|c>BT$WV*%8&nU3EhMEWP`CIB@VW_C-=&iqIG0MkdhpHxkL_6&f_u$NqCN%P!V zcUgOJ^M#7<^|vVK9xE3FKRIYo6LWa$h_Upa`9iNoOozkbHj)de3F4x6f)&>EE2(dYvaS)GxAl;Pt=C+!H=62y;T z=WeD#psjy!H8 zR~`R}X6!C|`l}5c^xxFxj->6m=MznInEwR(uWqivBP!VsZa)c3ruAV2z5YI2fA-Z| z2hUxBTJ9K2Uj#QErZ>qEp_X`qa*jqY&b2BQr=7IrRmtV*KELt-!%A zB#EHZj4|OfmPE#E?4+v#M@TAz*7mTZsx<@21$3)k=e1I-&i;j|D)!|Q!*D}B6!dd&f1ii(EJCg=D~AH zSm&jwf|aQxnc)*I3R-{_fM5gxDOZ!HXhz7eWg8RAw(jeepu!T8#Z!IGQc1cZO}G3Z zyA@~_ubY1Gub|{$r)BP4KD-QHr@rgj2*66Bc(Ql*r)Tk=5RJh*^zm9&(JEKGr0%RP zQ{yXkMy%JYUs^bPm0`zG-R7G|bo05-6{+Ya(24K2Q!ONTBX${n2d@wqlae>fMD@aoi{@`} zM_P{Ro9HJse%r)16}1IuITGkFExW%ZjV*J4N9RcqXkVAhEnSNAvSVBVPzUn4$s*#~ zwf0@!o6OHcgSMbM35$wJH|N`_Iv156!Cy`}T;o3FGOcR`|0(Rdi#r-FTQoFlQf^Y; z5OM@u1V|B07}qU7eJ)@;+3jsKoxAu#6O-2OO+%cCN;*V5(1l>)$>{4k&)=k&V0v?i z$SW#N2E0ZXnTV=6$6d>}k4jNVlMqhN6x*p2sX?=iIb{Qw5IkfIMKZ3C;&^n(XidOx zXcpD=pjT8=GGy)v41Le=V%M@cFGTf`$%WYTiA;}-@njfc-6(y;>E#LFa-NJR$@-P1 z4C#rcb>^m6vMre|%JKIg^K97);MYWB1ms>h={#Ih&Ox{gYkPpWHJJv58&$A&{dNFP z2I}5dmL9(AvhU`03ogQm?onh{?^1~mCp9-ZL(`QTUlQYz`txv&dqSUTFSZQEmV69{ zxatMC?-cKZs#IhykDvLiPHR-DC93gSYi)yP-|+>sZ|fjpl>H_-+=Z=+)w`T9!MT?y z*oR4iP^ZFu5YCdu;*Ne;JOLYan(PiA0agX*gM)oIBd6Y%2_k`3L}kf_VN1`R43JsM zbf6HVgkwz4tBom6=n=|*c}T$93pdcpkBgzq0z;p`YsYcddCBQ;`ogplzV`F`dd=$7 z_f68gB(_vWqhw#_0T5X^ai@QFJo#UTNJ`pJw}d{>AR}Z8<X;B`qBl#J|J z6%YyoJA@Ah`3$_&70rhMn}tM~V7==oHtr1E3Dt)sUOokPH^F>xBF4J%yP|uCoq3x} z<(0x4O?t)DF`J`$btx}1SjzXVWN)~oSe%|ixsRy(4yH+T1>!botr4cn35y9?;GCFs zzx68dU&G1D-CmtBwri{viLOEiuiU2SjGhUuiK4Q(k)y~q$th3zokYDSM2>w9!aHTj zJ8Lg#Nlsoo6>rihhff}3)PAH|l3j-0q)u7*GLR=%X1zZS3lcE(arznoQ)vpaGv_*P zT#}-r03j?tnk%*oCp0qoTU=KwU~zUgExFun61h_#ThjDV8Sx_D1d z{1>CvTQ7*T17q!AlFH#dF*MhbFfINZS#>C*d%-VUTAlrv)6A?mvO2qW<-(nq(w1RD z*Rv{h|KD!pTB7jp+k>@C|4fDdc`bqXly@?6^O8(`uZ&R`!S|`E=+$^Ma=6&}@bg#W z6;Sqt9KX=ip_Day;NeSt&U6H?L}wd> z9IER2{d;=G`RcV^a*8eeh!mLo_>p%3q$SX|A})AA1WyLfJp8zCXOsoYGKlO{+Jd@p zc|FhQVlLSMKo$fE14`_I-Sk>N*rxYB12HKnBI!ILa3L@yTag*%XR*Y}G_f+z)}Sm* z50&2frYAdj9erR8dBLEN+n>brUKv01N*!jPW$*Ddd7oRergvPC8cNC(D;&G~>F5pu z_;QzEOcoP^j{$t2gzbu>G0}i#+i2cRMh0}+fihGCaXE~6l+%!yexH2aRmzJFrw6jN|UHm zt06|zY$X-Q+yKT%j%wXJo`7IrlU=U!mvn}i299d|!$B>shz}sznAv?4_t4T^3dOt@ zT9R*QG9w*mafftgL_d9>YgNg=c;YQe_Q$2u&ieMsHdL?g$0;k1NE|*~HF{gEEhR>P zKHpeISGdCBwDwYv+OeQ4Fj+pwE6GV7=S|?joiQT-u_!2?oSGr{2qslHzQ?Oc@k$^} znpmI?i2(*se=p_xp=Kf+&)?N4>My4;%)qec0XWNXJa$gyHD94V{Yq;{ZqYl-VxsdQ z@eyx+&S25p1h#g+$Zb*jaJ@9+ECE|7fIPuC@kyfZHZuvM4~Qm{SfjWXv_r%=oF#sPsymC0!z9m%jS3nKGIVqw4s(;`Hc=rPLIC*tbWTLBYjS+pbb);@)F)-4cVffcul- zu8ifFveRKhsTLNs*+P$n2q8_r(v+Ou%J*%&BV2(MVihKpmX9#bX-sI9pL0lDwzA3f zRoR(!>)zg-bFrwNtOe;=;ZEN{CYU~9Tl|Z|cQ;2@yS%Dj(pz>oC+6PFF#F}XScD1` z_9&J-I~85bTpZeGpsbd)4o|NyfO7)<6{o#QM_4yL{?mmz`LU=ALDGMY zKLAR|kMK%P{rdB6Bi6w4JAKzTc zSsBq(8Zb=Q$s|>ldRv7FD(;-vo_fD5GRg%63}_H_Z(~#ocFPX7=3Av8RnvpZ3E33o zFoB!EYPS75x5hg+hk{$U5#g24!`M)!-tU_6EN4Kw{T`o*wE~VJ!VHNrZV^2HTDMxF z2q<_f)==tkhTwL&wozcdBV<_w^{(c%LZ{L!U#Ol3p~p{N&X$cJ%_}UQ_>P%`&SK*A zn^7GXpzBxf{I3Cd@ZaYNAg)nlNZHI!vK{F>%;~#T6REb|MP*>fRJzlI=Q^NJ8Ee$o z_3Marp!Tg!kq#Z8utj^?`V#1=8BV*8@?z$uVtLZPIABoT_=^Q>cgl=$%`D40OVaAC-h+PWa=2sd$twJGVH9$zE^UxOYJ;b~M};KL@JaP@)S zr@1Z&#JT~=VV-#Z2>Zp(L6gL&-@csd6TI;5@FD$T*RQ3~f2?b&0^xcd->-2lokeL} zl&y6cmTS0AT&@Q(7&X~ZEinwa9mZEv|}m|Q0X)f7*$-Zo>N zf1+PE=#U<6_mHC z4Uql>+2jTvji16gRtOR=2Wn>7IEWK_2RB8FjBjNvzhOK|<5ncjQLI~A-d5ne<2zJ( z>)Jdm?yv&01@%-wU9ko>qH|UN+vq_3=33iV4GFD&xkzXuXz0 zl9|7M%LOK*2MGDkc5sl>sAW6R-^t0pmaEA|rB>FIxnSw%n|a+#{N0Upp*$+p ze@GK0BFaBj+XO(cfqn1ai2l2r@y&R`{$%q;BU%QkrSDDt_7}tiIV-erPf;TMamyE^ z=A=bzbIvdn9CJ>ICuQ(V&Bld03{QB=cURaMd6A~R54%6 z{Juh9txNxVHs#wJXts4xrg;w>$QQ!N9DVIf!gclFD6|9D+#7@px|a1G`Cq-b6RGZG zpt?%sDA&1aKzjRkn%-~vi${LVg-u(#Jtp_XPc}T)LB+SoH$WZhpFWVEY(}s#p%&nm z`%JeiWnelZgSK3t`~&CVT_fXN9_r6Z29X!cC^3L6HOxjKJe{MlmO97>Fdb=gVO44U z^=Jdp20v9jfl&F?GuSu=2&V8=4Uca%Yc|KFWYC$#48f|aav?on#0Wn77?(MC*=ILt z|CBS@^B$W1XN*`8fg1@DQVeFOKg8p0PKXBL8;YsbuN()*1>;xzFhy=ZP1L(k?$fba z5<@+{GXj_--QE?;*nb*82!atk1E#kJpc?zkB)?yj+*66Myx6~_OYAeV$vhFxdxKbdSoyUMUj1EC`X^17f`99Ko!XrVc$_hE)fCf1ChlH6fS(m zT!V<|F}t_YtamN zgbHA9sAt#5^eOoG#tEJfI~6yQkKd-M3gERc!g%EJ7U9>^H&lu*)tjv_Ys{a*m)MhG ze&Jyu{p|&6P%6{nI>(_JJRZud6jO&lJ9^j9i;9C+@}WuD$7}Vvm;Tg7MTU6mNK=Y| zGOG9~lW`NxzHyW7#YEA_z0?+nKoygv#=?%hFue$hU}m)WB4Xm_uSN!~nosiQaE*{T z7b;xSu3eAQqQ38jUIt-3V`%eF3LwGe<8RD6uM% zlq*U~AG&q^*@Gc+-%~kPmCDZ+QbG3cHz($qeO|1duOgh$Irw$Z*iAGBg=H6MR0?m~ ze`Rp%(@InxFtnFdmk6HHV9Y7>=3R}oRX7hhaf1g>VzjR@I^%D8#>&2IHLO3I-D5ZY zqs)LsVrXyGC>cVFUC*!>}0Jd1r(>zWj?d ztx$zGCzA=^~1ijSn1JdJ7|=&P$*eyk#>iKVLU-d5Zz}Vy64;3ODWchBoU16?TGgnHE2R3bg_rLeEIfR$vO<-D76;V*NdGERhb(5WV8K_nFqG*Wf89ErB#zgpg3!F;4vROuiR~q#Igzrn zhNV?8=tf{duSf;b6K=w?&ni-^@VnUH;Zj^zh0Q_}4zrIaOd@kOW{stUWs{$8o}uZ= z0!muMV@x3_cYtX=|bo0Z=AzAkOw^WPkds- zU2+0u$yy!h7rw(VE}YlJBWqE+MBOW!HST8V0J(evXctCpWKw{Po8wSjBMjgv8L#%* zGXWWVKg6)yQ*NxaYB*m}6q)eEg&Fjkg*aJ0T4)UW0!M|!6onRxCTCRN7S5U6 z?|EQ1#}}x?f9-GIbvvpbWvXls-CMLeuU6UhH-q!wmUFRAs~$edMBqm(fEz@$IPAw| z8|q}qI}~2bXMK$5*gDBz5bzagC1mZ_ft5myNeY^I(KhHw9W#Cu^mR2~DX}n-=&y|M zHzOJA*`|*q>`Y+UZAPLxS(rTxDf3zIk_{ZHg3Qn0P+k2{MpkEpKD9M*>)m@nuGHse zRQALw{r781gVv4;QMnfve_A=#Pv5;)7CLo55GpmLyuqtIW5-K9O@Y5u1jsp$EB@&d z9Ld*d}{7E|YQIxIz{uLaL8{%10eFpo7aJ)6Z}ve8EI zpu{OBvjLM~?0%-(tXZJ|V2*!|`&dY+-KmUFid+qFSZ8NmmoxC@Wg+o0_v=IF5SoEY z1l5>+HOaBh+z-;l6xUt?qK|DtYWSU2YAvV@1i$(q;}Aou@NL%H+Tc*Cpe*4F{2rV9 z6AN1qcU2O2SPNzdaMv^S(pFtV5ShDg3c&Bz#$#&&r@{CFzA8J#R=hPTeoY;GYl%yq zYYzcEzI-Pd%ciX~Mn^y`i6v(CxLm_{PDxZ2H{B6S+#sp%ZE6azMQAWK3SG-Ls<9l) zjGzC;Zyh4+iDG~2F2fx&6cRoj+_juEGHEfwujz4?%CO}phv-_3B&RH6l?P)ef`*B# zC)*~98ODd(k0RQ5mv^F`CX6FW(S`0u)7HCVuHDdDPx;VZXUxB?$e;$AU!w zW74@dITtp2NR6JK8Bv-jHHOrRRbeIlp0_;gc7vm|1%mwK)obzG<3f!E7vBEjzz;Xi zB@*Wbsay=5z*wbB0~@qChfEERtNy%)wF>F$1*@0UAM##mfR!^6|K!g}tp+7*e;ZCn zmO2E90=eCqC4>qD_WC@`7pK3}79}Q}*cYdni@16m4JY{&@v+B&)n1QUeMu5Rv}%L3 zbZ(L)x^ZZacp zNZ7a_EPiEtp-U>FPs0nGO&J@bYbbKEJd{0iGD)9*TQ5kFneBVYmf->qRPLgQ)cmeh_T3Gw9P|HYOQD8*`hRUHNBWfR)rI>-I7TwTYC(k5u=+UPbke@s0+}IJO%%YC=iL zUb7LinFIG30qWMeoFM&G|# zqI(C1x1LiRui~8iDtk+V$oK|yt%V?$L?CMq7VeI2!^zx!tWLT+PV`v*`9XbbNHx}s z2a?GBELcRxn@;uZky&Oa%w4^%;$BCTTeL}-*4Gzy_!wx12&)4)1zK-)DCK{pMG7Gv z#+VTkbN}P$f6b4mcntrncewO*QH-rAU>)CFFh?I4%&UsoyW)}0z@tU%k8Yn8AgVW< zwJ~SZ8sSO26h#1kkfjr(Z#^w=hx@}baw+uJTZ!R>NAXB$WutsZh!n`d|Sn z7flA_$pZlMyojx;CrW)vyZ)>vB>0p46zjvRXzT^d#cB*pk8QM>KcI8)d;`*bYXbX#%dRp(shg7Sydt z;un-k{8IiVvW*-7U=8_NPNPGX)z4`094GNvNt0OGkTenZ?n5E={LQc|T=@zs5hzrN zbQT$}CQ7M}qv<-obouUn+cO#4$p^EP(RYz&{qIELo4!wZ$K>=k#iYejjo}b_g$3>9 zA9h5o^4-Xxi+tio6G{0%W>tVf~r*uyvxsi=&>mv8!X z5}n)3W+c|P)@#qE^oggs?=yRcCqL}^)Msxi{y8;qWQaySigz4!|2GRj{~Crn4F3Yw z-iqxSEA>>?y%tG-I&c_W##fI_EuE?xlv@qqpSq*d9q;=abd}!zd(ipkDJTctCBA!x zEV@Yg&$OWr4di8j_nlZ?)9nJDf57!#W~Dd+N68Dv9(cM=z=F%B{qQhsgvf*P{10Ao z`h8Myc^6~Oy^_t}!cynkk<@utwSMkN86uf-F5Q|FQm!v=XOB~BJL{38Z}cI%Sa9M{ zU7tTqi4w~&d7!!-{D92x-Z$AAS5gKpUx>N5l75LHpn$9?$lw`Cj@|V^;qM&M*LEoc5q)`BO7V}R^*;tsa3`ZJAGfO8F3`Wn+Q`9zM$Z@R*cXlxyY4k4j+MH(T7wZAe z-)OyPc5||pA)#D~#vTcV66vP4h0!pc!-&L;AtCBE8I(}=V-Po(((`;MYSfKalDory$-p|j z1vs4y)Wb;V|A(rt4vM31wq9V7MG{!tZP^5OcL}g)LU6a>4#8z{cL?qh5;Qo$U4j$b zCAfRgkLRs>-{*eSRWtw1R!wbBcb{|m{16s%GsiS(fi)p({3>7Y>(K|4Q09mAUsOs( zEUT5gmqw4XTv?4HcLkqcGqdf9v^!v}w}^aQdvodKAuQysqOa^~5>VR>6s_pqa;eQb zXVfjI9<|)%Q3EB3S@6IR)zNf`RUPzy%5 zNV-<$XFHw6v~mh_4OuA@v(@9n*QB_>-8``utN*VCbIh-2FpemN$$W$e(16vo{aTp$ z8$@u^-wDWBp4f!f7;z~f;4U#5VmplX1I!=H;GWZ5^u(Pg4EEg-{DrsQc?#vETq?s1 zt<&vDPKLtiN)>Q6RI8_Q)QaL`e(H9FZqWNfobrx7Qk?&7CuNYZzzb}Au`whHT2=48 zdni8O{&M76Pb}_9Y^6hjCqX*!`^nH<_j5cMX$S|I+C!t#7mVNWI|s+dYllxgz;=m? zy3em&Oe=ksG=<3Ld9So34JH~Is z6;{*#YWc(W@YO)e4GO`N=27k!YKxgYHeQkx%+=U~D<}VYy~>@&A6E5xtHTeh`*lYG zt$B7}fb&|}6s1d;tCJGJ@^o$ef0k13y0}iZ3tQR>aLBi$3vgbx_B2iC?nPLxXy;cL z=@vyOCcboRHgbv1s{3%=l8Mw<(dzB%n5rj_hxjlB8K&R(yqv0}GP1$OO_`oly*k*Z zka%cLhnp9z(H#xyn)HA7@+F~Ee7Ss5FAlLs&&e(rN;-Or8$35Pej@PlK3u_IPiZ`tLNQM(41U zk>fbFbL@0&&g;f|%zZ*2YXQMg=h`a_wPO`N{xpf^$gR_n;CtKVx!U zLynhubkOEORZwegC#?3{tSu>1%U?=fyUVl&KhIyZ?T#~At-}%eYElR9d{%!eCVW9r zx~7>OM?yLnuG>)m>a>N;DQOv|3mS$x%cD7$&)Nxi~L0P zs~lm6?=Au1{vEe@*PhyYFv8xKsN5>FYvmw@BEJ^L&HWI{4F!Ox< zv#R7cr~hwCOk!{S>+~h9x>;AWfMsTg5vm-G1tZTbOR$JvUxx^p)eG8i9V<_xX^ky5 zBVTRs1$mV|o84ucVC`0+3JIe2*+@;~>&eV?XH~;N|7ZKAs7qeFug%i75UD(qaP<{l zPKmiU#3W0L+=hY;FWyG^QKyf~dw=azwyx3Dif^}ov8S8T-4!=7}smq;Pm+g zx*7nG`_qSD1)mQ}0L(l+n~jC*Gf9pMCfHo*K~VA>D~geGvWM2y;EjAhAuYj6TZ4^_ z9u|Z)RE{2|B^&pnXZ*cr81rH%F$s~h9-0C*LA3vO9-Kb7?IA4=inCEL=f)qEFS-S< z1T%tNNy6?@vSTq zLc+hu!5T8xiow|<#XVb}BS@z%m^eyR`jvN!&W$P2x`meeTNg|Zn&d@aEY0EwuYdUh zG9FU?eDs3Jp)BqHPKO4O#L3E?Jm8%T&oP3ejl*`fS2y|fj@|p-^+e!ll|3a zH>d>Z-iwV`d^{G@i<`)k#mj}IhJ*Vd=+zhA+mgCVV1ustm%V~f4qu7Te_D%J3v;)y zBhr^OS+=@M^`^VWD7}KGEmRn5rSs?F`hQ!81R#nY;tQZMp7Wl>;J@Il7$)e@YojGH z`yvGYM%(F%lwhUWHBit!aQ*d)8RH&IIgTf|8!?A8!I6Lg@oeZeHk)3LlRE2j(`8QZ zWEajqu1li$5&dHXv_C(ebsbbT+Ut0udaysl3S;!;0CaT>G!PC_?h^UNW+5(Vkje;@OKnEe|-ZwhH;&pG7PSrsc`PM zH&U?#fy1q%R6}t;6m(`{4@#Z1iksQ^gu9|qIG#eU#xEv)izq7MqaZYRexI>$q>K?d zO;J%*A$-&>v3VZXQe^Gf%f${r7oDGPJ<fqZw8arc9PF@=#dm;1R~R#gJ*GZS z@;&04RiHEpG~-Xz#bfreo-g|c9`n!1E^&GK!wlH>Ekae|ZC5`yXoU?X8<6f#m?&s1 zBE;AZ++KmByyUMwX?%N|quQDY97w&ne6dJVu?jA{LHYfuy#eJ;xJBwcPN-7=7gak5 zd6W_OQQIM{&Xfgz_@t%#`WS%?QA1kYZ_h58MFpLZKkzPJ3tTS)PFhi)`i z;6&%r)SfI1-J2CR=XD2nTKn-rU6gVEaT7?%LY6$kn;ln{U@STpP6j~m*fu2RvJ93auKXd(EgJW#M_g~JLIwnY_i}e;vcV5pjx0i5Vl1R{YSQ_=MAU9&q;V(O z$3=JKc(KPFtysV_YOxed>ivV6`s7n22}O)flO1>0I2Z8-@zGPSQTE+;kBHZrVHpx| zW*P{aUwwVk??>Br%bY0dY``H=bQ}p8t(mp2jK6cr8C*{or22AFfO(2Gr^gN<7zm!a ztOHMIEWP>!h=&}&HT8EtOG}{Q1J%AC%EQZeq<(GUEbPqyx4iRu;EzwPgw8a7WlN5w z^}<9}CluNCZa#ufHy5N?G)M1$N~gvg#?DG>mxg%9x@^@g%#stld_i!vX;?=&jGn|k z=KF?N@7C&93W`?vY;|R;@$|u#m&q9}zYYCoZW#^>=2O1JZBLv!OaHC0bbc5mjQ#R# z`O#XQ{KVW_M?EIOtvAk5)ZvgjIKpWB8lz7BL-K_~l8?}hAPqeN&k#dLLtK#V=kA2UB8I$?o1&<~ zQYNY>(9J62qUV)Uo*P+sns?`5i ztnv!>GKmc5g{Bq%tJP&|1-9I`Z+E---4>^0*1DX}j7Y6)(^M`HWXLHm>n&sgv3mUK z?|*?)LY_C2i>%vUW)1M(mv@r^ID_|s7n|!=%}rAy7=#8c)6w#)=N*KPe@q9H2l;X+ zG$|o#8RdjkC!>sv;XYKD>!`wcOI+5ZOZF~{ra(vCIbBn_TOi5L7FSS%itUBu4p1Z>w4JO&oPSE#kVDhe7R3u6zQ2YSioJoYn(CO=-zf zyGKSgwyZ^-TO3V*Eb1QBJM3h@IjZGga|U3t2u)gGQvQ4e96^Ph9)OG|E{2T_Ok$aQ zN0kTihhPtkKHo35#@g^S-yie4*?HLS-1z)Gb>11ywD@NBncl6<~z*DYi7(r;B?1{vnTv%i2C@MzN*PlN64tFmz!im(scaQB1yRy>RX zgFX=_VtkXO`+<6r?4xrprrxiq;qlwD!wKk6TYJViWa;&8%pNpnK%+Xpzis!2D!y5m z`JmumB7z;mx1+rGMcbskGn49)8+IN}KYMwKlMzDg4Br?5<+^H?U2SaodYga!;57n> z44m4`8iLz8&dh{31Q*rlMiEyz#W%X3cKQKr6Oq2;sM3h@m75=^8AtS!c2p{690^t& z#DVoN>9e5px%|Q)p4!((c!W{qrety-sD=Fug(8aM6h7?a{M2WV$Z$P0>-*+C@q4Em zp{25nx8^4Ks{R0`qId{8v_kBC8a%_Z;cjt@r8Kv3Y_W`fxs?vEjLvP?X(o;EnG%>E zK05WY7M{Eu^7G%w&0|^v*^=x#dVFd{Zuy_sB4~UbA}7@Q@tl~#GXH!uVfOO~jrYTci-BCm%y0j1LQz;uc(2k!fc~GmdLN1i=R^H~Y^9<`mVKjJ3 zIhd^}3wF%XY5Kg{d^j#{P^Le)b+to&nJh!7pss1a$A(m(^{2k7YPw2${FN~>mO9U; z7N#$ZRq$5K(tL8(x2oQw!0$W55zY!+`)`Pxxv9$3XGt6FINZ|*u_xWsbB9tC(;m8i zXyyr6$BC^;^yV5UzW32)U-G8G#53<`#1jRuy<_+-=>|R`e0&z+n4vIK~mr zs&mmW3=n};iL|F+KG4R8tziUf@*HbenJ~(81MG3FF?g{s~`Y%)dA`Z?t9JUw9fy2(*)%kmFjo@UpaDK*EfiVrE#& zd2?2tSQN*N3>>{LAp*Ve)7Ubnx-mP>6%Od|M7%6VgROudDH-n>$F_Kl5B{Uu31Fk( zhB9=o8|XPUUARj%_7EIiYORW-)ChA! zUGu4sKJ%@=w>TjD3paca7TTJan6eZxmLCEjThJU~+Jgof}%g97sr6oYgzti;N=$|FQ-~H;6Dy9jvzutGDn3XkO$oDp%*Ms(R zjuv<@{YP$X8iERR7of+1ALvHWW&Jny*B7s>5cZnJQx5pz#snyk$$!nBy$aCK*a~Mk z?tRK*a(P*V)#8hCD+NQSYbWrw*YsBOz{s3-US6s}jK@_%tdPA#83l|IG+Rtp-cM}M zhPczV>Zc#>23q#b*$`WNL4-AJsAN~O_PpV8L;a2kTL{`_l)UCh)RFM$oHmha0iQ|Y zhfGJ*38ihvz7TYhK3l1M@udyAzCai zR)Ln|@~o}G8@H9Q9$&=UwbU05oyR!$f(jxy&I_#r`xS{-Wd(eZesNMCVFf>#25T#% z6;=}2iQqsnIGQvN^Aq?yY-{ zxWokoSajQ22IF<5NFk#^Xd^XBh7}%C?fH-!?wCkGUZ=r`d!?P3eUi+Z$t)s(t}HhKrZ7qcyYqBRY%qC<9IaZ zh}%U;RGK`y%g{^0a1O2x_D`1V&q=dUQy(D28LP8Co*$A-HA4YZKh|l86~bT#mzA*e zHR>w3ZMS+=M8r5jO2!OZUePy0#zrI*!H74XssiatW&6AGY`7o#2HFXotICKg1yXR8 zCooEwt0>{6$dhA;n)2f!vBi)@VhB;Hn!g)v?a4QKT=*_+4|1aYo101ZKVdDITc{9Q zWztJqS)pJ1nI7w+ID-YI-gnpMpFeO&Jl12TL)Sxq5KJdnaeoaWmLnU8LNBw@8tu-q za@k)3@+&Sgv#k**gzF4DP7XS(D{lDWkh;UDeU7nU*n|f&;cIA3+FG*2iJv)S*1MtC zus=#^32d#KE(5X5eDu?Ze*if#?_5j;oKZj&Xklsu?$RIP3J?u-35KSLCFN(7jl%-b zbNwVs3`^HVxY}ZE*k@|54`~;}HHn#x{Bvx)P1U{ZJK4=_?nJ5?=ws~tJ8_E37#8Ah z$*U8q_~kH_aE%%6GC)e+jIgfhnHR5xSat!@bE-b+hOkUNKelb~(V-IG&2KDN+~)u(Ya_NxgbIPG=A3r~jNp zb*^Q(emFy=4#$Os5i;$YMwFyPjHBFUgH8`(bi;Cb!Jjf^Ei^aJx!|NhCKN?V|XqA_A$tCgXyvG;DJmC#~IXkbnips|J#4KpJ!rd8)# zk{CK+u&#R0>p|jf&A9+zY;JTe(C;fWS*M)l^0f~Zb5~dd+DFqc@u@fWJ;?#kOgH4jR@uWY_}-sQ*Dtxt{W$FSxX|5>Ef6yZfU9^s^1+eWk`%W= zi+>TBKpmyK%Ieng6`moTDhd{?Q*Hp$eUwxOVFPH3l1;I#>1bP}ZO+XF`}hXx{@M)5 zu$Kpl;K@~wOf=A1;e>7uSo4A)uWAfgRUwRC{g16k^a>#&1IPis9s~{Lxjqz%O&W2TM%4-1EU)mg2yhDf zk0PEH<(IjNMaBG*&GDK4`LUSQt3-USDWK%_Te&WXWx#9P%6eHzV)2~xLhjk=A`f+{ z$Kwg!_y=`Q&cWsvMdI;+0sfpoc`-?~Yj${3Tgo_|z^+Z=O@Z_BLb(%}7gqGBdhMW5 zBHp04n4(^qL4?$e6z4}kxrvjaE z%DnLycr`d3wv4n&y4R#aa3H+|^8QYxQz?^6>UJnHF{(~|5x--I&*|$+Ij_{Uz{W=b zm86{CFr8v(YyTjsq0@V!dY{0r*&T(7`-fBJR#$GLM!_19y~(|-X=$>rs>EU@DED&d#FD>3Icy}Krs@nI|3j}7qCLoJLx z67~t-;(DaKC00B~=oq~$m9^Cm*(p(=z)ztA985+l23jGY+1tp$uq3PEJ_ZTWz=`6h zj7Tfg6UH}w94i`1cHP>qUBNsOFmV#i(2nV>5aAos#c_0u>|Z^-pP{LuqjUPf;}N zokN!VR!uM{Med^fwzX`hM6Lai^U*mmoxXH#P*0(w*j}q00^u-_3ftVrkKbekl$4Ju z!@}qwkL+n08L6b^WKa~g370FrXil384!9n|DPkjzLq`67%>fW~$F*8b2>(af;9Yhg z@~}I;R?3Svrp_YIAp)s-Wy*#$ZqT$@5f%FYJz`$PV5`E`r(FKhQ;tqvTedm)0VD28 zn&}6iMWAUL*4hofk|EBgt4&-$=ANv*;=8x66gMDPd*T{(eq_jh<-bZ!2456O(AU1% z%dO?0@Cge1IQ~wuaYhRZS{aYYXjesK$&+?EZbFwL;A~nohd@8q>6TWGtVtaM!&-2* zt5_}j$q-y??7s8lMY}b5>v5RTnWL-x%$Ozn^}3dt@i*4T%O4PU1HO~qJ1+dSdDJvd ztqDO^2hmO`ZP27#)NgM>h-b5fJQ#v9J~Z|wA(}<;_(%@iVUPFt8q7EIYAV6-#Z8A>~{@TtdkDlm1d4f1SxjNDx|xR~|X}E(39j?<$90Utz2q4JqN4fMfB6 ztdwatBq4vz9>9agaKQ(+NBgA9JFB__J)0B@jnMrzN87A`mR@xFqtQ?6?ZRt*uHf&C zBWY-U-LPwiW%_+%Q3octGf+Ja9OrVJo~*8pd>UaWr1&x0+@KiyFgi|sV%eLfg%u-+ z{L^RXx3fHA8#bV<>hj#G8k#|vUAnT8`}I9JpdD5reMrF-WM+w7->=>%F9{Ws2esNE zclmsm!Ni!el07D!<$bOMZC}L~?4Qlw4Omw%*Zi**0Od`FlkBTx`lMcy6yfT(WYA%SJm+S(BX@u4U6RD=rm<>~qitP$L( z@~LO3`*JXy;6s}RjHcvrLyy##MnF+B^$){GmcIE42FDp=&Z%?^{?<~BuM>A3cpY~V zMZ~O$ivko`is7@49eV<8ui@6gt_MpGT_s`S0W4DakcZngSwwdMn%Cfn;1Mm;NNWq- zIQJA_%e%g1Kt0Y|S@2M2z_m}?w}f#s%8w|6f*7C^#%2$u6%AL@{$EwE7T%efkRy>k z3?yaYQ>iNUsXKt9s74zxCJI{-F${UMjX0t>>l=a24i)@`ME}eM8m*rC1OFWWI&^Yj zOu1N>_6d9UmhKq;8(d$J>zAA)+AnUhogRK-w7a0MWFWDT#Xa9)A=c|-Xnr>DI3(-! zm{~$tc_)O}B8uGjoYNur_;QLa4M)aXGMBhs!fu_z;mI}8rJGx0(FNNs+-0?A8>IrC z&N3TP0)OPdu0rnxg@y=~jN(7}t-cG%RUZ5CYJPC#Z+2R_js_bm9Yf*8p+moxo{Gc$+ z4=k)z0o8>YPKwHHIiik*T(D8DAmfU#&BDQyI!k+0xIc%7WMWCr$-rxs_n9ELpYq(v zdcgje7vjEE66Up@{NH1`%zQ#O8-%uBv-J0-96e}%1m-9KxawR_(*_7OE77CBgArEJ z4ZYQ)+{7j1mbo4ev(|3r=J7O;=9JHbU^Yo#?N5o|S3#c6k7nRTYYQLntmp3o*4Qm( zXsKUow(-QOU?Ol_V_iS(K#>5(bXn8Hx^vu_cV5qXdfbR12SXX~tSxF1F!!;1W2GZPwsJIq>lVXc zIBY-NL#TvC9#@IO%o!_h#0v04UgHPjTyca@*Kf4BAOjR`BapHWEd3-QpLhN$El}YI zj&&4iB6VD-P>XwwG!@F{pRK6UrNx?!rT;d2s*pHEyc$p1@^60mv!eoFk;GaF_%G?N z^@jY$3u4bXhwUl4=bCDkzYNu(Mi;BC4Xax@WxYshgKFF1U><7qF@5s?ZGz)!O=nKF#%$LFzNCgmkcM z#Z=xBqx{oCwMaT5>ICoFG)UWhdSm>#*3`S++L4E#Z`#b|$Ed4XcnwNM28X--R(v$F z>VdnTVv9=(-=Wql~;sPMn`o>au!E9}%YcFjpJ! zF5fAz9DOtDKj;_PpGs3wa~pw;C`JBR&HTUF$v3~8y?h=!{_XZx5Rt3k5bRRGz9;_w zMFci9*J3VsSB-1vo*W+$IYqS2e>rrI>A-^*`}g_8z=kFB`E z9$?sO4>pTdgP!-3?f)`^n3%xNr2vpRdYaUSm&%a8Tsh<@u@IDp5d@KKRg4D$Ac%1R zCzPcl(B8j85jqOLjV5(g4F7nj=cd4eydW#`NH8$8;X*CInuS_w?0v0}A05Vy=)Mru_qSl}W|7I)IR%QoWs`SRX( z7-EqyaZsw3+JYV4YzszN^|!xI(_Ve1tWQ3z(x7Lh1bk?@TsZyDSHBqg6T$m5IBz}- zN3bLNf`X<;QkjPKFSVA6gh{i6m*O1H4HXi(>^K)gepIaq&;|Am7UO>%3W``3klUDu zgN^p7VshiEnj+qP>8n=q4zG6I%{!acT z4L7`<4!^t~aBGmH`Ic^GY9D404Qxoiczu+r!XIrQ-OT!ie8ADm*Pg4V69YXw&hw*= zWI)%&QW4plapU=Lta%9}k_C|qWT`;$_4O`^0g?nw6GVjR#Fl{_k9Pec$GG<38)z^- zEi;qH7u_(x7`tLbs8kLky+?j!{fvdxHtzS9VlP!Q!fm-k1$5(t0ZhaSo{nptmTtuq z<8MO$;kCA06(SUBem9xV@*^3{+~!4n6K(gvR-pu|f7Zd;q^Mr~edn9vj?Z{dC6(;f-)y>>1V6w}EoD{wke@&Y=EAthdtVYg!i*`)2?_tC z<}>+c@+bfQCx0vpe+U957N1^a^}nP4h0fXo$SZ2eq__Ra$@1b_$$+AlZQ7#uLkCX= zpj+0gTM)GmX&j#_ZG^J}HPJtm0%_$f0@6Ja4^53FuOa!;eD}T2)026(o##`u_!~Rt z%Zv2D+HGFnPIDp(3hP(m%*Q;E>ZFKN-enq)S5<+8py3+$l!3PBKuTp6Cr z*^h&%r|(STG~*N5Hs=-^_NoAhrKzSx;*$_IXr@*8tJ~$)y2!~%D<^J8ly!E5ltO1% z9^LeMTj+gGp`loDZP%JAGQF{iaP!b=Ar<<)XOii@HX-y<$#L28>r?8fqDn0xLKTgv zdA;dgRSx2sThwYa)2RqNo*k7YkLKo^7F+}ZbJ^>c2jNwZSFZP0;gcaCWgiW^hcmcw z1Rpfi;~ydyXwznMiF1G%b&zKddJnAml_ND2s34s2*0og;D08!8`ZJYy#vc9ez2JXO>5j~(veP8{@55@fP_2Qp7}V)r)n zVh=Ha(`b!tpiD)yUU+}BK|VptS$wgw?1@S1QW672nwX@e%GmJ~a{OU87wL7MkVrrHF4a6T0YxLAMn5u$79h|RYFPU@c zJn3Fo*#kbfThI;t6vEeoTROn24UK0EdurHE+LBr=y>ULUXS}Qox z*!A`?X+r@w2-)MM+UL)iyP+g1HqHIh!jBzYT_Jh>w^?_`!0SNF9xn#G?kxS^VgBVl zjCdeC^ZeJbU`+ed+JQ{1H&=fUx2R^Rcc)Q@T?P_H;&2G^?x1A{-&U-kQ>ADNPUC@n zhZhq32~zXJIrbzJsRs4>`SNN{QrXjYA;Gr!@m3t&gDV&L5KW~pEj$N?bMQnYh^3-+J&(Zqm^uxWS-vP#G0}`7iJeo^ z>#83n$LKY*mWLRWeff#CV|yx!+oL3h@0z9Tycj}VwT`N-gfbC;KSI>oIyD)l$hAeZ(@+j3Xfw7v#tbcAdLn<+<*?Drl%!G764wxt)CIP z7>1PZM9ZG|B&m0_gH}srg0eU)MMf~}$`!4rs9;_DpTA!`A$GhDzNp~#L+dD((_(#D zAczy&O9L_-p|81tws?_#C)2}<@m)wV!b>29@qW(;C?a;5h7?)vV9)|ZRo8fhQtG!G zH*VxI7qhMf)H1YFRS-+z3cE?UNXPq6f=~LXkTY>ePhC=>iwb4iMJmJz!fv>*s=5+9 zQK^t$+N18cz+suWy4AeNb!~e|P^GquHh}4CI@FXCzx!q-y0Cmrfym)CO)od}{k{IW zWct9VvSkJM{(jR|q4~7#RSea75U%Pcuot%f7EJ)a0j8 zNV-l;DpVEFw?Fcz@8x6xxu1x4#c_#MyCg6{&ip)%ofKJz*uyh+8q=zjaB&&sHY4Y|sy3Dyi9qxGwJKIkcH2!BaAHYHJZxzs2ELjPT zvWlt~t`~Zagut<0>6@DXS#73HQ9O=>r;OtAte}w(47sr{sW{wd{P%^v2Tz!YxHvXGH%rrnvt#qUTrnU$m~exf7X5PO%=0DO!|%PN{h0? z#1X}DPWs~#?VujpSO&y2t^sMTcinqxH^Tf!2AbgZQ?_F`1v`^rsgbxsTC9a*q2)+X zoY^w5he1IV_Wr%!!moRg&bKI=TKoq%0E zf!OMr3}6(1p)qr!3(T(jnI*$N02f!)0j49YUTrq5PcMy-3dJAFZ*3()Vi$Wy#WfB5 z-m%0~Ttw2X{sR|)f+ovO{)wru?4bzMn7mK;RTznvC~R2n)uk~BNC9jlQIGc(aQjVl zz{m?)XA!_7>kF;yn{C}N)%}esyMaovEdy3 z4dU6@4#xlU6A70w^}Xa5B`i(h#HTEoO&xe!Y5hKLJ152)NN!=ykSV3&Ib))dAZlY` zSzKW-N#lbeXX?od5}1Kk#w7Ye{ue#U2!&%`cM88w1Y895iSAJBtxW6uQ#w9sP+H74PbmMtYoR#gn`6hK$v`&3>I#IPL|3Khtmh#HH3MNy_X~ zlMn$h%%|YhYN;5g3YaM$6$SCM6eb`06#kqXgHjg}2raG)PT=NY+-xqTSg-9bhYRxf zI8@YtTS()*WK9cgxeKdxGin-XH+5yRY3asWab;B@y{l@ntNDKyonKe-&;F%@KPJ3p z-4}1xP|m2*;|PB_VQ9)D1#*@{cgLlsqk}bTM|dL!JL144NGTxSNk5~e_gFV%)FhM^ zSG9AYG71ZJBs|#wH?tQjcb7>#5O_84 zpVoU+IBYvR?hNHu(X+)4sd&wfho<Hgf;RIML%@l>H@%q1Esj$xUc=cuvH>-L|B*;rX}b%BN-g z<7VR?LP|TE;>DQpMSi+9>t6^uHVBuCglH#YfB%|iZms&iu0%Ta!Mjxk5pgwcDjyXW z=&w4g)rdcec)Ilkh-O_6o(`_Q6@5ARA{M3oMFeA=PmU?~g0(jk*PRloRr3#O*MON5 zIqBXa=8b3rvcJ5=TH6JN*LLNBxecm6vW>fnSxx`ci>HI6+wgWR6i)m>XgSs54g5$*zN*Aq{r zYN_`b zHt0_nIp@S4pg8Ta~`4oKnrSPMHB;vO1~Ul2kU!d#4vVwfe70!>gjAjhENwV(qwBC zv44}#uF5@^wi%?EflX@7h>+OxjG}g7CyYdsi|QyT}QQ!xNza1z!sn({(mbl z;Iv^-3>)j53Sq}h;o^}l?+a6tib=dXhY+q&JTd4eSWn*cUiBrLAAfrLmnr z*f@qHkl z>q+iTCXGGY*$`gIa@eV8>0oV|Ttsr#Q_pXt71ud#MztDbUou~w|6d#}+6KX6+?aN3 z=HU3hyxDjm!JN}CuX{a@4qrm%X_0cFwZwU5quYHOB&Hgos!f!R)8zt0tB1?6-GOA< zv=QOg2$jk3&OrYJ1g1e7xsCvWoL59_M|Ez5e0KXf@_NnFLH9&tI}>XJRnu{ok{=PC z)N$9Eu|ysr`x?pNX=T1|%C|G5#ww~K-zL2F#S9`;i4OUczn}j6wS-`PQTHpN;p#gb zB(1?ap0C{Gxd>*!5-a|G z@#6@fjrDNnBOoxC!;*Uz=yHMyPwt)qw&$=S8mi$HShZ0m@W_k+hkS^H5~YCL%Cv{K`njrH3r$FTZf4&2p!mA&URZiplwH{lovDf& z)duyh6yx)9MSig1USd6WV-D@zD8@e-Ko*1?(rJPp#V0xF?b!YK!nFlL>~oe7+Yzct zb4kJJ+awO8k{Xs&j`l&B>>(H#4mpY(X=R-k%6G3X5x$xWyQ6O^qBvCLueKy=S0Glk zzqdaQB_J5Oobe`s_Xa((`@g0CK^>}#`yS5(@DKU%ey28F9_gvB?B~8q8?*XrDUslmNmFz8DLHdxrpmKX2vS@e^g#XPBo96nF=~;b>aA~&J}#k?9Dm->ijX0H z!Eeb>G7@8L91%ohrpacAM5?pGK3H@vZlnxtU{0YEObueyN5}`a?`c8NB9XZ8Y)J3A zLx5qJYbLspUx*x@Jaovcv?T=vLT$V0s;KgsF=;2pqSWt^E}}lYF|tkSy4We3aD0K$ zV=QeSYV@Xwzje+OV;V~5*@6Y^lJAvk)#TY*Gm7%{So%j#vslSO)l@uA2+`e+k*91 z{@ZrHaAfh!RIPaSTTPzJ|7vB^em4x%0QrmK zU^gnJfp;7k{r<7CW*1baa)NB`*zfmI=Lm9pgG_li?_S@IVc4@c^>~H~Pw7p!LhDQ} zlz%C8dA^Mwk&SB07NV)-8#mf$VeQ&I;KWw%+8C9$(|6_Nn2839U8@1bTzOBH0c=D+ zWXDk=D-%D0&Gi=NVVYQUZ2npiZxjKerSvb95FQF<(yZZYTzGOUm%FHT4Og`au_t}m z;ZVe(!mSm7g=`PsO$%eV)!;Fag-2FFsGCdD7W0uEEkNNr3|$f5C1%iY-V^i$`y5H@ zhX|kg=kp3>1_xJIS=j0v>}1;oG+iU+mai#xv8jhos6OJSH`+PhSwcAZi&6l{6)83a z@-njYn)mWLnY=)7V{nJKN(%ZaJ&?{uI$=)(C z2@tqq!p$&2zeX$_Qzzr*MHf8x3!?$?HpamLjF5oWgD-0=W=si^m5>)@qbE>-;-4Ld zKps5;McDjgn4GW)waSAb3Tq^ET2ntq{ljNpyWENL8$hSx#SD-t+`d6{Z}Nv_TKEYW zesLnvgX$f^s`z0@MO(R~NVgegYVxi1EJjOQnKfxV_TB8sq)biy&>B zOMJAQIa|M8T9wv^uMpY`x$F)$Q@F_dr!8l$XD?s#DVMn;Fg*14CO_emPk5GI9^EP2 z9Tl{zgmfky<{VtzXD6JdAe*1RWx2TD^=({f5qK5`4Pu&j`O*_bv9rB<6SGO)d?^&M zmGg{0m#55IXUm7BuJGk^9;m0VF>P-Cekd(EffvJ;T%{_ zb6?Z!n)#{k(@#p->9!SCeIg-~6L6|T{?OI0K82cXOK z18EKz{@irv-QVsaoC3zcn+#d7WmmrYlqM zcEtk1H<6Dbmy$q{WmYX}5_D+_r^`V;jRfZS2aNbxKWY5lV=gy`*>=ww4K_mi3ZQ^+ z;`Eme)u3Z7G-A*@gkQ5KN<(AJTSOdDLie*MQU{d@RGvLNf4(CK4Js`g?*^a92H3?h zkke7hB`kT7O2}`mMHC)re&RmK2ezegeG7Us0cRs zs+ll51y@Ey$O(BMPC7JgCGU*eRH<&g$y%SRqxsb(wFd-=r!d@+EIq>|!7w52lUfmr zEb#)hGF$xZsswTy@|sefLguzEt2=ffG6)>F+xq2N zTr?IU4|6~OKox(Y_+3EuVWhemsaxV49MSfv^}asUemYn%t9IsWZ$Vd%O{pHG4eDxe zm8~X-NB6}^__WSIAk?;@}o#;zJ2HN4Qu;a3h;y; z!*Gi$01j1`MqkIXcPLfBlF-DXlmM3H&uPDvpUL5Rf}dN+;iB}P&GV@Tl^Q8W(UFpS z^zZ>pEO9*9zz&~AU;)As6VChkKYY9lrVYST!eFv@TnBkBC1!1<<6zbck&K%K5BR+W z0cKq8!B0s1=jCgwUQZ=(Ekw$sV(0zblMVihq~)VyVA^=2NOgJ0&xSAx3xqIJTVxZ% zAmBj_`v4hA#SRvh7cR;g5*Z4d9hNQ_(sW_pKRYRVUW=beigPkxW6SnCY5CUMm4l!^ z6LZv+dF9==O`F-Ij1wD;WIhZV>wwdhK3Ywc+ zmc@?!Bs+@h`bu)ya$vI~H)B-5B%j0GPRlb31DBf!g)YCZT+|FJ1D&7zU0_6Z2u^I<@qN`{Q17tfGGRa1EguL zWthPX_hmxq?aFO=_8_~x^;}!I_a`(*3Pb@EA;4`B?nn(yG0ajsV}-A_s|tAe4-FQm zYPNaY1II?|jX3`wRc{&9X7p!m2X_lDMMH3RYk^|H-J!wVU5mG9ao6JR?k=ThkpcyZ zyBCMP>C7|#nRl&w@gW~W?sI-;?`!X~>{G!wk~8Z822}FhXw@a6g%TC%(xG=HPqf>s zgy2HxORC`Aji&02KPZ-g)V{EK+d0-Y(y8au8vST!cuw}kKi@kC-L+te z5jq+@$|TmixJPjNcQg572yZllb`}+(_W69qCFlcCxa+4ZBvtchBS8G z0j7|g+vgZ!1fraZ8-l7U#v0P+dYhTHjTiEf@EiUKwe9DOCI~$Idd2z%NRTexuyolB z>NN#lf>n4Bt%yoK?UFCh*-C;JtZJ8A!up0&k~$kyUc`@?^mpFS?G-s_=e;5T=Nm0A zQ`0_06}rUNSW)rbtS7PZya98N4c}4jUTHPrhR<~F4^IvmzYmai(lmvCBfeIM+=W;v zfV1-1@Mq-^Cjz384SCu=z3PA_J92UEjbO0NZ&M8407V_bY5 z8B*LnniL{Un(qEJxVLgf*P&)odE({fUD)0DcvH4crn#^JhKRo)EE3{e*74ovuU5^f z?K-ldj?e4jns15DrMnT^^Yoxh(R)V_QNz(9-rn1m*|mA?if-1VsO z=eGwuD)tHdG@jQUI=_5|_ zJ78DxZK|$3;ZL17zFdHavxPP=VX!QH7r{lq z({)&&mxK3kxmh*YRB8-`$X1!NA%*4`6iZ^SHfC~HGAl^9#-HHX zPa#+-k^pB~SE?~Aw1cPfy^wwD6a5W2C0vi&V&62G0U7Uz=ctcXW}b~M1GXC%H9M>S zyx#)(^i?AuxX*|GcxOf|eJwp#ulQ`-oXd56&tPDua3r4mTC~kFXfcv%Upj6I~oi6o__R@!h z8QCPck$}h7xR{ckp#sN=(Yi0Arlb|1-`FTG_)nzIN`{#H{%P2cg*HTyBi&A#$!icgXYsk1PzhI-DoV^{mX(7HZR>~2$W(8lz zsO$&}XaqEEs};akW&#W`GLdh|FozY_;KPdg$P@=PSslP_VhpW>+3=xBL+GTewi9P^ z?;ZHoYTMtf^1ZR@ELnTD>Z};jgZkkI?W0rv)D>@zLwKm!R!cy*gehWrqmay(lC8@+ z&a~7UEv_|D+Ai{)SN*8sn0SR9_$4Z*tdcrOvr)@(q z7?Ju}Wa}JGN2A9K`~T6uHrZ51VfOP#FYW&-WmvYsOvL_n4{Wk;`7AV_49LSr1@ho@ zy=kCne8KcR82*rfXO7KnroPjUi0k+8B<4YL;(get-(8JZT63Shsw=Q$2w8LfmZM*74a;|a_)yCn*?Y~(hk@} zZgoYZd1Vbkkyh9q<^+$xs>vy8Ot9x2J!fQlp7VfV=_rhQ=3_v^NlGCi@|2rS;;yOq zWShueb_Epwde_760OaVRZi36Q(kgBjSm1>?SpfvqxHdqv@8FzmL$KRqawxUt!LSJE z8dCz`(4ibEf66D(IxS^i%vAov`4@NJYc8TbPrR)>{6o!GkkJI4ckXL>(^um)n>?(| z<+j+)CIjP)ixI~rkd-2Up~_=5p~jgP># zjTErK%v;5?S&(>p9UGb=hq}8vVh{$Q>#xX}Pam~rb;yInX_j(O(ctfhZl!4fzysHf zJcgpMSry_*V;%WR?&jksDQep%F+kO0 zE`OUg6$3@s_*qw{BDv`CUgN${10twnRfTq@y!yZ2*zL?J8dKNyTm`Fq$mZ6sdCo&| zrsk#Rh;sDEO~~@;Y&6ozE=eQ@EDR2|R;K!?t#^oNhx(zy28=rX#w|1_rkG1M-FhP~ z_PgLSn?SJ!+44VPbh8%kXRAL!v{ROLe9?;)MnXXS3`tio3{n5YHPr*I=G}XmU z9cX10F_ljT^Ob`Wl5h(2N9hvRcM6aFW^haFF=4N3FZ`xY_)!c_fj#96khZ2)bl=QB zJXtQmDj9_5<|Dg5w+OmS29^@Epyn$KwjC+>)Vf!q4ct%v<3PjxS!s)-4p^eWGsX1{ z)Zdc8xJjF!|C*q&Fbq4QdH4l!Lb-mPEO~9ggzK}Ll$#u%|3irIrXz_KD20k~*4F&5 z5%nEjMcMdx-|qJBk{TOTpc?vdWfLY+ixHfzn_nMiYo0XXE0(`2!bO@$@cuib$Hq5i z)5!3lk0w*_Y^U>= zXxifD0|AB?i8^FE1g+<^O=g6%2!v7bO~J%nph`w~UA`R-bm?^5{PNE=B=TTWmStiY zX+igBG;XxDR3*9P741Rj>!oD9{&jCAAdAJq&UD2*Z)&iC`+T~v;-nG(XufQ#YKvF1 z>{)BV10tx{`n`FhbrtSpOES3ZOBS5}huOT!Ag8xHZ$+5oN+ihl(7=a~ahv;-d(1|} zB#gEt=&%=7dcHF$0DNqtT1i`z;K4RHVWSUJ1OFfjPabVHDtf7(Ywe;vSW{~vJn@}R zIv0#gYJg`stXKEdhiaW|FpF4S5#Sf_Qa=zP>=chN&(;Za%k?!Bi@Si+WAU55th#r6 ztpKrDIg)qfcg5ELk1yyhAlEkwrMF1E1%q~?j;+=9rk>tGP8#EyeB6rXm zr*~5l8-nk9kfH5@SR&1OLvS=$(;D8%llC>|dc$0{G!5y4B&0!ZGvsZ-} zdNmadq6cj!gb4hs1Z+NL@&%#>g{`PxOy;2N+Pr^n`v)~%kIxcoeDwv;qDnTkp~Z+r z9Qg)m(@>hY=57N>sM{Bc7^yyk@*>WhEa|s$W)&4^gm=pl;mC?-5Kd0@bJJeK(Gm8B z7F@GDnV7ga2lg`f;p<;W$mK5rpH7>W=bI{`)Q2f)Ya?2)So*hw00;!a*_I(vUJTb* zHkC951#6$4;lE|QzvwW<{uKqALqlBLTI@o4eEu0tf6V7=jDNSi94ubOnM(OQN*nfC z91Hdhpk{7`7&)}(ChpKr>*4@2uW}(#Ag=-ycwGZQYK+M>hUD>z_7ZC%vqawT+lEYy zf)Ta#Ll`x2VptaGu0HZKAsxWY-5s^Z@~tVawYfS%x~pwb{vrg;mChXF59}b0TFA^i zHGwCiBc!bxk@0h%MyHvy+-|7A5bPKbM*@-T~_+L~0cObSF$5;zkPwlktSl(X3 zemvMl8a&SD&<~1DL*ie-J$Ogf#|-bSLk5vndZPPiy&jV2bo2rPpo&F}EGQbJ z@H^h*nhq|z6i<_AUVy34$1!LX&2NxiNmvZS z6z@aMtDoe+4;=*~n%qTZ z_98;*O>o#z)#L&pSJF&v?{-N!@t3b@EfS8hwf(TT5Itxve^%NsEhzMgx`BmCZVco1 z??scSA)hg}6(626ZRXkdLpD;GwSX`{JRAmM@3+Bg-8+J-aCaK{M>#f8k>r`;7i3EkDhFIx? z2&NG-%{7l6JOEvJ6Xc^(!<0q7@gyQRi5%s*?X55%pW67J!fZDYFeuxy5N~d1Ts8r9 z)0heysvf-?*Oq|4yWijsHB-|26EOXf6IU2iy(I~F7d79ako6%Q5QFA|yc#iR;u738 z2-M~=`}LsS5@l}HiENeWy7Bg3m5RRqx27%Sf5xyr#=)XX7*bsW_4bK_af1hipmw{; zaRtJ@vZNBz)mkC9%%^%`b@cvttItu&}r9FCP5D~2g(!Wij4Z*p)C%uP^v?swfVKAm3T;J?mM z;+*#^VrJt4E;|H31>Ht^kS}WT%=z!0;k-?>Wq+jtF^XvEsSuIj%0H!zD@@U=O0%J_#-|4k&}=m z11&O1N3O>sZRRs3x`{dm1W8nwRXjvIF%C_u@y**xZK1sho$n1)2~roN*F%ve@h zpt}Iks85?>!=E$?nhpk`tMBL``O^V#FbFMy*hwx|efiiUN?Myfz<|T2v)m$t(S{c~ z+LHSenSJIy^zgDqb79}$5)H>+%KGGDYe|Ppa_1f(O^eQ z_irlC5B(B!aW`x(8;e6tQel!AhvHl=xvE7+>mF`Ri}wg7Gad1Rv(K^K@d<|nj=U|V zwi!_QCj#vAcuUOcfwc4%D9Z>?Q4 z14BxHf{n?sEb5i(m@jt2Kgq@+?KnRU_RpCUyKlQ1g_LK9bJ0!dhdF;mWyi*aSu&B3 z(9shl#o?8Tp_TGI)hu904NzL;wl~)=a7ujGqccz(5;wHQJ~8-b3VG{>bJ(l$@2<&J z4|sjkelK|(Yu0N`L^xj|X!Ti4ya&qx>DwS9s=z;*e|f6-wgs!Y4t)y}+N`8UI6qhY z*n(Bs&pZXgE5F5rzgs=M&#^(J_T&xzg5vU!RWYA-t4OEfI;L_@|4ERjJ3eIpqpV!`*V||QX9!Jaqq@$pDlOjIcSKW3LFZW|Gr8t5B{r3y zCci#JlY+$mHxx4$NA0jwf^pG)qB{n|ZO4GpEkg{)CVGF&8b>(Hvd3w`a#GzNewxUf zrzsfwY%Km?SNG??2Bgf>$j68O@j=Ji;Tjmeg{1Ev7}$j}2^=u=8i zN-q^*O(0IX3y<^kdC*5`bN=V8v`2(NWaw191XVAO-9d)JTF>w4@81P@@+S+w=)%Z9 zF%qrB-G9hxz>uPt(zPRCmC?Qru}3tNjs){ATh+-po1aGliTGPqIKRntH(;$SUg5pD zg++*TqAi=v4zLq@S)u?q6M#wNAXirT@rR|Ia}(3HC`yvm#naObv+3=yxI1zL zr%4fBy}hPbW^lq^gbP6cFcYLyF@wwMZ1npvk&ooSwZ~L75uX*ckDg|$5TJ`@2!GUn zw@9cP8yRM$&N*)MK8)^7Y3D83Mp#M@wmVl_0}e8w#T!slWXQd&Q1`Ma=+Nw8Z#e^a5V`+k+TNilswN{VEX)_*dLgSb&@Z_Ed7*_IBDfHu zT!4eH0A2L)OzIks9XAhhW8$XNk6l$4`chk;HBT)ofBTOAkwy-cRuVE?CCB!p)t14? zMdXw!fA%B!Y%vMv_#9|Kc#5MGgeU*ft$RxZ%@?k`m6zB`paquOeSYCb?0azlJ|p&( zhhWP&kD=$14FLK%%XxRJ2_a&)7URg&Ab-m%eEgHd`}UQcTG7M_A8gqzy~ld>3o#)* z<{t`vJ+f7(EJ%@6a=Dx6walM;A)bn+lSN_bnL=_e-&RQ0mR@Cf@)1Z=#eMJq)3S~5 zNqgR@*~D!yS{v5(t#d=w?xaAz5@4u(j(69-b}nBZa`im2p#|!!q&7(zY29+tOxk1) z;OMZc?XDD*_Zj^yxjz+9cQ9fuUHSp#0w>%s55Hb(EMTX6d0c`ke$v5#4YT4N4)Zp= zA6Vy&UNR^f_x{#)wT`sv;G~j&)Ic#vj62V{6wZM!W{`w!<~JUGP&id45e%yCou5wG z`~U{r@lQcn1aXmd7=;Zt5WN*?ma0E*y#(UtnIX7Yo8_La*veh--q|mCW}jwizx<0k zx4aR_aJdhy+&_3Kw}U&SOhOWHg{jNl!n6M+PxWGK>Ugk;d_>5#kQ;9&9CT-q99Uu? z$a%r;t3elvig&(20I>Sg!%ZKTIT87pMH+*WlSj~BN&2SgLvMClV8|FtaoAY+?KDA; z)G6Ubk1O0qOzBJ54lU#3CHxD~WX;mCj@XPE8PjwM-I@~^18UO#lOp1SWwJUEA)&J7f;+Aj*zGWTbxyRUnzFYY!mN9*$F~#Hn z`xe%^egVMAyc!^2?|WZ&FG}tc=-KVFIxNkJ`<6;@r(2)|N5rAHzSbC%#B+1@6DyR3 z1gnsCM{olXs;c_|8I4X3nHDK@f*yi8_j=q+RZ?a?ozJPQ<*3byRK{FIOwXA(EiHnw zgoZq|jwdZ$y|Rqe`SvHjJx;U;KFOsS39H!zRJ{{}b1bx<(&f@b6HiS(ld$z~(@Fpf zy7gh^^0+yZ_K@YUu>);-#7u-I!>o2H)WZZ^6Ynn()f>qS8ad99;QSD~bn{IcB%&+M zIB(zvp0-I`fMBiAo{P^ko9 z;Q_>CPG%6%Z?eMB;qsD&H)`;wC+c6>HdcW z_Nw90PRA;7f_-{Xqq@kCl4AO% zg3}DnOnPr@kFT!cxlZ&#Iw!(ao_QX;n_>2yC0`=E!x}(LZ^doCflQy*`|XSAx=TaYgHb=l@^+>>bAlRyV_^J-Q-#t_HipH6M-D!079k^tFX>xNV1 z8$_^o&zWz$2tiy6_ekuY9|&q8jFJQ1L=^EMR@&+f%!ec{D?D=hD}q>^O-!_Sou*`m z(aZe)d?3#RlLj=+UZkIl*aoZDTqN&(FB4WT-}BUXi7ZERQ6Tg^8Q3V^V@?izg;gNB z3ev0Tw1l{sNO3_LISB{J6WSPSOze@8OvL9{(cbb)$bCJ-YzYZ~5*!=;t2d#cNx~1? zH;Oi6R+PJ?BL3S);Xfav^PulC>byRsJ;>Ak04qisXf&Fy`0oZpkt~3hU|!LA9RtS2 zU8TXO2)fBmOB}*xHw2_ZKJn=>q%krcWN z@aK0v__&eTv&pp7^m-A6mafXX_#EMb9a~lAFo*-~m*QiZ;*!Ygo%xB=x1c@l z@vkJ4#G8eN4ayk;9$zV*vbh~zxa5(hUP6*rFXY`D5I?#je8Y2aUy9!TL)xBC(LX*( zMlah$e<6~pe7dp}?yG`2cwCNSS;WgH0nNE>5W=bVd7KK^g&h<;H4l;$YO#p_E0%st z?@@}*GWjf5UKla6#}DXa8J&;P0wBu&=KWkRS2HL-1XM)H)}b(&qljcLf;Oa-$k)4P z>p!J3ip%QzBx+6Rz{d-e7cZ91Eg!Fnr;8f#W>aZtB_9oMOjN*n9PL%M>bLPH?W71W zGxMVF;-2aAvvEnQJ+4U1VD#5NsR+O`%y;y58tinCJ2GiC^+(~ z7n5)&1pqB(4*sqX6ruOFAF%e9bN2ZZF+lZ(8SsSh)b^&&5g=#2gu3bH;rT{7qbbmi zP7z!l_utW)4K?ggI2Y#pZz9S%1KQ4rmKL05Y?03(R=@%ZIAXg)r-(tU~J&T-CZ&xLF8RnTqh zE7rD#9Q^X?1J8JtPswYhBn?{u*66lgptdeMt-nRMJ(Kr(FK(3kxCGE-6P<%OK#zB5I!NxFY)U-K{CBhpQLH{B7tp@tGXN3e;TEuxxx95 zh3jgZL~0>h|8C4k))j^|srzgMnir2w>+Gz^+ahk-Hqc}1bfX*m0b-+3rWaf z;I=&gWITF@K5kjpnOfO8jMX9dAT*BYz$bbq zq`4+bN^f=*`_kxePg8aAc5=((W-x;NJa4!KA9b1E9@&5a)`x03&-{hwHn4qD;=bg6 z-KuqXB`cT-J@5YIhsys{qvVsaIZw^X;=KIUU-}^AI@NUE>d##orUJ*>iduJ_*~hs~ z%!<<`fYf&GxY?Wms1>_UvFbR!cum(Mdt9qL$D-<7#QW=__s~hI^y`OP1K|lqVaJfj zJR%g{??VJwsNRyp_-l7^;iYbUOyozGesOPL3GBLeQnjd%7Zh}cG@X>CvmfTr#uEAG zX}G!xMOcO=9kGx$?7kdLb3wwb8CF!wR|kcL6Xk8XRas(tWS%sm29+n=QO`yPhg7v3 zaYxE<2d=eX$VUEfkqc|mTHp)gSKM0RI|ETPJsC@d^fjxZ`{p-o_^I~`pZ>*wGMVJr zXhJMuxe;3Y(+0=n&*1EciuR@sJqKLv00um{_03LM$=U@C?J#q)n~zuEi$llE%uTA> z!423ypVeZ1Z~Y|)(4u22@ps(DV~*XI6E2hR_Z%Vug`S0)>=gBU3%GfV9EFcK@`&^?PM1|Lg+` zK|1OtZn)thZPmqV8j0sCHSN`QYjL>=i!P>&^yHjl$c1@x0W4>Pf&2xm+bOhhtwdc> zVz4CB5>-klW!0KN?RGWY;dY7T+YCr5&5){wnWhs}7QSL;@f>n}M-X5oCE>--bZIoD08i*P3W@i%sSdQ)YL7@-*K%e9WyBK{y0RM9 zAp>%E+*A0DF+7b zEuDraTF4R&<3XxX$BIFJlhE63ohoOt?Q+fG|Fn*z9F_kugH;@|Dih;eAf*a?3X-$h{v#N|v1wjO6!L%m3T{j5QY`q*N}F$lK);?uGkQk%i`yW7OR3`TtRIOt>O ziGpss$m?;2Ph(0jiU* zaw0DKctG`ta`X|>A8;=|G4-+V1ij*AVAWDaq;XbS93-7j>29X)hP3i(b!2@{5Ac24 z67pg)5XGmSZ3)kLQO98>o;=A!FH!JaH&_*4^k8B=^C$_kXI_)Ic&Z66i7*4P4`65< z(LjcdzZV72CVftmOyCI~z!hOb-F!bxk&f%uCduxBXTisYeD(tCfRPfzf+_f~)}!Vm zbpzHwiZpet{wFy58r7JTT)E^#9e5wHly>%6oG1|im>^4Ujq1=Q!{aQ3VGkD+xtZxi z`p1lVMuLfPLW({SAlC=T8>WZnTCrv6Z#dpB1mvoi#v~O*mI!l=nx(J<6}ocFoj)~n z*v4@qk#xy$chE{Il=N*x@#@ulzE-KghcwHnm%xoDgQUL9aizPD?N9D3tuPTi;IxT;oIF5|JhL&7 zj&AS-g1cKCb&F5t5IeAA#~wh_<@{@Ephr1Q&y}x=Re`#jbcEq2>{^}63iT9^e~i1k zP>?J$sH;3zIANg~lHkbXm2=R(FjixI#W(r&lONje=jsI|KDwPcI2SXOHvE-4%~%=N zg>$Q8!t8;M4u@WntXzI3r8*;ig!ks@4~yDOPU@zS?@9osGk(gFjoG&VA<0Ra??#zR zbqdgv&hX>m#b9I=&7$DbWTX==O@Z>M>thl1C9|;TLV)ACnJw8O)3e^MHEe!16W}cf}nKso^OTSG{a9Pq9?e-@7LWwPS_aWHbwLiIkit9yP{i1f4N~9s-5~8 zuf@weybLqL?w@gieB-o@@OOP{7z*)7Tugr+kO9DHh(sc5E{1i15ys=A(Xa;~FrQQS zZp?>Jcy`^#H4_6M_oUd9E94d3bNXk+<3(ip^FxpCP+d?p)Gj?9S2apSZGhjhYPmEy zuF#PxA$;gAL1DS6^}-HV12IEkqHf$`eH&A?<= z&>k`L57b0;;It&hulc1twUJOU7%ftPzAinse~;74uESyQw(j>!11553R>P{tf1%{0 zM8;}4rI=vJP%l5m)6j+VE%{ELMvWm z+(bur)TK9`g9sJodV#aA6$1?*X;=U-JH$-}!^uK?NnqjZE z3U=^Ilfy{$Wp-lay$vwxbTB%`Im_rrURZ^y6N`g_!7x&V?pZL23AXBRoSoLG_LO$P zyUwhr^9;0MSXbIVL17G5rbHe6Z%~-mnf2QHKd8$L^q)0{b=%j~@jnYjz%)FLVcTIt zC6?azCAB7gsC-tXfESd|*FV|0Xwgks%&2Pu4n>-$<$e19m zFfh2o1XlIz&Nk)z{RNH_D&kaUdlHULKZiP{Q-&ACDWv2kVF=gfLx4RI#5%R@j2|Q= z7XB&cvx#+oZL$;4`CO3AH^_dzF_#&g1pz$@Yh;5pV3Z(%6n!LeD2FEhyv%oeN6-B*y2`)zd-GweDh~-aS}* zx2u~Izmdw?|FS3rz|2k=u$Zgn$IEyMQ2H9}USs$dvX?e=moeLaLXl`@-4Fes-JTY* z6MK_Fs+t?Y!M;%H_EbyeVS3N8kjyOA(y)7w}^y{)KiMeQ93vhy$?i5~tIexTxdiP?Ofh-RF9I!=zA znE2*>@qQa@$T(}y5KRXkU~u8>^dW|FUgn@()D+ND?ilihMRgz621J}B4JrGlDq<=i ztW{p*9*9g#`CuoGim9m_*+NLRlzSPyn5Sj@KDYTczCp80=S(B?t{FSeL+sUF*OMQC z8l3U1$D>P+7eG*b{+%dhi@gX9llTI$ruW+;_K>DDwx8vSbyR` z&jwfUY6$hLpKqQj&U(YSjsCA%H<&;vbTI8HyS0UL)^hCrYDMJ8r0y!^V1#2cHW=Xi>XC}v zvW7^~M9F!Kv>ChsnC{w;FdyXbld`-andmf|MHTK`gk$ph#`rOqHpYSSiW9<1oEIuTM}ETw5OA*8E`#_UK19t^2{q1-Y7 zD4*wxXohO>rTeEMr&F+t<@s{avN~6PNkz>sk<||abi%h8r{6FARL{&qLivrf(Tnz2I(1z&_cGE*cD6qQ(B#uB|gMpeN5DRd+<}ex;4#?FQhUJUOUn?s>`z>Cx4&7vxRQ7XgH`FbG_Ir&0C$21QP$BD}Zqpf3BS zM)I27g(7#O=nq!RHTFfI)ce5K(9g>}QzSOcKNZRm&ck2xx~~C^)y&g>oxZOrCt-&~ zg+xWsf91MOT{a^g?lt{9FbVjYuPeS=!ASc#fuASH^s@w#UnG~dy>(1I{30q*)EvjI z>$j@E*JnQw1}!G^?9KzG-twH^iC!DxYrmWZ+#35;pZoRlN8$1hm%DblR4p%6(~dpc zq;e6ww&RW*mJhq6a`)Rxj*tmmopEyCkqN~SZUy>m2nCNu(Dcl+iC^;GS^`f0oF@LX znp>Bku(C2u5H)50jhnO4MU8pgJjtb1Lo^x%xXPB2{)->sUW_{gp$Ik@h;3UA}>>08j7J6@3O*|XxAxZsL=&g_T zLi4^Lb#TA@v`bkNN|h9N-vizwi5p0tEN5NIDo`+XxSRVS#pNRjY-Fo3(ut}(3Ro$E z5Exu9WcFffa3>QKoC-gltnzOO*3!93ZXpJ~i8xP2AjV``*!l?kTsbh3wN!im<(uRBRr8(D$wZMNZ*=6DX|^5d=2z-c zO$AqYh(p(xiEj_DSLoz*t_|wA4)b6J6$|&uBm1mGQsw>y;OQaA`)IY;d0a~=bh+pS zCDl;9flSG1t3RF)acPKm7d3Y~{-fvc`$O=adQ(OYq_W`T(nFaycO-z6k^AXK!r?B4 zN&3esH-Da{;?RcrsDOifh_Yw5YY@>fT@V6y>=j)NnR(4e+W5? zt5Sj3wprsDHD}_!FP>-Ea&m>=O8}jIAnc1B^?c^~l@R7v?y?;K+b9%?n%~Cv;|?l= zJ9mk2XpzXFibXQ%Wor&mZb5brzH8X~9oDPD$-qCxYVkG#@Ys}y;XGbP=RS`=2(nA| z7cDZbbBvWFHk_ucWkVd%eUDR_`gD(T*1WPt$|qA?6Q`QLz@rO)<3r=?E_82N?laQwo5E@>~-8?tZb3sAT&|RH;xsX6s0<~H3i};jH<0mi_>Civ2pj&4Fr=`?Hvl` zjx1uD`;)gw^|fH~`tugtS0A3k5kmi3k+2Ur6Ll~N>iDT@okU$_8D}hIaaOYsQZv?% zcbt68Z|Rc=$dX6RpD<1w0^K+;yJQ)sD_0w9_EaVtiH;H^gJuf|z7aO5QTdjB>|M*6 zT`?Fq&>H^Kd`?qfl7msDm@$TFL4RBH#|j@zvy*)Xnc_P#f7U|!n%oU=2EVs#&i>Q38x(%y=nZI<*(aC#rp3ZqXoCg_w-s9U90d?z*k{mmn-4g zE<4klwXKg+2gfCoJHYwTgGO|@UnptRMN&KJN>5};(P&eAC0#|tNnd@m5S7)1zH7eb z1vPS$J?>BXk{YqaFkiB2JKJH|?TkBp&#g+>ZpU=x?XVYgi7j`kFukm zv-tGX5@~9{ZP2+m;J&8Oi29ATUtH)EHrdCxG%MDH-0h^N4_aZIdFbKqv@0Mp#Ye9e zwt4g4_Rsu&BmiV-H+nN~c&GVu5^Sgr5%?a56{%vTJYKtlK|1n5WlmbFqKI3%3F6@I z(?TXji{CIdo3AEsy0y<3w75Gr46Aw4 zXcNf|6U72OAq?5M|=ZVm#?&8ER3^;sMv?72raDabh@^_7n zU3zxFo9kLgz4+0+Nr@BTA<*~m7wO&0@y=|>`oTA9cAVB4z1AbMr5dA$y-fwU^No}JDt??6+g-SaZ>GnrzofCC;x=Oq3WmVQRE>cV=>d5lH z6T<-+YcISac`M1#)rMGxVC<1Z!xClFB*&U5?^5qZV>2AAzu$Z#tI2~mA{5MHPfrwZ zM!G)`Fn`SC4WcH)^$IlQ%{ECzFKuT}VDL{v&ES!t5LB+QwnWgKNqzwh5fT@M4zm_K+ z3d?`ie~}pe9Hoi(53CG$m*eAMcK(9Ww_$lPb6zqLu-O;|xx7hkMDPBnGTEk$PU2vT zQ=Ig>3#Xw+wn?SrrNKCJ9lwwi!Ft7t+Dz`W7AWgO8LXm3X|uVp+^6stsZymqYeoZ;s{x@w=j;?S6pOo^YA!j%t5{5N4?IN(o1UOhMsZR0q5P# zMbc5iX{ZkWB5W0Upb4c|3+ua9MEJtckeDJGsyevtXx_`2mE7 zu)g-n4^1a%A|LnLPScDY^lNg0A|>vhQ2IjeLJXY3F?tZ*b+~e;HNU3z4^24FKgP05 zby<9mt89IH0)%WXD{f-LmRc7^_D?UGenuoyu7L`trBoAtjfSgoC(f={xDlKePHN_T zAh?@?(4yqFiqPVb3hJ1Lp?cTG9P1cYb1iLki>?&tfPa98FvlC)Gpz8CZf^Ey6+(^t z+4%}yRkvSj2oEaBlEi#CrM_-1$xgtA>^+ZZip6N^)^sU`XbynLbgul_F+Nwkf z=)Q5R^4H)lZLiwC>rvhapK8XyXh`jsP8mO%?d1TF~EtfagCVIL4xzGuKUSl^(Y zqm5osJgN58-Ssg6L9M3o^2ZuMQ}MoP)+vicyz?6~&AQC{!`4|(4d>ht*Yo+`;wr&S ziqUUcR-K058rGb=4#YW zGO{OB7(OZZyy;0;?PL8zkj{pJkGA*2f*1~`tbj}G4rkK3l-LyFyTPnmGtos@l!osu z7A^;GeLk_tr$K1Z_`~VLM-P#B2d$`&w%?zs$fUeWMmR1-k@h*PqYFiY#n0R}3+;C< zoSi!tiCkj#alKLM`A0V~Zp0`fW*(b8qs@lzhEx*C&!~_6U9)&JKU+0mkw-(h(3THA zAld2slFhWUrotLLB_OW}-EZOtxfY1^3iqfG)^Vs2Stu>On%Hi>R;c&M_=N#AYG{K* zh{2~`WwpY?oo-0^0&hx3N&+amOQ#TODjs|l7?pzseRUuNg-5Mb5nlB9fEvw8*bY|G z^GA%US%BxyIaYCg@vX%T0}W1h?=kNwhqa^9Pe{f_Hn1Y4%n4un(`MZWeJ~qRMX|a4 zQf?ulb(8kVO=kcEcwsEQ(+FUDcpA*_V%nope-KRCNyuRZLov&x~ zmX=^GFWLW2rOslJoaP-Cwy1te!}ob^!RI4;L}OF{&v1Mekn#8?cO1_{eN`Sa->)bw zm4&uQh$SJ8EkQgS#FTZ*+b)BhWVgeqc}~`jyOzF575S$oVbIwMHeG2~1-Rb14(pLcEa2qRm+l05GO*nK3 zX_^{|k;ywe<)_m+fgGFr*MynBd+lCm--TA}{{jvt)JhUwt{)E0ugBlkfPAwvXXMw< zh20j`tDk$^b2pN09Ex7F|4mN>%RLNvYyQd#ib8M5Ffga=2|KM$m%Zh9jg!+IAOk$)aZOVNFNjn<IdflZVT+UmZu?cW-aVgr-*%H?aILG&f4{U6m#E$P%1Wv65nU#w zZ>pqZlEMovc~@Kcx2wGN9+4QQN0337M02cPzP5%jvmB+H8N*`0^-ln%AGaaTt0 zUnb62uEgMLaR$Tb^ruHa61w)o~_B&K0$Od_2~6z ze~A7rAgAm*(6RU>^8N5S*DU^zg$U*n+=GwovbISd&|e?wyi5Bz7w34jBtoztynWfK z%AU~vjt%)jXm6%=y5RbH##8J0Ku_!1I3xdh+zDb`S!UB)MQNP-E$}P~Ny(UoF6dFk z*aO zyNZDU?I{Ox@>V;O#p}@3EF+e{6@t&-8Et=6$!3e+bE-p`!hg=&VEh=s*|pQ1$UpXQ zoyz2tfiz8SdC7K<34o_@;qOi8;s@w|)urwj&Nqe5ndzR(TPy6o68th-^B%(NQ}e}7 z+A9FJdQzyN9Ip76m9W@g=Yj*lQJqNJ=2Q*QjBf>JrrZ0^dDH7(jg&SNit_E$GIU&i zXX=Zlso#G+XZu+TpCo=nP3R?4R42lW6VXf_aqapEuZq116U{>RU*Q2LsL2A2c zs&;5@;Iso$=bVGKa@;ixlNXt+)|DYQX>uWuH8GEnu%r zd|(|#D&rx?FsHt~w5qsfV?EjtAL+y@`ha0w!dAe^r zh|2*FH}xjH>WhJ0pB~e{M$sxo&{d_Iy*xg8btd;Tl4s(w>(#=6OS~mvuv;KWn3SzA z%Cwj3hGDQx`DD#r<&O~OWwIy&I(hc5%;Fkplkntw~;Ww3f$ z#w12^d%LfAw%Tb2Bv0m`)wNjo14{pT-NlMulV03mM~7Pf6C2wo>?cu=8|K@1pMT3F zSF~7Ge2OqlK3XG(z6iu=zgM{VKoVd4D`=aYgWvuL@FuzAUPeoJ!zi=yF0E)$&Wq#2 z^&%C5L+OB|hqvQ(oK`4~l3aO%J<~vu)>xYcAk-bh{$47D>>}yan*`I$0D79w)6Q^_ zr0T~noES591zX(sS3uteO`bi)(-YP;{ajF-MtI+vArhW{T#uT$%}bciIh$Aev(kVb zS&^PmTH&U_KY*kS#Y=Qyq~y{!(BhXax*Y>M?KuPX1(-<~7-f92jEvMSoGfe1`@^K0z7yf(u<`ARMp}plh{%`xz1a7eh94|Ap5C^yiy=H_a6i zECLmV&?LhjNQt6aIh%|dv9P;K-~UA7+`cKf4h?!IL_i#;lHcCaysoIzFT!Y%No1j4 zVz_FAtMFZ1rd+O4mQt-Lzb?8Rs-BS{bfkRme3zfzJ~#WU30EhjT~Oh6*+HXU2`GrN zNQ&RfKqBHUN4CpDi$r=;oZ7AvZ6dH6^jJh0JA2CijpD~?x1801o;sz9%Muc>AT&ol zK9!ub{Ko(9_=V|TSg zSzqrA$8q50j$|mG`tvjygP$R2gcmv=c26z=DOBYJR_Vv@CvF>en2PLXj7GG+gglpD z=g!fz3IEoZBBJq=<3XLy$4%1|jdsGU8n)WfE={4EAIOoh+G2A5RIu?nI2)qW`&td& zTjPk5w%1pbBt%eQ;bU0i;YVu6*c*w*-QBb?`m<_w&iiJL%poOAbD9NNvw}A9GLG#d zx(d+@cpeWzejo495ECUOvJ>y^P5KrbjP+aYh*plsku+hZvQdD1ziOuZUiWIb?=x`t z#~qA+z}sFuh7-cJ18p9StsYZgp`qqN{}5-=hQ!jki4P@HBGVR$b^RJ(C(Vmq*RE4)-eV#@q|j$mSI`j)VXfc&`N?4UvymB1O(oM-wI0SS9vbN zrL0|J=i7w}bZy%yC4e5_#i$j;&)`qb5 zUj#L|=Q)dtyV$z@&b@Y~t2ixxlWVYd@qVOYK`Q6vxEHDaemA1L7HH>wMab58?Iv1D zF#m{WMT;=Z7ih6ebXKez0!)dO~O z*MLo&mNCpHhXfcuHC)?xb!_t`R~npb&aSMZ9ZIpI3%Q0Lpcwtl5~6QkmGTu*W_Cp@ z;&<7{P!R%yhcf3rPW;}s-pW~D+en#s5l_`d`mXtLdB0bGwt#bl^kdGserP;~0k5XU zSQ18~YREJ#VDXnDl57HtrjBV^?TUix8?x`0X_kP~JyBc<4;7MHb+atBE;-!MJuUU@ zLZpO?mT4$-x3j{NG;&fp>27EAW#(*ZT^g9X*%u?b;`dfq(TKA~HJv6&X!Z6!S@Qjx zvNK-;9h3oi>O$7(W_e&L#=_h)p^;f~`Vbob<;#4(76R++CI+FLyYwNoA6!P^D6JH~ zeg@=jv(LVm7SshJG)a2#j7$YCM|4r9)d%HM7c!rQnKM@kVxC@^zwT(8<<~^2vwF-l z#}lR_b(WE+b7u|I?=nZ?wGc?F0kRO&XM*Dccp9GNel(VK?2Co2TLas&B$Yn9awX#jU92p~-U|wqUkkhwe zm$sH!(cyhRt^4i>#{96Jbr0(L*9vM@+!qyJvod57Kq%?AiVT8}~C#ci(pbhpXoV42@s z#c41W9T0>W3LF5M1aTd_RnBTC@TW9mX;R1<{}sQ^g!qj!XT)4kfA$?jlDjC(@>iRs zMCeCXj0G{aI^2oA!@^$f4ej-y9Og>E!etL7VrNYFL#=aVOD4Q6g}um|2_a_!pav#I z!J>v@!n1Teb#`auKG0$4W~H^4(*8ltgqn%TEMpV&=0-Oqv1QB^G?!GZ$6#D5k9{kN zQ>!|+w+sKg7#u-eg&HoJn_A7@Dp;o`?XiOA_%$y5bH_rSSswtM=OSK%;6*~?0@j^n z_ggDYcr%33?>4tM28K05s`r4wn)Ie_Az;JojHWFY5yJI&X=$@Yz(Uqio}1dv#n&=d zID7M8LNP>Px?k<>`&+FbrufRd%=IQHXc`W=LaRzE5%~GV1CAHPkf69bbN4Hhk5n@0E3rT<>X?TmR*i{VFtM{wzI3aOdtDma95;x2uB$&0jQE|l!K^M^< z?ZZjAh^qJbp3lB@TfLB*kiO>}N2bo7t7TBXZzsvHPG(4tol0y+uH(CHOps@x_oDus z-hb)3cDEBx3^;Dq-w?q)wM=6$>1yFZx%6E-iS!iEsAry!Epp-E3-9B$@k?uh@`7(a z9W?rAPLgo6@u>yI5YV4}8%wn-{a8K`bgYcNeKq8)8COF$$s$o~=wR6jZcK%D)uo1s zU&Bmj+IwUR^;;r<74mEJ->~0=nR-{{StSa(lahycyeE5Uvm`AXXt4O>T`LhkBc@qd z*Y^UPeh-2w>;QukuND)2zdvF*p&@=q+(}-U8xrBHlQ0*_lpp+atb2F@_4?azmjhPT zNtN)>{M5{AT#eGi_LleI5XJ&Jn-8@DC#m| zW-H>uM$E|ylgWFe?J`4jNHXjF3JXM&^lrOC9c=L{>VYwxEnNr3!gaZ;;^!iNJ) zzh$*JA84@3`U&u@=?lVwZE<;3Tn838@Ai$=CC>HO*s(Dbr@Qpua23iM%WiNN%`L6< z^7l0W`*W4Pz$bTn>x}PKv8rAia#&{y4@G`-_Q2<74c#n80KSlz*fFOk#l)wddD&u= z0?%AmAy{)iHh-|6-~S&MbP2L+;$xh+{%S0@f66zjge89!>$M-IO#e z7w{hU?LpqY-uA=@{9Z#Dbh5bPG#DSQgFzlWK<=ZIHY;!9T06akcVyx^Qv` zUSk!3fPTE>xfb3Q^S5x_PaSYm-hC_*^`=9pfOHeP!Cj;))zMxZdTVk#YpB>Cuk5h7 zhT_^_=id36W0wWhdU_<4oYRC)=cazgko~cs2^1GjmMGt$3PNs`e!F(N-ub}eC>)nq z$~czhR^i`lR6NFTfZHz+FyM7>#)-c9z^iqVTbcS2-9?b~wX%s`lD$Shfi0W66!A__ zq^FL?20toZ+`xil?WL32}8XIKYG)(-}`#e>210%$!|8~T7xZboTCN zNUJ1N!L!W!p63L{C|;YAZZ_zEEr%Bc4~?Wq>ZUgMV<=dS#Wn|0tcSZyvb@DiD~2sv zUFz7%-ISHoh%@B&GG+@AXErNq3b@}JXo{;g6PoBT`g$afkVr~(@Q=3 z$I11(sLJW9lSqU0so}LW+!}aIas9X2Z;~Dl^Iz(U}cB>_=#Fub$mf3c^SX$Obv812K*2`C< z8sh){6*pyYurz%sW(eZ*T*S%bsq|<&tBT!$K-U2(du4S@N9VLOgH0`7U@cJ}3=jwM zV+;&dJ&$3A4enccW~9UY1l$V~@aGsh5>BP z?h^H!tPPT{HGEKinZbr6k*17rkARyCNy^YFCsMnczDdgaSg5T@NvJ#STr-~j4$>mi zG3kpL?fEg-C+``a`fy1)-oF4rTpb`mbFEbNG3Vj3Gb#L1EP)|6ZULaGFS%FL?R+<8 zEh*k*LEvQ6m5vEsQa^T?LJ!YSxDcK-gcrFq9Uvg`rKZ3k*ZY9*hlYxa!TEL#?XK#K zAzo`*_dkHK`D1wD!A8SV!H8e_QuIe1U0>dhGkcPan~}_)y{E*|6(?o2pu&2I>hvMr z>D#Y|V3n}Bf`yvj?6?PqslBSNsF*9;RtAjFTiG$Sz@Sl#^r%+;NPF9P)}KPDQJr`S z&ppA12GYCdjNGc{(eejGZG#myW2$55NN=w5Z$7% zv3G1GGu@Phr2RJ}C!M)PD1E=Nn=9^zS~W9U^$nTap6jE2J*32X8`kq;(m}^vd>kFp z`>~1gvmA)a{{m={4Y1xnqWbIRi3_z?LpJ|8saWWYCDM|ND6q!=_C2iQg>i(G^fma+ z5h~b`>iKRiwNzWbaPPCVe>7UR(o$>|W({rRR9xn++VHaCv%Xq7!fKX()y|72ONlMx z!31=p)?jok@z5cb7}Ks7!izoMp@TE?(;INL+;He3B@@2yABf`x#; zoc{G0>A~u2o^3+RFH9U_h_n$4bn`WeyCZ*WR;_b-3~LP#IyZHihY7j%@5xCJX=8<0 zNW4K-6eerTW+f)8rz)5vJu{dL+2+B2p(7Cu#UkV0B_x_qzPY?JzO{Ou~*&` zQdmq?Uqv0#&3e6+{7tfp7dKqZUcBSpGwc*~xUN}y-sF+>%P$evww4w$mAuEGT^d7w zE1(T7f;&d>Go7k;GBz?n^&|TWQYK90X3Fg?F|52#h0M7px)O&``(x~ z?-4Nk6gRjwia*Wcr79ncVOEFg_S|#VkVMH3I0W66e!7Y{MWpX>R6p$Re6P;Pt-|X@ zel+VJ@Waat<81tv>>%An)vsjUqicg-A!Q9Q2)S0eJ!L-VH$+dpha*!HrKsRr{H#Y& zsvVQPIPu2FqTshb`aA~5X?+B>Yxh?~Al)Bpque^9*#@x@Ds|yx6QI(Izwn;&z#$zm zJh%`r)Zo2)eqcLjR|S0Res|f*R*hh>PGj;T#?5W%*oF`xVpBkL|2G%J$(xY3Y4B}5 zV+Vnk%d|+HB4g50M^J2HPd57Wy#r~ipNZIycF^{4{HHU(WWb_1F!X!FxX)su|1^vmRo0vf$PE z?aewwtFsx6iTVpyXOzROMMaatw(2$i!)v?3hK-?1FvSM39pY-H@Yz7S3AIomb5jeM zdLGNaUI5Y3YzhRM{O!+CkR9g^EkW>sF>60}M-wNMen100zs=QsBn5OKh+E^qK;aNt zuWOrKOsc(|Ju4VN{>f{OK;i%+-=H*~xrz<#H+`C08eq)Gky$iX8L{9AfmB`4q_l*@ zxdUVAp=l(jTybcH7n!U0`J)%FGhc}j$;HpWxf!^MnWpUoXx+5$*pGsFRX9^y!m7D% zbsE7NcQC`UOC*A$qcs?Vl0@JUFsn+D+VjORkcD8R*u_%s(0k1xB~TT`SOBD1mjSGR z!zx@-3A`luQI;)<-kT?=`c)gEFqtW47OC1*a3IuM>$~_aPx7}}V#WgwiBBuuH<6fT z#b^!3R84V5vD9{!RZQ#EjR^Q6~t=GbQg4HQ0JwzO*nJw zeOq39-&&G|Y(srjb_!`)u@P#+_f^`z_5-%5GtPX}>`=&1x7Jbja^X2=5=VGrgZ*tJ zB_82jEn5cFr#qpwcE$WJmL+m~r&T0@>g-wVlg%aq0UURtzVdu1sNN{>%x|j?;Jyy4ZKM;Rec7h3GTQ z{IJVEP{Hv5|2(SG3soEaQUVd+s+MDO)JFR1 z0scl>QfSF(+II?o?m}oV>5i*c&HUSr_pF{hV9e@%>dzr%4LhWuS5c<=hy%N#y-!q_ z=OYOiZOm`R&ADt1;e7i*>~F7fc>msWOn$19Scmi5Bp=x9Jg#m2ArfdO;Nf8sDBR$O zf3%Qn280d)%b0BtYsWE}9+u%f%A8c=vl2x^In?MCUyt1Uabn;yu9o)^+q{i$r>%_s zV#vrLVBNmuC0^JjDL~P&GmBK!IE#H|Y2@2Wbx5NJ+1lXXu?E@vo}mQt6QjL?L@vfq zym41O$qEx>%KH`h@UY^QJBN3l)!U~_2F*oPtd8|{yd3AD}yh<18JB}P?zsOU!o^|ud_nqI*%WJ zd;Ic9VNi#fhbotImFe840RZ(9I355Nyv&DOyrCySQ zJw53z9juC?w&v7H9-#_vSeF=CZvecXfCW3Q`JlrMD6e&1J%FPQ&MQa>;@KQIL>b+6PjeIR+ z6_vqExZKd5S~1~exvtcqQpOKnmj(-SaPfeGI|Ff`^j!lwL`LF`2o<+2y6we~V?c)z zJar}L#k7zCyuKUs!!FlF(e)vd|FAA+X1Yl$xx0;0@7a?GOO0(q@wWH4A^PD=8GO

KpT8{(m{6H1I(0&$7EsZkCt>QVe$=&3~q9N?4tEWk63LhA>-U_lu z)9SC<5Y`gK+2`%r?3QqXvh_`S;NyKzt7yI|o$gODdT)Wkc3}QJ{SRHS1wwi|+f~WO z*+tbY5!La$OD0dctI;D00!6h(G2LEQHv8sG^Gip^?kjY&lV=gtzi^KCAA1G5B@K-q zKF1G_+7j!hi?_;6$J-Y^t_df~8FL!$DYt{U;luPe$8b7O9(-&I&@ZV|e<8)-ezK0Y zRMe$XynP|}qjkE593AawF@Lbuf!QIU4K2(n6*;6^<+OZX?_Ag8Y|5i-IYW;>I>)J} z7D+CyAv7+MIQCf4a?TJ2#oqn=?Dn{6LCOz&*~&($-=SPKzwOqnQA_*%**@|7Q~0}s z>(7(TZ=Y9J+WxWHj>u5-r+BvWK7#)_M>~-OsZWxpT|Im2nJPqG)*IG^1CmeOug)?N4a5oEJ(XQaU4%s=3r;GGQ8GZI!Fk8d=`^_G;d% zC0}ifMfwG&W|1P{WhHdSk3M8b^5WTe>LF%kVhSL8XzsT85Iu$ACq@R;jnT;58qMo* zY_=Q2ly~(tZ#_RUMmsVC`7YuDO*GVSP23HLSxJTNCN<$aj~U!QJhw#UA65)Ku!g4O zb9O0>wqzmMB;@U3ul*#{ubshsVKY#eZCzDx#qYI=Y!(ZwHomTrQ;`E+3(P?dTLes9 zGrSRWTjX!brj0j>GB3!=#J3C=SN#!2)B@=)R=-BL&*8U_!3ntM8zRmoyMI<{TP#m& z=Nd!F1eLrHDl-z0_Wp@q-DDqsN?#~%mG@EIi%q`lV^VVLpaR}OdwGD0swAJ>heVy5 zTXY^rRHRXgtjzYL`TN8ey(%@S#lX=Z0)2VbBk>i+CElP(B zNzi<~2Y@_g?jqH6$g};84zwUf)q>wMvtVJ|AGP3Pp^E0GEQ`-G^KM>W?JcGGdT)cq z8EFT%^_fJ5SK|@e`vg6cw$Rid-tv@IZPk9rR|>gIk4X;RHx{-aP{c0h0M7#|MO6v+3sT&WZ*8pt zEScT)%nVmQvN((u2_LVgb;hi^pT3YSX+)SVx9Izg(;#L049+(UUcZa3evz{cJ9Q&c z*0}4pFDjLtykJE^vX1etv~N5V`FiS`J-OH-$Bt21U|#v2oPw-LdI|w3EZyzrggSXI z|rJhtAJ*Gd61d5v;dAKYm8G#tC}r%7}huGAVB9*ygElmKdpoCQilPeu&XPl*5w zE0%H|54yP!Xr@x%;xy+ecjlP*={=y%BGg1QOSi~oyA5_SQyMby`C0T;QKm>18{eyU zv!{uorjc8}6zQqa?ke-CbR)W9$7^MaBzqp^x@CnZc6=2NAq{FG$up?J4d?uUc$gJgDyrQ&_|qf{^e--5e|D?-jZwRw{k5YgN}m zs%@`1*S<_!y(_>Guy^}vgTtY^V}zXX2q-|TC`w;7aO9t9F@%qQw8r4ReIH=FdeOvq zVmE&#UXw-QerSoLhFm#whsyXlMfuIjVV*kIiUR%zNq#|lyRoHIguEe=p5!XC$pk>JiB6k)x^V%X16Dc_O9gT$No-m{Y26Gaks};^@sLv zQQ?1)C6%culKiH2&UUFtclWZvxKTZcn`?csp7zrr^Fz|rfEN(apBD{>kH^C2IekPh z8Z)$h(*VZ!r40gSOL6uN%O0%b77xm zP~x-0d(s67YCAAh;4;!9y(}^E1)Cps)CtFJmz4dJ6Crc9S0E`P+$Q07H6}-@azBd5 z6+47zO!sCkgyX(^Za7TKW7n1U>tObaU~q997A3sVlr{@bbmg-AHqI!Hpw!HV-!mC5 z=PlkXTRd$wZFstZi<)z(Jl2-7Fk0H{@>J{;fIlrzaV215K!L5id#YFq^DhZRz>DIC z?9IKtRm$D`in0)%jN^ftgIxfrH&AANfL|5T%QhBH8*L0{!^K#i7-KnEVDE7gEW_^i zz`!Gw$OeIbWxP_|_Iw+_$4 zPbl?isNLn?1O3|Eb!X5ocB%@cJ@GR;gVi6M2K~gdUE+x5F!;(@+S_sy^uj9Aq; z)op4L;*O3x@N%Njsybf&Dxu9z+2+ZV@0yyj$5=?OtTXob9Woya(!F}z?E%IUPpP3j>h_XpY)w}B!c*07 zG$w}RbXQ|_n|CAr;NI2acd9SHP7jn(8Sg+P@V1U&8Wa9ctSXd=wt*=HV#uThn9DVR z4ud)$(w7|hnPfNwh}$9t#ew-pT6w0r1(L{sn1ZkO7_?#{H8=t+WJx;nvv07lS zkeOQPq_81^49zcv%ZzIvGC{Qix2GAx3RQA=Z?V95DL%t=)rx6GT{l@$0CX}R0I^38 zi$uiOI_jZrrjlq<0$g|cx#+rwIKnoRLncq~T<)DFfMBSUy)?IYsIZV{#oI!g9PtY9 zwaL>2y?WnwE>)`|+%~n{Y}=WMg9aV{N-(T7&8ecS!ku-vG5VgXD-ccCf56J$7PV`h zH_P&+WyUiHt-At08hUtL-v;rs%4ySFY7;(UxW4?FH>J^Mk!O-umv&WsFD|y!h$TL` zoVOtsJA0|$W~!c?RtSBOmCVn|py|}zpoStwf1PYNi1tTtdUYtF691h`_OmvW0hz@` zFN{ZPVuxV6J*elY7CN!tZiU*QtSa>>(TD}Sj%#GQDQYvscNgKW>@0Z8nxKA?Ik&9) zi|6)m;v@bI^(hg$_9&t3Y%s(8TrVztz`lA7yz{OLM~=2~duK1o(8!?nbDSZDqSU*6#-v62bC=qqI*j&L=(^x~IScH2*G1*Vf+ zI&vE2N41iO+s-kN<)72n<5&s~>nI@`w7ZnpGlr!xp?M@vz3lYMJi4R^2SU$<4mU;ZAL_=^Fx8EQg6{ZZJV6E?m z7DURs?-cQW#_OtojhaEZw_JB}M&7L(te}ua__Z7_aV)bXZ@bfN&wnOo*+%eF7~;-R z73$Rzr(Bg8={9&yr6=)cyvs^%v41Z>LNT>Jc==MZBG}?Pt~002vFUMEfGUTadwPNm+{%r z9da$`6tnTYx__4!pnvIgyp?u5n)lu>gSll%^N+l?UDrbivMSJ_X%XyuCD@YGS;f4$ zRq6MxxOM_S;(4L>+;XN&Y2@;}L-0T)k=RR$prOeNXU+$mBxhJlg4Iv4o4Z_Q9aAY98aqTW1<8qvS&cs8VWeP{n1IXD26>k{l3FN82Y0>mMM&l$Tq96li!?85mp>T^yH zT<83&5QD2JPVrKj-+yuVJXBQNQ1Cg?M2_mPtK0@)s0}PDn;zJ+`Gt%7_TmrpADLMfqcl8i6 z-VbFCS?o5WUKJ=m9tdy79Y>k^4Z>X(zfxoOFUD(!eH1D0GjCa$(L!rwz$AbUYU+|Q zwJ)j#)`HlH+7MYOPsnI*coDr@K+#b){u6;5hbkE8!es6kGq~b;ZQ>#_9fse$3yz(> ziWC^zwV6T@_ilv~-@z#nTsWllF?Q%rDxf8ob!RqfG(4LUxov zO(5=5lcULHqJ^Xl{0gd;a%*MyLS3;Z8EJM+8M0Yz+3Sda@3jpaAmO@#qQ}L}uZIm| z`P97hK!%L>Gd8#p>O0PlEV++iKK?Nl-BX5{L3{Uu7o#j)m@Ckl6e+ulQs@XFVvTdPFN9+w4U$-wM1MK+Uh&z1dn~y%zA5)p0BD z@jc6!SwveY97g>sEC*G=)QTeJ%>)%7X=zRH@zU|e9Okkw} ztL@w4q_JnObu1r%gW>Gp?L{K9#dxKdpqsWmp)$_n!%* zJ^z9=kqwo;sDi&U#5U<*ANDy<=H>qCR zHfco5ZJ2#8-Zk&&ISG#E3}AMl@Q_FemIOv)AXR+zN(w-|PRn~|7L({cbgLn>l-vHw zwAWaE&HOqQq~(Oct#RdP)}~P(RZl8A&oj%10L|>b)rH-7z(0oGTxOMCSBE$L`3>*c zSIW>i{E?5Kg`F>ZUlGVZQ$f*D&Cr!yOe0tJ-lyo1YrYlSHxe+XpYT3Veuc%gh(cez z0(qo?d8YmD01fY~re+$QkZh>s=j2@Bk#QO9<^3E>Gw#3`)XkDm$e9uPL|wStP+OjL zsAKgMd}071fv~Giih$1I3cRClHrmDWCu1iSl;Kpgew~kfh%jPdpp;n2;~iT^zJa* z%&_5affG}5@3SN;-~Ge~R(8}~_F8I4M$lCcWZ&Yyojn6701-XsHF*sDkUMR86yD?F z&NkNN7Y^6j#%gD_LkNBp*$w#ODr?#|Ax!svfX+t9pZcG}oqkP|^Ope5IMz-%$y@P0 z&K1nT?k`Y-wCEwc$4FRp9t9nVFV%A#ExE(IWP8*S+K(Wt{M`dL8d2;Z<;*+)fn`LAD7->Nw5o*lC3iQqG!E)sez7vT~_vP+0#Y(%Ett8s6d;- zrJH3_0Rvs1;FW4TD!3a%S6NvASs~Z#fGqDi@yQ&IDv7v@r?Z0BLo3|s>)au2)fUFm z;Y^Nua8Oh}bo5JEUK`wsow^s-Qo+6jhZXubBbwrM=#@onw5EMx`DJ*gU23a8PhD9R zlQ;nU&eL~<#*kAhc`1ITSv?>YqxfKl4*;Owv5`I>B7mFnY#thb1mce_u9G|S@R%Prnf)R4r`tnSQHo<@8WJ7+@ojze$nL^480buyiz;APN9 zddL_9g~@Vz@6=@=y$|s)N4qRr91?$z+^c+BD_oCnUdWk|a_}`v{eCaYf((onIu%hT zyW(`vaWQN7HbrQ*v$H!pYEDpGfdf;GT}l20Sn{(i{Img zP}{x(#3cX7OfB`NaF6lRL9Y+(;eyi@7o==pD$kJdC(}ZBs12iAUW_JhqU^qcT@S#35Al~rB6V&hZQQqA z@)HuDL|$|^RM`;Gxd{I$gvE%v7-NC;W*Cw;pYd2G-0dTP1;z02OiT5uJn$iD(aN4a%zMc=!X-8GtECuD5eC^E3uTdjnm$6^C zO`xNcFJmXgFbka|jRytq<2Sjpc}JMP?Z==CyX7JRL=3a3the~$Sp~(2enDfb7lX7Ags(`Q~sr|@+tqsHgq*c4@u`4R|q`kErBh02m zbwpOD|03D-gfTIb6+n7+R5w4aKS($G|2zMxUZ!|#Ygyj{B?GAG1u)Im` zVt`F*yPbutm?H^r9Q&49>#VHub$Io{4sG_@YLTsyz-Nrx{+;}}kD9M`Bsy8t0I z{7OFtn%YEOj|YBi1)RX+Ac=0i*MqW|c>5D9#EEGmbtPf=s$wff%U$e&1PBZ)y0BxZ z^3z{kr@dR#9N#b3>U^+50!t3Xh1NG&;cU2<{f>oVjzI`d&F3NVh@#axU0^H*hQC}X(i z#qg?Td3F@(&*$%@Fe)E;c6KTCLy z)4S_=iPeizsUTTqju2v2@&sCU;o4H#i}-DX^g2Gh>0gYFI_#nV;VL-DJPO%^p4$X~ z!(lL-szyn~*%OnBMhNQ;;EeL^I&aQVoz^d|q535`+Wo{{inwqDLFq1s^%gK#c^FoJ z0o?*|PG>e7&n>B~O)7pM+8a=#}SSyl>j?C()9{G2F4jD*1CgOXcQe+wf$@L_e#0=S2P!<_U={vJCW4u48l#`*DrUAGDB~j1G4~xa z)vpNB(8K&+)g)@DNVx0b$p@(hs6<>g%pSE!E{~`6<^Yt!p`ntbv(boLMk#a&-I2Ik zGj7S55wH{xNQe_wLSnot>3(e~m5D&l<-|6oQO9KMG`biI~ z!7*g0w2tUk+ZZ~lxqn1cIyiK8RsCR!$DWUN0)PO+9vG#Q?a?-;*b_nqKhZIAbxSQU z$x#x}Mf)=izNPQXxMZZD9~#nHFK~N3>bFu8p9ixdCK?|)bfQ&$4rzC>EifJt3{-6q z{@^x`iy#P%7az&=9}^`oX5q+uhNJ#5qdA?~fY3)nk-KJqp6g?WLv3scxjbnkqySR7 zpXwS8AhqDB`0rwM%X;-NMDz&rRrvsY{ogbt@;uVISHs!8QMSZGI904S@u`9qNx`*n zsD$}EghV~ilg=atS+vter1>LJ(|G6DQQXoVSkF`bj<=FMvXTqi70pB2X7hg`Z_?w7 zlV-T=c8&1Ehm;9vZ1tF6-sv13(GVlk*g7 z%W>sF@i^P|T&TVJkC`$Z_&2oO74x>*o)?6nrT5xes9R%%EI>}H$;CYW0c%nie~WBV zXpdQw@~1Az2s;cW>eK~KbWw#pyaa~gzMxA_AuVy*%?;E;4`gsk<-{}S!DYontrh*H zeC%yd;q+&<6(prd2|;^l0NKyz>DuqSE{1_I7h(wGok)b3@Mc%O5)31bZfh}l=lk;t zz#L>QRpp*PduoH^a6tO4!e=`KzxP`?L7d`6Z-p`PlT{A3+|1XyB@^ywSzm=ZDTo-< z79{eInT82txuZ}3x6`?-!XNj96r;alv^E84e-`WrlJFf@V|C!&ztVS#=|O6iqR^U< zhA)VaByClg?^>zN@|Q|~VwbtPZZfCfP-<%deaFmstQ8_(hgBIkYd<)3Item^q&Scl zWEW(CN%Df(_mUPvMy%H;se98l|5a%HGw^>EY;nVI*Xbr_k%~MU%ts`v4U=j9_7J*Y zyOU(MovoOEQEZ2kfhRBfMb%*PAD?4@ATS18AtXRUgL$iPrrbPW$Vh{`uG9cz@<<=uUEB=P9o- zs-2^Or9s6a2=h>@%k zv{K6IIQThERkXWOmgj31q^EAjr>|A1N_)+b=*)r$OQr%0rgI?prTMCq&QI?sCh-M= zb{F3HOEueE;%UF~esKfxNKN{2_-ja{{!V6{@ISHqpSAy&2aOO$boHflGU3tsag{7| zweO(!=+FEWytCC2&Klg&Dp5~BoLx&i8JeyF|J4gz;lN1y`|@y^&wmH?HMG*VjkXuL zM7H(LqYK|%APubD#JqtoA*dbp=c5X*KnEv!mp~gXU?z50iB5O)p$<}HCtFhhICz$x zs`kIbf+DK3uG3(u*q+n=%O^4-KAi>@Jzr)NezsA$q@%e&c z-Abs-+}|m&ow^dg5vkFtZ?6K?l>vE!tGGoT70KDB7S)v+768vIlJ5tb3ID_8e=n(j z-wUI}g){oOy5@nv=+{x+%#oFLGG?#_L;pKqe?A+l!bFSFpY0Est$(-v;zQHtYyW*b zjA|=v@u6|suBi#XW|94*=%ux=^)|NOULWyt=s#@aUu$C%316zx>=WD2>vChJG<0S{ z1R_K)b46D&d$+Zr$ma5YE1&-J*wR+=qmiPd|KQLt^GHys8bu;R1SZ3gkEZXT`p=us zxzuqZ;J#XVn6aO7A*wdYrVDtxO+%LgG2Qpx2@H^jm2^}Ji ze}~||1{&I1NX%bq2JGOJ!GA9Y9R#Ax=Et3um*sxfLj-)JxO0j@jgH2fcbDr_5IWv= z%k#jdpNp$2&HwXQaU%3mcwXg0Wu4yy)@EG5Uh%bXmCuet9LTzD+yy@&{~I3u{>=Ou zp#o89;Kz{x96A9=(U=39pWI!)Pm0Q3Y)y;A#h~~9n~Z;~lvrpzv&<%R(JUXLl1DhV z($HG@F;9C%fBc(x{M+~O&yY?aAQ0ACc6~U({(EK#S%DpqwjJZV!{zsDYj>AvT-bBq zW|Nbdl5#zdk#d>xCeQV;C9Z!05NxP`ALQ0(jWsq#z*wZ2+WozNY$Nn^)K+$@lMXqc|NTF{(f^sfJr0<~?c(PDw0G_CP^Eo*=FBiA zx6p=FX*HRO)@3%A8cY{TNUgUhWJ)euVl0Iar`_tUB#p9|Tzb1Nq1A4ar9HhRO|IQl zRws#y7z#sV<>%nOWrh>_6}EnLnO6^E}V_J>TE=_xpXHGv^F|E%;qaaIXXGN^U7A z4RrVHPx0AQexq(5at)j;Z?o%0N0V26pU(PxhTppsekBvUp#RKfQ1VQJJITPE8G#gV z?<%?fgiA99$LK5~2c3@=PrkRaC>6XSH*UH3GtK6JI# z?#gf4XcO$fj_AAj3+2;?XV=48ga3OtW_>cHGh65b`dtk-MMLM)Tx+-kxn-jU-*Xgl z2gA0gL@8KU<>zDx7eBNf!x=yj5MQ3$G8HPW9Kp9w~#hItNU?ia9Vo)H6 z{h<+(R2Dk|)$x~69NlL%=$Cy89_^rKI=jj9)2<3=-(mNhXL)arl^Q+otd7jNR$s8M zAS7QDj3RQLid(8hoJQ;{^(Ho(_(2C;46D;0$AMm|%|OkuHILT{7c7VggmjwVEHKQ+ zas3kAPc3Db#(B}Uv_03oQ)VTtZZk>Q;W?anhXzPaAv{7?<7Yj+YrJ$ph|?(e-61tI zey{DziQzqfd%~X|IGm-@|3tOR;^U@s{r=IEqN~HdEXEI-q{-Eo73^8X@r2rhZ?F3} zWvUXXn!L~kwllCXQF_p5g2-)>Wy$TnQ2CG>oMQ=oN^W|!VT7DAB3YdLueavL9fbO24EZw3CR2dld&PfIiDI1axrR0_**@YemQwt|>AH{u_iwP_r7@>+^hy4lX?yJ;!1PX+f*?GE37PS#J zioZ4Vf60;&2S2O10oj%Qb#Cx&LGGr}KF0qc*K*vXniZP{E|6N75Hu4qfBtc;%XZ7W zuYYBhvS=BTt5tcA%Py@Xy?tF)kTaxzMP2(qBD! z_1P^fiJ~CLjWlblPy0sJ8c%Rt5NFU;)=GtXA(^s^B^mSv&3zm_mlW%mzP);ocsUKS z0{cs+)w_Z*x5pbkhQI@=k4gT86kEWC72)qk#+(-P9DU7qb5~e*ht?8 zAzw(01B;zt3s_lOAqk^H88mNAY^QEW^BHJ)$h?Ah8A!;e6^@9SKHMrNahd@;5%VbU ztvLN!V&VK#=~>CNXT)Y)6g4Cv3%ug@XvYGHQDCtH91eGA-`B(TRlX-TuCFYWroA%V@xNgLZ@+Gy4&5C{Do#~&6~_~-@6OW-hso&j8dpr?{8$Sb~p zJI)nwpvZT-z+XvCf)Kt|wa^UrL!Yl{=GB!=#A&L9)*;6#an{mH)W{qvnn7SQU}srd zxeRb0Dy)EBrpD>V%hw(qC=uoOjVdS7ETLJTw~V5q&&9%3%kXMiE3#kK=~t=ZcN1z1 zyfe))i-2vEw*|<*Xp})QsmE(Tq#8yomHJsSZ2|BMaP|47%?wTx_|*~CfD}y$Y(i!% zvS*PTbz0p*+k$lI9^N>4KoY;hcLKZ9EpNx*I!nhLvJ3(u(c6@VF9V2U_)sB$(7WK& zfh$1C7Jh*G8-TCQu;vYdAJLv?o#^rr$P={jQ)*fPR}WO%?XwxyTz1@bPYiV)KLtv19GU{&2XX4b*|;R~ zqu^i-e+ozjyeg-`E@1zi@pF&N=bn>H?ln*9H92*_9M>wSX6pcRoB>6?YXgjv!Mw8y zCy0fnY9$w;gEtp`9SCgK=gPzEIP6BbW~G4JWzNWFWL zWr}k&E%+V@juX&M$cwTo1=Aw$ktB7W;7C6R?T_u#2+l5_;_K9W3)#?a!>_`sRJ`6k zO=}==ipSsIM~A+#0pGv|nFj8}t%mCb?j30Ix%rb$<*yp$TisFB0-CKN){BQOF4Xt4A>;WnnfU}`5>9%#4;|n|%@0WJv z==>7+A!L6*If@V-FmTz*Oe0*8TX7S)wAc(dk{*QwOUn|XP7`k@C-TGh2Pr(~hwl!) zQgaCKCBt`y$P^8$5pjiT?2`VV)=!?%Mz4)yZ4&MlDew6Pe~+%RY4f);t261Zs;YFW z;HsI+W^TV@du7hz({u4_&R;)y<`zTY#|=CD=P=aN@N)xCUQpPhMX0D^#6Za;MwB-^|RI-o0oBnL$zP zHRfb3zXs>qr(3p%QCEo%7#=CoVCTdxW;LltNc3cQf*Jaj-Rcic+K|2Sdaj>Tjf{up z>v7$fuJPfI8<`#p>mrV*51JyF5X>TaIJS3@!gN=Bh+r;fB2V}?TG_$tCbJXjJ4jvA zdB5nAuNrV(;WE0kL>D4rj>vp49s7eB!6hO=Y|%(x##%7(k4wF?IX4Je(ad^x``U%@ z`XiIs5AnNyswWc)KPjF5@k?u6QUsNwtEFyn4j_9a z^>n=X3CQidQW8Usn8RT;KA_DPJCDU8ket{%kE5B}HYr!XJDAy@{^z!yEx=l^l^kKo z`SUUFm?o3DCR*{u$a6}72wg_J`R2WWv)ID%3N>`_8Iu~lupzjy-zO%t$L7a=D(81| z9;H}~tu1$rRi8q7zN-D#`FN`Xx-~#NPQFBW5pgri6VXT}jKFORqY6!GJa51GlNX zmCQ(HVOY=J3yDUny1&Ys!&uHtjOlMRN_w0k*15tF-V)B!u@7`^KSI(?f5PI?0Y3xo zUXqtndnG9&?OhfxRBRn06dOi~ZVP3W-#ODk5=52^-;14hv_7=;P^Oc%8+CLHhOHQ_ zu@0~FG}~i?^Qg-iZ6cxV$K;fr9s`Rtq=7Q_S%xwae_j+y=^V-^NtilxFTiIw5QSAb ztSFRY4^uSQg^5ozWsM!d;ZZ1*D3lXK0IlYu%Gt3BE)+@>%CT}qM%1Em{WGfIa5)rf zpirVvP7ncfw}b9>WF+b_=Xq43PZYu7td2s7LODSMP>GI8^f9OI;lv}>Ky~E=Rh4i! z3Z)PWl$D=_04mW@i9SJ1pn&Sii6S^$AW;bQW64HQZg$_XNXmY{#C1fgYT> Date: Mon, 15 Aug 2022 08:53:50 +0000 Subject: [PATCH 03/14] [feature][docs] update README.md and logo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 77256586273..bcaceb3b6f6 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@

符号说明: (1) √: 已经支持, (2) ?: 待详细测试, (3) -: 暂不支持, (4) contrib: 非飞桨生态模型 -| 任务场景 | 模型 | API | CPU | NVIDIA GPU | Paddle Inference | TensorRT | ORT | +| 任务场景 | 模型 | API | CPU | NVIDIA GPU | Paddle Inference | TensorRT | ONNXRuntime | | -------- | ------------------------------------------------------------ | ------- | ------- | ---------- | ---------| ---------| ---------| | 图像分类 | [PaddleClas/ResNet50](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | | 图像分类 | [PaddleClas/PPLCNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | From fddc42ebb04cfac82a72ed2ccbfbaf0d0315a3f9 Mon Sep 17 00:00:00 2001 From: DefTruth Date: Mon, 15 Aug 2022 08:59:39 +0000 Subject: [PATCH 04/14] [feature][docs] update README.md and logo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bcaceb3b6f6..0997920d225 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@
符号说明: (1) √: 已经支持, (2) ?: 待详细测试, (3) -: 暂不支持, (4) contrib: 非飞桨生态模型 -| 任务场景 | 模型 | API | CPU | NVIDIA GPU | Paddle Inference | TensorRT | ONNXRuntime | +| 任务场景 | 模型 | API | CPU | NVIDIA GPU | Paddle | TRT | ORT | | -------- | ------------------------------------------------------------ | ------- | ------- | ---------- | ---------| ---------| ---------| | 图像分类 | [PaddleClas/ResNet50](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | | 图像分类 | [PaddleClas/PPLCNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | From b6b7fef08450236b1e7c28ba943121e87375dced Mon Sep 17 00:00:00 2001 From: DefTruth Date: Mon, 15 Aug 2022 09:12:10 +0000 Subject: [PATCH 05/14] [feature][docs] update README.md and logo --- README.md | 99 +++++++++++++++++++++++++++---------------------------- 1 file changed, 49 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index 0997920d225..5c195d772c4 100644 --- a/README.md +++ b/README.md @@ -37,52 +37,51 @@
符号说明: (1) √: 已经支持, (2) ?: 待详细测试, (3) -: 暂不支持, (4) contrib: 非飞桨生态模型 -| 任务场景 | 模型 | API | CPU | NVIDIA GPU | Paddle | TRT | ORT | +| 任务场景 | 模型 | API | CPU | NVIDIA GPU | Paddle | TRT | ORT | | -------- | ------------------------------------------------------------ | ------- | ------- | ---------- | ---------| ---------| ---------| -| 图像分类 | [PaddleClas/ResNet50](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/PPLCNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/PPLCNetv2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/EfficientNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/GhostNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/MobileNetV1](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/MobileNetV2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/MobileNetV3](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/ShuffleNetV2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/SqueeezeNetV1.1](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/Inceptionv3](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/PP-HGNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/SwinTransformer](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 目标检测 | [PaddleDetection/PPYOLOE](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | √ | ? | -| 目标检测 | [PaddleDetection/PicoDet](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | √ | ? | -| 目标检测 | [PaddleDetection/YOLOX](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | √ | ? | -| 目标检测 | [PaddleDetection/YOLOv3](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | √ | ? | -| 目标检测 | [PaddleDetection/PPYOLO](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | - | ? | -| 目标检测 | [PaddleDetection/PPYOLOv2](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | - | ? | -| 目标检测 | [PaddleDetection/FasterRCNN](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | - | ? | -| 目标检测 | [Contrib/YOLOX](./examples/vision/detection/yolox) | [Python](./examples/vision/detection/yolox/python)/[C++](./examples/vision/detection/yolox/cpp) | √ | √ | ? | √ | √ | -| 目标检测 | [Contrib/YOLOv7](./examples/vision/detection/yolov7) | [Python](./examples/vision/detection/yolov7/python)/[C++](./examples/vision/detection/yolov7/cpp) | √ | √ | ? | √ |√ | -| 目标检测 | [Contrib/YOLOv6](./examples/vision/detection/yolov6) | [Python](./examples/vision/detection/yolov6/python)/[C++](./examples/vision/detection/yolov6/cpp) | √ | √ | ? | √ |√ | -| 目标检测 | [Contrib/YOLOv5](./examples/vision/detection/yolov5) | [Python](./examples/vision/detection/yolov5/python)/[C++](./examples/vision/detection/yolov5/cpp) | √ | √ | ? | √ |√ | -| 目标检测 | [Contrib/YOLOR](./examples/vision/detection/yolor) | [Python](./examples/vision/detection/yolor/python)/[C++](./examples/vision/detection/yolor/cpp) | √ | √ | ? |√ | √ | -| 目标检测 | [Contrib/ScaledYOLOv4](./examples/vision/detection/scaledyolov4) | [Python](./examples/vision/detection/scaledyolov4/python)/[C++](./examples/vision/detection/scaledyolov4/cpp) | √ | √ | ? | √ | √ | -| 目标检测 | [Contrib/YOLOv5-Lite](./examples/vision/detection/yolov5lite) | [Python](./examples/vision/detection/yolov5lite/python)/[C++](./examples/vision/detection/yolov5lite/cpp) | √ | √ | ? | √ | √ | -| 目标检测 | [Contrib/NanoDet-Plus](./examples/vision/detection/nanodet_plus) | [Python](./examples/vision/detection/nanodet_plus/python)/[C++](./examples/vision/detection/nanodet_plus/cpp) | √ | √ | ? | √ | √ | -| 图像/人像分割 | [PaddleSeg/PP-LiteSeg](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ | √ | ? | -| 图像/人像分割 | [PaddleSeg/PP-HumanSeg-Lite](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ | √ | ? | -| 图像/人像分割 | [PaddleSeg/PP-HumanSeg-Lite](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | -| 图像/人像分割 | [PaddleSeg/HRNet-w18](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | ? | -| 图像/人像分割 | [PaddleSeg/PP-HumanSeg-Server](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | -| 图像/人像分割 | [PaddleSeg/Unet](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | -| 图像/人像分割 | [PaddleSeg/Deeplabv3-ResNet50](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | -| 人脸检测 | [Contrib/RetinaFace](./examples/vision/facedet/retinaface) | [Python](./examples/vision/facedet/retinaface/python)/[C++](./examples/vision/facedet/retinaface/cpp) | √ | √ | ? | √ | √ | -| 人脸检测 | [Contrib/UltraFace](./examples/vision/facedet/utltraface) | [Python](./examples/vision/facedet/utltraface/python)/[C++](./examples/vision/facedet/utltraface/cpp) | √ | √ | ? |√ | √ | -| 人脸检测 | [Contrib/YOLOv5Face](./examples/vision/facedet/yolov5face) | [Python](./examples/vision/facedet/yolov5face/python)/[C++](./examples/vision/facedet/yolov5face/cpp) | √ | √ | ? |√ | √ | -| 人脸检测 | [Contrib/SCRFD](./examples/vision/facedet/scrfd) | [Python](./examples/vision/facedet/scrfd/python)/[C++](./examples/vision/facedet/scrfd/cpp) | √ | √ | ? | √ | √ | -| 人脸识别 | [Contrib/ArcFace](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | √ | √ | ? |√ | √ | -| 人脸识别 | [Contrib/CosFace](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | √ | √ | ? |√ | √ | -| 人脸识别 | [Contrib/PartialFC](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | √ | √ | ? |√ | √ | -| 人脸识别 | [Contrib/VPL](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | √ | √ | ? |√ | √ | -| 人像抠图 | [Contrib/MODNet](./examples/vision/matting/modnet) | [Python](./examples/vision/matting/modnet/python)/[C++](./examples/vision/matting/modnet/cpp) | √ | √ | ? | √ | √ | +| 图像分类 | [PaddleClas/ResNet50](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/PPLCNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/PPLCNetv2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/EfficientNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/GhostNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/MobileNetV1](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/MobileNetV2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/MobileNetV3](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/ShuffleNetV2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/SqueeezeNetV1.1](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/Inceptionv3](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/PPHGNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 图像分类 | [PaddleClas/SwinTransformer](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | +| 目标检测 | [PaddleDetection/PPYOLOE](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | √ | ? | +| 目标检测 | [PaddleDetection/PicoDet](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | √ | ? | +| 目标检测 | [PaddleDetection/YOLOX](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | √ | ? | +| 目标检测 | [PaddleDetection/YOLOv3](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | √ | ? | +| 目标检测 | [PaddleDetection/PPYOLO](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | - | ? | +| 目标检测 | [PaddleDetection/PPYOLOv2](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | - | ? | +| 目标检测 | [PaddleDetection/FasterRCNN](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | - | ? | +| 目标检测 | [Contrib/YOLOX](./examples/vision/detection/yolox) | [Python](./examples/vision/detection/yolox/python)/[C++](./examples/vision/detection/yolox/cpp) | √ | √ | ? | √ | √ | +| 目标检测 | [Contrib/YOLOv7](./examples/vision/detection/yolov7) | [Python](./examples/vision/detection/yolov7/python)/[C++](./examples/vision/detection/yolov7/cpp) | √ | √ | ? | √ |√ | +| 目标检测 | [Contrib/YOLOv6](./examples/vision/detection/yolov6) | [Python](./examples/vision/detection/yolov6/python)/[C++](./examples/vision/detection/yolov6/cpp) | √ | √ | ? | √ |√ | +| 目标检测 | [Contrib/YOLOv5](./examples/vision/detection/yolov5) | [Python](./examples/vision/detection/yolov5/python)/[C++](./examples/vision/detection/yolov5/cpp) | √ | √ | ? | √ |√ | +| 目标检测 | [Contrib/YOLOR](./examples/vision/detection/yolor) | [Python](./examples/vision/detection/yolor/python)/[C++](./examples/vision/detection/yolor/cpp) | √ | √ | ? |√ | √ | +| 目标检测 | [Contrib/ScaledYOLOv4](./examples/vision/detection/scaledyolov4) | [Python](./examples/vision/detection/scaledyolov4/python)/[C++](./examples/vision/detection/scaledyolov4/cpp) | √ | √ | ? | √ | √ | +| 目标检测 | [Contrib/YOLOv5Lite](./examples/vision/detection/yolov5lite) | [Python](./examples/vision/detection/yolov5lite/python)/[C++](./examples/vision/detection/yolov5lite/cpp) | √ | √ | ? | √ | √ | +| 目标检测 | [Contrib/NanoDetPlus](./examples/vision/detection/nanodet_plus) | [Python](./examples/vision/detection/nanodet_plus/python)/[C++](./examples/vision/detection/nanodet_plus/cpp) | √ | √ | ? | √ | √ | +| 图像分割 | [PaddleSeg/PPLiteSeg](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ | √ | ? | +| 图像分割 | [PaddleSeg/PPHumanSegLite](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ | √ | ? | +| 图像分割 | [PaddleSeg/HRNet](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | ? | +| 图像分割 | [PaddleSeg/PPHumanSegServer](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | +| 图像分割 | [PaddleSeg/Unet](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | +| 图像分割 | [PaddleSeg/Deeplabv3](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | +| 人脸检测 | [Contrib/RetinaFace](./examples/vision/facedet/retinaface) | [Python](./examples/vision/facedet/retinaface/python)/[C++](./examples/vision/facedet/retinaface/cpp) | √ | √ | ? | √ | √ | +| 人脸检测 | [Contrib/UltraFace](./examples/vision/facedet/utltraface) | [ Python](./examples/vision/facedet/utltraface/python)/[C++](./examples/vision/facedet/utltraface/cpp) | √ | √ | ? |√ | √ | +| 人脸检测 | [Contrib/YOLOv5Face](./examples/vision/facedet/yolov5face) | [Python](./examples/vision/facedet/yolov5face/python)/[C++](./examples/vision/facedet/yolov5face/cpp) | √ | √ | ? |√ | √ | +| 人脸检测 | [Contrib/SCRFD](./examples/vision/facedet/scrfd) | [Python](./examples/vision/facedet/scrfd/python)/[C++](./examples/vision/facedet/scrfd/cpp) | √ | √ | ? | √ | √ | +| 人脸识别 | [Contrib/ArcFace](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | √ | √ | ? |√ | √ | +| 人脸识别 | [Contrib/CosFace](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | √ | √ | ? |√ | √ | +| 人脸识别 | [Contrib/PartialFC](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | √ | √ | ? |√ | √ | +| 人脸识别 | [Contrib/VPL](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | √ | √ | ? |√ | √ | +| 人像抠图 | [Contrib/MODNet](./examples/vision/matting/modnet) | [Python](./examples/vision/matting/modnet/python)/[C++](./examples/vision/matting/modnet/cpp) | √ | √ | ? | √ | √ | ## 3. 服务端快速开始 @@ -197,11 +196,11 @@ FastDeploy提供了大量部署示例供开发者参考,支持模型在CPU、G | 人脸检测 | BlazeFace | 1.5 | ✅ | ✅ | ✅ | | 人脸检测 | RetinaFace | 1.7 | ✅ | ❌ | ❌ | | 人体关键点检测 | PP-TinyPose | 5.5 | ✅ | ✅ | ✅ | -| 图像/人像分割 | PP-LiteSeg(STDC1) | 32.2 | ✅ | ✅ | ✅ | -| 图像/人像分割 | PP-HumanSeg-Lite | 0.556 | ✅ | ✅ | ✅ | -| 图像/人像分割 | HRNet-w18 | 38.7 | ✅ | ✅ | ✅ | -| 图像/人像分割 | PP-HumanSeg-Server | 107.2 | ✅ | ✅ | ✅ | -| 图像/人像分割 | Unet | 53.7 | ❌ | ✅ | ❌ | +| 图像分割 | PP-LiteSeg(STDC1) | 32.2 | ✅ | ✅ | ✅ | +| 图像分割 | PP-HumanSeg-Lite | 0.556 | ✅ | ✅ | ✅ | +| 图像分割 | HRNet-w18 | 38.7 | ✅ | ✅ | ✅ | +| 图像分割 | PP-HumanSeg-Server | 107.2 | ✅ | ✅ | ✅ | +| 图像分割 | Unet | 53.7 | ❌ | ✅ | ❌ | | OCR | PP-OCRv1 | 2.3+4.4 | ✅ | ✅ | ✅ | | OCR | PP-OCRv2 | 2.3+4.4 | ✅ | ✅ | ✅ | | OCR | PP-OCRv3 | 2.4+10.6 | ✅ | ✅ | ✅ | From c314a20994218608ea74dca5d792a099e692be37 Mon Sep 17 00:00:00 2001 From: DefTruth Date: Mon, 15 Aug 2022 09:13:21 +0000 Subject: [PATCH 06/14] [feature][docs] update README.md and logo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5c195d772c4..6958979613c 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@
符号说明: (1) √: 已经支持, (2) ?: 待详细测试, (3) -: 暂不支持, (4) contrib: 非飞桨生态模型 -| 任务场景 | 模型 | API | CPU | NVIDIA GPU | Paddle | TRT | ORT | +| 任务场景 | 模型 | API | CPU | GPU | Paddle | TRT | ORT | | -------- | ------------------------------------------------------------ | ------- | ------- | ---------- | ---------| ---------| ---------| | 图像分类 | [PaddleClas/ResNet50](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | | 图像分类 | [PaddleClas/PPLCNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | From e51d99dbe7103770fda38325a0ffc5b7edb333dc Mon Sep 17 00:00:00 2001 From: DefTruth Date: Mon, 15 Aug 2022 09:15:28 +0000 Subject: [PATCH 07/14] [feature][docs] update README.md and logo --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6958979613c..f5f5f7eeee4 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,8 @@
💡 安装FastDeploy Python/C++ -用户根据开发环境选择安装版本,更多安装环境参考[安装文档](docs/quick_start/install.md). + +用户根据开发环境选择安装版本,更多安装环境参考 [安装文档](docs/quick_start/install.md) . ```bash pip install https://bj.bcebos.com/paddlehub/fastdeploy/wheels/fastdeploy_python-0.2.0-cp38-cp38-manylinux1_x86_64.whl From da942463cedbbf7f640c57d2e17f186edd278ea9 Mon Sep 17 00:00:00 2001 From: DefTruth Date: Mon, 15 Aug 2022 09:19:44 +0000 Subject: [PATCH 08/14] [feature][docs] update README.md and logo --- README.md | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index f5f5f7eeee4..3329cc0f6dd 100644 --- a/README.md +++ b/README.md @@ -114,10 +114,8 @@ wget https://gitee.com/paddlepaddle/PaddleDetection/raw/release/2.4/demo/0000000 import cv2 import fastdeploy.vision as vision -model = vision.detection.PPYOLOE("ppyoloe_crn_l_300e_coco/model.pdmodel", - "ppyoloe_crn_l_300e_coco/model.pdiparams", - "ppyoloe_crn_l_300e_coco/infer_cfg.yml") - +model = vision.detection.PPYOLOE( + "model.pdmodel", "model.pdiparams", "infer_cfg.yml") im = cv2.imread("000000014439.jpg") result = model.predict(im.copy()) print(result) @@ -133,20 +131,15 @@ cv2.imwrite("vis_image.jpg", vis_im) int main(int argc, char* argv[]) { namespce vision = fastdeploy::vision; - auto model_file = "ppyoloe_crn_l_300e_coco/model.pdmodel"; - auto params_file = "ppyoloe_crn_l_300e_coco/model.pdiparams"; - auto config_file = "ppyoloe_crn_l_300e_coco/infer_cfg.yml"; - auto model = vision::detection::PPYOLOE(model_file, params_file, config_file); - + auto model = vision::detection::PPYOLOE( + "model.pdmodel", "model.pdiparams", "infer_cfg.yml"); auto im = cv::imread(image_file); - auto im_bak = im.clone(); vision::DetectionResult res; model.Predict(&im, &res) - auto vis_im = vision::Visualize::VisDetection(im_bak, res, 0.5); + auto vis_im = vision::Visualize::VisDetection(im, res, 0.5); cv::imwrite("vis_result.jpg", vis_im); - std::cout << "Visualized result saved in ./vis_image.jpg" << std::endl; } ``` From 3eacb3aa3c513306f8439885eef3d2ffa61ef2bf Mon Sep 17 00:00:00 2001 From: DefTruth Date: Mon, 15 Aug 2022 09:58:20 +0000 Subject: [PATCH 09/14] feature][docs] update README.md and logo --- README.md | 125 ++++++++++++++++++++++++------------------------------ 1 file changed, 56 insertions(+), 69 deletions(-) diff --git a/README.md b/README.md index 3329cc0f6dd..d96b0704ebe 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,6 @@ * [服务端快速开始](#fastdeploy-quick-start) * [Python预测示例](#fastdeploy-quick-start-python) * [C++预测示例](#fastdeploy-quick-start-cpp) -* [更多服务端部署示例](#fastdeploy-server-cases) * [轻量化SDK快速实现端侧AI推理部署](#fastdeploy-edge-sdk) * [边缘侧部署](#fastdeploy-edge-sdk-arm-linux) * [移动端部署](#fastdeploy-edge-sdk-ios-android) @@ -36,53 +35,54 @@
-符号说明: (1) √: 已经支持, (2) ?: 待详细测试, (3) -: 暂不支持, (4) contrib: 非飞桨生态模型 -| 任务场景 | 模型 | API | CPU | GPU | Paddle | TRT | ORT | -| -------- | ------------------------------------------------------------ | ------- | ------- | ---------- | ---------| ---------| ---------| -| 图像分类 | [PaddleClas/ResNet50](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/PPLCNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/PPLCNetv2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/EfficientNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/GhostNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/MobileNetV1](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/MobileNetV2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/MobileNetV3](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/ShuffleNetV2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/SqueeezeNetV1.1](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/Inceptionv3](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/PPHGNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 图像分类 | [PaddleClas/SwinTransformer](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | √ | √ | √ | √ | ? | -| 目标检测 | [PaddleDetection/PPYOLOE](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | √ | ? | -| 目标检测 | [PaddleDetection/PicoDet](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | √ | ? | -| 目标检测 | [PaddleDetection/YOLOX](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | √ | ? | -| 目标检测 | [PaddleDetection/YOLOv3](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | √ | ? | -| 目标检测 | [PaddleDetection/PPYOLO](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | - | ? | -| 目标检测 | [PaddleDetection/PPYOLOv2](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | - | ? | -| 目标检测 | [PaddleDetection/FasterRCNN](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | √ | √ | √ | - | ? | -| 目标检测 | [Contrib/YOLOX](./examples/vision/detection/yolox) | [Python](./examples/vision/detection/yolox/python)/[C++](./examples/vision/detection/yolox/cpp) | √ | √ | ? | √ | √ | -| 目标检测 | [Contrib/YOLOv7](./examples/vision/detection/yolov7) | [Python](./examples/vision/detection/yolov7/python)/[C++](./examples/vision/detection/yolov7/cpp) | √ | √ | ? | √ |√ | -| 目标检测 | [Contrib/YOLOv6](./examples/vision/detection/yolov6) | [Python](./examples/vision/detection/yolov6/python)/[C++](./examples/vision/detection/yolov6/cpp) | √ | √ | ? | √ |√ | -| 目标检测 | [Contrib/YOLOv5](./examples/vision/detection/yolov5) | [Python](./examples/vision/detection/yolov5/python)/[C++](./examples/vision/detection/yolov5/cpp) | √ | √ | ? | √ |√ | -| 目标检测 | [Contrib/YOLOR](./examples/vision/detection/yolor) | [Python](./examples/vision/detection/yolor/python)/[C++](./examples/vision/detection/yolor/cpp) | √ | √ | ? |√ | √ | -| 目标检测 | [Contrib/ScaledYOLOv4](./examples/vision/detection/scaledyolov4) | [Python](./examples/vision/detection/scaledyolov4/python)/[C++](./examples/vision/detection/scaledyolov4/cpp) | √ | √ | ? | √ | √ | -| 目标检测 | [Contrib/YOLOv5Lite](./examples/vision/detection/yolov5lite) | [Python](./examples/vision/detection/yolov5lite/python)/[C++](./examples/vision/detection/yolov5lite/cpp) | √ | √ | ? | √ | √ | -| 目标检测 | [Contrib/NanoDetPlus](./examples/vision/detection/nanodet_plus) | [Python](./examples/vision/detection/nanodet_plus/python)/[C++](./examples/vision/detection/nanodet_plus/cpp) | √ | √ | ? | √ | √ | -| 图像分割 | [PaddleSeg/PPLiteSeg](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ | √ | ? | -| 图像分割 | [PaddleSeg/PPHumanSegLite](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ | √ | ? | -| 图像分割 | [PaddleSeg/HRNet](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | ? | -| 图像分割 | [PaddleSeg/PPHumanSegServer](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | -| 图像分割 | [PaddleSeg/Unet](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | -| 图像分割 | [PaddleSeg/Deeplabv3](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | √ | √ | √ |√ | ? | -| 人脸检测 | [Contrib/RetinaFace](./examples/vision/facedet/retinaface) | [Python](./examples/vision/facedet/retinaface/python)/[C++](./examples/vision/facedet/retinaface/cpp) | √ | √ | ? | √ | √ | -| 人脸检测 | [Contrib/UltraFace](./examples/vision/facedet/utltraface) | [ Python](./examples/vision/facedet/utltraface/python)/[C++](./examples/vision/facedet/utltraface/cpp) | √ | √ | ? |√ | √ | -| 人脸检测 | [Contrib/YOLOv5Face](./examples/vision/facedet/yolov5face) | [Python](./examples/vision/facedet/yolov5face/python)/[C++](./examples/vision/facedet/yolov5face/cpp) | √ | √ | ? |√ | √ | -| 人脸检测 | [Contrib/SCRFD](./examples/vision/facedet/scrfd) | [Python](./examples/vision/facedet/scrfd/python)/[C++](./examples/vision/facedet/scrfd/cpp) | √ | √ | ? | √ | √ | -| 人脸识别 | [Contrib/ArcFace](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | √ | √ | ? |√ | √ | -| 人脸识别 | [Contrib/CosFace](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | √ | √ | ? |√ | √ | -| 人脸识别 | [Contrib/PartialFC](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | √ | √ | ? |√ | √ | -| 人脸识别 | [Contrib/VPL](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | √ | √ | ? |√ | √ | -| 人像抠图 | [Contrib/MODNet](./examples/vision/matting/modnet) | [Python](./examples/vision/matting/modnet/python)/[C++](./examples/vision/matting/modnet/cpp) | √ | √ | ? | √ | √ | - +符号说明: (1) ✅: 已经支持; (2) ❔: 计划未来支持; (3) ❌: 暂不支持; (4) contrib: 外部模型 +| 任务场景 | 模型 | API | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | +| -------------------- | ------------------ | ----------------- | ----------------- | ------------------------ | --------------------- | ------------------ | ------------------ | ------------------ | ------------------ | +| --- | --- | --- | Linux | Linux | Windows | Windows | MacOS | MacOS | Linux | +| --- | --- | --- | X86 CPU | NVIDIA GPU | Intel CPU | NVIDIA GPU | Intel CPU | Arm CPU | NVIDIA Jetson GPU | +| 图像分类 | [PaddleClas/ResNet50](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分类 | [PaddleClas/PPLCNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分类 | [PaddleClas/PPLCNetv2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分类 | [PaddleClas/EfficientNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分类 | [PaddleClas/GhostNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分类 | [PaddleClas/MobileNetV1](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分类 | [PaddleClas/MobileNetV2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分类 | [PaddleClas/MobileNetV3](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分类 | [PaddleClas/ShuffleNetV2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分类 | [PaddleClas/SqueeezeNetV1.1](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分类 | [PaddleClas/Inceptionv3](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分类 | [PaddleClas/PPHGNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分类 | [PaddleClas/SwinTransformer](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 目标检测 | [PaddleDetection/PPYOLOE](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 目标检测 | [PaddleDetection/PicoDet](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 目标检测 | [PaddleDetection/YOLOX](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 目标检测 | [PaddleDetection/YOLOv3](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 目标检测 | [PaddleDetection/PPYOLO](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 目标检测 | [PaddleDetection/PPYOLOv2](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 目标检测 | [PaddleDetection/FasterRCNN](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 目标检测 | [Contrib/YOLOX](./examples/vision/detection/yolox) | [Python](./examples/vision/detection/yolox/python)/[C++](./examples/vision/detection/yolox/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 目标检测 | [Contrib/YOLOv7](./examples/vision/detection/yolov7) | [Python](./examples/vision/detection/yolov7/python)/[C++](./examples/vision/detection/yolov7/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 目标检测 | [Contrib/YOLOv6](./examples/vision/detection/yolov6) | [Python](./examples/vision/detection/yolov6/python)/[C++](./examples/vision/detection/yolov6/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 目标检测 | [Contrib/YOLOv5](./examples/vision/detection/yolov5) | [Python](./examples/vision/detection/yolov5/python)/[C++](./examples/vision/detection/yolov5/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 目标检测 | [Contrib/YOLOR](./examples/vision/detection/yolor) | [Python](./examples/vision/detection/yolor/python)/[C++](./examples/vision/detection/yolor/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 目标检测 | [Contrib/ScaledYOLOv4](./examples/vision/detection/scaledyolov4) | [Python](./examples/vision/detection/scaledyolov4/python)/[C++](./examples/vision/detection/scaledyolov4/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 目标检测 | [Contrib/YOLOv5Lite](./examples/vision/detection/yolov5lite) | [Python](./examples/vision/detection/yolov5lite/python)/[C++](./examples/vision/detection/yolov5lite/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 目标检测 | [Contrib/NanoDetPlus](./examples/vision/detection/nanodet_plus) | [Python](./examples/vision/detection/nanodet_plus/python)/[C++](./examples/vision/detection/nanodet_plus/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分割 | [PaddleSeg/PPLiteSeg](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分割 | [PaddleSeg/PPHumanSegLite](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分割 | [PaddleSeg/HRNet](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分割 | [PaddleSeg/PPHumanSegServer](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分割 | [PaddleSeg/Unet](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 图像分割 | [PaddleSeg/Deeplabv3](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 人脸检测 | [Contrib/RetinaFace](./examples/vision/facedet/retinaface) | [Python](./examples/vision/facedet/retinaface/python)/[C++](./examples/vision/facedet/retinaface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 人脸检测 | [Contrib/UltraFace](./examples/vision/facedet/utltraface) | [ Python](./examples/vision/facedet/utltraface/python)/[C++](./examples/vision/facedet/utltraface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 人脸检测 | [Contrib/YOLOv5Face](./examples/vision/facedet/yolov5face) | [Python](./examples/vision/facedet/yolov5face/python)/[C++](./examples/vision/facedet/yolov5face/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 人脸检测 | [Contrib/SCRFD](./examples/vision/facedet/scrfd) | [Python](./examples/vision/facedet/scrfd/python)/[C++](./examples/vision/facedet/scrfd/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 人脸识别 | [Contrib/ArcFace](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 人脸识别 | [Contrib/CosFace](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 人脸识别 | [Contrib/PartialFC](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 人脸识别 | [Contrib/VPL](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 人像抠图 | [Contrib/MODNet](./examples/vision/matting/modnet) | [Python](./examples/vision/matting/modnet/python)/[C++](./examples/vision/matting/modnet/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | ## 3. 服务端快速开始
@@ -142,22 +142,9 @@ int main(int argc, char* argv[]) { cv::imwrite("vis_result.jpg", vis_im); } ``` +更多部署案例请参考[视觉模型部署示例...](examples/vision) . -## 4. 更多服务端部署示例 -
- -FastDeploy提供了大量部署示例供开发者参考,支持模型在CPU、GPU以及TensorRT的部署 - -- [PaddleDetection模型部署](examples/vision/detection/paddledetection) -- [PaddleClas模型部署](examples/vision/classification/paddleclas) -- [PaddleSeg模型部署](examples/vision/segmentation/paddleseg) -- [YOLOv7部署](examples/vision/detection/yolov7) -- [YOLOv6部署](examples/vision/detection/yolov6) -- [YOLOv5部署](examples/vision/detection/yolov5) -- [人脸检测模型部署](examples/vision/facedet) -- [更多视觉模型部署示例...](examples/vision) - -## 5. 📱轻量化SDK快速实现端侧AI推理部署 +## 4. 📱轻量化SDK快速实现端侧AI推理部署
@@ -200,7 +187,7 @@ FastDeploy提供了大量部署示例供开发者参考,支持模型在CPU、G | OCR | PP-OCRv3 | 2.4+10.6 | ✅ | ✅ | ✅ | | OCR | PP-OCRv3-tiny | 2.4+10.7 | ✅ | ✅ | ✅ | -### 5.1 边缘侧部署 +### 4.1 边缘侧部署
- ARM Linux 系统 @@ -209,18 +196,18 @@ FastDeploy提供了大量部署示例供开发者参考,支持模型在CPU、G - [Python Inference部署](./docs/ARM-Linux-Python-SDK-Inference.md) - [Python 服务化部署](./docs/ARM-Linux-Python-SDK-Serving.md) -### 5.2 移动端部署 +### 4.2 移动端部署
- [iOS 系统部署](./docs/iOS-SDK.md) - [Android 系统部署](./docs/Android-SDK.md) -### 5.3 自定义模型部署 +### 4.3 自定义模型部署
- [快速实现个性化模型替换](./docs/Replace-Model-With-Anther-One.md) -## 6. 社区交流 +## 5. 社区交流
- **加入社区👬:** 微信扫描二维码后,填写问卷加入交流群,与开发者共同讨论推理部署痛点问题 @@ -229,13 +216,13 @@ FastDeploy提供了大量部署示例供开发者参考,支持模型在CPU、G -## 7. Acknowledge +## 6. Acknowledge
本项目中SDK生成和下载使用了[EasyEdge](https://ai.baidu.com/easyedge/app/openSource)中的免费开放能力,再次表示感谢。 -## 8. License +## 7. License
FastDeploy遵循[Apache-2.0开源协议](./LICENSE)。 From 79624f9d12c2a192adc0648f77fd4dc4f9d245cc Mon Sep 17 00:00:00 2001 From: DefTruth Date: Mon, 15 Aug 2022 10:01:21 +0000 Subject: [PATCH 10/14] feature][docs] update README.md and logo --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d96b0704ebe..d8714b276fa 100644 --- a/README.md +++ b/README.md @@ -36,8 +36,8 @@
符号说明: (1) ✅: 已经支持; (2) ❔: 计划未来支持; (3) ❌: 暂不支持; (4) contrib: 外部模型 -| 任务场景 | 模型 | API | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | -| -------------------- | ------------------ | ----------------- | ----------------- | ------------------------ | --------------------- | ------------------ | ------------------ | ------------------ | ------------------ | +| 任务场景 | 模型 | API | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | +| -------------------- | ------------------ | ----------------- | ----------------- | ----------------- | ----------------- | ------------------------ | --------------------- | ------------------ | ------------------ | ------------------ | ------------------ | | --- | --- | --- | Linux | Linux | Windows | Windows | MacOS | MacOS | Linux | | --- | --- | --- | X86 CPU | NVIDIA GPU | Intel CPU | NVIDIA GPU | Intel CPU | Arm CPU | NVIDIA Jetson GPU | | 图像分类 | [PaddleClas/ResNet50](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | From bfde0288d4d7891e30089095ec96d90ac5a808e6 Mon Sep 17 00:00:00 2001 From: DefTruth Date: Mon, 15 Aug 2022 10:24:37 +0000 Subject: [PATCH 11/14] feature][docs] update README.md and logo --- README.md | 175 +++++++++++++++++++++++++++--------------------------- 1 file changed, 86 insertions(+), 89 deletions(-) diff --git a/README.md b/README.md index d8714b276fa..a1f1aaaf486 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ **⚡️FastDeploy**是一款**简单易用**的推理部署工具箱。覆盖业界主流**优质预训练模型**并提供**开箱即用**的开发体验,包括图像分类、目标检测、图像分割、人脸检测、人体关键点识别、文字识别等多任务,满足开发者**多场景**,**多硬件**、**多平台**的快速部署需求。 ## 0. 发版历史 -- [v0.2.0] 2022.08.18 全面开源服务端部署代码,支持40+视觉模型在CPU/GPU,以及通过GPU TensorRT加速部署 +- [v0.2.0] 2022.08.18 全面开源服务端部署代码,支持40+视觉模型在CPU/GPU,以及通过TensorRT加速部署 ## 1. 内容目录 * [服务端模型列表](#fastdeploy-server-models) @@ -31,58 +31,58 @@ * [社区交流](#fastdeploy-community) * [Acknowledge](#fastdeploy-acknowledge) * [License](#fastdeploy-license) -## 2. 服务端模型列表 +## 2. 服务端模型列表 🔥🔥🔥
符号说明: (1) ✅: 已经支持; (2) ❔: 计划未来支持; (3) ❌: 暂不支持; (4) contrib: 外部模型 -| 任务场景 | 模型 | API | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | 平台/硬件 | -| -------------------- | ------------------ | ----------------- | ----------------- | ----------------- | ----------------- | ------------------------ | --------------------- | ------------------ | ------------------ | ------------------ | ------------------ | -| --- | --- | --- | Linux | Linux | Windows | Windows | MacOS | MacOS | Linux | -| --- | --- | --- | X86 CPU | NVIDIA GPU | Intel CPU | NVIDIA GPU | Intel CPU | Arm CPU | NVIDIA Jetson GPU | -| 图像分类 | [PaddleClas/ResNet50](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分类 | [PaddleClas/PPLCNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分类 | [PaddleClas/PPLCNetv2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分类 | [PaddleClas/EfficientNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分类 | [PaddleClas/GhostNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分类 | [PaddleClas/MobileNetV1](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分类 | [PaddleClas/MobileNetV2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分类 | [PaddleClas/MobileNetV3](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分类 | [PaddleClas/ShuffleNetV2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分类 | [PaddleClas/SqueeezeNetV1.1](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分类 | [PaddleClas/Inceptionv3](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分类 | [PaddleClas/PPHGNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分类 | [PaddleClas/SwinTransformer](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 目标检测 | [PaddleDetection/PPYOLOE](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 目标检测 | [PaddleDetection/PicoDet](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 目标检测 | [PaddleDetection/YOLOX](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 目标检测 | [PaddleDetection/YOLOv3](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 目标检测 | [PaddleDetection/PPYOLO](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 目标检测 | [PaddleDetection/PPYOLOv2](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 目标检测 | [PaddleDetection/FasterRCNN](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 目标检测 | [Contrib/YOLOX](./examples/vision/detection/yolox) | [Python](./examples/vision/detection/yolox/python)/[C++](./examples/vision/detection/yolox/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 目标检测 | [Contrib/YOLOv7](./examples/vision/detection/yolov7) | [Python](./examples/vision/detection/yolov7/python)/[C++](./examples/vision/detection/yolov7/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 目标检测 | [Contrib/YOLOv6](./examples/vision/detection/yolov6) | [Python](./examples/vision/detection/yolov6/python)/[C++](./examples/vision/detection/yolov6/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 目标检测 | [Contrib/YOLOv5](./examples/vision/detection/yolov5) | [Python](./examples/vision/detection/yolov5/python)/[C++](./examples/vision/detection/yolov5/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 目标检测 | [Contrib/YOLOR](./examples/vision/detection/yolor) | [Python](./examples/vision/detection/yolor/python)/[C++](./examples/vision/detection/yolor/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 目标检测 | [Contrib/ScaledYOLOv4](./examples/vision/detection/scaledyolov4) | [Python](./examples/vision/detection/scaledyolov4/python)/[C++](./examples/vision/detection/scaledyolov4/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 目标检测 | [Contrib/YOLOv5Lite](./examples/vision/detection/yolov5lite) | [Python](./examples/vision/detection/yolov5lite/python)/[C++](./examples/vision/detection/yolov5lite/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 目标检测 | [Contrib/NanoDetPlus](./examples/vision/detection/nanodet_plus) | [Python](./examples/vision/detection/nanodet_plus/python)/[C++](./examples/vision/detection/nanodet_plus/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分割 | [PaddleSeg/PPLiteSeg](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分割 | [PaddleSeg/PPHumanSegLite](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分割 | [PaddleSeg/HRNet](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分割 | [PaddleSeg/PPHumanSegServer](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分割 | [PaddleSeg/Unet](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 图像分割 | [PaddleSeg/Deeplabv3](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 人脸检测 | [Contrib/RetinaFace](./examples/vision/facedet/retinaface) | [Python](./examples/vision/facedet/retinaface/python)/[C++](./examples/vision/facedet/retinaface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 人脸检测 | [Contrib/UltraFace](./examples/vision/facedet/utltraface) | [ Python](./examples/vision/facedet/utltraface/python)/[C++](./examples/vision/facedet/utltraface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 人脸检测 | [Contrib/YOLOv5Face](./examples/vision/facedet/yolov5face) | [Python](./examples/vision/facedet/yolov5face/python)/[C++](./examples/vision/facedet/yolov5face/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 人脸检测 | [Contrib/SCRFD](./examples/vision/facedet/scrfd) | [Python](./examples/vision/facedet/scrfd/python)/[C++](./examples/vision/facedet/scrfd/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 人脸识别 | [Contrib/ArcFace](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 人脸识别 | [Contrib/CosFace](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 人脸识别 | [Contrib/PartialFC](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 人脸识别 | [Contrib/VPL](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -| 人像抠图 | [Contrib/MODNet](./examples/vision/matting/modnet) | [Python](./examples/vision/matting/modnet/python)/[C++](./examples/vision/matting/modnet/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| 任务场景 | 模型 | API | Linux | Linux | Windows | Windows | MacOS | MacOS | Linux | +| -------------------- | ------------------ | ----------------- | ----------------- | ----------------- | ----------------- | ------------------------ | --------------------- | ------------------ | ------------------ | +| --- | --- | --- | X86 CPU | NVIDIA GPU | Intel CPU | NVIDIA GPU | Intel CPU | Arm CPU | NVIDIA Jetson | +| Classification | [PaddleClas/ResNet50](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Classification | [PaddleClas/PPLCNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Classification | [PaddleClas/PPLCNetv2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Classification | [PaddleClas/EfficientNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Classification | [PaddleClas/GhostNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Classification | [PaddleClas/MobileNetV1](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Classification | [PaddleClas/MobileNetV2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Classification | [PaddleClas/MobileNetV3](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Classification | [PaddleClas/ShuffleNetV2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Classification | [PaddleClas/SqueeezeNetV1.1](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Classification | [PaddleClas/Inceptionv3](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Classification | [PaddleClas/PPHGNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Classification | [PaddleClas/SwinTransformer](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Detection | [PaddleDetection/PPYOLOE](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Detection | [PaddleDetection/PicoDet](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Detection | [PaddleDetection/YOLOX](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Detection | [PaddleDetection/YOLOv3](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Detection | [PaddleDetection/PPYOLO](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Detection | [PaddleDetection/PPYOLOv2](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Detection | [PaddleDetection/FasterRCNN](./examples/vision/detection/paddledetection) | [Python](./examples/vision/detection/paddledetection/python)/[C++](./examples/vision/detection/paddledetection/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Detection | [Contrib/YOLOX](./examples/vision/detection/yolox) | [Python](./examples/vision/detection/yolox/python)/[C++](./examples/vision/detection/yolox/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Detection | [Contrib/YOLOv7](./examples/vision/detection/yolov7) | [Python](./examples/vision/detection/yolov7/python)/[C++](./examples/vision/detection/yolov7/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Detection | [Contrib/YOLOv6](./examples/vision/detection/yolov6) | [Python](./examples/vision/detection/yolov6/python)/[C++](./examples/vision/detection/yolov6/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Detection | [Contrib/YOLOv5](./examples/vision/detection/yolov5) | [Python](./examples/vision/detection/yolov5/python)/[C++](./examples/vision/detection/yolov5/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Detection | [Contrib/YOLOR](./examples/vision/detection/yolor) | [Python](./examples/vision/detection/yolor/python)/[C++](./examples/vision/detection/yolor/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Detection | [Contrib/ScaledYOLOv4](./examples/vision/detection/scaledyolov4) | [Python](./examples/vision/detection/scaledyolov4/python)/[C++](./examples/vision/detection/scaledyolov4/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Detection | [Contrib/YOLOv5Lite](./examples/vision/detection/yolov5lite) | [Python](./examples/vision/detection/yolov5lite/python)/[C++](./examples/vision/detection/yolov5lite/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Detection | [Contrib/NanoDetPlus](./examples/vision/detection/nanodet_plus) | [Python](./examples/vision/detection/nanodet_plus/python)/[C++](./examples/vision/detection/nanodet_plus/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Segmentation | [PaddleSeg/PPLiteSeg](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Segmentation | [PaddleSeg/PPHumanSegLite](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Segmentation | [PaddleSeg/HRNet](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Segmentation | [PaddleSeg/PPHumanSegServer](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Segmentation | [PaddleSeg/Unet](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Segmentation | [PaddleSeg/Deeplabv3](./examples/vision/segmentation/paddleseg) | [Python](./examples/vision/segmentation/paddleseg/python)/[C++](./examples/vision/segmentation/paddleseg/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| FaceDetection | [Contrib/RetinaFace](./examples/vision/facedet/retinaface) | [Python](./examples/vision/facedet/retinaface/python)/[C++](./examples/vision/facedet/retinaface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| FaceDetection | [Contrib/UltraFace](./examples/vision/facedet/utltraface) | [ Python](./examples/vision/facedet/utltraface/python)/[C++](./examples/vision/facedet/utltraface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| FaceDetection | [Contrib/YOLOv5Face](./examples/vision/facedet/yolov5face) | [Python](./examples/vision/facedet/yolov5face/python)/[C++](./examples/vision/facedet/yolov5face/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| FaceDetection | [Contrib/SCRFD](./examples/vision/facedet/scrfd) | [Python](./examples/vision/facedet/scrfd/python)/[C++](./examples/vision/facedet/scrfd/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| FaceRecognition | [Contrib/ArcFace](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| FaceRecognition | [Contrib/CosFace](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| FaceRecognition | [Contrib/PartialFC](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| FaceRecognition | [Contrib/VPL](./examples/vision/faceid/insightface) | [Python](./examples/vision/faceid/insightface/python)/[C++](./examples/vision/faceid/insightface/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | +| Matting | [Contrib/MODNet](./examples/vision/matting/modnet) | [Python](./examples/vision/matting/modnet/python)/[C++](./examples/vision/matting/modnet/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | + ## 3. 服务端快速开始
@@ -114,8 +114,7 @@ wget https://gitee.com/paddlepaddle/PaddleDetection/raw/release/2.4/demo/0000000 import cv2 import fastdeploy.vision as vision -model = vision.detection.PPYOLOE( - "model.pdmodel", "model.pdiparams", "infer_cfg.yml") +model = vision.detection.PPYOLOE("model.pdmodel", "model.pdiparams", "infer_cfg.yml") im = cv2.imread("000000014439.jpg") result = model.predict(im.copy()) print(result) @@ -130,58 +129,56 @@ cv2.imwrite("vis_image.jpg", vis_im) #include "fastdeploy/vision.h" int main(int argc, char* argv[]) { - namespce vision = fastdeploy::vision; - auto model = vision::detection::PPYOLOE( - "model.pdmodel", "model.pdiparams", "infer_cfg.yml"); - auto im = cv::imread(image_file); + namespace vision = fastdeploy::vision; + auto model = vision::detection::PPYOLOE("model.pdmodel", "model.pdiparams", "infer_cfg.yml"); + auto im = cv::imread("000000014439.jpg"); vision::DetectionResult res; model.Predict(&im, &res) auto vis_im = vision::Visualize::VisDetection(im, res, 0.5); - cv::imwrite("vis_result.jpg", vis_im); + cv::imwrite("vis_image.jpg", vis_im); } ``` -更多部署案例请参考[视觉模型部署示例...](examples/vision) . +更多部署案例请参考[视觉模型部署示例](examples/vision) . -## 4. 📱轻量化SDK快速实现端侧AI推理部署 +## 4. 轻量化SDK快速实现端侧AI推理部署 📱
- | 任务场景 | 模型 | 大小(MB) | 边缘端 | 移动端 | 移动端 | | ------------------ | ---------------------------- | --------------------- | --------------------- | ---------------------- | --------------------- | | --- | --- | --- | Linux | Android | iOS | | --- | --- | --- | ARM CPU | ARM CPU | ARM CPU | -| 图像分类 | PP-LCNet | 11.9 | ✅ | ✅ | ✅ | -| 图像分类 | PP-LCNetv2 | 26.6 | ✅ | ✅ | ✅ | -| 图像分类 | EfficientNet | 31.4 | ✅ | ✅ | ✅ | -| 图像分类 | GhostNet | 20.8 | ✅ | ✅ | ✅ | -| 图像分类 | MobileNetV1 | 17 | ✅ | ✅ | ✅ | -| 图像分类 | MobileNetV2 | 14.2 | ✅ | ✅ | ✅ | -| 图像分类 | MobileNetV3 | 22 | ✅ | ✅ | ✅ | -| 图像分类 | ShuffleNetV2 | 9.2 | ✅ | ✅ | ✅ | -| 图像分类 | SqueezeNetV1.1 | 5 | ✅ | ✅ | ✅ | -| 图像分类 | Inceptionv3 | 95.5 | ✅ | ✅ | ✅ | -| 图像分类 | PP-HGNet | 59 | ✅ | ✅ | ✅ | -| 图像分类 | SwinTransformer_224_win7 | 352.7 | ✅ | ✅ | ✅ | -| 目标检测 | PP-PicoDet_s_320_coco | 4.1 | ✅ | ✅ | ✅ | -| 目标检测 | PP-PicoDet_s_320_lcnet | 4.9 | ✅ | ✅ | ✅ | -| 目标检测 | CenterNet | 4.8 | ✅ | ✅ | ✅ | -| 目标检测 | YOLOv3_MobileNetV3 | 94.6 | ✅ | ✅ | ✅ | -| 目标检测 | PP-YOLO_tiny_650e_coco | 4.4 | ✅ | ✅ | ✅ | -| 目标检测 | SSD_MobileNetV1_300_120e_voc | 23.3 | ✅ | ✅ | ✅ | -| 目标检测 | PP-YOLO_ResNet50vd | 188.5 | ✅ | ✅ | ✅ | -| 目标检测 | PP-YOLOv2_ResNet50vd | 218.7 | ✅ | ✅ | ✅ | -| 目标检测 | PP-YOLO_crn_l_300e_coco | 209.1 | ✅ | ✅ | ✅ | -| 目标检测 | YOLOv5s | 29.3 | ✅ | ✅ | ✅ | -| 人脸检测 | BlazeFace | 1.5 | ✅ | ✅ | ✅ | -| 人脸检测 | RetinaFace | 1.7 | ✅ | ❌ | ❌ | -| 人体关键点检测 | PP-TinyPose | 5.5 | ✅ | ✅ | ✅ | -| 图像分割 | PP-LiteSeg(STDC1) | 32.2 | ✅ | ✅ | ✅ | -| 图像分割 | PP-HumanSeg-Lite | 0.556 | ✅ | ✅ | ✅ | -| 图像分割 | HRNet-w18 | 38.7 | ✅ | ✅ | ✅ | -| 图像分割 | PP-HumanSeg-Server | 107.2 | ✅ | ✅ | ✅ | -| 图像分割 | Unet | 53.7 | ❌ | ✅ | ❌ | +| Classification | PP-LCNet | 11.9 | ✅ | ✅ | ✅ | +| Classification | PP-LCNetv2 | 26.6 | ✅ | ✅ | ✅ | +| Classification | EfficientNet | 31.4 | ✅ | ✅ | ✅ | +| Classification | GhostNet | 20.8 | ✅ | ✅ | ✅ | +| Classification | MobileNetV1 | 17 | ✅ | ✅ | ✅ | +| Classification | MobileNetV2 | 14.2 | ✅ | ✅ | ✅ | +| Classification | MobileNetV3 | 22 | ✅ | ✅ | ✅ | +| Classification | ShuffleNetV2 | 9.2 | ✅ | ✅ | ✅ | +| Classification | SqueezeNetV1.1 | 5 | ✅ | ✅ | ✅ | +| Classification | Inceptionv3 | 95.5 | ✅ | ✅ | ✅ | +| Classification | PP-HGNet | 59 | ✅ | ✅ | ✅ | +| Classification | SwinTransformer_224_win7 | 352.7 | ✅ | ✅ | ✅ | +| Detection | PP-PicoDet_s_320_coco | 4.1 | ✅ | ✅ | ✅ | +| Detection | PP-PicoDet_s_320_lcnet | 4.9 | ✅ | ✅ | ✅ | +| Detection | CenterNet | 4.8 | ✅ | ✅ | ✅ | +| Detection | YOLOv3_MobileNetV3 | 94.6 | ✅ | ✅ | ✅ | +| Detection | PP-YOLO_tiny_650e_coco | 4.4 | ✅ | ✅ | ✅ | +| Detection | SSD_MobileNetV1_300_120e_voc | 23.3 | ✅ | ✅ | ✅ | +| Detection | PP-YOLO_ResNet50vd | 188.5 | ✅ | ✅ | ✅ | +| Detection | PP-YOLOv2_ResNet50vd | 218.7 | ✅ | ✅ | ✅ | +| Detection | PP-YOLO_crn_l_300e_coco | 209.1 | ✅ | ✅ | ✅ | +| Detection | YOLOv5s | 29.3 | ✅ | ✅ | ✅ | +| FaceDetection | BlazeFace | 1.5 | ✅ | ✅ | ✅ | +| FaceDetection | RetinaFace | 1.7 | ✅ | ❌ | ❌ | +| KeypointsDetection | PP-TinyPose | 5.5 | ✅ | ✅ | ✅ | +| Segmentation | PP-LiteSeg(STDC1) | 32.2 | ✅ | ✅ | ✅ | +| Segmentation | PP-HumanSeg-Lite | 0.556 | ✅ | ✅ | ✅ | +| Segmentation | HRNet-w18 | 38.7 | ✅ | ✅ | ✅ | +| Segmentation | PP-HumanSeg-Server | 107.2 | ✅ | ✅ | ✅ | +| Segmentation | Unet | 53.7 | ❌ | ✅ | ❌ | | OCR | PP-OCRv1 | 2.3+4.4 | ✅ | ✅ | ✅ | | OCR | PP-OCRv2 | 2.3+4.4 | ✅ | ✅ | ✅ | | OCR | PP-OCRv3 | 2.4+10.6 | ✅ | ✅ | ✅ | From 062ea2fbda8268d46fc0cb37abd4ae0cc9fe8501 Mon Sep 17 00:00:00 2001 From: DefTruth Date: Mon, 15 Aug 2022 10:34:05 +0000 Subject: [PATCH 12/14] [feature][docs] update README.md and logo --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a1f1aaaf486..68f9a737502 100644 --- a/README.md +++ b/README.md @@ -37,8 +37,8 @@ 符号说明: (1) ✅: 已经支持; (2) ❔: 计划未来支持; (3) ❌: 暂不支持; (4) contrib: 外部模型 | 任务场景 | 模型 | API | Linux | Linux | Windows | Windows | MacOS | MacOS | Linux | -| -------------------- | ------------------ | ----------------- | ----------------- | ----------------- | ----------------- | ------------------------ | --------------------- | ------------------ | ------------------ | -| --- | --- | --- | X86 CPU | NVIDIA GPU | Intel CPU | NVIDIA GPU | Intel CPU | Arm CPU | NVIDIA Jetson | +| :--------: | :--------: | :--------: | :--------: | :--------: | :--------: | :--------: | :--------: | :--------: | :--------: | +| --- | --- | --- | X86 CPU | NVIDIA GPU | Intel CPU | NVIDIA GPU | Intel CPU | Arm CPU | NVIDIA Jetson | | Classification | [PaddleClas/ResNet50](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | | Classification | [PaddleClas/PPLCNet](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | | Classification | [PaddleClas/PPLCNetv2](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | @@ -146,7 +146,7 @@ int main(int argc, char* argv[]) {
| 任务场景 | 模型 | 大小(MB) | 边缘端 | 移动端 | 移动端 | -| ------------------ | ---------------------------- | --------------------- | --------------------- | ---------------------- | --------------------- | +| :--------: | :--------: | :--------: | :--------: | :--------: | :--------: | | --- | --- | --- | Linux | Android | iOS | | --- | --- | --- | ARM CPU | ARM CPU | ARM CPU | | Classification | PP-LCNet | 11.9 | ✅ | ✅ | ✅ | From a1a96283f20515ce34fa5102746248a076749677 Mon Sep 17 00:00:00 2001 From: DefTruth Date: Mon, 15 Aug 2022 11:26:48 +0000 Subject: [PATCH 13/14] [feature][docs] update README.md and logo --- README.md | 37 +++++++++--------- docs/logo/fastdeploy-opaque.png | Bin 0 -> 147535 bytes ...y-logo.png => fastdeploy-transparency.png} | Bin 3 files changed, 19 insertions(+), 18 deletions(-) create mode 100644 docs/logo/fastdeploy-opaque.png rename docs/logo/{fastdeploy-logo.png => fastdeploy-transparency.png} (100%) diff --git a/README.md b/README.md index 68f9a737502..8046fe0cba9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -![⚡️FastDeploy](docs/logo/fastdeploy-logo.png) +![⚡️FastDeploy](docs/logo/fastdeploy-opaque.png)

@@ -16,12 +16,13 @@ **⚡️FastDeploy**是一款**简单易用**的推理部署工具箱。覆盖业界主流**优质预训练模型**并提供**开箱即用**的开发体验,包括图像分类、目标检测、图像分割、人脸检测、人体关键点识别、文字识别等多任务,满足开发者**多场景**,**多硬件**、**多平台**的快速部署需求。 -## 0. 发版历史 +## 发版历史 - [v0.2.0] 2022.08.18 全面开源服务端部署代码,支持40+视觉模型在CPU/GPU,以及通过TensorRT加速部署 -## 1. 内容目录 +## 内容目录 * [服务端模型列表](#fastdeploy-server-models) * [服务端快速开始](#fastdeploy-quick-start) + * [快速安装](#fastdeploy-quick-start) * [Python预测示例](#fastdeploy-quick-start-python) * [C++预测示例](#fastdeploy-quick-start-cpp) * [轻量化SDK快速实现端侧AI推理部署](#fastdeploy-edge-sdk) @@ -31,12 +32,12 @@ * [社区交流](#fastdeploy-community) * [Acknowledge](#fastdeploy-acknowledge) * [License](#fastdeploy-license) -## 2. 服务端模型列表 🔥🔥🔥 +## 1. 服务端模型列表 🔥🔥🔥

符号说明: (1) ✅: 已经支持; (2) ❔: 计划未来支持; (3) ❌: 暂不支持; (4) contrib: 外部模型 -| 任务场景 | 模型 | API | Linux | Linux | Windows | Windows | MacOS | MacOS | Linux | +| 任务场景 | 模型 | API | Linux | Linux | Windows | Windows | MacOS | MacOS | Linux | | :--------: | :--------: | :--------: | :--------: | :--------: | :--------: | :--------: | :--------: | :--------: | :--------: | | --- | --- | --- | X86 CPU | NVIDIA GPU | Intel CPU | NVIDIA GPU | Intel CPU | Arm CPU | NVIDIA Jetson | | Classification | [PaddleClas/ResNet50](./examples/vision/classification/paddleclas) | [Python](./examples/vision/classification/paddleclas/python)/[C++](./examples/vision/classification/paddleclas/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | @@ -84,18 +85,18 @@ | Matting | [Contrib/MODNet](./examples/vision/matting/modnet) | [Python](./examples/vision/matting/modnet/python)/[C++](./examples/vision/matting/modnet/cpp) | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | -## 3. 服务端快速开始 +## 2. 服务端快速开始
-💡 安装FastDeploy Python/C++ +💡 快速安装 FastDeploy Python/C++ 库 -用户根据开发环境选择安装版本,更多安装环境参考 [安装文档](docs/quick_start/install.md) . +用户根据自己的python版本选择安装对应的wheel包,详细的wheel目录请参考 [python安装文档](docs/compile/prebuilt_wheels.md) . ```bash pip install https://bj.bcebos.com/paddlehub/fastdeploy/wheels/fastdeploy_python-0.2.0-cp38-cp38-manylinux1_x86_64.whl ``` -或获取C++预编译库,更多可用的预编译库请参考[C++预编译库下载](docs/compile/prebuilt_libraries.md) +或获取C++预编译库,更多可用的预编译库请参考 [C++预编译库下载](docs/compile/prebuilt_libraries.md) ```bash wget https://bj.bcebos.com/paddlehub/fastdeploy/cpp/fastdeploy-linux-x64-0.2.0.tgz ``` @@ -107,7 +108,7 @@ wget https://gitee.com/paddlepaddle/PaddleDetection/raw/release/2.4/demo/0000000 ```
-### 3.1 Python预测示例 +### 2.1 Python预测示例
```python @@ -122,7 +123,7 @@ print(result) vis_im = vision.vis_detection(im, result, score_threshold=0.5) cv2.imwrite("vis_image.jpg", vis_im) ``` -### 3.2 C++预测示例 +### 2.2 C++预测示例
```C++ @@ -142,7 +143,7 @@ int main(int argc, char* argv[]) { ``` 更多部署案例请参考[视觉模型部署示例](examples/vision) . -## 4. 轻量化SDK快速实现端侧AI推理部署 📱 +## 3. 轻量化SDK快速实现端侧AI推理部署 📱
| 任务场景 | 模型 | 大小(MB) | 边缘端 | 移动端 | 移动端 | @@ -184,7 +185,7 @@ int main(int argc, char* argv[]) { | OCR | PP-OCRv3 | 2.4+10.6 | ✅ | ✅ | ✅ | | OCR | PP-OCRv3-tiny | 2.4+10.7 | ✅ | ✅ | ✅ | -### 4.1 边缘侧部署 +### 3.1 边缘侧部署
- ARM Linux 系统 @@ -193,18 +194,18 @@ int main(int argc, char* argv[]) { - [Python Inference部署](./docs/ARM-Linux-Python-SDK-Inference.md) - [Python 服务化部署](./docs/ARM-Linux-Python-SDK-Serving.md) -### 4.2 移动端部署 +### 3.2 移动端部署
- [iOS 系统部署](./docs/iOS-SDK.md) - [Android 系统部署](./docs/Android-SDK.md) -### 4.3 自定义模型部署 +### 3.3 自定义模型部署
- [快速实现个性化模型替换](./docs/Replace-Model-With-Anther-One.md) -## 5. 社区交流 +## 4. 社区交流
- **加入社区👬:** 微信扫描二维码后,填写问卷加入交流群,与开发者共同讨论推理部署痛点问题 @@ -213,13 +214,13 @@ int main(int argc, char* argv[]) { -## 6. Acknowledge +## 5. Acknowledge
本项目中SDK生成和下载使用了[EasyEdge](https://ai.baidu.com/easyedge/app/openSource)中的免费开放能力,再次表示感谢。 -## 7. License +## 6. License
FastDeploy遵循[Apache-2.0开源协议](./LICENSE)。 diff --git a/docs/logo/fastdeploy-opaque.png b/docs/logo/fastdeploy-opaque.png new file mode 100644 index 0000000000000000000000000000000000000000..16289dcf555f5a1ceb32f720a71054ec6c5200d0 GIT binary patch literal 147535 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

x3n9U7)WcMH58P+4*QS0g1hr)@PZA9 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 Date: Mon, 15 Aug 2022 11:43:23 +0000 Subject: [PATCH 14/14] [feature][win] fix typos and rm un-need file --- docs/compile/prebuilt_libraries.md | 2 +- docs/logo/fastdeploy-transparency.png | Bin 133793 -> 0 bytes 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 docs/logo/fastdeploy-transparency.png diff --git a/docs/compile/prebuilt_libraries.md b/docs/compile/prebuilt_libraries.md index f960b105ba0..905eb6d5295 100644 --- a/docs/compile/prebuilt_libraries.md +++ b/docs/compile/prebuilt_libraries.md @@ -1,4 +1,4 @@ -# FastDeploy 预编编译 C++ 库 +# FastDeploy 预编译 C++ 库 FastDeploy提供了在Windows/Linux/Mac上的预先编译CPP部署库,开发者可以直接下载后使用,也可以自行编译代码。 diff --git a/docs/logo/fastdeploy-transparency.png b/docs/logo/fastdeploy-transparency.png deleted file mode 100644 index fe94ed2f5d781c19546bf05bc7b3643486ffd618..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133793 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

6Q)H>vQ_jFum<2?wpC;q*=7 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ΞA_x^Fgr@$Gbvqqj~*jmk7i&B$>4L@r?TaN!=@ z5@rTiUJe2c;ahz}2BYyhV*L4ZEYVoSLVRw78s-u1Ztidg{ozj(i4Y}X3rowSBlDT+ zT)!jBQFWcwn&86ZB&zwy_Y!}NO#DDbl&#w=-FO|}E`TmeV<$?#oJzZkl5g7R4m^*Y5U>o!gOXUi1#7uUq`6@IwOkP!UcboMQ@0mQ=P2jX=z@sebwt~w+ zfPi{Ftm`#D?mKqHmYGjgh~eK$hw!9u zeGQy3iU@&x-$Q+aYj9_d4^dEya%>BK$2-;O^KIY0TLN8+tV!~$a)P0@!aAsv&a9(F zmJ-ru@aYBKn2Ws_9y;BtSYz!$qj+JX?(F9g1aH}5Y+_m~jzMsoA)oPP54x9Hv#Ct7 zA39t%%pX7|UDGS>YWTX_%rE2%hep_Ya=madm+UknPqcA&u#bSPZ&@#+VHT!X>d{Q8>n!X_zMX$pv4x)LkcQfDMg&{qw8pbSMFUK2}TE{vpX zI=ciC?))OXK;zrTubyw1@g@~0_=I9=wH2*NEx9WO)#o-OTa2mBFL|Bwsj0JT4*WFt zsjennS*(&1FbXpXFI(D!rQ`oJt;PH=vlkt3?r8~K#}YmhzRcz+e)mDZ%6!bC z$j{a_2tx?i8yIJlyHY8P-j)4YBY9Raf%t!cIfVmjJW zwow!vR|`QixW|Can2sFbn!d>`e_N`AdPwHWkq6Yy(w%9cQqRd7I zTn{<-a?YmoCEV-t3U?Y6`6;00Qt<*4tEP6EMInQSmcUoE`L_|M5L<{Pq#X4d11G=- ztp>ZLQSY5HlslXYryw1azH#9YyoEBDG!=XlWfOuiYx35_cOVk3t!Nq>#V5n}UoXQW zm8puP!;&+-zQgKBO1J**ze=NU0GE{f2f*#=S(#4>jf!dov=z3yv`DrS47` z5`Im!GGr1$ZX%W)4TCwSU9)g9f3Dp1^qXH8DYw> zB#M$7Uw^p6YH}NP=$te0&^=>kZYM{O*Y`X9{K#(v#2|c4Amd5;HW^tmS^yU`ThL0? zzz;$E?Sknm{KX~u0*q|KNMF9puLnrekt5wx2=I}gZ?Y^!R=&7|aBrcUgZ7Jb zOu~XAZqH7t&anZ~l8|p#wxlTlUkV{y?}Ty?YeEBW`+3}IO7;eiZS$7)^uonx0wgjY zC@VGJ1mJ1~lsLa~{=SO(ZA0>TV%k@&hiZ=G43L zxrpWCtzNU5riL-{+ibZ(hRI8f`WNKEdts@7EKQi7j6?_0oFYJ&;GxtY!M>#z7z(Ow z=QzF1nE#e;gA$)Dd6+vJf*)G1k2#6!*j8K2>3HtY#qBvTGyYM>vT2 z>zJ&TKx{d}fnm{Z0{g*W>gDp-z@JG-ZvhKxn#_uP zID@#Fl{9o_Cf9HH|I48NiWa_BWf56DsO!8o7?o5Csix0+^OTekfbC^PjYg4;x@?1K zEb+dvFhnKNf~91sAP>mC_f5$W-f3xMWauLv0gs*FU#s1F7lJpmK_@tFq5aVbdA2|z zY^E4a;65=Ya$s^kze1l}9|G(%=Tqmq%S7L}ei#U()erIkL zo`L6!WPbL+Iyxg&`!p{>(dme5Sfh>oTptG|e@?9;SJAgKOz))V#_<#>eQJLB=2fi) zCfa0RSw3NGg~WxkNQcGjF^|4D_O#49A)-@qo6t;4{M=W`u8AYCEF&VMt#Xe|;>92M z!i`0*$owOFANU+a5%Ytz^0(NmmqLAI*)PSvs`=1=rZ31FU3vQ~!pc=^sLof||5obY^Hu>Ssjs+d6%b}XsgF-Tl|bBK ztx|McDI|xU@{yXIzZ8q|NEnn~%a^@0pui&o3mko;NTb8S{njzRoh^yjF8ycHZb9p8 zpV>u0&(%up4k7D-1Ukb))*ltfHQ)L21_7d4e@=DGav@r0K+F_{FQRscIKm5EYma)s zid3Dp#ou4oFfV_14_Vv4w|d0mgDybvWo-F$!ngg_#Q_U)0{A-<*HZ34mvX=E#!6jB z!XZ>4ELRs6sm~hso-dyDK(H#m=GEo~pe@Mj*>Km~`Bg#pKF`mPiQ3VotOw}s0N1j5 zJA^l;jj)w!-+g~1Ts7dn-s%qyLSj)Xo zlt+=weORw$Ye|Thd#VrqW@4XSU*H}- z^rRMM0gaw@frVZ)06ye?xs_hxYdZ~0UeRl2m zYv}Ek5>oBd<-TKSw!12IW*;mCK3MCxAsZ6%m}c#36J1!+Vr-N?n%^cS#ax%(oiAM% zN4mI1u*~(>*%!(9uq@3_vl_5`$X6kc%#TH`aZWA0)e#CDQk)%NLqnB}S216pzUWOU ztOYg~Hj5vjd4IXX^V`H-Qn^HdvvHT_8LozRXgb67O~T1yzv9rp1d%Dgr^X_rG^c2L ztSFt+wKu3|wb|F&@OnGcNG7 zu5N0Jy^qPe4c2EPrh6{yF5^@k?X8CrJV=Y}DZKBU5{JgOqN3$%5-{qqU?fekfPUtF z4vzCc9`+i@{+L^*7euIji|%lf6Ox+XHfxZ`$rP(zdM&psEM#1H4R<%Ir_QheNKB8) zm7F7m5lvygvM3TBP^#-lp#Ij$Ee5WM#j=7kHmp~l>1Jz;PBwu$c7JO^7fp^v60nY* zi<51m3136b$u&aIw8MUVKfL0H_3BUF?8L<%1DBk^`qS7`u^%&OpVbrqYa-qlz1*L~ z&!(PM_bbF^>8E9@?!qoXF`?AW5~-5LKF)^unFEWG{}9wTFm zIZD@837uyj*Ja5pY$t_~(+5&Ml0_KKXs~3ei{k$TITdaq8KoExbuy9u_6S;X_OfNN zqk_iz62@pJ`5K7+!LtkJn=}OYTuXgu!jv=>{zZ3DcsV~%#O8Xu)GsrCCahe@8^Az2dJIlcHN^~lxyhn{SI zWIHsS5@K+DZCzF0k?*?!v6)x51Y~6Z1PBYn7J1J;6LR;sfJ%o!)o-s6Bacu-WwNsJ79t2zzEBvPHWH*M;EhE$Zdod#2qp-SqyFiKgr|F_3$rL9c+6Zl9zecnDF@ncre~d zf4wT2YNq_%0l9u4pWwJ;J~6tpg~2Fu1fnkl_LWRD18 zTeD8x*4>4^cuU!wc=KK6z==X#q-BQ3UHqX##J%Q~^@oJr6)*-eVA7U>N1vmNw3#g? z{pTW%{1snsbM|Ed_|$gk0ARZ&y_a+6EB}3a!&N_vE-gvjJ?r97+FJGa2y8Rl`HT{Y z)xjnCogjs<9=)`>ijg8Oyl_4prCZq8s{!Xn^-@%Uo-Pg|w(^HVcd@K3l3q7&84Qw9 zdKxg14+ImC#`@OAv{b!zlxH-HY!3#5ptw-Uw5`um$ERv#;b;`NlDwU?=)RaB#Q9dEbU>l>N}2I z31YT&Pwz#74C{#{RIA&2=O{2f+dfI@V_uk42Dud6OXph0)|)pOir0TV}uN z+1%$p)pVoi!+ToODdJub6o2Lmn=Np!Mt$u z4CB;?N&>f|`_wjtNQX(BEeEZ4DZpEcDnC$SY-syN4{D2OFC=L_J%HKRt*WytIs(pz zo)Dl*@wkFap_bhARI!mex)-WuDnv=y)5WV7sOB%kr!m|rW#p9?rHUVE9;MmR{RK_& za4!gUcX1)FxxRPm3A*q-bJifQn?e#wbsG2OlDBMSf*;=25kVN60yl4Sapy2w!llhC zkq2x*&wI99N~)48p@)4b4OCrX*>mxj)(K0or}72ZDMqXPGyq})FKyvJD`v{QZ-CX>X0Uh7qqv zB_Mfg_4N7L)K@R)op`2irl{&E{$d^Nzry3F(Bi;tz({b?LG^rOBv?*`^On{^Jh7Wer}d6$_| zoPN6DvUFF~YT#k1Em`^ljqIHo%U0WWQ`xC008A&-gr5}IOhBTu|Eyc*h_8g%}?Kf!5YElq#R)04cDme^bV=WV{wWMyGKE6s#=T`$c_d)vsUJ0{n6MX z6!kGI&0J}rIVpNkX+qFI5kQi$=^JmbFYNHOZb7HjrRZ99cCb=ciO~Fy#`mt5F7#o2<|Sy-Ccrf6Y)X*P2VcC0jnb} zFGwT%#Qn87_K^^qHr*wHBbqBz^Uh~Ey7!~k-*qRVYgM#ClX^?Vh&1_~P8PXMLT@Y~QK?7Lg1T$~M;p z@y`YoRTm1FtVhfikw!-f#H73IgcGZV?E;76J<-js?vO%|DUFuUVt)WTK5!%R|L{K6 ziCfRk)!ldRy`{&NjR^JhL+JjfX;o{-r(XNA50W{Mfae|#F+K3j%MZ_% zEFS!%?9MN=Ia&5(_70qQ&U===J`7K1U;shq^xy2xkJsT~>_mp~U#B1++wrRL77r1}A{%RbQQC5_I4bQK~A{fRo-q<3+D zn6`ofP2g{EgWtS}Zk0$sK-71qnb#<1|2;0CQLEqNaFEdiE!Bq&hWQICq;q3rZ9^#l z>tl|phiS?vJ@pXWF3dk1@7J(Q!$&d;D*2ZMutTkdj=*sxa`fDUF-)?ui$0UZcxgI* zLER3Ghe?zV`mJ8_DFn$Kf#Zq(Qt8CJ+5*YfFVL5qH_i2l)oGZ9NVK4(nTbZvlhCOr zn|_jES$=Ef`{d16U{pwA){48go}Lr8?F#3VT(SpMHK&vR17pOAN8h`Zct(=DODh5{ zV`_dV&Z=S6uzQ&f{5%r?VS|i^!H{#{I0+W50}nb197Y-zpC_t{g42Z571SZ)EY}PD z%mPX6*l;4dg{XYQw9Nfl_@mcHJFz&ZpI84 zt9;ix!FVs4gSK8h0%o6Va))LOlHXt|&b+8ZK$|U@du$8PqKi#D%1RNC$YraK1T$vM z!Jo`*wg#y#6yzvi1;TA=jNG3rCLe$@i;nzC$XmwUJoq^jtMjzZfth(P-2U&33PB$u zQ8zTCooKg5zAEVuk1Dnpi%a;bd=O0WPcvVWEfMXUP2s5)VRlmmU>Pw3CfCGiG4yA#qf8e~2UBblm3BUv&fO4}Cx$rK|89i_#5*X&xB*2l=JE%u(*uQIlCG;P%vuePv5cIM? zleFQO`s>}GWm%W%!KfX4#BlP73Gv-f-9*PEbZiu2B2*q*x_!CQuJFh$1fQbML1HT4 zExSUKqOY}*K&?OQ`twtEt0ONqOMeuT*GMsUV5&)U?U4+D4+r*(I^1Es2Vxzi4qu9% ziL|R>9Gl{5f=nC5p#pe8^TXgdk&}}T$?TmOh&?a+GnoJ#6^8S0*nn%E*uMSCTW6@7 zF@SxYOIG5?tDk9Z@BB2{M$Cb#@lI!=$Xd7S*u&KsK@w6pBtYlcpeC7mhXa{>`va@W zt2qa*7BBZ)upUn^Shfz=bn%%=Cde^;Pm5v5tundl~4VVOv|3>}3a zzl*;tfTG)agc>#3yH9tHnw$gt23?ywO=H7a^YCi*g^%z&sT81Mxlx~3rv9!P(mddb z3BBRfwD|~juU5Ypq{@Mv?`G0U*0k>yT(e9K{(vxu+P0~`^P&;-Egg*4_S@XIH(Xem z2;;#Zj95IT@^s0uX+iUg!~xYhaiY$O}`d(u^9xw*+)1t4GSempbEN zNfIu0-3>9hNv(28jOcoi-5TbCVcbpi3+YzrbR?2maGnnyF)4v3bVtzp!xGE+@#(q<4N87) z7}S!4x=;>m8S}>1;F2SONI(w`5yS4&<<=B`#-kMcE#(<5jFA58GbAR`p9Hm#0BmM_ z`wjrZrHo$D2~B$bz!%KpIea*-J9#$haoYJRTJ-|ZoauD`aDJ$HW012J0l#*+5bav` zcb>GF9fU@HsOPGaTs^iVd~KeshpN|w9b}T0sx$_AEB=Hu-#e-}&)W@M@vhBo?3wDI zJv-%HKTNK7inH3Vp4(hPrZ+vdtFoQpa)BCD1<-~^ z=V<67m20v~we-|&yGEaPBbgnkZCCsIhF3i_>)14*9bcOU=L2iZ6KlyHzgQ^`RcvL= z3a39G-fq(NIlG&~xgcf&UE}O$aUp_^R-N1xpJ_kr7i!l&=hBrRc&bW>J}#&P#YsLH zai+SA{M}XY6ByBCxN=wlYv!tL8pJijteW{xss0q^+S)itGfmGJW=MTvyn~QmSaGBl zxFjKcFq_8Ae7%-BLk^H6`$pl0!{OQqgRLNE`Zz%)H|Et-Hg9Bv>H5bVn^Dw3 z+;lj}<-mCAy1OZgC0(3tntJ{XK<3J=$inJ`n)UK+&vkvIX){t1X#T<;fhubINIxPI zrft8pJL!vN;N33@^*ptCA%)L_G8g)KpB>=rWg|Y_cD?u}(E;!s{ct)`-ywJrA1~=6 zwfajaKwX%yOAk6B@;+IE<#!|tZVYVms{oSn;z3xskpDa<#)szQ%CUN=i|Ipc2I#-m`==zJG?P2zpR~~OKS?%oqrKG|t_N7_Io<8B^vzqz?Dg?}lIh=ZW^&kYBcv)wCS0Cglm3 zk24|T;x(!p%ZFF1e8JspVXZO}7^$X4R6K`1x-#||1jPXS*)Js99wKHy;Ao+v9Db`E ze>7*8CHcAbV*`==iwurNK~0JMsKU)yn*wuHykCde9axTq{u z1}Ai$utveBK;3-nNn+V8G|MAiWV(Dl(+!ZF>-N{S%_DIgmPSgZe4+a{x>?03Tb%Di zc1TN${$&KplHbNVNF02HFIZbkYFcS`;ahMXXzdw50P-M%VXl2(Z zn=mN3o4Nrb1`M6D_9rJ+m5?uzQ}t1x?OZiJrmZHJ+g~gao+4B_Raf-X*!fSvOIWE* zSV3&CExiKRGT-I<<&o+VzIc=F`s=B$XTfF35#Q}ssR*QKX8EF_aYPL8AFc)UNi&ff^$pL<8a{Y{t z)2baDYi6wy@2M)WEL3{+;tXHCw!hW%3llPmUC;?<8 z7F%#sS0DKa&8@nocKl$Z!dQEqJ5^p>(7alFxxN)p^1Hr-C6vv)|fVc-a83McV)RS|45;MX(NPmBXKjuSWkz z!UU@;^=&*ArL=CEjyI;M`ug;DL@o9F$+<1oiHv&_ak5?ZMET-u@1jsr{@ARQV^v=a zha*9hQ~DkExh8xB5Ha!&UajBfU=Q3G^mBT<)A2j=oV;-FTXslBzuf;TZf`TJKD)A+ zq6R13_<|tUCY1p)3(2fJ3lG^&_SeaBZ~oLYwF(#u;zglp(V7^D(*tv93BU%2Sy(N7 zRUsL6veY#F2_=Xfrk?V|DVSXm!}WD(SZMtdc8~%8%?EpwbfI_DzXOaLatjA3pr!_<0w|>^}=Rwd`dqB5MXscK3=XB8~S)%k8jHk{B*|G5A~e zn!FP8f}Kds%$o&6tu_uU#q>`E(@BkYIZNuke5rcDBSI{4VU5?&SEK&s0!rd*A1@_y z4AD#?5c~ILy>$=OY8iC8LeLmvjx^}jXWXEPwOCBBtx`%SlZjEYV1*rK?$nCo0*tAg2x=P3X=!O)g)WXq#%zYUp1y1Zx4qzsFGRD ze1U83p1&nP%U_0fcgicaWa^X%ci7`qx37oZDjqpJM)rV71{~!jA(ez)d$yVWhG`bh zc=j9o2&SXXHsZ8X6EtU5MBcz?khmmFIEPp?N7Wy?OIW=%$3xBY$mfsoj8$dCay99q zzrF-C%1V1YG1jI15M2eHxXMEr$uoj?j;b})^0CV)tADr(m<8ycXPksELZ)o8Nil;6 z;G?{cV=Swe!r|`qz#{rLfy@@<9*mXEh}D5d4snU13-ifgnr7qrq2=khL#u0_IL?%9 zdOfu=FI1+zYND)ph%4tuPU2q-K-XB8N_{kv{wZYLVvBojd9S|SqKAS>KK>Mw2jkHu zKXkI0z&Cn1o0+s(OoP@0fUz2^v#7-*+=6rt@0wD$RJ2s21aXMcBrAN8EiK zsP1FX`%7!<@X{yyl=!Y=2-?~na`HY(dzA%iX01DN; znVZVB8~SI2Q~~t2Rhy(4rRvZTbIu_9o}$=ynsB*Pd9DDacojp?SHbln)9ApZqI!ze z88>x_=z@}gr}2el8_gewwNMe3pE$=Gds}~-adNDbN1Ti#+#;8SEf@58NfHwpdMe8C z7JXP-IMUR!g?35=gULK13pL{sj}%Q)It;a@HOrHO&#d(E)_usXR?LFiTPf}C-u-qB z;>X6nP1`C5vVO1hfH3jrxvcgg>krNfCx2#U876uSg)Wo^)y^Fv>Pms{h;dmzsE_}4F+y%WH+#$Xj@0H7o{KLDc>k-+f&I-l_KSyUwG8yJ- zZr_p!_Zw_f0WAfliYjZDb|!38sD9tGgT6XGTn(XCMm!lD7h=t1zZ4w{EmokMo{9yb zK?kaW(VufG9==CaFlVr|Hg@utQUY49CP*&$p{q&hxlJLm{m4=!IJnTYX?0lFzp!#!!WuceR`J75EELllU;ZGyRK~$COjMi^-^@gU7-mu(0O?(x zfAUe^(w(Dc{StLR8jmrq45&nE2HCBW-Cnh9kTSJQE&2=tP3Y%C6^qiIeU$R}V^%{J9 zDg%EzeE)a(6Vs;#BN@UQQ}|ypTMZiO;mtd|wVM0*w_ECQMk{PwiLCZrSPgOMF%eo; z737*DvZH>)7G-Sde1;BA)r-y{W1MF>P#CdWEKIfs1t9vaUz6PwX(G;cb9^P@ICCh{ zjaqANBk0t9)SL;{Re}2?>{v6G2nUL`#VK+Q@avX;=Hz=V zID9^aZXJDi7n@reZf@pU65GeUCAmP2LRG2iUt|tQ>B)9rJvMbr7ijSyp*LM+&h10$ z!waHf{HA`Ty?^fGmDygOYX*l&p+;WB3F3)nxTK`^R?jNOEVc2_Ecso5#t!COP0k~Q z1c}rP0{(N$+qsOHcB@{9x466)bBF?q<+jFvgY>07Gk9_4VaeUxI6~ddlCLD=o79Q! z@O>~OL*`S;T+I6Tk%6C3_s}B zLl{chbh%ypEVcw3rqc6;VnPxvq?}M@nADI8&Qj7WB*Y)63IwB4V4_u-%2eH!g?=cl z#u(i^+o-rBuQG<25}lO_I>>j$#-i|hMd#NJF9jtHiM4_f@-;w&AWweR!70+weE(o! z#(6y^++1U;PKi=@K?G)P6aqEMS#N6O^aR7U9^jo1!c9sDL(dpQ|Ex5GVECDr;BSeS zJtF0ak3$R0f0&)PwnLwQ3&DhZiLX=tjHa_(vi8c08HfD9Fj5j$@6*z4q24=cTSXVSy=peNiN<+o5(3Vx(`rMgxIsx2bBWt zn>qG0ONHCd=?+`^(FF984FQao9rmH(jP$agPi%boujL7DmHItki=likVnmJwzM$*7 z?sLvnai88f$5p91PI6tCGP~@*^C>4~;q-Ee|$bF{IXnD zE4wkn(lJ4ZEp2Me031%ee_YQCE8a*}o5%Uy;Bf>$CA-4rQF*yoeKW2QKRCP$SjEK1 z-wAmknl&d06H1}upPEw8=vW;3&c}5**0KG!gF9W8>YoS=>I^lfgO8XvR=I^!8o@6e z2zejxaC#KS&(Vt_&qWsK=?MJCWRRdN@oLkcOcyA7(u?^@^J|FakM3$~MXkWwso+dU z;tB{+?zFk>;p)vRtLtJf5Jeb3XD65;ypRicbdTdV%ofR0wO~EG{C4znnwz119x^y8 zO(mq&^rVKDKt^#H(ve>{AIy z@#h=aPV$e{Y29ka6k76)e-rjBWQ%%YxD_zhElfR(srT`z7PHmq{hwr5{BwKrx6<7I z|MF~tQ|T@*@~YZ4ewv$Pce`(Ou_OuW3GSAay7@i(?cgtqoAGA-ksf+<&ZuES(~2Ze znz0H96b3a~_fvV@0|nT(l3T)ViyR4>^`0(%=EwfRL#xsW3{-YHxRd?G6i8H7s@d)f z4eQK!_euDdx^3rN-p};dm&M+ny(dd?slbs~J-Mu2o1KYn>sYZ6UnCdqSL?YnEKAVk zBu1{IAzk1n$Zde7z;J_TE{aQ)EZMvZa}LsX8!m&0^4qVAbSh%CuWR)XfbX{k1oOT= zKY4RY(n<*i=4*;d`U5EjCiOjgxy!`&*eZ_WUp{R&2)e6DJZ#krP;7NY6bh9fkPm=9ISvP_}#H2)5}d z_o*nAu-}OnGQuCgnkFyaXqv`FaxkUq0UV;7iE($>Bog$a$ZdoPbz>MFZCYLoNffr2)Av^Q0Mbi!fsBj@PK*&K%Q^wiY@!2KOG0lL7p z-U{PjQ>1UeU_fD(bOrXLiDG?mAs2pAV9z96UoWL#U?mfdjD`8=Ib9(y(^Yrb!|{-P zjx1YNCsjLJh&C;riOPX#W_0)pzm9u^HclVmQf^8O9%NLl;TQ28=U5W}{@I)j3RmT^ zC{`w-p#8=`iUHS@QdM(!p#jU5J+`U4HVnj6ERXEc^!(LvT<&`;cemSz!q`vTHSJRk zK{XxTUio^uN3}Hdl$dU46D>ysD=Wt9xGmyyL2RnZT@Yj%-oH2Cq zn8m!~(Z|!NFZBhp(#H>vb$CETcCX6R$=Tj0fVy^J`bh*VUBt%hi)itf<=i>jNf*#Dx!? zmU;xYl;4S0=)lgOTNMq<@$KLL8M%^9Id~M-IY7-F39iIyAP=ZOUPUg}l`J2VrC&HD z*?WpLp;$Mkacp#EOkWR)pT7X6{ss$!F*I~39h&o_mOM$;fY;2~7iOBofyiGY&9Q*} zB8tzCPD=xH{i9Myn=s8-2Fs1VKz|FqJmB6Y)qQna9|6N^RA4Y0USA)-e#?rq7pxJx zJ2c~keMG$c^^sEWZC0=-(TiK7Obvdq*-A%x7BXti5S|zh!O&h-@b}i-!ABg1Taur< z_qUI*wLShpkNk(hj*O`kJXsO_gYllMfvc!^-^w+Vnn6E%0lBTI*+*Id>rEte{M2gk@VjG?~Wng5^?=uZ~xx-|u^TK$)a~b`locek$+i$>mgyr3QZCuwZ#&hY9;u39DKvS z5c503HPB0;0eEn(b31o3PA)Vh_Mf0UZ>k;t>ci)!@XTE~Flpz@l^p;Z?(&3X^WE!U zk_@ZhB!v~zN;&q8Ry{+fw(0ze3)D-X=>?(pKNH2aoh5&I0fthF% zcKj*>RLLs++~7Cw&skkNxN03#`&m#7!2wBbIlt^a;r5lKB(PxjOZ^3)A`VrMwe z?~v>%H!?bmBmhV>0PC_Q5-nuVJ{h9U%y(q|hP|XF@*u)v7M!;UP4ra(zXa^H*L(Q% zD}Wuc=(_>ExMNRtHaKPZ8`GLk4Yn(sXkz4tRKW9P9*qCfe$?(*yHkm^LptR;cTBJ5 zK;K(tI-k{~Rc|El2w2BVO+brg=`8&BqWI%nui9O%YM=EN%IN<+)KBa42iDZBF`DNJ zdCg5kFDYB_H{q1CAAGbI->j-TX-}I3loHcp@12_hIn&c)Ne`djQ$E0}`*&heA^6;Y zmuA5Tq@v2mnNKt_MH6+!`O2T`tn%fi`+VV$R<)$d6(FIK;9_CgzD-8sFI&=aZFSi+FsGi4z^E?-0Ob3@gODw zIGIT@5vJUeesAihwX@)4Waha^WhRBeO&?`+z}0C?`;S!$!ZtD0bsOubzy?UJC3zcn zLmQ+--2-iP{?5ED6?JV=Q?owCF%oLV|3OW7%k=7o^yZ%HU2;P5jK+D%$g(1@yeBVT z4ui{9Aiqe}AF%Czrs1WXt;e5-`~o|qFsTNJ!=K-o)wdwicG+FUAkkn?$`yKMo-jjg zWFY5aMz)uhr81=EzMsF{;QrJ7l@)V*;nj2OG;Yz8UZ(1Z(bTsY1#PD`-vd_Y;H#i` zr&mWuvaG+XNolTx90aZfBjZMu>8cLO`V}kF(dAScX1DK$&mGpf0slqkcEx zWI4&%v(1!*y}3_j$oC#%^@7}o#h<~SxwFRh*=$RqyAFR!@ze--D5ajrOo@o1Wv512 zm?Oz|b!T=L7(Mg(6)97)e#W5!Ze~aaE=3XNgmD5sUB=>sr;H|fUZrs(8gJs)lM>JD zOGGQ=+ZdU?hnzMttVAx+HsP+wHFp2(KenGTl$@Zr=QF*5MAesiRyOtvq97qCbSO(- zOkA`uTFSQOv0t36T5K}3?Fa)xZK7@c~bX^Y}$IX}{0sztA2LE?}n4KJ7T#5c&75%e% zpST*jJR|uZOiwST*E|zdzV+_O$umJC{{e??02km#xpzm$^Fq1XCYRDGIP>waRf_$9aF^61Koa>cm&nUZJe(aX*a$e|W`AyupBeG!O#k4@uqyh? z2z7T>t%*+Uk6Tt}gYoKv7171k4VNy-n5Gp7Pl(`KSz;N>t-x)euywIulH0u*suB2d z#HRe<_{UGtC?haI5S02D*eXkPE(Mq}{anHX2H3bw0TNHAn?>sP`cL+qluT;&Htwfl zvK{$fWAKjU&mo5HxrPIUkM}*8TNbPm#s6D8VZ+g6*y+A_{8joB9T)N4E`}I zQ~oWZxZ6moH*QY*em8l6|Rfja5)KDRu- z~t%$5db7+a{!BlgWK=I!`rPs>Lu83;?)roSX30_HZ`BOdwLziPQnOJCP* zh*#i$g^FW9$^5{a7WJ+e!Z zj!2EP`;Y^NGt=L2jtJ@*#5|tc^Qj}1K7EqEX*vQ|-I9Q< z=~eMOP`BPVr^XOWe*qeTLwxgiW^AmNydbAWQM{t-@Nl6P9UKF6sYfnb!Yz;ee!C8U ztlG~eILhHd7&tRMK#dmI#XCosLt`6(wAUjJw2^H!(|^7~nnHpXA#&Zd(oa6^Pmva* zPiZd?;&yRRgTwYAMz_|VZchE0ABSOzx^u!FG6@t?=-}Snmi=8$-YEcgTlR2kqp~bq z!+HBzoC=1j8%CO?-s4Dc*yJ-^Xg-cvz^DoH_C3zpOnd4$4{%4QZf+U=CWKlz>^q{+ zOK|Y3tNj#;$03Rk_4GQAEBrFrrLa6FCq2IsW|+jQWJhJX-ZhLtc;coJ^>MII((*=q z=uI~%cD|T+!$2Ocu<{%l3r<8aY76Fc@S{vs+T~tH>v}wBR7I#`woLFFuz7o=Id7fB z^Ri|izA7kf-pOe}NiHz$_z|mF4QLJCs`1aL1ZsbK?#aFcK4lOs#s)~{#q*(yD%nwa zm64a#e(Kfew4-k13*SwtDPRlJsnFOY`~6uzeFIOpT|vmd8gz%rhr87R8o6^2kia(~ zRbg5$+ss-cZm<1r_cSiT@T3bwAEQ~a-fq-hw?@q(=66ompU?bK?B5el)-y>CkvM~W zs9335U9dK%?VEFZu&;4oU`Qija6ER`Mjk*};8iL@YIb)XLyfp7bnby{EZfe}-E!`f zRMS-x2GlkB2UQZqT zzoJMI7YmV(P?EN7lZX1ZuBb187mm;C)p*scCZoNXI4mPB^PV2k*wku{#wg7l} zgKbTz7m~qCY?~4HV&0c6{qj4_;|sFnH@AHwqcg$Y7g$#%p{JezWKaQcPCo;!=eG2E(#_Oy`KDrvn{N)^eePDnosF(r4SGx>W|=p! zNMBOFYnmhv?$19%m%4d0lN!mAPk)l6&WC_c3b1ylxQ;1U`lH98bFa$@_dXntQa4Ua zUb!QXohU@FB5Q0;QGhT7;T@EW(L6acVVrGLXeo5Pr_W%GWVc#sLIA2@Rud~=8wKIu ztUeai%ntarwQ^_;uW6PxB3);cGp^!7UI1krz#%^&i!dTEo6C(86VV^N>b~9*$-8EA zDBddTSY>}9(<(eA$1YE#$We-eVRwox=hdiVHOeN0@(t?LQ8Mr2I zL6S0YuIyoDxA*JJj~4<9J?2p72GW0AP=+}m%`qU8qf%?SL1r7Wgb7(33{ZSW54ySK zi^vwgrc2Dl)Junnh_F0M=`nM^&v86*PQ0C!a~qgVW-dC7_6U9Wo8KW+-tIqo#thb( z8aPqC2{80Z;yQjm?EFExnWw(ycQ;}O-+XH?Pn2#@&g4>(0lRpC$zPLduQjI#-KjWa zp9tZ}aXRM_U%JTsciT#g{5Yq-`41Cwg1cvc3PP<2KTk!rUTGGr^$dOSS}0Ya1NC|# z#(KD8x0CpH2uMkKNrY{wwcMKTi;ey<9LbJ*!-jN?iO4Ut)aQ6r{Hk+B*B%y*RGuPo z<^r|o+%}Lf{cH$TUzXtJH<`l-6osCHZ==M|{b29K(xMw%DBgaNUTR3%9M_n6QoOdu zW|xHVH&O}%&fG?@&);+PTFlTUuGW1@tLxAW^}r_{A`UZX(am-Cz_A`l2WI>@{TS>i_kfj@VV8ECX2PSSvIHxqBI(_ zuXRzB(lnlC|8PFpNZb@Er5pR(b?;@q;xFYW*Kuw1xwGeFT%dl7?citwTrAU+B}Cn+ z`wK~|Mt5`yQf$v>b-H`?uQhv-aFQ{pNBQsJM41284<#tK#Upl$I0_U#dGi01>9k_s z#OvNdELr1Fh_;EI`_12by+@Rth4}tH?NA}UCX6g629e{pIT7-P;2Eol7JdyRuYiuV zcV(%hxszIX-R}w={wdtMG{6jDr}08R_+zDed%nAi7hSJ|tckS;AEM1_A(&CSM{T-t zl=oqe>c@B7v$pd1WuBYg?~`dd8;lz*zD9U_`!CW~wuMjpRHHk~Pjp+6QD%CV|XR`47h1E!mVGzsF_oChQ@#DLCBoJAbNaqhgkitojY53 zUhsuv43W9s$^s<=YxP-`=8ROM9ALRpnMZT1wZ~tPNS^qa_?j%F6%G={ACtYg*_GYm z!oQ>b+yXxy0 z^EhJ8U7*pL>FBCq{C!wV!l`EH_QKQL3(+Fe?&!Nhh$mkQt2@?Gel{WhUx7)T`-{XD z6bI(ywnl@Sh{IpC8{;WYuVOb|QT|;{+m|tWH--?tir)EShUq>d#4py(8A~;d?yt(?8M61_kHc%7@$iS$9`^*QtogA3{6t9u>NN7*+sRuf@S9utPQb5P-XUePM!%G+O>^Z z#av=fS*tj|b5UKNz$Sq8eR2vg{AKMuehO(lwoSfNRatP(6&X^Ya+HYasA?%%16DkWWarDcUYOweDyqfmlGVM&1^|t;_PMgq*`f)Q-7+Un3Tf zSrm6;=OZRJF$G61=>` z1AmV=l)fpOEC2uIUk>w&EY$nUtW2Cq;hN|_-G65!J8=yoQZ9kvHUf)5T|pBN`nR7H z44UpAksCiuQQ%oI_k6-C_B$WL(?s!DWAPY>I)d#o@PfMe>a2?A6NmGfE7<@*7;!H1 z^a9pLc{Z@WM>BrCDXz%0*|sw2>O!rA=ILF5>XB}X{`K7VShZEL^<7sVxe{&OO;e2J zIggG-pUSaGzuJeY*LkC3TNxR(jbtt=3<2{}IfveM3qcvh0L$bXN%3n>_9Z=H z$w>`iF|mrhQc{e6EmzRJCRfJ2bzrcaQ{J0|WQa0(btQD(6Wvp&BjJCN8-=_f;_d-< zFJO?~KhIsb`6PLeGk(|1OIFf5^gThqahnT}>>Rb$GpfEgHQ}y+e+asCPj*Eya#V>ivWXgRMKntl()7Y3UM5)+uW3)BwkiGz?T1VYB4i@sZ*@P)pB<2vmr)O{0ZtZL?TC6qYM4YXD;y zgn|z+x)9)2(-M#DaUUld!o~Efx<1GlM`8O8R=zfdJ4lLJS=ug|Ydp7|m9Tt_ASBF0`^2fc>zCIACJAs+#1DBKGR!kn%A zR*rXuT$`uXm3LpM$ZKjhpR^M@{!p*Q;Du(F(zcw3kw_G=^;S|BEMRP4QR zJ4$Hp1CoW}kE&)BVvG!KcmsfZVqGn63xPuzO#GEUqXX9{Mxl9+b|?PrNQOm7E{USG zx3^PkmFC;40}&LuqN&bkx{os}a(R5(eie$X!iMSh_|PI*6rxS4W4XP2irnuR^{k8h zHwE_JrjPmB+#U^br-nFj9ma4quHI8%f@vDiZ8frNsfD}-feGD&PRyCVgwHxI_k6nzX+qjp zmWX(toX4Uc0>)c9WOO?RJp58mErUr5QtSE?)SyXzGfumsBn8x|^u9??&EKu$e4$5l zUb%A9y`&QGSG>73@^bO?WPuecpt;Tg6EjT|w<=#Nsv@{Gb^cy>F(ttK@o!P8O zc!F6#{m)3Xn-dJ&U%B}sW+km_3GOd+h&!62d(I?^&Z?T`^H9s} zE4V+LZHBH@{CjKfV?b`|<(dX-YqsFO?mZ34hCV#U`5_yghh{C~V5;5k1=EWcY5RowO*YK zAMKe@`pN?`=SRJi69Lv_jvs+T%h|ob^lJDSE?M2Ov?SLQg{N6udc)79RA(zMAoXZQ zWl+%Glao)2mA%AV$_3+6G1C?UR$vJ4qN8s^HaS$MYL-ZWh@S_Gy<4h`fW6DTr0!6Q zlrkZnf2%>Xf3}Qc_tP zv%b%53m694__b1I=G7+}Z-R8G@6xE_|6A-Io18G-&|B`gFaPTOK{3pm&+6_*+H{_< zZ|EBEG`$^p*Epooqn~J?cLVd7;~}0j)|u~t+C|fS^E2Kc=RC$Lx!_x`Tqd$BiYV*g z1E$bOFY=n${!iZ3cL(QIdd*8o_qQ5vt)X}8Qyxb^ZJBCs%ud?eDpxTwTf%gwc4pXL zt7>jU$hb6p^i`K|E=razqt!>x>fCIv=`%i-fQ{kUEQDLtNNUKf$w;vSyO~!94Z$^@ zhQ7LvK4kEK9AxYezE9K`>eb!)ajgTKPWD-@I8BCV1w=%j7*R+{$DKSo zLqBRBfaJa-CGYsbVw0byj?;p-o=eXqI0%{+k7x+(`mhwieVrOD@<1c)bf|zl2?-CD zpXYjDNB{=M5~ytx*uU@3HDMMz{}ta3p#hmly!k`HofB)t8)k^$Nr=r{T`HjNaYF16 zL+Hvxt(%eU5~IaKaE)1x>m_(D^wXLBN_8BH$^x>fp@0XBqSgq{2r01Or?-NX>%PQv z7>Ick$Oa5z+z1?Ps0mTp<5(QpX?ggFb7aOQj3UNq514(uP(6yt&@RfaZPeo1Lj7d8 z;0N_Y<2Bw5S$V+`e*cq193eP_M~dxbCyrw}?JC#GW;VI+e*?e!fEBFlC3i zL%h7iOW#T~^M$26Cq-*;TQr2GeIJ$t>1hgwM3651lT_7(h#-~y)b+W?cn}vyarHY} ziHns@biQCVStZ;Ywzc+X7z-G#1$GHX#U&e5iGE;)Zb5>6*`J{%HiYK@cjv7<{a06(PEByjZ7eJX{ivn~)a1ymqS<5?fBgw(qg znB(A4ay3usL3}fggkILIT*b7?g0}GDfaoZ(fxmbn=yr1m@2#x%qZQF2fdyNFlOud$fz0H)%VUl&VS?wz`ke8w_P_^1)7oE9W_`(m3yaW`l5S>V{U_oeFF z=L`BFf(8UF)T#~@qIfei-CULrGQB zgvIbW0ar4Obs(-+OLj`faSP3l-T<7dk)wc2JbBrBJG-8q9b*y|^uJ;SC{0>%OU1cV zx<;~|u{MI&M!3?Xe`8D(@dd_D6+v+sMjp~8ZV?ucFGf4v*~544u?QMJN?M?pz;$A0H(U-`KE`MCV}{}%3V-?8!GhC?ue0ID|5J_8$J z^TtkE*<1GEc{3r*?0i2Qfz|rS~oEmIZn4HB5r1ry| z*3n#OpEJ5t<|9=+isl0+{JE&Q5jp`LzAZ#NIatpW5%~U+I_dyX(S3lX9U0&vD3?`x zYvhKvVjM0H&V5EroLwh{ACFW1JEs-Zo22z%jct2qMV7Qs2^)ts#JzujT=Gb#7||uu zka5Tqa)Z!!w~E|u>yrz7`G|1V_>Z1=#Dh=ZRU`z(XQpI2yN98aYJ*U`Dp~f;Eenw?T8akawu(NEtff;6m=;XbK7+&2B9NVOM;WJi*Uzakw|q~h z>%JLXZ|B3Dy=B24LBmZO0{(gvw^XerZF%)3<>1l%fZ>|m4O2yc`$W+bfm@G)?^9pZ zGI#v{Hfhws#){-WG+k>)vY!?I+fL&XA{u&~z;!ydnVxY(JDD`P9n_#XLO7K|1Q5K5 zw#%*h*xR;(6{F?QBb+@tje3%pe~i!j|FNbl&p3a#H5Y8ilx%|aQ33a^fgS098Ok|* zhsT_@Q;2hUfwZspI%90f#1_0PwwRnmf8&!@nVsab)+-Evzp|fd16loEyN&&L(ykFP zXtuKmeBh`5A6Z`&6xZ5di@P*#0U9SraCdiicXto&5P}4E50K#Q9^5s!ySq1X`^?<) z&)mAj!>-y-&_%EMmVO7PcpX))X4IJRb*|)MwiZ$u9ciClZ*vlA* zyoj)hsNA2?8T{DVw*r$)f~uWS6J#uCx0U8a4e~6Gf-43>nA#%@9ZR+A(1M@3%kY!s z^EoN?xUKu4Ae8{XbF-E$GnDx^^P*lr%Urbld`=&gc8(nAfs|eGTdlSd0Q>4fYr;AV z{AuQLd`=v`m_-T3PW6ZhMUH#$fE@D3ZW7IzZI6x27YIoJ;_W_P(=3-F%u`J#kxHkT z!YJ>K2V=!c{MzChdGEh%-Z_l0?^)=wER(94mZD>CGa@UM92IZMG0li@U^&z zsX;?ri;|u)46mSv1r5Fxzo&piwOJYPssNyj>&XGuByf;GNgpqfS~o8mZ(13Vfy_{x zyMVtFgIefB#Qd0sc^%1A26*OV)!CC!o=U<3+J}X8QhKIOnEBWFnQ2YhgAi)*zOi^p zqX45gVeH*utxGVdH^j+8T?Ku-On`-Di$AjDXpv&H>A*~XA zUgV=@=diK984n#6QvTa57+fA;3aNrlQeE%1(|V(WtsL zWMS11g_5Uj9oL24FQJU#3`bKb{X9i|EQ;|oeX#O&PfX=CKolcpvf4v>xr1KQ?eAio*dL{u#C_{jCmMyL~|GL z49o##Rgw956!!c$9dI?BLLR^}prBy?jnkDubyx$?Y4~xPb>ovm6m7OTG3-!PZM}NG zG7vjZfBu5lDI$1Fc1oN*nX(9G_gL$Y>q!pJmY!W`d_umR!?63 z$?TrCk^G6Enf)Mj=$7pP%O}PUR>-WHVojS}$PB?D(NM6aoEw$l{|c4=$d&nyh?JsP zZB*GSO8*x|wVkN0Hc4$S2R8hDdKm-S8SGIWnaAtSU)ht8i>2(T&OME6$XMu}_@~6% z#;w|)-0@=FDN=1{>W}4_1+hLW>fGno>w~(Fk%cy*ix!%THnYj!2IK;|_Na>+D?eir z$xnxuPfE_7C>$KOW!)`jRq1r>1WUdCJb@kZX@9WHY9U=j-@A*sSLU{Am6S+5&j^p$ z)%WeO!?_kE45pypLua`P2xa3*lQM6J#ei^jy|^;)_@Zx)@vV!sd%SGL(Dx0130sG= z&A*`pFn;6dgK$0o1s51jl|8xmOHTsQx9;e;GA-CX>8d+JnN2pA7W=mBFNZtXU%3n+ zW&|-IE5jjh_L_9d#y{Eni#-LKi9c7kgKy*;7X|2{0OVoFz*lvriiKP(x0g^*AAN$p zG4VSi#wCv^6v#Eh5si1Od#)==^Q32=xHJi_uydFpo)m#69ON*-=_-eDyJ6(%7SHMk zcdTTYn*QY~IV8+?H$v|3QGgu8z= zG!J}CEiOMdO^$6fQ7Yv9Wail-NDq!hA;(#2qg2v4&TkaOtcJH?drisNyBdQ6%a_IS zVUJ6ChE+2`=hY<`D!5|bCfH*Xd+7N`&`1Z!vt%cH6&W(e|uwupBxjxZJ`-3Tt`X-rikCYHx+vkC<> zRw}(9oTeUsDPM~?M!&UuSHKoPG38ot=6gcB4}pNYahrS_cH~rDDSOObSF zt|FH=HcGlHtf5Ph6`Sq{&B~;+>-_}SUXg_5q66cohdlt!qFqAaaj;nmF}_dJ0f*|| zLIqYMTJs4xXr4dskA|1MU*U+!oTd}-Y%=(OnQ_?yULUXyzxD3ro@ozH_3FJHs(!S- zg=~Oq7L6U7w{sBM;oW>9iE#G5r-0qo`s@I`(gZ&G4`~YBZL}FCibk&c*Gz&LriU?B zH2?AjO}>8M%jbiC9Cv+BE5h$mt&$Fhd!Lu(k1lR-9NHO)cTyLvR__%A)C}{IkQ>f< z1vX;`!2oF~xd$;~vYwv2$hGI5YrfR5Lpp(>)wvb@?pEuirk^nhv`?;_kh8tIHtK7 z$L=GqkY#Cbyd+4MQ^;)b+kw^i^OxiO#_HjDk^iJLgcE!6Wq}K1fy#$zgDL-^`O|oa zYY$igX1#>O0Lc$EA-6xL9c+N~|MOSN@FJhL$ht%}J}+ zYT4)Yidk&yZ&Tv#YOjHO-jnt)yyxb8@=w*Or>nCAn@M2$uG=nr!)TL8D#RfXU>%Ur z;JFMHcwR=8_r8Cb=4alG6Nu7zc0A@rGN|aU_Umw5rjPrT&P;HDgI%{cnBZhbc$~`O zcfEm?n>jAn0W+h3m*3UyR@&;&q40%W$f)8bBD{3928dbd6%f3MMs{gjSVyxx+5?Rr zSvUYEVR2qUGDhf?$<@%TtY{3cErLLr?6JNrk9Z<1kyEkgSJA^yp}T+PvpWrU2kV4m zmV$=+cCrV#oeh`tFoRb-LW6L#9fsS~acN|HM3(;;jAG1-0@MtEz|;N?^m1rQ&`UEN z_s@8oXnAmg00B8ehb^OU%MPrV40nXp6VMu!ZBsWv{w%tl1BOwb&T)BVN^7LHVhIj4kT3NfZ`<^97-PK7iQSOr`Pa zT9nI^}93drf=tcQtl!cQee z=q;g^$0OB&uw)LvZ-H35^N3~JL!z(BO>$i(dGY;*1kfa!UYkvDJr>v5Xu z79D>r=go)oYyB z;BHup_GkrT6J|;LrEPzG@QY2OoyjVhjwm>7Q|31Y{JJd|8M8YFiD_}50UwXk@6eHF zaqhBoZAIR9&N;ZK)zIx>m$&(={X45_TYXH5uwVrq<`?;8%!)9z4w?e5Ss2SiDqBF$ z#vc+aq%$eNUn+d6c#M38X;@br_r1S91$-R=#5_|lq$L#14L|i9n_!jbH8#iZl%X!m zcfbwLgVbFBF4#0iPoYmiD6H=rib%AO=Q0(l`Y~p)=d0n|-m#%Q=kL$?MW}$~d0bF1 zOK>T1E}dxNHLkFitKN;RO#)xnCtfc%VPYQcp8$eZ&3V<|B(ubiarT+)uQcOLr+2zs zgj4@GOaad^!bOU&l8Qea=Or=sY3@MAJB-z0YucXZLW>wqV0F`|@O+nNSvDg~&}(_9 zn0fZ64#`cqTi%#q1vIA5^?FUV3K<_-CtjF4LYC^bGKpCnWn73eU9$eKqbv~IB;-@@ zd=%cHRqQn1)bU`yz`;w6mbu&18^DOV`f=EzDRTM3qK3##kZd*>cM(b7 z%D%bw?#`h|K{`8VYC>QIPQ8D>DX=V>?>OYD1Co=)`QZOaEpw;mdQJ`-Xz5UDUiTeWi`U$R9E5UCP6v*iJ{i zCgZ=ccBy_h9o-DidviZpn0YSe>)Goy{ndm}Q3A?b*aaM3iotr9-4IL$&s0i-!+_+- z_;Uk4oAp4+g=!A+?lc4O2gPwL23&}lSBm_VJ+1j!f59JD#80fSA$E$Xcl|bWwQfl& zVJ`Co;%c590Hm#cQlz?|2Uc2kcfT_w^HB2NKorGl&!3HnQDLz|+AB)d=+E{)nzrz& zSk7M>8#LyZ*{4Rw4e^k&?+_=+l#9|3Mht~Z3g~oVR}W!b&|!FLgBQZwfR}LnRvNYC zMWpg7h?zb7%k-xZ;s!8Z!;Cox2je|U=%W+m;6UqioMF)Dn|+(=_K_$0<`f^`8%-n@ zHCT19Vq}%|aG-=1SO^My5kF-)57x(LGEdsw3d=*WVMfS7p=VHoyq5`t-z9pSXwc&2 zVSLUsU`n+SE5Ex42Rv`rC0Wx)QbA#&On#c%7D)s;qDWM4+OQ74Q9|iZL*_Fh4K?vy z#kgD`!?p>C9Mobc;A^Wh&_J#J%SIvoAuIKM3Y{|cYZ8c zo)olCu*m46L40VCM5|g1M65{@dnZKdGJz4hV{L)pJCX_=Nxk5$Z=Wc13m+}$d|jn8 zFOO)sDi)}zZ2IAa{25u2QBMC_e?-3R@8`u^N|AUhqQGRB)*S*2!h;=DQ%Cv?61O#; zKinmDQ0>rer~|&PvoX^?7NcUWK^JN`05m{YbY&${4W0-9)3Go21cz08xVl2bT5~7N zbP~WK5+@O)%A}H#jqQ)yxqt+<#qb!K?P2J6mJD<~5LnGD7p>q~t>NaI^Rm9;el%O~ zM`N`{E|t=`E@}T>m)KUHJ+MKtf^5h<6+ix{duK%^9fUG!OM#wa)_k*8Du#=TboRHi zfhsJ{X=@BrQg%G7$mH>}5k$I1CM8tBxYy@yzWA+#!VTW3k+HfRH=EkMF|{4X(!g@1 zaet`sM|QBgzba9ym>gE~L`#*wT6fYsRyboln%eHH*8ztG!BItz^MBQhRdJS)r=bjW4OnD9Q1)gTOmzd}#S=nO?_bfXo zXh+GnH?BVWK8Q)TRQ5QAJJ4XSsm1rx;&Pwf2-I%D$N&)jrl6F&$@?C>YcK36N%%fd z`1i4Hn^f;AO`EP4o^u$jj@qd*R?dD~YId6c=IH#BAfcc4YT|5zn;m16rz(Le`V$?c zf%n5uiu=A#YQ2-C3w%3FQ$VeqdDDJysE|n338w)iO?_Ui-QB_z_f^cT-ap4UaM%ug z4O0dU#ITzi-n)nA*N=xtF>xOT!LrPPm>Z&B*L1>6eIO+mV4z ztV-{tkI7A|syF@Ecn=SS)9NZ|7!zN;V~1NmixR!>*ZCF~s=OPe+# ztx4hZb39Gr3Z3t<-*FgiIME(nd_E+}p^5rw&xfQDB4k6#Z>_EQ5wg#ZXs;J&YF+pZ%*rc>KHFAh(r-yh(Wr z;%RAG)?vSL@>v4wh|=8oMJk*nOjF_)S^nVnGBlfo0JY8&%&!LF6}Nt%;fh5>`fKEK zeuG(bdc`qWaR{A_B&*{rF~P&D>2XhhmSFcz_NeBee%~W=^6&b3e{;wY?d7vOiyz{RfwZIh8MKUwFN-abl1QB34@`csiPtW0nB(rDOmsM# zz=;c^BjGxaua8<$8uz(uzwe7%|xr+vPc zI!b^J+Z^vh+PWBXA8(HnFlnlJwKg4IwggvlO5~cdNCZE?b?$Cv@U0LyKt>dW)471| z9T%@;JXZ(ds(qr#GnAnG$CWy-tqdL71E@oLt0??Bo+Hg5T!-|mgp);0d6jyr!nG>) zmj{e;&WMFdoxl#=WAO081tEjE%6SgI;cP~+Zw}ozc(g~T+RHcS$OIfIB_NqB?L`(= zZRCR7zW3G8ac*WsK7~_BTFaY!6I;^j?KRx#a21A>)WeXq-o)GhXR4T~4(Xdu_jSsGoQZn+YWr1LK+jT`IX+=WuF$qhY z^Uy9~(gl84lya@nNT}e)@acpBvL~)~e(bu4XxB_aQs0t8J91+?UyWDOdW^hrqaYQj z<*G;Q*Cqp@f}i`L7Z9U@%|fH6I*#&bDV5A>JVI5ZBNmi5``cj3Lu7CC`z9%)iBjgF z>~dGle6sOuSJjdajmo<>vQPkICBbsckr-FDBAxca@{Ql+8hpJ%}!HEFSbp$-gx-7s}M-{u;#ikMD4*ZJDx22vtA>|Pt(rT~Jq?&5Zr zO$8l&P9CbR4u~t+X<3ICdqrd&gWfjct~?Zxb{`>1kB^FY?M;Dr`m7oAD<_I?DN!wF zqrJ@?y5(A9PVJ4jf)F2EJ1)OQ1~29n1KFNT=@=Tcm6X{ii&R48E795Uw;2zZI$5SsjvQO4Fu7D--~P z7)3ZCN#wllSV8V4(uW4%QfRI*(Qxny1mq_e*Dxqi%yfJ+_#+mykVVlbjA6Qoucl@; z@3GZ8!UHelz&f-cm6f+Tli6(1rbKb)XjquyLM8CX0Lz71rnwT&hjlI-ZBjpt-iD z>F{A@>ybhm|Aoh~5oytSiKO!`M;gb|Y#-ezE(NrO5BFI4KtiAY&ftqjXTd5B9_w?J zNx?0i{@(gAvyf>;?#sW-altIFMJ!piNrWiuOk4)KV*FZ?;0#=-D2sP<3#b-lW|{j` zgD$K}jD*1SWT{RTgm8|P#hQ`Rj8GwMc_IX}kWu;+mG}@lzo7BlN@6;~8&uB=`HCAz zyuku>WERR69Ij0usxnM%x{Dwaf2tcyjBI+qR)GqhmG5B->1HU(BJ+847khFZ0E$Zo z;CtDdPGt032+-r4`%g>b&Ipnq=mKp^iL$YPBbH2bq4;4d5<*5J=OasuWn0EFLj;6D z!xx4TJ{Dy~|HVh`GLonS7Bw5y8AG%kymU@EfB0{|s0vi+S!bgMcGeu<+V3aoMX1gB zL#lJqrKja8mG#RJu-_Y*!f+#`Tb{FK()bL5`Cinu1OBJn?>7)b=%||UYbGCy!y^X! z5fR&ONCUR9M=Tfd8_S+=ENyuQ7UFXzO$NUf+h)Khg~cP{b^I=_2x?JTU+T1e#O$)U zBDh-FjLldOeS}1nL_GDX_P+yM{cZXo*W}M%_d!=wA3wDKdqF@J(?FSg^eJiI5SLYE z(x1gxVF_o~&(PvEUR%u40rt^{vRIau404ximwk~LWSxw!@k$P+mIfsmo7Twr%p`obZpAQ$AQLyo@oQ+p$_R>vsCD{z?}3;MGqN$9Yk^p6fe1)-FT)CiuUR z2uNw{5>N0g_?HMJ;=eyAi7>A}SS_!WPCU<(6PCBozOCwtSohsCyfO`NFlrH%Q*Fxd zLoXte*(#d@Li+Ov3KZV0t{-=h4V_1@|D>OfZHz<<87vo~?CSSD;g&Y8s&U+Gh3h7xyq=bt2&NOVmG?S-kEqb zbydb-AApq!A_UQ-i#)DA>ZF5W%*>Kwfd>TRPRVnA-i*mpP(RZ~ZRYreu@5;uZ6aQj zhs<#(!MAFil4=lU6nueP=FZZ+rjhZLZd+Ipj`D%I#x%$O9!bDf>-iuy_yQm1nadZl zJ8cAS5@Ny)trd>)nR_e}sxX-j5~AP@HtiA1=SPQTnAW`ATDl;Xz7quf9%R6oPHNEo zPYTPU9iFfxWSPy%Wtq0yQj9Y=?>MSHr*RZ@m{vn96PW@LQG_rx)tuj=ql3-mal-kR z(msY;Mb8n58N8efy=muWTc9CB1-|WG0t;+5lHy3gUT!}vP5Ue40<)VIi=w_hpH`X7`lG5TXpl=o7@*u- zOxF|c>BT$WV*%8&nU3EhMEWP`CIB@VW_C-=&iqIG0MkdhpHxkL_6&f_u$NqCN%P!V zcUgOJ^M#7<^|vVK9xE3FKRIYo6LWa$h_Upa`9iNoOozkbHj)de3F4x6f)&>EE2(dYvaS)GxAl;Pt=C+!H=62y;T z=WeD#psjy!H8 zR~`R}X6!C|`l}5c^xxFxj->6m=MznInEwR(uWqivBP!VsZa)c3ruAV2z5YI2fA-Z| z2hUxBTJ9K2Uj#QErZ>qEp_X`qa*jqY&b2BQr=7IrRmtV*KELt-!%A zB#EHZj4|OfmPE#E?4+v#M@TAz*7mTZsx<@21$3)k=e1I-&i;j|D)!|Q!*D}B6!dd&f1ii(EJCg=D~AH zSm&jwf|aQxnc)*I3R-{_fM5gxDOZ!HXhz7eWg8RAw(jeepu!T8#Z!IGQc1cZO}G3Z zyA@~_ubY1Gub|{$r)BP4KD-QHr@rgj2*66Bc(Ql*r)Tk=5RJh*^zm9&(JEKGr0%RP zQ{yXkMy%JYUs^bPm0`zG-R7G|bo05-6{+Ya(24K2Q!ONTBX${n2d@wqlae>fMD@aoi{@`} zM_P{Ro9HJse%r)16}1IuITGkFExW%ZjV*J4N9RcqXkVAhEnSNAvSVBVPzUn4$s*#~ zwf0@!o6OHcgSMbM35$wJH|N`_Iv156!Cy`}T;o3FGOcR`|0(Rdi#r-FTQoFlQf^Y; z5OM@u1V|B07}qU7eJ)@;+3jsKoxAu#6O-2OO+%cCN;*V5(1l>)$>{4k&)=k&V0v?i z$SW#N2E0ZXnTV=6$6d>}k4jNVlMqhN6x*p2sX?=iIb{Qw5IkfIMKZ3C;&^n(XidOx zXcpD=pjT8=GGy)v41Le=V%M@cFGTf`$%WYTiA;}-@njfc-6(y;>E#LFa-NJR$@-P1 z4C#rcb>^m6vMre|%JKIg^K97);MYWB1ms>h={#Ih&Ox{gYkPpWHJJv58&$A&{dNFP z2I}5dmL9(AvhU`03ogQm?onh{?^1~mCp9-ZL(`QTUlQYz`txv&dqSUTFSZQEmV69{ zxatMC?-cKZs#IhykDvLiPHR-DC93gSYi)yP-|+>sZ|fjpl>H_-+=Z=+)w`T9!MT?y z*oR4iP^ZFu5YCdu;*Ne;JOLYan(PiA0agX*gM)oIBd6Y%2_k`3L}kf_VN1`R43JsM zbf6HVgkwz4tBom6=n=|*c}T$93pdcpkBgzq0z;p`YsYcddCBQ;`ogplzV`F`dd=$7 z_f68gB(_vWqhw#_0T5X^ai@QFJo#UTNJ`pJw}d{>AR}Z8<X;B`qBl#J|J z6%YyoJA@Ah`3$_&70rhMn}tM~V7==oHtr1E3Dt)sUOokPH^F>xBF4J%yP|uCoq3x} z<(0x4O?t)DF`J`$btx}1SjzXVWN)~oSe%|ixsRy(4yH+T1>!botr4cn35y9?;GCFs zzx68dU&G1D-CmtBwri{viLOEiuiU2SjGhUuiK4Q(k)y~q$th3zokYDSM2>w9!aHTj zJ8Lg#Nlsoo6>rihhff}3)PAH|l3j-0q)u7*GLR=%X1zZS3lcE(arznoQ)vpaGv_*P zT#}-r03j?tnk%*oCp0qoTU=KwU~zUgExFun61h_#ThjDV8Sx_D1d z{1>CvTQ7*T17q!AlFH#dF*MhbFfINZS#>C*d%-VUTAlrv)6A?mvO2qW<-(nq(w1RD z*Rv{h|KD!pTB7jp+k>@C|4fDdc`bqXly@?6^O8(`uZ&R`!S|`E=+$^Ma=6&}@bg#W z6;Sqt9KX=ip_Day;NeSt&U6H?L}wd> z9IER2{d;=G`RcV^a*8eeh!mLo_>p%3q$SX|A})AA1WyLfJp8zCXOsoYGKlO{+Jd@p zc|FhQVlLSMKo$fE14`_I-Sk>N*rxYB12HKnBI!ILa3L@yTag*%XR*Y}G_f+z)}Sm* z50&2frYAdj9erR8dBLEN+n>brUKv01N*!jPW$*Ddd7oRergvPC8cNC(D;&G~>F5pu z_;QzEOcoP^j{$t2gzbu>G0}i#+i2cRMh0}+fihGCaXE~6l+%!yexH2aRmzJFrw6jN|UHm zt06|zY$X-Q+yKT%j%wXJo`7IrlU=U!mvn}i299d|!$B>shz}sznAv?4_t4T^3dOt@ zT9R*QG9w*mafftgL_d9>YgNg=c;YQe_Q$2u&ieMsHdL?g$0;k1NE|*~HF{gEEhR>P zKHpeISGdCBwDwYv+OeQ4Fj+pwE6GV7=S|?joiQT-u_!2?oSGr{2qslHzQ?Oc@k$^} znpmI?i2(*se=p_xp=Kf+&)?N4>My4;%)qec0XWNXJa$gyHD94V{Yq;{ZqYl-VxsdQ z@eyx+&S25p1h#g+$Zb*jaJ@9+ECE|7fIPuC@kyfZHZuvM4~Qm{SfjWXv_r%=oF#sPsymC0!z9m%jS3nKGIVqw4s(;`Hc=rPLIC*tbWTLBYjS+pbb);@)F)-4cVffcul- zu8ifFveRKhsTLNs*+P$n2q8_r(v+Ou%J*%&BV2(MVihKpmX9#bX-sI9pL0lDwzA3f zRoR(!>)zg-bFrwNtOe;=;ZEN{CYU~9Tl|Z|cQ;2@yS%Dj(pz>oC+6PFF#F}XScD1` z_9&J-I~85bTpZeGpsbd)4o|NyfO7)<6{o#QM_4yL{?mmz`LU=ALDGMY zKLAR|kMK%P{rdB6Bi6w4JAKzTc zSsBq(8Zb=Q$s|>ldRv7FD(;-vo_fD5GRg%63}_H_Z(~#ocFPX7=3Av8RnvpZ3E33o zFoB!EYPS75x5hg+hk{$U5#g24!`M)!-tU_6EN4Kw{T`o*wE~VJ!VHNrZV^2HTDMxF z2q<_f)==tkhTwL&wozcdBV<_w^{(c%LZ{L!U#Ol3p~p{N&X$cJ%_}UQ_>P%`&SK*A zn^7GXpzBxf{I3Cd@ZaYNAg)nlNZHI!vK{F>%;~#T6REb|MP*>fRJzlI=Q^NJ8Ee$o z_3Marp!Tg!kq#Z8utj^?`V#1=8BV*8@?z$uVtLZPIABoT_=^Q>cgl=$%`D40OVaAC-h+PWa=2sd$twJGVH9$zE^UxOYJ;b~M};KL@JaP@)S zr@1Z&#JT~=VV-#Z2>Zp(L6gL&-@csd6TI;5@FD$T*RQ3~f2?b&0^xcd->-2lokeL} zl&y6cmTS0AT&@Q(7&X~ZEinwa9mZEv|}m|Q0X)f7*$-Zo>N zf1+PE=#U<6_mHC z4Uql>+2jTvji16gRtOR=2Wn>7IEWK_2RB8FjBjNvzhOK|<5ncjQLI~A-d5ne<2zJ( z>)Jdm?yv&01@%-wU9ko>qH|UN+vq_3=33iV4GFD&xkzXuXz0 zl9|7M%LOK*2MGDkc5sl>sAW6R-^t0pmaEA|rB>FIxnSw%n|a+#{N0Upp*$+p ze@GK0BFaBj+XO(cfqn1ai2l2r@y&R`{$%q;BU%QkrSDDt_7}tiIV-erPf;TMamyE^ z=A=bzbIvdn9CJ>ICuQ(V&Bld03{QB=cURaMd6A~R54%6 z{Juh9txNxVHs#wJXts4xrg;w>$QQ!N9DVIf!gclFD6|9D+#7@px|a1G`Cq-b6RGZG zpt?%sDA&1aKzjRkn%-~vi${LVg-u(#Jtp_XPc}T)LB+SoH$WZhpFWVEY(}s#p%&nm z`%JeiWnelZgSK3t`~&CVT_fXN9_r6Z29X!cC^3L6HOxjKJe{MlmO97>Fdb=gVO44U z^=Jdp20v9jfl&F?GuSu=2&V8=4Uca%Yc|KFWYC$#48f|aav?on#0Wn77?(MC*=ILt z|CBS@^B$W1XN*`8fg1@DQVeFOKg8p0PKXBL8;YsbuN()*1>;xzFhy=ZP1L(k?$fba z5<@+{GXj_--QE?;*nb*82!atk1E#kJpc?zkB)?yj+*66Myx6~_OYAeV$vhFxdxKbdSoyUMUj1EC`X^17f`99Ko!XrVc$_hE)fCf1ChlH6fS(m zT!V<|F}t_YtamN zgbHA9sAt#5^eOoG#tEJfI~6yQkKd-M3gERc!g%EJ7U9>^H&lu*)tjv_Ys{a*m)MhG ze&Jyu{p|&6P%6{nI>(_JJRZud6jO&lJ9^j9i;9C+@}WuD$7}Vvm;Tg7MTU6mNK=Y| zGOG9~lW`NxzHyW7#YEA_z0?+nKoygv#=?%hFue$hU}m)WB4Xm_uSN!~nosiQaE*{T z7b;xSu3eAQqQ38jUIt-3V`%eF3LwGe<8RD6uM% zlq*U~AG&q^*@Gc+-%~kPmCDZ+QbG3cHz($qeO|1duOgh$Irw$Z*iAGBg=H6MR0?m~ ze`Rp%(@InxFtnFdmk6HHV9Y7>=3R}oRX7hhaf1g>VzjR@I^%D8#>&2IHLO3I-D5ZY zqs)LsVrXyGC>cVFUC*!>}0Jd1r(>zWj?d ztx$zGCzA=^~1ijSn1JdJ7|=&P$*eyk#>iKVLU-d5Zz}Vy64;3ODWchBoU16?TGgnHE2R3bg_rLeEIfR$vO<-D76;V*NdGERhb(5WV8K_nFqG*Wf89ErB#zgpg3!F;4vROuiR~q#Igzrn zhNV?8=tf{duSf;b6K=w?&ni-^@VnUH;Zj^zh0Q_}4zrIaOd@kOW{stUWs{$8o}uZ= z0!muMV@x3_cYtX=|bo0Z=AzAkOw^WPkds- zU2+0u$yy!h7rw(VE}YlJBWqE+MBOW!HST8V0J(evXctCpWKw{Po8wSjBMjgv8L#%* zGXWWVKg6)yQ*NxaYB*m}6q)eEg&Fjkg*aJ0T4)UW0!M|!6onRxCTCRN7S5U6 z?|EQ1#}}x?f9-GIbvvpbWvXls-CMLeuU6UhH-q!wmUFRAs~$edMBqm(fEz@$IPAw| z8|q}qI}~2bXMK$5*gDBz5bzagC1mZ_ft5myNeY^I(KhHw9W#Cu^mR2~DX}n-=&y|M zHzOJA*`|*q>`Y+UZAPLxS(rTxDf3zIk_{ZHg3Qn0P+k2{MpkEpKD9M*>)m@nuGHse zRQALw{r781gVv4;QMnfve_A=#Pv5;)7CLo55GpmLyuqtIW5-K9O@Y5u1jsp$EB@&d z9Ld*d}{7E|YQIxIz{uLaL8{%10eFpo7aJ)6Z}ve8EI zpu{OBvjLM~?0%-(tXZJ|V2*!|`&dY+-KmUFid+qFSZ8NmmoxC@Wg+o0_v=IF5SoEY z1l5>+HOaBh+z-;l6xUt?qK|DtYWSU2YAvV@1i$(q;}Aou@NL%H+Tc*Cpe*4F{2rV9 z6AN1qcU2O2SPNzdaMv^S(pFtV5ShDg3c&Bz#$#&&r@{CFzA8J#R=hPTeoY;GYl%yq zYYzcEzI-Pd%ciX~Mn^y`i6v(CxLm_{PDxZ2H{B6S+#sp%ZE6azMQAWK3SG-Ls<9l) zjGzC;Zyh4+iDG~2F2fx&6cRoj+_juEGHEfwujz4?%CO}phv-_3B&RH6l?P)ef`*B# zC)*~98ODd(k0RQ5mv^F`CX6FW(S`0u)7HCVuHDdDPx;VZXUxB?$e;$AU!w zW74@dITtp2NR6JK8Bv-jHHOrRRbeIlp0_;gc7vm|1%mwK)obzG<3f!E7vBEjzz;Xi zB@*Wbsay=5z*wbB0~@qChfEERtNy%)wF>F$1*@0UAM##mfR!^6|K!g}tp+7*e;ZCn zmO2E90=eCqC4>qD_WC@`7pK3}79}Q}*cYdni@16m4JY{&@v+B&)n1QUeMu5Rv}%L3 zbZ(L)x^ZZacp zNZ7a_EPiEtp-U>FPs0nGO&J@bYbbKEJd{0iGD)9*TQ5kFneBVYmf->qRPLgQ)cmeh_T3Gw9P|HYOQD8*`hRUHNBWfR)rI>-I7TwTYC(k5u=+UPbke@s0+}IJO%%YC=iL zUb7LinFIG30qWMeoFM&G|# zqI(C1x1LiRui~8iDtk+V$oK|yt%V?$L?CMq7VeI2!^zx!tWLT+PV`v*`9XbbNHx}s z2a?GBELcRxn@;uZky&Oa%w4^%;$BCTTeL}-*4Gzy_!wx12&)4)1zK-)DCK{pMG7Gv z#+VTkbN}P$f6b4mcntrncewO*QH-rAU>)CFFh?I4%&UsoyW)}0z@tU%k8Yn8AgVW< zwJ~SZ8sSO26h#1kkfjr(Z#^w=hx@}baw+uJTZ!R>NAXB$WutsZh!n`d|Sn z7flA_$pZlMyojx;CrW)vyZ)>vB>0p46zjvRXzT^d#cB*pk8QM>KcI8)d;`*bYXbX#%dRp(shg7Sydt z;un-k{8IiVvW*-7U=8_NPNPGX)z4`094GNvNt0OGkTenZ?n5E={LQc|T=@zs5hzrN zbQT$}CQ7M}qv<-obouUn+cO#4$p^EP(RYz&{qIELo4!wZ$K>=k#iYejjo}b_g$3>9 zA9h5o^4-Xxi+tio6G{0%W>tVf~r*uyvxsi=&>mv8!X z5}n)3W+c|P)@#qE^oggs?=yRcCqL}^)Msxi{y8;qWQaySigz4!|2GRj{~Crn4F3Yw z-iqxSEA>>?y%tG-I&c_W##fI_EuE?xlv@qqpSq*d9q;=abd}!zd(ipkDJTctCBA!x zEV@Yg&$OWr4di8j_nlZ?)9nJDf57!#W~Dd+N68Dv9(cM=z=F%B{qQhsgvf*P{10Ao z`h8Myc^6~Oy^_t}!cynkk<@utwSMkN86uf-F5Q|FQm!v=XOB~BJL{38Z}cI%Sa9M{ zU7tTqi4w~&d7!!-{D92x-Z$AAS5gKpUx>N5l75LHpn$9?$lw`Cj@|V^;qM&M*LEoc5q)`BO7V}R^*;tsa3`ZJAGfO8F3`Wn+Q`9zM$Z@R*cXlxyY4k4j+MH(T7wZAe z-)OyPc5||pA)#D~#vTcV66vP4h0!pc!-&L;AtCBE8I(}=V-Po(((`;MYSfKalDory$-p|j z1vs4y)Wb;V|A(rt4vM31wq9V7MG{!tZP^5OcL}g)LU6a>4#8z{cL?qh5;Qo$U4j$b zCAfRgkLRs>-{*eSRWtw1R!wbBcb{|m{16s%GsiS(fi)p({3>7Y>(K|4Q09mAUsOs( zEUT5gmqw4XTv?4HcLkqcGqdf9v^!v}w}^aQdvodKAuQysqOa^~5>VR>6s_pqa;eQb zXVfjI9<|)%Q3EB3S@6IR)zNf`RUPzy%5 zNV-<$XFHw6v~mh_4OuA@v(@9n*QB_>-8``utN*VCbIh-2FpemN$$W$e(16vo{aTp$ z8$@u^-wDWBp4f!f7;z~f;4U#5VmplX1I!=H;GWZ5^u(Pg4EEg-{DrsQc?#vETq?s1 zt<&vDPKLtiN)>Q6RI8_Q)QaL`e(H9FZqWNfobrx7Qk?&7CuNYZzzb}Au`whHT2=48 zdni8O{&M76Pb}_9Y^6hjCqX*!`^nH<_j5cMX$S|I+C!t#7mVNWI|s+dYllxgz;=m? zy3em&Oe=ksG=<3Ld9So34JH~Is z6;{*#YWc(W@YO)e4GO`N=27k!YKxgYHeQkx%+=U~D<}VYy~>@&A6E5xtHTeh`*lYG zt$B7}fb&|}6s1d;tCJGJ@^o$ef0k13y0}iZ3tQR>aLBi$3vgbx_B2iC?nPLxXy;cL z=@vyOCcboRHgbv1s{3%=l8Mw<(dzB%n5rj_hxjlB8K&R(yqv0}GP1$OO_`oly*k*Z zka%cLhnp9z(H#xyn)HA7@+F~Ee7Ss5FAlLs&&e(rN;-Or8$35Pej@PlK3u_IPiZ`tLNQM(41U zk>fbFbL@0&&g;f|%zZ*2YXQMg=h`a_wPO`N{xpf^$gR_n;CtKVx!U zLynhubkOEORZwegC#?3{tSu>1%U?=fyUVl&KhIyZ?T#~At-}%eYElR9d{%!eCVW9r zx~7>OM?yLnuG>)m>a>N;DQOv|3mS$x%cD7$&)Nxi~L0P zs~lm6?=Au1{vEe@*PhyYFv8xKsN5>FYvmw@BEJ^L&HWI{4F!Ox< zv#R7cr~hwCOk!{S>+~h9x>;AWfMsTg5vm-G1tZTbOR$JvUxx^p)eG8i9V<_xX^ky5 zBVTRs1$mV|o84ucVC`0+3JIe2*+@;~>&eV?XH~;N|7ZKAs7qeFug%i75UD(qaP<{l zPKmiU#3W0L+=hY;FWyG^QKyf~dw=azwyx3Dif^}ov8S8T-4!=7}smq;Pm+g zx*7nG`_qSD1)mQ}0L(l+n~jC*Gf9pMCfHo*K~VA>D~geGvWM2y;EjAhAuYj6TZ4^_ z9u|Z)RE{2|B^&pnXZ*cr81rH%F$s~h9-0C*LA3vO9-Kb7?IA4=inCEL=f)qEFS-S< z1T%tNNy6?@vSTq zLc+hu!5T8xiow|<#XVb}BS@z%m^eyR`jvN!&W$P2x`meeTNg|Zn&d@aEY0EwuYdUh zG9FU?eDs3Jp)BqHPKO4O#L3E?Jm8%T&oP3ejl*`fS2y|fj@|p-^+e!ll|3a zH>d>Z-iwV`d^{G@i<`)k#mj}IhJ*Vd=+zhA+mgCVV1ustm%V~f4qu7Te_D%J3v;)y zBhr^OS+=@M^`^VWD7}KGEmRn5rSs?F`hQ!81R#nY;tQZMp7Wl>;J@Il7$)e@YojGH z`yvGYM%(F%lwhUWHBit!aQ*d)8RH&IIgTf|8!?A8!I6Lg@oeZeHk)3LlRE2j(`8QZ zWEajqu1li$5&dHXv_C(ebsbbT+Ut0udaysl3S;!;0CaT>G!PC_?h^UNW+5(Vkje;@OKnEe|-ZwhH;&pG7PSrsc`PM zH&U?#fy1q%R6}t;6m(`{4@#Z1iksQ^gu9|qIG#eU#xEv)izq7MqaZYRexI>$q>K?d zO;J%*A$-&>v3VZXQe^Gf%f${r7oDGPJ<fqZw8arc9PF@=#dm;1R~R#gJ*GZS z@;&04RiHEpG~-Xz#bfreo-g|c9`n!1E^&GK!wlH>Ekae|ZC5`yXoU?X8<6f#m?&s1 zBE;AZ++KmByyUMwX?%N|quQDY97w&ne6dJVu?jA{LHYfuy#eJ;xJBwcPN-7=7gak5 zd6W_OQQIM{&Xfgz_@t%#`WS%?QA1kYZ_h58MFpLZKkzPJ3tTS)PFhi)`i z;6&%r)SfI1-J2CR=XD2nTKn-rU6gVEaT7?%LY6$kn;ln{U@STpP6j~m*fu2RvJ93auKXd(EgJW#M_g~JLIwnY_i}e;vcV5pjx0i5Vl1R{YSQ_=MAU9&q;V(O z$3=JKc(KPFtysV_YOxed>ivV6`s7n22}O)flO1>0I2Z8-@zGPSQTE+;kBHZrVHpx| zW*P{aUwwVk??>Br%bY0dY``H=bQ}p8t(mp2jK6cr8C*{or22AFfO(2Gr^gN<7zm!a ztOHMIEWP>!h=&}&HT8EtOG}{Q1J%AC%EQZeq<(GUEbPqyx4iRu;EzwPgw8a7WlN5w z^}<9}CluNCZa#ufHy5N?G)M1$N~gvg#?DG>mxg%9x@^@g%#stld_i!vX;?=&jGn|k z=KF?N@7C&93W`?vY;|R;@$|u#m&q9}zYYCoZW#^>=2O1JZBLv!OaHC0bbc5mjQ#R# z`O#XQ{KVW_M?EIOtvAk5)ZvgjIKpWB8lz7BL-K_~l8?}hAPqeN&k#dLLtK#V=kA2UB8I$?o1&<~ zQYNY>(9J62qUV)Uo*P+sns?`5i ztnv!>GKmc5g{Bq%tJP&|1-9I`Z+E---4>^0*1DX}j7Y6)(^M`HWXLHm>n&sgv3mUK z?|*?)LY_C2i>%vUW)1M(mv@r^ID_|s7n|!=%}rAy7=#8c)6w#)=N*KPe@q9H2l;X+ zG$|o#8RdjkC!>sv;XYKD>!`wcOI+5ZOZF~{ra(vCIbBn_TOi5L7FSS%itUBu4p1Z>w4JO&oPSE#kVDhe7R3u6zQ2YSioJoYn(CO=-zf zyGKSgwyZ^-TO3V*Eb1QBJM3h@IjZGga|U3t2u)gGQvQ4e96^Ph9)OG|E{2T_Ok$aQ zN0kTihhPtkKHo35#@g^S-yie4*?HLS-1z)Gb>11ywD@NBncl6<~z*DYi7(r;B?1{vnTv%i2C@MzN*PlN64tFmz!im(scaQB1yRy>RX zgFX=_VtkXO`+<6r?4xrprrxiq;qlwD!wKk6TYJViWa;&8%pNpnK%+Xpzis!2D!y5m z`JmumB7z;mx1+rGMcbskGn49)8+IN}KYMwKlMzDg4Br?5<+^H?U2SaodYga!;57n> z44m4`8iLz8&dh{31Q*rlMiEyz#W%X3cKQKr6Oq2;sM3h@m75=^8AtS!c2p{690^t& z#DVoN>9e5px%|Q)p4!((c!W{qrety-sD=Fug(8aM6h7?a{M2WV$Z$P0>-*+C@q4Em zp{25nx8^4Ks{R0`qId{8v_kBC8a%_Z;cjt@r8Kv3Y_W`fxs?vEjLvP?X(o;EnG%>E zK05WY7M{Eu^7G%w&0|^v*^=x#dVFd{Zuy_sB4~UbA}7@Q@tl~#GXH!uVfOO~jrYTci-BCm%y0j1LQz;uc(2k!fc~GmdLN1i=R^H~Y^9<`mVKjJ3 zIhd^}3wF%XY5Kg{d^j#{P^Le)b+to&nJh!7pss1a$A(m(^{2k7YPw2${FN~>mO9U; z7N#$ZRq$5K(tL8(x2oQw!0$W55zY!+`)`Pxxv9$3XGt6FINZ|*u_xWsbB9tC(;m8i zXyyr6$BC^;^yV5UzW32)U-G8G#53<`#1jRuy<_+-=>|R`e0&z+n4vIK~mr zs&mmW3=n};iL|F+KG4R8tziUf@*HbenJ~(81MG3FF?g{s~`Y%)dA`Z?t9JUw9fy2(*)%kmFjo@UpaDK*EfiVrE#& zd2?2tSQN*N3>>{LAp*Ve)7Ubnx-mP>6%Od|M7%6VgROudDH-n>$F_Kl5B{Uu31Fk( zhB9=o8|XPUUARj%_7EIiYORW-)ChA! zUGu4sKJ%@=w>TjD3paca7TTJan6eZxmLCEjThJU~+Jgof}%g97sr6oYgzti;N=$|FQ-~H;6Dy9jvzutGDn3XkO$oDp%*Ms(R zjuv<@{YP$X8iERR7of+1ALvHWW&Jny*B7s>5cZnJQx5pz#snyk$$!nBy$aCK*a~Mk z?tRK*a(P*V)#8hCD+NQSYbWrw*YsBOz{s3-US6s}jK@_%tdPA#83l|IG+Rtp-cM}M zhPczV>Zc#>23q#b*$`WNL4-AJsAN~O_PpV8L;a2kTL{`_l)UCh)RFM$oHmha0iQ|Y zhfGJ*38ihvz7TYhK3l1M@udyAzCai zR)Ln|@~o}G8@H9Q9$&=UwbU05oyR!$f(jxy&I_#r`xS{-Wd(eZesNMCVFf>#25T#% z6;=}2iQqsnIGQvN^Aq?yY-{ zxWokoSajQ22IF<5NFk#^Xd^XBh7}%C?fH-!?wCkGUZ=r`d!?P3eUi+Z$t)s(t}HhKrZ7qcyYqBRY%qC<9IaZ zh}%U;RGK`y%g{^0a1O2x_D`1V&q=dUQy(D28LP8Co*$A-HA4YZKh|l86~bT#mzA*e zHR>w3ZMS+=M8r5jO2!OZUePy0#zrI*!H74XssiatW&6AGY`7o#2HFXotICKg1yXR8 zCooEwt0>{6$dhA;n)2f!vBi)@VhB;Hn!g)v?a4QKT=*_+4|1aYo101ZKVdDITc{9Q zWztJqS)pJ1nI7w+ID-YI-gnpMpFeO&Jl12TL)Sxq5KJdnaeoaWmLnU8LNBw@8tu-q za@k)3@+&Sgv#k**gzF4DP7XS(D{lDWkh;UDeU7nU*n|f&;cIA3+FG*2iJv)S*1MtC zus=#^32d#KE(5X5eDu?Ze*if#?_5j;oKZj&Xklsu?$RIP3J?u-35KSLCFN(7jl%-b zbNwVs3`^HVxY}ZE*k@|54`~;}HHn#x{Bvx)P1U{ZJK4=_?nJ5?=ws~tJ8_E37#8Ah z$*U8q_~kH_aE%%6GC)e+jIgfhnHR5xSat!@bE-b+hOkUNKelb~(V-IG&2KDN+~)u(Ya_NxgbIPG=A3r~jNp zb*^Q(emFy=4#$Os5i;$YMwFyPjHBFUgH8`(bi;Cb!Jjf^Ei^aJx!|NhCKN?V|XqA_A$tCgXyvG;DJmC#~IXkbnips|J#4KpJ!rd8)# zk{CK+u&#R0>p|jf&A9+zY;JTe(C;fWS*M)l^0f~Zb5~dd+DFqc@u@fWJ;?#kOgH4jR@uWY_}-sQ*Dtxt{W$FSxX|5>Ef6yZfU9^s^1+eWk`%W= zi+>TBKpmyK%Ieng6`moTDhd{?Q*Hp$eUwxOVFPH3l1;I#>1bP}ZO+XF`}hXx{@M)5 zu$Kpl;K@~wOf=A1;e>7uSo4A)uWAfgRUwRC{g16k^a>#&1IPis9s~{Lxjqz%O&W2TM%4-1EU)mg2yhDf zk0PEH<(IjNMaBG*&GDK4`LUSQt3-USDWK%_Te&WXWx#9P%6eHzV)2~xLhjk=A`f+{ z$Kwg!_y=`Q&cWsvMdI;+0sfpoc`-?~Yj${3Tgo_|z^+Z=O@Z_BLb(%}7gqGBdhMW5 zBHp04n4(^qL4?$e6z4}kxrvjaE z%DnLycr`d3wv4n&y4R#aa3H+|^8QYxQz?^6>UJnHF{(~|5x--I&*|$+Ij_{Uz{W=b zm86{CFr8v(YyTjsq0@V!dY{0r*&T(7`-fBJR#$GLM!_19y~(|-X=$>rs>EU@DED&d#FD>3Icy}Krs@nI|3j}7qCLoJLx z67~t-;(DaKC00B~=oq~$m9^Cm*(p(=z)ztA985+l23jGY+1tp$uq3PEJ_ZTWz=`6h zj7Tfg6UH}w94i`1cHP>qUBNsOFmV#i(2nV>5aAos#c_0u>|Z^-pP{LuqjUPf;}N zokN!VR!uM{Med^fwzX`hM6Lai^U*mmoxXH#P*0(w*j}q00^u-_3ftVrkKbekl$4Ju z!@}qwkL+n08L6b^WKa~g370FrXil384!9n|DPkjzLq`67%>fW~$F*8b2>(af;9Yhg z@~}I;R?3Svrp_YIAp)s-Wy*#$ZqT$@5f%FYJz`$PV5`E`r(FKhQ;tqvTedm)0VD28 zn&}6iMWAUL*4hofk|EBgt4&-$=ANv*;=8x66gMDPd*T{(eq_jh<-bZ!2456O(AU1% z%dO?0@Cge1IQ~wuaYhRZS{aYYXjesK$&+?EZbFwL;A~nohd@8q>6TWGtVtaM!&-2* zt5_}j$q-y??7s8lMY}b5>v5RTnWL-x%$Ozn^}3dt@i*4T%O4PU1HO~qJ1+dSdDJvd ztqDO^2hmO`ZP27#)NgM>h-b5fJQ#v9J~Z|wA(}<;_(%@iVUPFt8q7EIYAV6-#Z8A>~{@TtdkDlm1d4f1SxjNDx|xR~|X}E(39j?<$90Utz2q4JqN4fMfB6 ztdwatBq4vz9>9agaKQ(+NBgA9JFB__J)0B@jnMrzN87A`mR@xFqtQ?6?ZRt*uHf&C zBWY-U-LPwiW%_+%Q3octGf+Ja9OrVJo~*8pd>UaWr1&x0+@KiyFgi|sV%eLfg%u-+ z{L^RXx3fHA8#bV<>hj#G8k#|vUAnT8`}I9JpdD5reMrF-WM+w7->=>%F9{Ws2esNE zclmsm!Ni!el07D!<$bOMZC}L~?4Qlw4Omw%*Zi**0Od`FlkBTx`lMcy6yfT(WYA%SJm+S(BX@u4U6RD=rm<>~qitP$L( z@~LO3`*JXy;6s}RjHcvrLyy##MnF+B^$){GmcIE42FDp=&Z%?^{?<~BuM>A3cpY~V zMZ~O$ivko`is7@49eV<8ui@6gt_MpGT_s`S0W4DakcZngSwwdMn%Cfn;1Mm;NNWq- zIQJA_%e%g1Kt0Y|S@2M2z_m}?w}f#s%8w|6f*7C^#%2$u6%AL@{$EwE7T%efkRy>k z3?yaYQ>iNUsXKt9s74zxCJI{-F${UMjX0t>>l=a24i)@`ME}eM8m*rC1OFWWI&^Yj zOu1N>_6d9UmhKq;8(d$J>zAA)+AnUhogRK-w7a0MWFWDT#Xa9)A=c|-Xnr>DI3(-! zm{~$tc_)O}B8uGjoYNur_;QLa4M)aXGMBhs!fu_z;mI}8rJGx0(FNNs+-0?A8>IrC z&N3TP0)OPdu0rnxg@y=~jN(7}t-cG%RUZ5CYJPC#Z+2R_js_bm9Yf*8p+moxo{Gc$+ z4=k)z0o8>YPKwHHIiik*T(D8DAmfU#&BDQyI!k+0xIc%7WMWCr$-rxs_n9ELpYq(v zdcgje7vjEE66Up@{NH1`%zQ#O8-%uBv-J0-96e}%1m-9KxawR_(*_7OE77CBgArEJ z4ZYQ)+{7j1mbo4ev(|3r=J7O;=9JHbU^Yo#?N5o|S3#c6k7nRTYYQLntmp3o*4Qm( zXsKUow(-QOU?Ol_V_iS(K#>5(bXn8Hx^vu_cV5qXdfbR12SXX~tSxF1F!!;1W2GZPwsJIq>lVXc zIBY-NL#TvC9#@IO%o!_h#0v04UgHPjTyca@*Kf4BAOjR`BapHWEd3-QpLhN$El}YI zj&&4iB6VD-P>XwwG!@F{pRK6UrNx?!rT;d2s*pHEyc$p1@^60mv!eoFk;GaF_%G?N z^@jY$3u4bXhwUl4=bCDkzYNu(Mi;BC4Xax@WxYshgKFF1U><7qF@5s?ZGz)!O=nKF#%$LFzNCgmkcM z#Z=xBqx{oCwMaT5>ICoFG)UWhdSm>#*3`S++L4E#Z`#b|$Ed4XcnwNM28X--R(v$F z>VdnTVv9=(-=Wql~;sPMn`o>au!E9}%YcFjpJ! zF5fAz9DOtDKj;_PpGs3wa~pw;C`JBR&HTUF$v3~8y?h=!{_XZx5Rt3k5bRRGz9;_w zMFci9*J3VsSB-1vo*W+$IYqS2e>rrI>A-^*`}g_8z=kFB`E z9$?sO4>pTdgP!-3?f)`^n3%xNr2vpRdYaUSm&%a8Tsh<@u@IDp5d@KKRg4D$Ac%1R zCzPcl(B8j85jqOLjV5(g4F7nj=cd4eydW#`NH8$8;X*CInuS_w?0v0}A05Vy=)Mru_qSl}W|7I)IR%QoWs`SRX( z7-EqyaZsw3+JYV4YzszN^|!xI(_Ve1tWQ3z(x7Lh1bk?@TsZyDSHBqg6T$m5IBz}- zN3bLNf`X<;QkjPKFSVA6gh{i6m*O1H4HXi(>^K)gepIaq&;|Am7UO>%3W``3klUDu zgN^p7VshiEnj+qP>8n=q4zG6I%{!acT z4L7`<4!^t~aBGmH`Ic^GY9D404Qxoiczu+r!XIrQ-OT!ie8ADm*Pg4V69YXw&hw*= zWI)%&QW4plapU=Lta%9}k_C|qWT`;$_4O`^0g?nw6GVjR#Fl{_k9Pec$GG<38)z^- zEi;qH7u_(x7`tLbs8kLky+?j!{fvdxHtzS9VlP!Q!fm-k1$5(t0ZhaSo{nptmTtuq z<8MO$;kCA06(SUBem9xV@*^3{+~!4n6K(gvR-pu|f7Zd;q^Mr~edn9vj?Z{dC6(;f-)y>>1V6w}EoD{wke@&Y=EAthdtVYg!i*`)2?_tC z<}>+c@+bfQCx0vpe+U957N1^a^}nP4h0fXo$SZ2eq__Ra$@1b_$$+AlZQ7#uLkCX= zpj+0gTM)GmX&j#_ZG^J}HPJtm0%_$f0@6Ja4^53FuOa!;eD}T2)026(o##`u_!~Rt z%Zv2D+HGFnPIDp(3hP(m%*Q;E>ZFKN-enq)S5<+8py3+$l!3PBKuTp6Cr z*^h&%r|(STG~*N5Hs=-^_NoAhrKzSx;*$_IXr@*8tJ~$)y2!~%D<^J8ly!E5ltO1% z9^LeMTj+gGp`loDZP%JAGQF{iaP!b=Ar<<)XOii@HX-y<$#L28>r?8fqDn0xLKTgv zdA;dgRSx2sThwYa)2RqNo*k7YkLKo^7F+}ZbJ^>c2jNwZSFZP0;gcaCWgiW^hcmcw z1Rpfi;~ydyXwznMiF1G%b&zKddJnAml_ND2s34s2*0og;D08!8`ZJYy#vc9ez2JXO>5j~(veP8{@55@fP_2Qp7}V)r)n zVh=Ha(`b!tpiD)yUU+}BK|VptS$wgw?1@S1QW672nwX@e%GmJ~a{OU87wL7MkVrrHF4a6T0YxLAMn5u$79h|RYFPU@c zJn3Fo*#kbfThI;t6vEeoTROn24UK0EdurHE+LBr=y>ULUXS}Qox z*!A`?X+r@w2-)MM+UL)iyP+g1HqHIh!jBzYT_Jh>w^?_`!0SNF9xn#G?kxS^VgBVl zjCdeC^ZeJbU`+ed+JQ{1H&=fUx2R^Rcc)Q@T?P_H;&2G^?x1A{-&U-kQ>ADNPUC@n zhZhq32~zXJIrbzJsRs4>`SNN{QrXjYA;Gr!@m3t&gDV&L5KW~pEj$N?bMQnYh^3-+J&(Zqm^uxWS-vP#G0}`7iJeo^ z>#83n$LKY*mWLRWeff#CV|yx!+oL3h@0z9Tycj}VwT`N-gfbC;KSI>oIyD)l$hAeZ(@+j3Xfw7v#tbcAdLn<+<*?Drl%!G764wxt)CIP z7>1PZM9ZG|B&m0_gH}srg0eU)MMf~}$`!4rs9;_DpTA!`A$GhDzNp~#L+dD((_(#D zAczy&O9L_-p|81tws?_#C)2}<@m)wV!b>29@qW(;C?a;5h7?)vV9)|ZRo8fhQtG!G zH*VxI7qhMf)H1YFRS-+z3cE?UNXPq6f=~LXkTY>ePhC=>iwb4iMJmJz!fv>*s=5+9 zQK^t$+N18cz+suWy4AeNb!~e|P^GquHh}4CI@FXCzx!q-y0Cmrfym)CO)od}{k{IW zWct9VvSkJM{(jR|q4~7#RSea75U%Pcuot%f7EJ)a0j8 zNV-l;DpVEFw?Fcz@8x6xxu1x4#c_#MyCg6{&ip)%ofKJz*uyh+8q=zjaB&&sHY4Y|sy3Dyi9qxGwJKIkcH2!BaAHYHJZxzs2ELjPT zvWlt~t`~Zagut<0>6@DXS#73HQ9O=>r;OtAte}w(47sr{sW{wd{P%^v2Tz!YxHvXGH%rrnvt#qUTrnU$m~exf7X5PO%=0DO!|%PN{h0? z#1X}DPWs~#?VujpSO&y2t^sMTcinqxH^Tf!2AbgZQ?_F`1v`^rsgbxsTC9a*q2)+X zoY^w5he1IV_Wr%!!moRg&bKI=TKoq%0E zf!OMr3}6(1p)qr!3(T(jnI*$N02f!)0j49YUTrq5PcMy-3dJAFZ*3()Vi$Wy#WfB5 z-m%0~Ttw2X{sR|)f+ovO{)wru?4bzMn7mK;RTznvC~R2n)uk~BNC9jlQIGc(aQjVl zz{m?)XA!_7>kF;yn{C}N)%}esyMaovEdy3 z4dU6@4#xlU6A70w^}Xa5B`i(h#HTEoO&xe!Y5hKLJ152)NN!=ykSV3&Ib))dAZlY` zSzKW-N#lbeXX?od5}1Kk#w7Ye{ue#U2!&%`cM88w1Y895iSAJBtxW6uQ#w9sP+H74PbmMtYoR#gn`6hK$v`&3>I#IPL|3Khtmh#HH3MNy_X~ zlMn$h%%|YhYN;5g3YaM$6$SCM6eb`06#kqXgHjg}2raG)PT=NY+-xqTSg-9bhYRxf zI8@YtTS()*WK9cgxeKdxGin-XH+5yRY3asWab;B@y{l@ntNDKyonKe-&;F%@KPJ3p z-4}1xP|m2*;|PB_VQ9)D1#*@{cgLlsqk}bTM|dL!JL144NGTxSNk5~e_gFV%)FhM^ zSG9AYG71ZJBs|#wH?tQjcb7>#5O_84 zpVoU+IBYvR?hNHu(X+)4sd&wfho<Hgf;RIML%@l>H@%q1Esj$xUc=cuvH>-L|B*;rX}b%BN-g z<7VR?LP|TE;>DQpMSi+9>t6^uHVBuCglH#YfB%|iZms&iu0%Ta!Mjxk5pgwcDjyXW z=&w4g)rdcec)Ilkh-O_6o(`_Q6@5ARA{M3oMFeA=PmU?~g0(jk*PRloRr3#O*MON5 zIqBXa=8b3rvcJ5=TH6JN*LLNBxecm6vW>fnSxx`ci>HI6+wgWR6i)m>XgSs54g5$*zN*Aq{r zYN_`b zHt0_nIp@S4pg8Ta~`4oKnrSPMHB;vO1~Ul2kU!d#4vVwfe70!>gjAjhENwV(qwBC zv44}#uF5@^wi%?EflX@7h>+OxjG}g7CyYdsi|QyT}QQ!xNza1z!sn({(mbl z;Iv^-3>)j53Sq}h;o^}l?+a6tib=dXhY+q&JTd4eSWn*cUiBrLAAfrLmnr z*f@qHkl z>q+iTCXGGY*$`gIa@eV8>0oV|Ttsr#Q_pXt71ud#MztDbUou~w|6d#}+6KX6+?aN3 z=HU3hyxDjm!JN}CuX{a@4qrm%X_0cFwZwU5quYHOB&Hgos!f!R)8zt0tB1?6-GOA< zv=QOg2$jk3&OrYJ1g1e7xsCvWoL59_M|Ez5e0KXf@_NnFLH9&tI}>XJRnu{ok{=PC z)N$9Eu|ysr`x?pNX=T1|%C|G5#ww~K-zL2F#S9`;i4OUczn}j6wS-`PQTHpN;p#gb zB(1?ap0C{Gxd>*!5-a|G z@#6@fjrDNnBOoxC!;*Uz=yHMyPwt)qw&$=S8mi$HShZ0m@W_k+hkS^H5~YCL%Cv{K`njrH3r$FTZf4&2p!mA&URZiplwH{lovDf& z)duyh6yx)9MSig1USd6WV-D@zD8@e-Ko*1?(rJPp#V0xF?b!YK!nFlL>~oe7+Yzct zb4kJJ+awO8k{Xs&j`l&B>>(H#4mpY(X=R-k%6G3X5x$xWyQ6O^qBvCLueKy=S0Glk zzqdaQB_J5Oobe`s_Xa((`@g0CK^>}#`yS5(@DKU%ey28F9_gvB?B~8q8?*XrDUslmNmFz8DLHdxrpmKX2vS@e^g#XPBo96nF=~;b>aA~&J}#k?9Dm->ijX0H z!Eeb>G7@8L91%ohrpacAM5?pGK3H@vZlnxtU{0YEObueyN5}`a?`c8NB9XZ8Y)J3A zLx5qJYbLspUx*x@Jaovcv?T=vLT$V0s;KgsF=;2pqSWt^E}}lYF|tkSy4We3aD0K$ zV=QeSYV@Xwzje+OV;V~5*@6Y^lJAvk)#TY*Gm7%{So%j#vslSO)l@uA2+`e+k*91 z{@ZrHaAfh!RIPaSTTPzJ|7vB^em4x%0QrmK zU^gnJfp;7k{r<7CW*1baa)NB`*zfmI=Lm9pgG_li?_S@IVc4@c^>~H~Pw7p!LhDQ} zlz%C8dA^Mwk&SB07NV)-8#mf$VeQ&I;KWw%+8C9$(|6_Nn2839U8@1bTzOBH0c=D+ zWXDk=D-%D0&Gi=NVVYQUZ2npiZxjKerSvb95FQF<(yZZYTzGOUm%FHT4Og`au_t}m z;ZVe(!mSm7g=`PsO$%eV)!;Fag-2FFsGCdD7W0uEEkNNr3|$f5C1%iY-V^i$`y5H@ zhX|kg=kp3>1_xJIS=j0v>}1;oG+iU+mai#xv8jhos6OJSH`+PhSwcAZi&6l{6)83a z@-njYn)mWLnY=)7V{nJKN(%ZaJ&?{uI$=)(C z2@tqq!p$&2zeX$_Qzzr*MHf8x3!?$?HpamLjF5oWgD-0=W=si^m5>)@qbE>-;-4Ld zKps5;McDjgn4GW)waSAb3Tq^ET2ntq{ljNpyWENL8$hSx#SD-t+`d6{Z}Nv_TKEYW zesLnvgX$f^s`z0@MO(R~NVgegYVxi1EJjOQnKfxV_TB8sq)biy&>B zOMJAQIa|M8T9wv^uMpY`x$F)$Q@F_dr!8l$XD?s#DVMn;Fg*14CO_emPk5GI9^EP2 z9Tl{zgmfky<{VtzXD6JdAe*1RWx2TD^=({f5qK5`4Pu&j`O*_bv9rB<6SGO)d?^&M zmGg{0m#55IXUm7BuJGk^9;m0VF>P-Cekd(EffvJ;T%{_ zb6?Z!n)#{k(@#p->9!SCeIg-~6L6|T{?OI0K82cXOK z18EKz{@irv-QVsaoC3zcn+#d7WmmrYlqM zcEtk1H<6Dbmy$q{WmYX}5_D+_r^`V;jRfZS2aNbxKWY5lV=gy`*>=ww4K_mi3ZQ^+ z;`Eme)u3Z7G-A*@gkQ5KN<(AJTSOdDLie*MQU{d@RGvLNf4(CK4Js`g?*^a92H3?h zkke7hB`kT7O2}`mMHC)re&RmK2ezegeG7Us0cRs zs+ll51y@Ey$O(BMPC7JgCGU*eRH<&g$y%SRqxsb(wFd-=r!d@+EIq>|!7w52lUfmr zEb#)hGF$xZsswTy@|sefLguzEt2=ffG6)>F+xq2N zTr?IU4|6~OKox(Y_+3EuVWhemsaxV49MSfv^}asUemYn%t9IsWZ$Vd%O{pHG4eDxe zm8~X-NB6}^__WSIAk?;@}o#;zJ2HN4Qu;a3h;y; z!*Gi$01j1`MqkIXcPLfBlF-DXlmM3H&uPDvpUL5Rf}dN+;iB}P&GV@Tl^Q8W(UFpS z^zZ>pEO9*9zz&~AU;)As6VChkKYY9lrVYST!eFv@TnBkBC1!1<<6zbck&K%K5BR+W z0cKq8!B0s1=jCgwUQZ=(Ekw$sV(0zblMVihq~)VyVA^=2NOgJ0&xSAx3xqIJTVxZ% zAmBj_`v4hA#SRvh7cR;g5*Z4d9hNQ_(sW_pKRYRVUW=beigPkxW6SnCY5CUMm4l!^ z6LZv+dF9==O`F-Ij1wD;WIhZV>wwdhK3Ywc+ zmc@?!Bs+@h`bu)ya$vI~H)B-5B%j0GPRlb31DBf!g)YCZT+|FJ1D&7zU0_6Z2u^I<@qN`{Q17tfGGRa1EguL zWthPX_hmxq?aFO=_8_~x^;}!I_a`(*3Pb@EA;4`B?nn(yG0ajsV}-A_s|tAe4-FQm zYPNaY1II?|jX3`wRc{&9X7p!m2X_lDMMH3RYk^|H-J!wVU5mG9ao6JR?k=ThkpcyZ zyBCMP>C7|#nRl&w@gW~W?sI-;?`!X~>{G!wk~8Z822}FhXw@a6g%TC%(xG=HPqf>s zgy2HxORC`Aji&02KPZ-g)V{EK+d0-Y(y8au8vST!cuw}kKi@kC-L+te z5jq+@$|TmixJPjNcQg572yZllb`}+(_W69qCFlcCxa+4ZBvtchBS8G z0j7|g+vgZ!1fraZ8-l7U#v0P+dYhTHjTiEf@EiUKwe9DOCI~$Idd2z%NRTexuyolB z>NN#lf>n4Bt%yoK?UFCh*-C;JtZJ8A!up0&k~$kyUc`@?^mpFS?G-s_=e;5T=Nm0A zQ`0_06}rUNSW)rbtS7PZya98N4c}4jUTHPrhR<~F4^IvmzYmai(lmvCBfeIM+=W;v zfV1-1@Mq-^Cjz384SCu=z3PA_J92UEjbO0NZ&M8407V_bY5 z8B*LnniL{Un(qEJxVLgf*P&)odE({fUD)0DcvH4crn#^JhKRo)EE3{e*74ovuU5^f z?K-ldj?e4jns15DrMnT^^Yoxh(R)V_QNz(9-rn1m*|mA?if-1VsO z=eGwuD)tHdG@jQUI=_5|_ zJ78DxZK|$3;ZL17zFdHavxPP=VX!QH7r{lq z({)&&mxK3kxmh*YRB8-`$X1!NA%*4`6iZ^SHfC~HGAl^9#-HHX zPa#+-k^pB~SE?~Aw1cPfy^wwD6a5W2C0vi&V&62G0U7Uz=ctcXW}b~M1GXC%H9M>S zyx#)(^i?AuxX*|GcxOf|eJwp#ulQ`-oXd56&tPDua3r4mTC~kFXfcv%Upj6I~oi6o__R@!h z8QCPck$}h7xR{ckp#sN=(Yi0Arlb|1-`FTG_)nzIN`{#H{%P2cg*HTyBi&A#$!icgXYsk1PzhI-DoV^{mX(7HZR>~2$W(8lz zsO$&}XaqEEs};akW&#W`GLdh|FozY_;KPdg$P@=PSslP_VhpW>+3=xBL+GTewi9P^ z?;ZHoYTMtf^1ZR@ELnTD>Z};jgZkkI?W0rv)D>@zLwKm!R!cy*gehWrqmay(lC8@+ z&a~7UEv_|D+Ai{)SN*8sn0SR9_$4Z*tdcrOvr)@(q z7?Ju}Wa}JGN2A9K`~T6uHrZ51VfOP#FYW&-WmvYsOvL_n4{Wk;`7AV_49LSr1@ho@ zy=kCne8KcR82*rfXO7KnroPjUi0k+8B<4YL;(get-(8JZT63Shsw=Q$2w8LfmZM*74a;|a_)yCn*?Y~(hk@} zZgoYZd1Vbkkyh9q<^+$xs>vy8Ot9x2J!fQlp7VfV=_rhQ=3_v^NlGCi@|2rS;;yOq zWShueb_Epwde_760OaVRZi36Q(kgBjSm1>?SpfvqxHdqv@8FzmL$KRqawxUt!LSJE z8dCz`(4ibEf66D(IxS^i%vAov`4@NJYc8TbPrR)>{6o!GkkJI4ckXL>(^um)n>?(| z<+j+)CIjP)ixI~rkd-2Up~_=5p~jgP># zjTErK%v;5?S&(>p9UGb=hq}8vVh{$Q>#xX}Pam~rb;yInX_j(O(ctfhZl!4fzysHf zJcgpMSry_*V;%WR?&jksDQep%F+kO0 zE`OUg6$3@s_*qw{BDv`CUgN${10twnRfTq@y!yZ2*zL?J8dKNyTm`Fq$mZ6sdCo&| zrsk#Rh;sDEO~~@;Y&6ozE=eQ@EDR2|R;K!?t#^oNhx(zy28=rX#w|1_rkG1M-FhP~ z_PgLSn?SJ!+44VPbh8%kXRAL!v{ROLe9?;)MnXXS3`tio3{n5YHPr*I=G}XmU z9cX10F_ljT^Ob`Wl5h(2N9hvRcM6aFW^haFF=4N3FZ`xY_)!c_fj#96khZ2)bl=QB zJXtQmDj9_5<|Dg5w+OmS29^@Epyn$KwjC+>)Vf!q4ct%v<3PjxS!s)-4p^eWGsX1{ z)Zdc8xJjF!|C*q&Fbq4QdH4l!Lb-mPEO~9ggzK}Ll$#u%|3irIrXz_KD20k~*4F&5 z5%nEjMcMdx-|qJBk{TOTpc?vdWfLY+ixHfzn_nMiYo0XXE0(`2!bO@$@cuib$Hq5i z)5!3lk0w*_Y^U>= zXxifD0|AB?i8^FE1g+<^O=g6%2!v7bO~J%nph`w~UA`R-bm?^5{PNE=B=TTWmStiY zX+igBG;XxDR3*9P741Rj>!oD9{&jCAAdAJq&UD2*Z)&iC`+T~v;-nG(XufQ#YKvF1 z>{)BV10tx{`n`FhbrtSpOES3ZOBS5}huOT!Ag8xHZ$+5oN+ihl(7=a~ahv;-d(1|} zB#gEt=&%=7dcHF$0DNqtT1i`z;K4RHVWSUJ1OFfjPabVHDtf7(Ywe;vSW{~vJn@}R zIv0#gYJg`stXKEdhiaW|FpF4S5#Sf_Qa=zP>=chN&(;Za%k?!Bi@Si+WAU55th#r6 ztpKrDIg)qfcg5ELk1yyhAlEkwrMF1E1%q~?j;+=9rk>tGP8#EyeB6rXm zr*~5l8-nk9kfH5@SR&1OLvS=$(;D8%llC>|dc$0{G!5y4B&0!ZGvsZ-} zdNmadq6cj!gb4hs1Z+NL@&%#>g{`PxOy;2N+Pr^n`v)~%kIxcoeDwv;qDnTkp~Z+r z9Qg)m(@>hY=57N>sM{Bc7^yyk@*>WhEa|s$W)&4^gm=pl;mC?-5Kd0@bJJeK(Gm8B z7F@GDnV7ga2lg`f;p<;W$mK5rpH7>W=bI{`)Q2f)Ya?2)So*hw00;!a*_I(vUJTb* zHkC951#6$4;lE|QzvwW<{uKqALqlBLTI@o4eEu0tf6V7=jDNSi94ubOnM(OQN*nfC z91Hdhpk{7`7&)}(ChpKr>*4@2uW}(#Ag=-ycwGZQYK+M>hUD>z_7ZC%vqawT+lEYy zf)Ta#Ll`x2VptaGu0HZKAsxWY-5s^Z@~tVawYfS%x~pwb{vrg;mChXF59}b0TFA^i zHGwCiBc!bxk@0h%MyHvy+-|7A5bPKbM*@-T~_+L~0cObSF$5;zkPwlktSl(X3 zemvMl8a&SD&<~1DL*ie-J$Ogf#|-bSLk5vndZPPiy&jV2bo2rPpo&F}EGQbJ z@H^h*nhq|z6i<_AUVy34$1!LX&2NxiNmvZS z6z@aMtDoe+4;=*~n%qTZ z_98;*O>o#z)#L&pSJF&v?{-N!@t3b@EfS8hwf(TT5Itxve^%NsEhzMgx`BmCZVco1 z??scSA)hg}6(626ZRXkdLpD;GwSX`{JRAmM@3+Bg-8+J-aCaK{M>#f8k>r`;7i3EkDhFIx? z2&NG-%{7l6JOEvJ6Xc^(!<0q7@gyQRi5%s*?X55%pW67J!fZDYFeuxy5N~d1Ts8r9 z)0heysvf-?*Oq|4yWijsHB-|26EOXf6IU2iy(I~F7d79ako6%Q5QFA|yc#iR;u738 z2-M~=`}LsS5@l}HiENeWy7Bg3m5RRqx27%Sf5xyr#=)XX7*bsW_4bK_af1hipmw{; zaRtJ@vZNBz)mkC9%%^%`b@cvttItu&}r9FCP5D~2g(!Wij4Z*p)C%uP^v?swfVKAm3T;J?mM z;+*#^VrJt4E;|H31>Ht^kS}WT%=z!0;k-?>Wq+jtF^XvEsSuIj%0H!zD@@U=O0%J_#-|4k&}=m z11&O1N3O>sZRRs3x`{dm1W8nwRXjvIF%C_u@y**xZK1sho$n1)2~roN*F%ve@h zpt}Iks85?>!=E$?nhpk`tMBL``O^V#FbFMy*hwx|efiiUN?Myfz<|T2v)m$t(S{c~ z+LHSenSJIy^zgDqb79}$5)H>+%KGGDYe|Ppa_1f(O^eQ z_irlC5B(B!aW`x(8;e6tQel!AhvHl=xvE7+>mF`Ri}wg7Gad1Rv(K^K@d<|nj=U|V zwi!_QCj#vAcuUOcfwc4%D9Z>?Q4 z14BxHf{n?sEb5i(m@jt2Kgq@+?KnRU_RpCUyKlQ1g_LK9bJ0!dhdF;mWyi*aSu&B3 z(9shl#o?8Tp_TGI)hu904NzL;wl~)=a7ujGqccz(5;wHQJ~8-b3VG{>bJ(l$@2<&J z4|sjkelK|(Yu0N`L^xj|X!Ti4ya&qx>DwS9s=z;*e|f6-wgs!Y4t)y}+N`8UI6qhY z*n(Bs&pZXgE5F5rzgs=M&#^(J_T&xzg5vU!RWYA-t4OEfI;L_@|4ERjJ3eIpqpV!`*V||QX9!Jaqq@$pDlOjIcSKW3LFZW|Gr8t5B{r3y zCci#JlY+$mHxx4$NA0jwf^pG)qB{n|ZO4GpEkg{)CVGF&8b>(Hvd3w`a#GzNewxUf zrzsfwY%Km?SNG??2Bgf>$j68O@j=Ji;Tjmeg{1Ev7}$j}2^=u=8i zN-q^*O(0IX3y<^kdC*5`bN=V8v`2(NWaw191XVAO-9d)JTF>w4@81P@@+S+w=)%Z9 zF%qrB-G9hxz>uPt(zPRCmC?Qru}3tNjs){ATh+-po1aGliTGPqIKRntH(;$SUg5pD zg++*TqAi=v4zLq@S)u?q6M#wNAXirT@rR|Ia}(3HC`yvm#naObv+3=yxI1zL zr%4fBy}hPbW^lq^gbP6cFcYLyF@wwMZ1npvk&ooSwZ~L75uX*ckDg|$5TJ`@2!GUn zw@9cP8yRM$&N*)MK8)^7Y3D83Mp#M@wmVl_0}e8w#T!slWXQd&Q1`Ma=+Nw8Z#e^a5V`+k+TNilswN{VEX)_*dLgSb&@Z_Ed7*_IBDfHu zT!4eH0A2L)OzIks9XAhhW8$XNk6l$4`chk;HBT)ofBTOAkwy-cRuVE?CCB!p)t14? zMdXw!fA%B!Y%vMv_#9|Kc#5MGgeU*ft$RxZ%@?k`m6zB`paquOeSYCb?0azlJ|p&( zhhWP&kD=$14FLK%%XxRJ2_a&)7URg&Ab-m%eEgHd`}UQcTG7M_A8gqzy~ld>3o#)* z<{t`vJ+f7(EJ%@6a=Dx6walM;A)bn+lSN_bnL=_e-&RQ0mR@Cf@)1Z=#eMJq)3S~5 zNqgR@*~D!yS{v5(t#d=w?xaAz5@4u(j(69-b}nBZa`im2p#|!!q&7(zY29+tOxk1) z;OMZc?XDD*_Zj^yxjz+9cQ9fuUHSp#0w>%s55Hb(EMTX6d0c`ke$v5#4YT4N4)Zp= zA6Vy&UNR^f_x{#)wT`sv;G~j&)Ic#vj62V{6wZM!W{`w!<~JUGP&id45e%yCou5wG z`~U{r@lQcn1aXmd7=;Zt5WN*?ma0E*y#(UtnIX7Yo8_La*veh--q|mCW}jwizx<0k zx4aR_aJdhy+&_3Kw}U&SOhOWHg{jNl!n6M+PxWGK>Ugk;d_>5#kQ;9&9CT-q99Uu? z$a%r;t3elvig&(20I>Sg!%ZKTIT87pMH+*WlSj~BN&2SgLvMClV8|FtaoAY+?KDA; z)G6Ubk1O0qOzBJ54lU#3CHxD~WX;mCj@XPE8PjwM-I@~^18UO#lOp1SWwJUEA)&J7f;+Aj*zGWTbxyRUnzFYY!mN9*$F~#Hn z`xe%^egVMAyc!^2?|WZ&FG}tc=-KVFIxNkJ`<6;@r(2)|N5rAHzSbC%#B+1@6DyR3 z1gnsCM{olXs;c_|8I4X3nHDK@f*yi8_j=q+RZ?a?ozJPQ<*3byRK{FIOwXA(EiHnw zgoZq|jwdZ$y|Rqe`SvHjJx;U;KFOsS39H!zRJ{{}b1bx<(&f@b6HiS(ld$z~(@Fpf zy7gh^^0+yZ_K@YUu>);-#7u-I!>o2H)WZZ^6Ynn()f>qS8ad99;QSD~bn{IcB%&+M zIB(zvp0-I`fMBiAo{P^ko9 z;Q_>CPG%6%Z?eMB;qsD&H)`;wC+c6>HdcW z_Nw90PRA;7f_-{Xqq@kCl4AO% zg3}DnOnPr@kFT!cxlZ&#Iw!(ao_QX;n_>2yC0`=E!x}(LZ^doCflQy*`|XSAx=TaYgHb=l@^+>>bAlRyV_^J-Q-#t_HipH6M-D!079k^tFX>xNV1 z8$_^o&zWz$2tiy6_ekuY9|&q8jFJQ1L=^EMR@&+f%!ec{D?D=hD}q>^O-!_Sou*`m z(aZe)d?3#RlLj=+UZkIl*aoZDTqN&(FB4WT-}BUXi7ZERQ6Tg^8Q3V^V@?izg;gNB z3ev0Tw1l{sNO3_LISB{J6WSPSOze@8OvL9{(cbb)$bCJ-YzYZ~5*!=;t2d#cNx~1? zH;Oi6R+PJ?BL3S);Xfav^PulC>byRsJ;>Ak04qisXf&Fy`0oZpkt~3hU|!LA9RtS2 zU8TXO2)fBmOB}*xHw2_ZKJn=>q%krcWN z@aK0v__&eTv&pp7^m-A6mafXX_#EMb9a~lAFo*-~m*QiZ;*!Ygo%xB=x1c@l z@vkJ4#G8eN4ayk;9$zV*vbh~zxa5(hUP6*rFXY`D5I?#je8Y2aUy9!TL)xBC(LX*( zMlah$e<6~pe7dp}?yG`2cwCNSS;WgH0nNE>5W=bVd7KK^g&h<;H4l;$YO#p_E0%st z?@@}*GWjf5UKla6#}DXa8J&;P0wBu&=KWkRS2HL-1XM)H)}b(&qljcLf;Oa-$k)4P z>p!J3ip%QzBx+6Rz{d-e7cZ91Eg!Fnr;8f#W>aZtB_9oMOjN*n9PL%M>bLPH?W71W zGxMVF;-2aAvvEnQJ+4U1VD#5NsR+O`%y;y58tinCJ2GiC^+(~ z7n5)&1pqB(4*sqX6ruOFAF%e9bN2ZZF+lZ(8SsSh)b^&&5g=#2gu3bH;rT{7qbbmi zP7z!l_utW)4K?ggI2Y#pZz9S%1KQ4rmKL05Y?03(R=@%ZIAXg)r-(tU~J&T-CZ&xLF8RnTqh zE7rD#9Q^X?1J8JtPswYhBn?{u*66lgptdeMt-nRMJ(Kr(FK(3kxCGE-6P<%OK#zB5I!NxFY)U-K{CBhpQLH{B7tp@tGXN3e;TEuxxx95 zh3jgZL~0>h|8C4k))j^|srzgMnir2w>+Gz^+ahk-Hqc}1bfX*m0b-+3rWaf z;I=&gWITF@K5kjpnOfO8jMX9dAT*BYz$bbq zq`4+bN^f=*`_kxePg8aAc5=((W-x;NJa4!KA9b1E9@&5a)`x03&-{hwHn4qD;=bg6 z-KuqXB`cT-J@5YIhsys{qvVsaIZw^X;=KIUU-}^AI@NUE>d##orUJ*>iduJ_*~hs~ z%!<<`fYf&GxY?Wms1>_UvFbR!cum(Mdt9qL$D-<7#QW=__s~hI^y`OP1K|lqVaJfj zJR%g{??VJwsNRyp_-l7^;iYbUOyozGesOPL3GBLeQnjd%7Zh}cG@X>CvmfTr#uEAG zX}G!xMOcO=9kGx$?7kdLb3wwb8CF!wR|kcL6Xk8XRas(tWS%sm29+n=QO`yPhg7v3 zaYxE<2d=eX$VUEfkqc|mTHp)gSKM0RI|ETPJsC@d^fjxZ`{p-o_^I~`pZ>*wGMVJr zXhJMuxe;3Y(+0=n&*1EciuR@sJqKLv00um{_03LM$=U@C?J#q)n~zuEi$llE%uTA> z!423ypVeZ1Z~Y|)(4u22@ps(DV~*XI6E2hR_Z%Vug`S0)>=gBU3%GfV9EFcK@`&^?PM1|Lg+` zK|1OtZn)thZPmqV8j0sCHSN`QYjL>=i!P>&^yHjl$c1@x0W4>Pf&2xm+bOhhtwdc> zVz4CB5>-klW!0KN?RGWY;dY7T+YCr5&5){wnWhs}7QSL;@f>n}M-X5oCE>--bZIoD08i*P3W@i%sSdQ)YL7@-*K%e9WyBK{y0RM9 zAp>%E+*A0DF+7b zEuDraTF4R&<3XxX$BIFJlhE63ohoOt?Q+fG|Fn*z9F_kugH;@|Dih;eAf*a?3X-$h{v#N|v1wjO6!L%m3T{j5QY`q*N}F$lK);?uGkQk%i`yW7OR3`TtRIOt>O ziGpss$m?;2Ph(0jiU* zaw0DKctG`ta`X|>A8;=|G4-+V1ij*AVAWDaq;XbS93-7j>29X)hP3i(b!2@{5Ac24 z67pg)5XGmSZ3)kLQO98>o;=A!FH!JaH&_*4^k8B=^C$_kXI_)Ic&Z66i7*4P4`65< z(LjcdzZV72CVftmOyCI~z!hOb-F!bxk&f%uCduxBXTisYeD(tCfRPfzf+_f~)}!Vm zbpzHwiZpet{wFy58r7JTT)E^#9e5wHly>%6oG1|im>^4Ujq1=Q!{aQ3VGkD+xtZxi z`p1lVMuLfPLW({SAlC=T8>WZnTCrv6Z#dpB1mvoi#v~O*mI!l=nx(J<6}ocFoj)~n z*v4@qk#xy$chE{Il=N*x@#@ulzE-KghcwHnm%xoDgQUL9aizPD?N9D3tuPTi;IxT;oIF5|JhL&7 zj&AS-g1cKCb&F5t5IeAA#~wh_<@{@Ephr1Q&y}x=Re`#jbcEq2>{^}63iT9^e~i1k zP>?J$sH;3zIANg~lHkbXm2=R(FjixI#W(r&lONje=jsI|KDwPcI2SXOHvE-4%~%=N zg>$Q8!t8;M4u@WntXzI3r8*;ig!ks@4~yDOPU@zS?@9osGk(gFjoG&VA<0Ra??#zR zbqdgv&hX>m#b9I=&7$DbWTX==O@Z>M>thl1C9|;TLV)ACnJw8O)3e^MHEe!16W}cf}nKso^OTSG{a9Pq9?e-@7LWwPS_aWHbwLiIkit9yP{i1f4N~9s-5~8 zuf@weybLqL?w@gieB-o@@OOP{7z*)7Tugr+kO9DHh(sc5E{1i15ys=A(Xa;~FrQQS zZp?>Jcy`^#H4_6M_oUd9E94d3bNXk+<3(ip^FxpCP+d?p)Gj?9S2apSZGhjhYPmEy zuF#PxA$;gAL1DS6^}-HV12IEkqHf$`eH&A?<= z&>k`L57b0;;It&hulc1twUJOU7%ftPzAinse~;74uESyQw(j>!11553R>P{tf1%{0 zM8;}4rI=vJP%l5m)6j+VE%{ELMvWm z+(bur)TK9`g9sJodV#aA6$1?*X;=U-JH$-}!^uK?NnqjZE z3U=^Ilfy{$Wp-lay$vwxbTB%`Im_rrURZ^y6N`g_!7x&V?pZL23AXBRoSoLG_LO$P zyUwhr^9;0MSXbIVL17G5rbHe6Z%~-mnf2QHKd8$L^q)0{b=%j~@jnYjz%)FLVcTIt zC6?azCAB7gsC-tXfESd|*FV|0Xwgks%&2Pu4n>-$<$e19m zFfh2o1XlIz&Nk)z{RNH_D&kaUdlHULKZiP{Q-&ACDWv2kVF=gfLx4RI#5%R@j2|Q= z7XB&cvx#+oZL$;4`CO3AH^_dzF_#&g1pz$@Yh;5pV3Z(%6n!LeD2FEhyv%oeN6-B*y2`)zd-GweDh~-aS}* zx2u~Izmdw?|FS3rz|2k=u$Zgn$IEyMQ2H9}USs$dvX?e=moeLaLXl`@-4Fes-JTY* z6MK_Fs+t?Y!M;%H_EbyeVS3N8kjyOA(y)7w}^y{)KiMeQ93vhy$?i5~tIexTxdiP?Ofh-RF9I!=zA znE2*>@qQa@$T(}y5KRXkU~u8>^dW|FUgn@()D+ND?ilihMRgz621J}B4JrGlDq<=i ztW{p*9*9g#`CuoGim9m_*+NLRlzSPyn5Sj@KDYTczCp80=S(B?t{FSeL+sUF*OMQC z8l3U1$D>P+7eG*b{+%dhi@gX9llTI$ruW+;_K>DDwx8vSbyR` z&jwfUY6$hLpKqQj&U(YSjsCA%H<&;vbTI8HyS0UL)^hCrYDMJ8r0y!^V1#2cHW=Xi>XC}v zvW7^~M9F!Kv>ChsnC{w;FdyXbld`-andmf|MHTK`gk$ph#`rOqHpYSSiW9<1oEIuTM}ETw5OA*8E`#_UK19t^2{q1-Y7 zD4*wxXohO>rTeEMr&F+t<@s{avN~6PNkz>sk<||abi%h8r{6FARL{&qLivrf(Tnz2I(1z&_cGE*cD6qQ(B#uB|gMpeN5DRd+<}ex;4#?FQhUJUOUn?s>`z>Cx4&7vxRQ7XgH`FbG_Ir&0C$21QP$BD}Zqpf3BS zM)I27g(7#O=nq!RHTFfI)ce5K(9g>}QzSOcKNZRm&ck2xx~~C^)y&g>oxZOrCt-&~ zg+xWsf91MOT{a^g?lt{9FbVjYuPeS=!ASc#fuASH^s@w#UnG~dy>(1I{30q*)EvjI z>$j@E*JnQw1}!G^?9KzG-twH^iC!DxYrmWZ+#35;pZoRlN8$1hm%DblR4p%6(~dpc zq;e6ww&RW*mJhq6a`)Rxj*tmmopEyCkqN~SZUy>m2nCNu(Dcl+iC^;GS^`f0oF@LX znp>Bku(C2u5H)50jhnO4MU8pgJjtb1Lo^x%xXPB2{)->sUW_{gp$Ik@h;3UA}>>08j7J6@3O*|XxAxZsL=&g_T zLi4^Lb#TA@v`bkNN|h9N-vizwi5p0tEN5NIDo`+XxSRVS#pNRjY-Fo3(ut}(3Ro$E z5Exu9WcFffa3>QKoC-gltnzOO*3!93ZXpJ~i8xP2AjV``*!l?kTsbh3wN!im<(uRBRr8(D$wZMNZ*=6DX|^5d=2z-c zO$AqYh(p(xiEj_DSLoz*t_|wA4)b6J6$|&uBm1mGQsw>y;OQaA`)IY;d0a~=bh+pS zCDl;9flSG1t3RF)acPKm7d3Y~{-fvc`$O=adQ(OYq_W`T(nFaycO-z6k^AXK!r?B4 zN&3esH-Da{;?RcrsDOifh_Yw5YY@>fT@V6y>=j)NnR(4e+W5? zt5Sj3wprsDHD}_!FP>-Ea&m>=O8}jIAnc1B^?c^~l@R7v?y?;K+b9%?n%~Cv;|?l= zJ9mk2XpzXFibXQ%Wor&mZb5brzH8X~9oDPD$-qCxYVkG#@Ys}y;XGbP=RS`=2(nA| z7cDZbbBvWFHk_ucWkVd%eUDR_`gD(T*1WPt$|qA?6Q`QLz@rO)<3r=?E_82N?laQwo5E@>~-8?tZb3sAT&|RH;xsX6s0<~H3i};jH<0mi_>Civ2pj&4Fr=`?Hvl` zjx1uD`;)gw^|fH~`tugtS0A3k5kmi3k+2Ur6Ll~N>iDT@okU$_8D}hIaaOYsQZv?% zcbt68Z|Rc=$dX6RpD<1w0^K+;yJQ)sD_0w9_EaVtiH;H^gJuf|z7aO5QTdjB>|M*6 zT`?Fq&>H^Kd`?qfl7msDm@$TFL4RBH#|j@zvy*)Xnc_P#f7U|!n%oU=2EVs#&i>Q38x(%y=nZI<*(aC#rp3ZqXoCg_w-s9U90d?z*k{mmn-4g zE<4klwXKg+2gfCoJHYwTgGO|@UnptRMN&KJN>5};(P&eAC0#|tNnd@m5S7)1zH7eb z1vPS$J?>BXk{YqaFkiB2JKJH|?TkBp&#g+>ZpU=x?XVYgi7j`kFukm zv-tGX5@~9{ZP2+m;J&8Oi29ATUtH)EHrdCxG%MDH-0h^N4_aZIdFbKqv@0Mp#Ye9e zwt4g4_Rsu&BmiV-H+nN~c&GVu5^Sgr5%?a56{%vTJYKtlK|1n5WlmbFqKI3%3F6@I z(?TXji{CIdo3AEsy0y<3w75Gr46Aw4 zXcNf|6U72OAq?5M|=ZVm#?&8ER3^;sMv?72raDabh@^_7n zU3zxFo9kLgz4+0+Nr@BTA<*~m7wO&0@y=|>`oTA9cAVB4z1AbMr5dA$y-fwU^No}JDt??6+g-SaZ>GnrzofCC;x=Oq3WmVQRE>cV=>d5lH z6T<-+YcISac`M1#)rMGxVC<1Z!xClFB*&U5?^5qZV>2AAzu$Z#tI2~mA{5MHPfrwZ zM!G)`Fn`SC4WcH)^$IlQ%{ECzFKuT}VDL{v&ES!t5LB+QwnWgKNqzwh5fT@M4zm_K+ z3d?`ie~}pe9Hoi(53CG$m*eAMcK(9Ww_$lPb6zqLu-O;|xx7hkMDPBnGTEk$PU2vT zQ=Ig>3#Xw+wn?SrrNKCJ9lwwi!Ft7t+Dz`W7AWgO8LXm3X|uVp+^6stsZymqYeoZ;s{x@w=j;?S6pOo^YA!j%t5{5N4?IN(o1UOhMsZR0q5P# zMbc5iX{ZkWB5W0Upb4c|3+ua9MEJtckeDJGsyevtXx_`2mE7 zu)g-n4^1a%A|LnLPScDY^lNg0A|>vhQ2IjeLJXY3F?tZ*b+~e;HNU3z4^24FKgP05 zby<9mt89IH0)%WXD{f-LmRc7^_D?UGenuoyu7L`trBoAtjfSgoC(f={xDlKePHN_T zAh?@?(4yqFiqPVb3hJ1Lp?cTG9P1cYb1iLki>?&tfPa98FvlC)Gpz8CZf^Ey6+(^t z+4%}yRkvSj2oEaBlEi#CrM_-1$xgtA>^+ZZip6N^)^sU`XbynLbgul_F+Nwkf z=)Q5R^4H)lZLiwC>rvhapK8XyXh`jsP8mO%?d1TF~EtfagCVIL4xzGuKUSl^(Y zqm5osJgN58-Ssg6L9M3o^2ZuMQ}MoP)+vicyz?6~&AQC{!`4|(4d>ht*Yo+`;wr&S ziqUUcR-K058rGb=4#YW zGO{OB7(OZZyy;0;?PL8zkj{pJkGA*2f*1~`tbj}G4rkK3l-LyFyTPnmGtos@l!osu z7A^;GeLk_tr$K1Z_`~VLM-P#B2d$`&w%?zs$fUeWMmR1-k@h*PqYFiY#n0R}3+;C< zoSi!tiCkj#alKLM`A0V~Zp0`fW*(b8qs@lzhEx*C&!~_6U9)&JKU+0mkw-(h(3THA zAld2slFhWUrotLLB_OW}-EZOtxfY1^3iqfG)^Vs2Stu>On%Hi>R;c&M_=N#AYG{K* zh{2~`WwpY?oo-0^0&hx3N&+amOQ#TODjs|l7?pzseRUuNg-5Mb5nlB9fEvw8*bY|G z^GA%US%BxyIaYCg@vX%T0}W1h?=kNwhqa^9Pe{f_Hn1Y4%n4un(`MZWeJ~qRMX|a4 zQf?ulb(8kVO=kcEcwsEQ(+FUDcpA*_V%nope-KRCNyuRZLov&x~ zmX=^GFWLW2rOslJoaP-Cwy1te!}ob^!RI4;L}OF{&v1Mekn#8?cO1_{eN`Sa->)bw zm4&uQh$SJ8EkQgS#FTZ*+b)BhWVgeqc}~`jyOzF575S$oVbIwMHeG2~1-Rb14(pLcEa2qRm+l05GO*nK3 zX_^{|k;ywe<)_m+fgGFr*MynBd+lCm--TA}{{jvt)JhUwt{)E0ugBlkfPAwvXXMw< zh20j`tDk$^b2pN09Ex7F|4mN>%RLNvYyQd#ib8M5Ffga=2|KM$m%Zh9jg!+IAOk$)aZOVNFNjn<IdflZVT+UmZu?cW-aVgr-*%H?aILG&f4{U6m#E$P%1Wv65nU#w zZ>pqZlEMovc~@Kcx2wGN9+4QQN0337M02cPzP5%jvmB+H8N*`0^-ln%AGaaTt0 zUnb62uEgMLaR$Tb^ruHa61w)o~_B&K0$Od_2~6z ze~A7rAgAm*(6RU>^8N5S*DU^zg$U*n+=GwovbISd&|e?wyi5Bz7w34jBtoztynWfK z%AU~vjt%)jXm6%=y5RbH##8J0Ku_!1I3xdh+zDb`S!UB)MQNP-E$}P~Ny(UoF6dFk z*aO zyNZDU?I{Ox@>V;O#p}@3EF+e{6@t&-8Et=6$!3e+bE-p`!hg=&VEh=s*|pQ1$UpXQ zoyz2tfiz8SdC7K<34o_@;qOi8;s@w|)urwj&Nqe5ndzR(TPy6o68th-^B%(NQ}e}7 z+A9FJdQzyN9Ip76m9W@g=Yj*lQJqNJ=2Q*QjBf>JrrZ0^dDH7(jg&SNit_E$GIU&i zXX=Zlso#G+XZu+TpCo=nP3R?4R42lW6VXf_aqapEuZq116U{>RU*Q2LsL2A2c zs&;5@;Iso$=bVGKa@;ixlNXt+)|DYQX>uWuH8GEnu%r zd|(|#D&rx?FsHt~w5qsfV?EjtAL+y@`ha0w!dAe^r zh|2*FH}xjH>WhJ0pB~e{M$sxo&{d_Iy*xg8btd;Tl4s(w>(#=6OS~mvuv;KWn3SzA z%Cwj3hGDQx`DD#r<&O~OWwIy&I(hc5%;Fkplkntw~;Ww3f$ z#w12^d%LfAw%Tb2Bv0m`)wNjo14{pT-NlMulV03mM~7Pf6C2wo>?cu=8|K@1pMT3F zSF~7Ge2OqlK3XG(z6iu=zgM{VKoVd4D`=aYgWvuL@FuzAUPeoJ!zi=yF0E)$&Wq#2 z^&%C5L+OB|hqvQ(oK`4~l3aO%J<~vu)>xYcAk-bh{$47D>>}yan*`I$0D79w)6Q^_ zr0T~noES591zX(sS3uteO`bi)(-YP;{ajF-MtI+vArhW{T#uT$%}bciIh$Aev(kVb zS&^PmTH&U_KY*kS#Y=Qyq~y{!(BhXax*Y>M?KuPX1(-<~7-f92jEvMSoGfe1`@^K0z7yf(u<`ARMp}plh{%`xz1a7eh94|Ap5C^yiy=H_a6i zECLmV&?LhjNQt6aIh%|dv9P;K-~UA7+`cKf4h?!IL_i#;lHcCaysoIzFT!Y%No1j4 zVz_FAtMFZ1rd+O4mQt-Lzb?8Rs-BS{bfkRme3zfzJ~#WU30EhjT~Oh6*+HXU2`GrN zNQ&RfKqBHUN4CpDi$r=;oZ7AvZ6dH6^jJh0JA2CijpD~?x1801o;sz9%Muc>AT&ol zK9!ub{Ko(9_=V|TSg zSzqrA$8q50j$|mG`tvjygP$R2gcmv=c26z=DOBYJR_Vv@CvF>en2PLXj7GG+gglpD z=g!fz3IEoZBBJq=<3XLy$4%1|jdsGU8n)WfE={4EAIOoh+G2A5RIu?nI2)qW`&td& zTjPk5w%1pbBt%eQ;bU0i;YVu6*c*w*-QBb?`m<_w&iiJL%poOAbD9NNvw}A9GLG#d zx(d+@cpeWzejo495ECUOvJ>y^P5KrbjP+aYh*plsku+hZvQdD1ziOuZUiWIb?=x`t z#~qA+z}sFuh7-cJ18p9StsYZgp`qqN{}5-=hQ!jki4P@HBGVR$b^RJ(C(Vmq*RE4)-eV#@q|j$mSI`j)VXfc&`N?4UvymB1O(oM-wI0SS9vbN zrL0|J=i7w}bZy%yC4e5_#i$j;&)`qb5 zUj#L|=Q)dtyV$z@&b@Y~t2ixxlWVYd@qVOYK`Q6vxEHDaemA1L7HH>wMab58?Iv1D zF#m{WMT;=Z7ih6ebXKez0!)dO~O z*MLo&mNCpHhXfcuHC)?xb!_t`R~npb&aSMZ9ZIpI3%Q0Lpcwtl5~6QkmGTu*W_Cp@ z;&<7{P!R%yhcf3rPW;}s-pW~D+en#s5l_`d`mXtLdB0bGwt#bl^kdGserP;~0k5XU zSQ18~YREJ#VDXnDl57HtrjBV^?TUix8?x`0X_kP~JyBc<4;7MHb+atBE;-!MJuUU@ zLZpO?mT4$-x3j{NG;&fp>27EAW#(*ZT^g9X*%u?b;`dfq(TKA~HJv6&X!Z6!S@Qjx zvNK-;9h3oi>O$7(W_e&L#=_h)p^;f~`Vbob<;#4(76R++CI+FLyYwNoA6!P^D6JH~ zeg@=jv(LVm7SshJG)a2#j7$YCM|4r9)d%HM7c!rQnKM@kVxC@^zwT(8<<~^2vwF-l z#}lR_b(WE+b7u|I?=nZ?wGc?F0kRO&XM*Dccp9GNel(VK?2Co2TLas&B$Yn9awX#jU92p~-U|wqUkkhwe zm$sH!(cyhRt^4i>#{96Jbr0(L*9vM@+!qyJvod57Kq%?AiVT8}~C#ci(pbhpXoV42@s z#c41W9T0>W3LF5M1aTd_RnBTC@TW9mX;R1<{}sQ^g!qj!XT)4kfA$?jlDjC(@>iRs zMCeCXj0G{aI^2oA!@^$f4ej-y9Og>E!etL7VrNYFL#=aVOD4Q6g}um|2_a_!pav#I z!J>v@!n1Teb#`auKG0$4W~H^4(*8ltgqn%TEMpV&=0-Oqv1QB^G?!GZ$6#D5k9{kN zQ>!|+w+sKg7#u-eg&HoJn_A7@Dp;o`?XiOA_%$y5bH_rSSswtM=OSK%;6*~?0@j^n z_ggDYcr%33?>4tM28K05s`r4wn)Ie_Az;JojHWFY5yJI&X=$@Yz(Uqio}1dv#n&=d zID7M8LNP>Px?k<>`&+FbrufRd%=IQHXc`W=LaRzE5%~GV1CAHPkf69bbN4Hhk5n@0E3rT<>X?TmR*i{VFtM{wzI3aOdtDma95;x2uB$&0jQE|l!K^M^< z?ZZjAh^qJbp3lB@TfLB*kiO>}N2bo7t7TBXZzsvHPG(4tol0y+uH(CHOps@x_oDus z-hb)3cDEBx3^;Dq-w?q)wM=6$>1yFZx%6E-iS!iEsAry!Epp-E3-9B$@k?uh@`7(a z9W?rAPLgo6@u>yI5YV4}8%wn-{a8K`bgYcNeKq8)8COF$$s$o~=wR6jZcK%D)uo1s zU&Bmj+IwUR^;;r<74mEJ->~0=nR-{{StSa(lahycyeE5Uvm`AXXt4O>T`LhkBc@qd z*Y^UPeh-2w>;QukuND)2zdvF*p&@=q+(}-U8xrBHlQ0*_lpp+atb2F@_4?azmjhPT zNtN)>{M5{AT#eGi_LleI5XJ&Jn-8@DC#m| zW-H>uM$E|ylgWFe?J`4jNHXjF3JXM&^lrOC9c=L{>VYwxEnNr3!gaZ;;^!iNJ) zzh$*JA84@3`U&u@=?lVwZE<;3Tn838@Ai$=CC>HO*s(Dbr@Qpua23iM%WiNN%`L6< z^7l0W`*W4Pz$bTn>x}PKv8rAia#&{y4@G`-_Q2<74c#n80KSlz*fFOk#l)wddD&u= z0?%AmAy{)iHh-|6-~S&MbP2L+;$xh+{%S0@f66zjge89!>$M-IO#e z7w{hU?LpqY-uA=@{9Z#Dbh5bPG#DSQgFzlWK<=ZIHY;!9T06akcVyx^Qv` zUSk!3fPTE>xfb3Q^S5x_PaSYm-hC_*^`=9pfOHeP!Cj;))zMxZdTVk#YpB>Cuk5h7 zhT_^_=id36W0wWhdU_<4oYRC)=cazgko~cs2^1GjmMGt$3PNs`e!F(N-ub}eC>)nq z$~czhR^i`lR6NFTfZHz+FyM7>#)-c9z^iqVTbcS2-9?b~wX%s`lD$Shfi0W66!A__ zq^FL?20toZ+`xil?WL32}8XIKYG)(-}`#e>210%$!|8~T7xZboTCN zNUJ1N!L!W!p63L{C|;YAZZ_zEEr%Bc4~?Wq>ZUgMV<=dS#Wn|0tcSZyvb@DiD~2sv zUFz7%-ISHoh%@B&GG+@AXErNq3b@}JXo{;g6PoBT`g$afkVr~(@Q=3 z$I11(sLJW9lSqU0so}LW+!}aIas9X2Z;~Dl^Iz(U}cB>_=#Fub$mf3c^SX$Obv812K*2`C< z8sh){6*pyYurz%sW(eZ*T*S%bsq|<&tBT!$K-U2(du4S@N9VLOgH0`7U@cJ}3=jwM zV+;&dJ&$3A4enccW~9UY1l$V~@aGsh5>BP z?h^H!tPPT{HGEKinZbr6k*17rkARyCNy^YFCsMnczDdgaSg5T@NvJ#STr-~j4$>mi zG3kpL?fEg-C+``a`fy1)-oF4rTpb`mbFEbNG3Vj3Gb#L1EP)|6ZULaGFS%FL?R+<8 zEh*k*LEvQ6m5vEsQa^T?LJ!YSxDcK-gcrFq9Uvg`rKZ3k*ZY9*hlYxa!TEL#?XK#K zAzo`*_dkHK`D1wD!A8SV!H8e_QuIe1U0>dhGkcPan~}_)y{E*|6(?o2pu&2I>hvMr z>D#Y|V3n}Bf`yvj?6?PqslBSNsF*9;RtAjFTiG$Sz@Sl#^r%+;NPF9P)}KPDQJr`S z&ppA12GYCdjNGc{(eejGZG#myW2$55NN=w5Z$7% zv3G1GGu@Phr2RJ}C!M)PD1E=Nn=9^zS~W9U^$nTap6jE2J*32X8`kq;(m}^vd>kFp z`>~1gvmA)a{{m={4Y1xnqWbIRi3_z?LpJ|8saWWYCDM|ND6q!=_C2iQg>i(G^fma+ z5h~b`>iKRiwNzWbaPPCVe>7UR(o$>|W({rRR9xn++VHaCv%Xq7!fKX()y|72ONlMx z!31=p)?jok@z5cb7}Ks7!izoMp@TE?(;INL+;He3B@@2yABf`x#; zoc{G0>A~u2o^3+RFH9U_h_n$4bn`WeyCZ*WR;_b-3~LP#IyZHihY7j%@5xCJX=8<0 zNW4K-6eerTW+f)8rz)5vJu{dL+2+B2p(7Cu#UkV0B_x_qzPY?JzO{Ou~*&` zQdmq?Uqv0#&3e6+{7tfp7dKqZUcBSpGwc*~xUN}y-sF+>%P$evww4w$mAuEGT^d7w zE1(T7f;&d>Go7k;GBz?n^&|TWQYK90X3Fg?F|52#h0M7px)O&``(x~ z?-4Nk6gRjwia*Wcr79ncVOEFg_S|#VkVMH3I0W66e!7Y{MWpX>R6p$Re6P;Pt-|X@ zel+VJ@Waat<81tv>>%An)vsjUqicg-A!Q9Q2)S0eJ!L-VH$+dpha*!HrKsRr{H#Y& zsvVQPIPu2FqTshb`aA~5X?+B>Yxh?~Al)Bpque^9*#@x@Ds|yx6QI(Izwn;&z#$zm zJh%`r)Zo2)eqcLjR|S0Res|f*R*hh>PGj;T#?5W%*oF`xVpBkL|2G%J$(xY3Y4B}5 zV+Vnk%d|+HB4g50M^J2HPd57Wy#r~ipNZIycF^{4{HHU(WWb_1F!X!FxX)su|1^vmRo0vf$PE z?aewwtFsx6iTVpyXOzROMMaatw(2$i!)v?3hK-?1FvSM39pY-H@Yz7S3AIomb5jeM zdLGNaUI5Y3YzhRM{O!+CkR9g^EkW>sF>60}M-wNMen100zs=QsBn5OKh+E^qK;aNt zuWOrKOsc(|Ju4VN{>f{OK;i%+-=H*~xrz<#H+`C08eq)Gky$iX8L{9AfmB`4q_l*@ zxdUVAp=l(jTybcH7n!U0`J)%FGhc}j$;HpWxf!^MnWpUoXx+5$*pGsFRX9^y!m7D% zbsE7NcQC`UOC*A$qcs?Vl0@JUFsn+D+VjORkcD8R*u_%s(0k1xB~TT`SOBD1mjSGR z!zx@-3A`luQI;)<-kT?=`c)gEFqtW47OC1*a3IuM>$~_aPx7}}V#WgwiBBuuH<6fT z#b^!3R84V5vD9{!RZQ#EjR^Q6~t=GbQg4HQ0JwzO*nJw zeOq39-&&G|Y(srjb_!`)u@P#+_f^`z_5-%5GtPX}>`=&1x7Jbja^X2=5=VGrgZ*tJ zB_82jEn5cFr#qpwcE$WJmL+m~r&T0@>g-wVlg%aq0UURtzVdu1sNN{>%x|j?;Jyy4ZKM;Rec7h3GTQ z{IJVEP{Hv5|2(SG3soEaQUVd+s+MDO)JFR1 z0scl>QfSF(+II?o?m}oV>5i*c&HUSr_pF{hV9e@%>dzr%4LhWuS5c<=hy%N#y-!q_ z=OYOiZOm`R&ADt1;e7i*>~F7fc>msWOn$19Scmi5Bp=x9Jg#m2ArfdO;Nf8sDBR$O zf3%Qn280d)%b0BtYsWE}9+u%f%A8c=vl2x^In?MCUyt1Uabn;yu9o)^+q{i$r>%_s zV#vrLVBNmuC0^JjDL~P&GmBK!IE#H|Y2@2Wbx5NJ+1lXXu?E@vo}mQt6QjL?L@vfq zym41O$qEx>%KH`h@UY^QJBN3l)!U~_2F*oPtd8|{yd3AD}yh<18JB}P?zsOU!o^|ud_nqI*%WJ zd;Ic9VNi#fhbotImFe840RZ(9I355Nyv&DOyrCySQ zJw53z9juC?w&v7H9-#_vSeF=CZvecXfCW3Q`JlrMD6e&1J%FPQ&MQa>;@KQIL>b+6PjeIR+ z6_vqExZKd5S~1~exvtcqQpOKnmj(-SaPfeGI|Ff`^j!lwL`LF`2o<+2y6we~V?c)z zJar}L#k7zCyuKUs!!FlF(e)vd|FAA+X1Yl$xx0;0@7a?GOO0(q@wWH4A^PD=8GO

KpT8{(m{6H1I(0&$7EsZkCt>QVe$=&3~q9N?4tEWk63LhA>-U_lu z)9SC<5Y`gK+2`%r?3QqXvh_`S;NyKzt7yI|o$gODdT)Wkc3}QJ{SRHS1wwi|+f~WO z*+tbY5!La$OD0dctI;D00!6h(G2LEQHv8sG^Gip^?kjY&lV=gtzi^KCAA1G5B@K-q zKF1G_+7j!hi?_;6$J-Y^t_df~8FL!$DYt{U;luPe$8b7O9(-&I&@ZV|e<8)-ezK0Y zRMe$XynP|}qjkE593AawF@Lbuf!QIU4K2(n6*;6^<+OZX?_Ag8Y|5i-IYW;>I>)J} z7D+CyAv7+MIQCf4a?TJ2#oqn=?Dn{6LCOz&*~&($-=SPKzwOqnQA_*%**@|7Q~0}s z>(7(TZ=Y9J+WxWHj>u5-r+BvWK7#)_M>~-OsZWxpT|Im2nJPqG)*IG^1CmeOug)?N4a5oEJ(XQaU4%s=3r;GGQ8GZI!Fk8d=`^_G;d% zC0}ifMfwG&W|1P{WhHdSk3M8b^5WTe>LF%kVhSL8XzsT85Iu$ACq@R;jnT;58qMo* zY_=Q2ly~(tZ#_RUMmsVC`7YuDO*GVSP23HLSxJTNCN<$aj~U!QJhw#UA65)Ku!g4O zb9O0>wqzmMB;@U3ul*#{ubshsVKY#eZCzDx#qYI=Y!(ZwHomTrQ;`E+3(P?dTLes9 zGrSRWTjX!brj0j>GB3!=#J3C=SN#!2)B@=)R=-BL&*8U_!3ntM8zRmoyMI<{TP#m& z=Nd!F1eLrHDl-z0_Wp@q-DDqsN?#~%mG@EIi%q`lV^VVLpaR}OdwGD0swAJ>heVy5 zTXY^rRHRXgtjzYL`TN8ey(%@S#lX=Z0)2VbBk>i+CElP(B zNzi<~2Y@_g?jqH6$g};84zwUf)q>wMvtVJ|AGP3Pp^E0GEQ`-G^KM>W?JcGGdT)cq z8EFT%^_fJ5SK|@e`vg6cw$Rid-tv@IZPk9rR|>gIk4X;RHx{-aP{c0h0M7#|MO6v+3sT&WZ*8pt zEScT)%nVmQvN((u2_LVgb;hi^pT3YSX+)SVx9Izg(;#L049+(UUcZa3evz{cJ9Q&c z*0}4pFDjLtykJE^vX1etv~N5V`FiS`J-OH-$Bt21U|#v2oPw-LdI|w3EZyzrggSXI z|rJhtAJ*Gd61d5v;dAKYm8G#tC}r%7}huGAVB9*ygElmKdpoCQilPeu&XPl*5w zE0%H|54yP!Xr@x%;xy+ecjlP*={=y%BGg1QOSi~oyA5_SQyMby`C0T;QKm>18{eyU zv!{uorjc8}6zQqa?ke-CbR)W9$7^MaBzqp^x@CnZc6=2NAq{FG$up?J4d?uUc$gJgDyrQ&_|qf{^e--5e|D?-jZwRw{k5YgN}m zs%@`1*S<_!y(_>Guy^}vgTtY^V}zXX2q-|TC`w;7aO9t9F@%qQw8r4ReIH=FdeOvq zVmE&#UXw-QerSoLhFm#whsyXlMfuIjVV*kIiUR%zNq#|lyRoHIguEe=p5!XC$pk>JiB6k)x^V%X16Dc_O9gT$No-m{Y26Gaks};^@sLv zQQ?1)C6%culKiH2&UUFtclWZvxKTZcn`?csp7zrr^Fz|rfEN(apBD{>kH^C2IekPh z8Z)$h(*VZ!r40gSOL6uN%O0%b77xm zP~x-0d(s67YCAAh;4;!9y(}^E1)Cps)CtFJmz4dJ6Crc9S0E`P+$Q07H6}-@azBd5 z6+47zO!sCkgyX(^Za7TKW7n1U>tObaU~q997A3sVlr{@bbmg-AHqI!Hpw!HV-!mC5 z=PlkXTRd$wZFstZi<)z(Jl2-7Fk0H{@>J{;fIlrzaV215K!L5id#YFq^DhZRz>DIC z?9IKtRm$D`in0)%jN^ftgIxfrH&AANfL|5T%QhBH8*L0{!^K#i7-KnEVDE7gEW_^i zz`!Gw$OeIbWxP_|_Iw+_$4 zPbl?isNLn?1O3|Eb!X5ocB%@cJ@GR;gVi6M2K~gdUE+x5F!;(@+S_sy^uj9Aq; z)op4L;*O3x@N%Njsybf&Dxu9z+2+ZV@0yyj$5=?OtTXob9Woya(!F}z?E%IUPpP3j>h_XpY)w}B!c*07 zG$w}RbXQ|_n|CAr;NI2acd9SHP7jn(8Sg+P@V1U&8Wa9ctSXd=wt*=HV#uThn9DVR z4ud)$(w7|hnPfNwh}$9t#ew-pT6w0r1(L{sn1ZkO7_?#{H8=t+WJx;nvv07lS zkeOQPq_81^49zcv%ZzIvGC{Qix2GAx3RQA=Z?V95DL%t=)rx6GT{l@$0CX}R0I^38 zi$uiOI_jZrrjlq<0$g|cx#+rwIKnoRLncq~T<)DFfMBSUy)?IYsIZV{#oI!g9PtY9 zwaL>2y?WnwE>)`|+%~n{Y}=WMg9aV{N-(T7&8ecS!ku-vG5VgXD-ccCf56J$7PV`h zH_P&+WyUiHt-At08hUtL-v;rs%4ySFY7;(UxW4?FH>J^Mk!O-umv&WsFD|y!h$TL` zoVOtsJA0|$W~!c?RtSBOmCVn|py|}zpoStwf1PYNi1tTtdUYtF691h`_OmvW0hz@` zFN{ZPVuxV6J*elY7CN!tZiU*QtSa>>(TD}Sj%#GQDQYvscNgKW>@0Z8nxKA?Ik&9) zi|6)m;v@bI^(hg$_9&t3Y%s(8TrVztz`lA7yz{OLM~=2~duK1o(8!?nbDSZDqSU*6#-v62bC=qqI*j&L=(^x~IScH2*G1*Vf+ zI&vE2N41iO+s-kN<)72n<5&s~>nI@`w7ZnpGlr!xp?M@vz3lYMJi4R^2SU$<4mU;ZAL_=^Fx8EQg6{ZZJV6E?m z7DURs?-cQW#_OtojhaEZw_JB}M&7L(te}ua__Z7_aV)bXZ@bfN&wnOo*+%eF7~;-R z73$Rzr(Bg8={9&yr6=)cyvs^%v41Z>LNT>Jc==MZBG}?Pt~002vFUMEfGUTadwPNm+{%r z9da$`6tnTYx__4!pnvIgyp?u5n)lu>gSll%^N+l?UDrbivMSJ_X%XyuCD@YGS;f4$ zRq6MxxOM_S;(4L>+;XN&Y2@;}L-0T)k=RR$prOeNXU+$mBxhJlg4Iv4o4Z_Q9aAY98aqTW1<8qvS&cs8VWeP{n1IXD26>k{l3FN82Y0>mMM&l$Tq96li!?85mp>T^yH zT<83&5QD2JPVrKj-+yuVJXBQNQ1Cg?M2_mPtK0@)s0}PDn;zJ+`Gt%7_TmrpADLMfqcl8i6 z-VbFCS?o5WUKJ=m9tdy79Y>k^4Z>X(zfxoOFUD(!eH1D0GjCa$(L!rwz$AbUYU+|Q zwJ)j#)`HlH+7MYOPsnI*coDr@K+#b){u6;5hbkE8!es6kGq~b;ZQ>#_9fse$3yz(> ziWC^zwV6T@_ilv~-@z#nTsWllF?Q%rDxf8ob!RqfG(4LUxov zO(5=5lcULHqJ^Xl{0gd;a%*MyLS3;Z8EJM+8M0Yz+3Sda@3jpaAmO@#qQ}L}uZIm| z`P97hK!%L>Gd8#p>O0PlEV++iKK?Nl-BX5{L3{Uu7o#j)m@Ckl6e+ulQs@XFVvTdPFN9+w4U$-wM1MK+Uh&z1dn~y%zA5)p0BD z@jc6!SwveY97g>sEC*G=)QTeJ%>)%7X=zRH@zU|e9Okkw} ztL@w4q_JnObu1r%gW>Gp?L{K9#dxKdpqsWmp)$_n!%* zJ^z9=kqwo;sDi&U#5U<*ANDy<=H>qCR zHfco5ZJ2#8-Zk&&ISG#E3}AMl@Q_FemIOv)AXR+zN(w-|PRn~|7L({cbgLn>l-vHw zwAWaE&HOqQq~(Oct#RdP)}~P(RZl8A&oj%10L|>b)rH-7z(0oGTxOMCSBE$L`3>*c zSIW>i{E?5Kg`F>ZUlGVZQ$f*D&Cr!yOe0tJ-lyo1YrYlSHxe+XpYT3Veuc%gh(cez z0(qo?d8YmD01fY~re+$QkZh>s=j2@Bk#QO9<^3E>Gw#3`)XkDm$e9uPL|wStP+OjL zsAKgMd}071fv~Giih$1I3cRClHrmDWCu1iSl;Kpgew~kfh%jPdpp;n2;~iT^zJa* z%&_5affG}5@3SN;-~Ge~R(8}~_F8I4M$lCcWZ&Yyojn6701-XsHF*sDkUMR86yD?F z&NkNN7Y^6j#%gD_LkNBp*$w#ODr?#|Ax!svfX+t9pZcG}oqkP|^Ope5IMz-%$y@P0 z&K1nT?k`Y-wCEwc$4FRp9t9nVFV%A#ExE(IWP8*S+K(Wt{M`dL8d2;Z<;*+)fn`LAD7->Nw5o*lC3iQqG!E)sez7vT~_vP+0#Y(%Ett8s6d;- zrJH3_0Rvs1;FW4TD!3a%S6NvASs~Z#fGqDi@yQ&IDv7v@r?Z0BLo3|s>)au2)fUFm z;Y^Nua8Oh}bo5JEUK`wsow^s-Qo+6jhZXubBbwrM=#@onw5EMx`DJ*gU23a8PhD9R zlQ;nU&eL~<#*kAhc`1ITSv?>YqxfKl4*;Owv5`I>B7mFnY#thb1mce_u9G|S@R%Prnf)R4r`tnSQHo<@8WJ7+@ojze$nL^480buyiz;APN9 zddL_9g~@Vz@6=@=y$|s)N4qRr91?$z+^c+BD_oCnUdWk|a_}`v{eCaYf((onIu%hT zyW(`vaWQN7HbrQ*v$H!pYEDpGfdf;GT}l20Sn{(i{Img zP}{x(#3cX7OfB`NaF6lRL9Y+(;eyi@7o==pD$kJdC(}ZBs12iAUW_JhqU^qcT@S#35Al~rB6V&hZQQqA z@)HuDL|$|^RM`;Gxd{I$gvE%v7-NC;W*Cw;pYd2G-0dTP1;z02OiT5uJn$iD(aN4a%zMc=!X-8GtECuD5eC^E3uTdjnm$6^C zO`xNcFJmXgFbka|jRytq<2Sjpc}JMP?Z==CyX7JRL=3a3the~$Sp~(2enDfb7lX7Ags(`Q~sr|@+tqsHgq*c4@u`4R|q`kErBh02m zbwpOD|03D-gfTIb6+n7+R5w4aKS($G|2zMxUZ!|#Ygyj{B?GAG1u)Im` zVt`F*yPbutm?H^r9Q&49>#VHub$Io{4sG_@YLTsyz-Nrx{+;}}kD9M`Bsy8t0I z{7OFtn%YEOj|YBi1)RX+Ac=0i*MqW|c>5D9#EEGmbtPf=s$wff%U$e&1PBZ)y0BxZ z^3z{kr@dR#9N#b3>U^+50!t3Xh1NG&;cU2<{f>oVjzI`d&F3NVh@#axU0^H*hQC}X(i z#qg?Td3F@(&*$%@Fe)E;c6KTCLy z)4S_=iPeizsUTTqju2v2@&sCU;o4H#i}-DX^g2Gh>0gYFI_#nV;VL-DJPO%^p4$X~ z!(lL-szyn~*%OnBMhNQ;;EeL^I&aQVoz^d|q535`+Wo{{inwqDLFq1s^%gK#c^FoJ z0o?*|PG>e7&n>B~O)7pM+8a=#}SSyl>j?C()9{G2F4jD*1CgOXcQe+wf$@L_e#0=S2P!<_U={vJCW4u48l#`*DrUAGDB~j1G4~xa z)vpNB(8K&+)g)@DNVx0b$p@(hs6<>g%pSE!E{~`6<^Yt!p`ntbv(boLMk#a&-I2Ik zGj7S55wH{xNQe_wLSnot>3(e~m5D&l<-|6oQO9KMG`biI~ z!7*g0w2tUk+ZZ~lxqn1cIyiK8RsCR!$DWUN0)PO+9vG#Q?a?-;*b_nqKhZIAbxSQU z$x#x}Mf)=izNPQXxMZZD9~#nHFK~N3>bFu8p9ixdCK?|)bfQ&$4rzC>EifJt3{-6q z{@^x`iy#P%7az&=9}^`oX5q+uhNJ#5qdA?~fY3)nk-KJqp6g?WLv3scxjbnkqySR7 zpXwS8AhqDB`0rwM%X;-NMDz&rRrvsY{ogbt@;uVISHs!8QMSZGI904S@u`9qNx`*n zsD$}EghV~ilg=atS+vter1>LJ(|G6DQQXoVSkF`bj<=FMvXTqi70pB2X7hg`Z_?w7 zlV-T=c8&1Ehm;9vZ1tF6-sv13(GVlk*g7 z%W>sF@i^P|T&TVJkC`$Z_&2oO74x>*o)?6nrT5xes9R%%EI>}H$;CYW0c%nie~WBV zXpdQw@~1Az2s;cW>eK~KbWw#pyaa~gzMxA_AuVy*%?;E;4`gsk<-{}S!DYontrh*H zeC%yd;q+&<6(prd2|;^l0NKyz>DuqSE{1_I7h(wGok)b3@Mc%O5)31bZfh}l=lk;t zz#L>QRpp*PduoH^a6tO4!e=`KzxP`?L7d`6Z-p`PlT{A3+|1XyB@^ywSzm=ZDTo-< z79{eInT82txuZ}3x6`?-!XNj96r;alv^E84e-`WrlJFf@V|C!&ztVS#=|O6iqR^U< zhA)VaByClg?^>zN@|Q|~VwbtPZZfCfP-<%deaFmstQ8_(hgBIkYd<)3Item^q&Scl zWEW(CN%Df(_mUPvMy%H;se98l|5a%HGw^>EY;nVI*Xbr_k%~MU%ts`v4U=j9_7J*Y zyOU(MovoOEQEZ2kfhRBfMb%*PAD?4@ATS18AtXRUgL$iPrrbPW$Vh{`uG9cz@<<=uUEB=P9o- zs-2^Or9s6a2=h>@%k zv{K6IIQThERkXWOmgj31q^EAjr>|A1N_)+b=*)r$OQr%0rgI?prTMCq&QI?sCh-M= zb{F3HOEueE;%UF~esKfxNKN{2_-ja{{!V6{@ISHqpSAy&2aOO$boHflGU3tsag{7| zweO(!=+FEWytCC2&Klg&Dp5~BoLx&i8JeyF|J4gz;lN1y`|@y^&wmH?HMG*VjkXuL zM7H(LqYK|%APubD#JqtoA*dbp=c5X*KnEv!mp~gXU?z50iB5O)p$<}HCtFhhICz$x zs`kIbf+DK3uG3(u*q+n=%O^4-KAi>@Jzr)NezsA$q@%e&c z-Abs-+}|m&ow^dg5vkFtZ?6K?l>vE!tGGoT70KDB7S)v+768vIlJ5tb3ID_8e=n(j z-wUI}g){oOy5@nv=+{x+%#oFLGG?#_L;pKqe?A+l!bFSFpY0Est$(-v;zQHtYyW*b zjA|=v@u6|suBi#XW|94*=%ux=^)|NOULWyt=s#@aUu$C%316zx>=WD2>vChJG<0S{ z1R_K)b46D&d$+Zr$ma5YE1&-J*wR+=qmiPd|KQLt^GHys8bu;R1SZ3gkEZXT`p=us zxzuqZ;J#XVn6aO7A*wdYrVDtxO+%LgG2Qpx2@H^jm2^}Ji ze}~||1{&I1NX%bq2JGOJ!GA9Y9R#Ax=Et3um*sxfLj-)JxO0j@jgH2fcbDr_5IWv= z%k#jdpNp$2&HwXQaU%3mcwXg0Wu4yy)@EG5Uh%bXmCuet9LTzD+yy@&{~I3u{>=Ou zp#o89;Kz{x96A9=(U=39pWI!)Pm0Q3Y)y;A#h~~9n~Z;~lvrpzv&<%R(JUXLl1DhV z($HG@F;9C%fBc(x{M+~O&yY?aAQ0ACc6~U({(EK#S%DpqwjJZV!{zsDYj>AvT-bBq zW|Nbdl5#zdk#d>xCeQV;C9Z!05NxP`ALQ0(jWsq#z*wZ2+WozNY$Nn^)K+$@lMXqc|NTF{(f^sfJr0<~?c(PDw0G_CP^Eo*=FBiA zx6p=FX*HRO)@3%A8cY{TNUgUhWJ)euVl0Iar`_tUB#p9|Tzb1Nq1A4ar9HhRO|IQl zRws#y7z#sV<>%nOWrh>_6}EnLnO6^E}V_J>TE=_xpXHGv^F|E%;qaaIXXGN^U7A z4RrVHPx0AQexq(5at)j;Z?o%0N0V26pU(PxhTppsekBvUp#RKfQ1VQJJITPE8G#gV z?<%?fgiA99$LK5~2c3@=PrkRaC>6XSH*UH3GtK6JI# z?#gf4XcO$fj_AAj3+2;?XV=48ga3OtW_>cHGh65b`dtk-MMLM)Tx+-kxn-jU-*Xgl z2gA0gL@8KU<>zDx7eBNf!x=yj5MQ3$G8HPW9Kp9w~#hItNU?ia9Vo)H6 z{h<+(R2Dk|)$x~69NlL%=$Cy89_^rKI=jj9)2<3=-(mNhXL)arl^Q+otd7jNR$s8M zAS7QDj3RQLid(8hoJQ;{^(Ho(_(2C;46D;0$AMm|%|OkuHILT{7c7VggmjwVEHKQ+ zas3kAPc3Db#(B}Uv_03oQ)VTtZZk>Q;W?anhXzPaAv{7?<7Yj+YrJ$ph|?(e-61tI zey{DziQzqfd%~X|IGm-@|3tOR;^U@s{r=IEqN~HdEXEI-q{-Eo73^8X@r2rhZ?F3} zWvUXXn!L~kwllCXQF_p5g2-)>Wy$TnQ2CG>oMQ=oN^W|!VT7DAB3YdLueavL9fbO24EZw3CR2dld&PfIiDI1axrR0_**@YemQwt|>AH{u_iwP_r7@>+^hy4lX?yJ;!1PX+f*?GE37PS#J zioZ4Vf60;&2S2O10oj%Qb#Cx&LGGr}KF0qc*K*vXniZP{E|6N75Hu4qfBtc;%XZ7W zuYYBhvS=BTt5tcA%Py@Xy?tF)kTaxzMP2(qBD! z_1P^fiJ~CLjWlblPy0sJ8c%Rt5NFU;)=GtXA(^s^B^mSv&3zm_mlW%mzP);ocsUKS z0{cs+)w_Z*x5pbkhQI@=k4gT86kEWC72)qk#+(-P9DU7qb5~e*ht?8 zAzw(01B;zt3s_lOAqk^H88mNAY^QEW^BHJ)$h?Ah8A!;e6^@9SKHMrNahd@;5%VbU ztvLN!V&VK#=~>CNXT)Y)6g4Cv3%ug@XvYGHQDCtH91eGA-`B(TRlX-TuCFYWroA%V@xNgLZ@+Gy4&5C{Do#~&6~_~-@6OW-hso&j8dpr?{8$Sb~p zJI)nwpvZT-z+XvCf)Kt|wa^UrL!Yl{=GB!=#A&L9)*;6#an{mH)W{qvnn7SQU}srd zxeRb0Dy)EBrpD>V%hw(qC=uoOjVdS7ETLJTw~V5q&&9%3%kXMiE3#kK=~t=ZcN1z1 zyfe))i-2vEw*|<*Xp})QsmE(Tq#8yomHJsSZ2|BMaP|47%?wTx_|*~CfD}y$Y(i!% zvS*PTbz0p*+k$lI9^N>4KoY;hcLKZ9EpNx*I!nhLvJ3(u(c6@VF9V2U_)sB$(7WK& zfh$1C7Jh*G8-TCQu;vYdAJLv?o#^rr$P={jQ)*fPR}WO%?XwxyTz1@bPYiV)KLtv19GU{&2XX4b*|;R~ zqu^i-e+ozjyeg-`E@1zi@pF&N=bn>H?ln*9H92*_9M>wSX6pcRoB>6?YXgjv!Mw8y zCy0fnY9$w;gEtp`9SCgK=gPzEIP6BbW~G4JWzNWFWL zWr}k&E%+V@juX&M$cwTo1=Aw$ktB7W;7C6R?T_u#2+l5_;_K9W3)#?a!>_`sRJ`6k zO=}==ipSsIM~A+#0pGv|nFj8}t%mCb?j30Ix%rb$<*yp$TisFB0-CKN){BQOF4Xt4A>;WnnfU}`5>9%#4;|n|%@0WJv z==>7+A!L6*If@V-FmTz*Oe0*8TX7S)wAc(dk{*QwOUn|XP7`k@C-TGh2Pr(~hwl!) zQgaCKCBt`y$P^8$5pjiT?2`VV)=!?%Mz4)yZ4&MlDew6Pe~+%RY4f);t261Zs;YFW z;HsI+W^TV@du7hz({u4_&R;)y<`zTY#|=CD=P=aN@N)xCUQpPhMX0D^#6Za;MwB-^|RI-o0oBnL$zP zHRfb3zXs>qr(3p%QCEo%7#=CoVCTdxW;LltNc3cQf*Jaj-Rcic+K|2Sdaj>Tjf{up z>v7$fuJPfI8<`#p>mrV*51JyF5X>TaIJS3@!gN=Bh+r;fB2V}?TG_$tCbJXjJ4jvA zdB5nAuNrV(;WE0kL>D4rj>vp49s7eB!6hO=Y|%(x##%7(k4wF?IX4Je(ad^x``U%@ z`XiIs5AnNyswWc)KPjF5@k?u6QUsNwtEFyn4j_9a z^>n=X3CQidQW8Usn8RT;KA_DPJCDU8ket{%kE5B}HYr!XJDAy@{^z!yEx=l^l^kKo z`SUUFm?o3DCR*{u$a6}72wg_J`R2WWv)ID%3N>`_8Iu~lupzjy-zO%t$L7a=D(81| z9;H}~tu1$rRi8q7zN-D#`FN`Xx-~#NPQFBW5pgri6VXT}jKFORqY6!GJa51GlNX zmCQ(HVOY=J3yDUny1&Ys!&uHtjOlMRN_w0k*15tF-V)B!u@7`^KSI(?f5PI?0Y3xo zUXqtndnG9&?OhfxRBRn06dOi~ZVP3W-#ODk5=52^-;14hv_7=;P^Oc%8+CLHhOHQ_ zu@0~FG}~i?^Qg-iZ6cxV$K;fr9s`Rtq=7Q_S%xwae_j+y=^V-^NtilxFTiIw5QSAb ztSFRY4^uSQg^5ozWsM!d;ZZ1*D3lXK0IlYu%Gt3BE)+@>%CT}qM%1Em{WGfIa5)rf zpirVvP7ncfw}b9>WF+b_=Xq43PZYu7td2s7LODSMP>GI8^f9OI;lv}>Ky~E=Rh4i! z3Z)PWl$D=_04mW@i9SJ1pn&Sii6S^$AW;bQW64HQZg$_XNXmY{#C1fgYT>