From 40698b27b67579bb61493f8f8da7d1dc8b824ba1 Mon Sep 17 00:00:00 2001
From: Kirigaya <1193466151@qq.com>
Date: Fri, 17 Jan 2025 18:04:32 +0800
Subject: [PATCH 01/14] update readme & engine version & support vscodium
---
.vscodeignore | 1 +
README.md | 42 +++++++++++++++-----------------
README_CN.md | 51 +++++++++++++++++++++++++++++++++++++++
package.json | 2 +-
scripts/vscode-package.py | 2 +-
5 files changed, 74 insertions(+), 24 deletions(-)
create mode 100644 README_CN.md
diff --git a/.vscodeignore b/.vscodeignore
index f6f5c37..11a8cac 100644
--- a/.vscodeignore
+++ b/.vscodeignore
@@ -13,6 +13,7 @@ script
resources/**/*.js
resources/**/*.d.ts
resources/**/*.wasm
+resources/**/*.tar.gz
resources/dide-lsp/server
tsconfig.json
design
diff --git a/README.md b/README.md
index 4f231f0..7753628 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,6 @@
## Digital IDE
| All in one vscode
plugin for Verilog/VHDL development
-
[Document (New)](https://nc-ai.cn/en/) | [中文文档 (New)](https://nc-ai.cn/) | [Bilibili Video](https://www.bilibili.com/video/BV1t14y1179V/?spm_id_from=333.999.0.0)

@@ -13,39 +12,38 @@
-## 0.4.0 新增内容
+## New in 0.4.0
-**使用 Rust 重写全新的解析器与语言服务**:支持 verilog, vhdl, system verilog,性能更快,服务更加稳定。
+**Rewritten Parser and Language Services in Rust**: Supports Verilog, VHDL, and SystemVerilog with faster performance and more stable services.

-**修缮内容的文档化**:提供更加直接快速的,关于当前 HDL 文件的基本信息和依赖信息。支持 wavedrom 风格的注释并支持将其渲染成可视化的图表。
+**Improved Documentation**: Provides more direct and faster access to basic information and dependencies of the current HDL file. Supports Wavedrom-style comments and renders them into visual diagrams.

-**新增内容的 Vcd 渲染器**:增加顶部工具栏、系统信标等组件;支持左侧面板选定信号的拖拽、分组等功能、支持按住 shift 连续选中一片信号并进行增加和删除操作;支持基于系统信标建立相对坐标系;顶部工具栏支持选中信号的显示数字的进制转换,渲染模态切换,支持将信号渲染为模拟量。
+**New VCD Renderer**: Added top toolbar, system beacon, and other components; supports drag-and-drop and grouping of selected signals in the left panel, as well as selecting multiple signals by holding Shift for addition and deletion; supports establishing a relative coordinate system based on system beacons; the top toolbar supports base conversion for displayed numbers of selected signals, rendering mode switching, and rendering signals as analog values.

-
-- 全新的 Netlist 渲染器
+- Brand New Netlist Renderer

-## Feature
-- 增加对于 vhdl 的 全面支持(文件树、LSP等)
-- 增加 verilog, vhdl, xdc, tcl, vvp, vcd 等语言或生成文件的工作区图标
-- 增加对于 vivado, modelsim, verilator 的支持,用户可以通过设置 `function.lsp.linter.vhdl.diagnostor`(设置 vhdl) 和 `function.lsp.linter.vlog.diagnostor`(设置 verilog) 来使用这些第三方工具的仿真和自动纠错。
-- 增加对于 TCL, XDC, VVP 等脚本的 LSP 和 语法高亮 支持。
+## Features
+- Added comprehensive support for VHDL (file tree, LSP, etc.)
+- Added workspace icons for languages or generated files such as Verilog, VHDL, XDC, TCL, VVP, VCD, etc.
+- Added support for Vivado, ModelSim, and Verilator. Users can use these third-party tools for simulation and auto-correction by setting `function.lsp.linter.vhdl.diagnostor` (for VHDL) and `function.lsp.linter.vlog.diagnostor` (for Verilog).
+- Added LSP and syntax highlighting support for scripts like TCL, XDC, and VVP.
-## Change
-- 将插件的工作状态显示在 vscode 下侧的状态栏上,利于用户了解目前的设置状态
-- 状态栏右下角现在可以看到目前选择的linter以及是否正常工作了
-- 优化项目配置目录
-- 优化自动补全的性能
+## Changes
+- Display the plugin's working status in the status bar at the bottom of VSCode, making it easier for users to understand the current settings.
+- The bottom-right corner of the status bar now shows the currently selected linter and whether it is functioning properly.
+- Optimized project configuration directory.
+- Improved auto-completion performance.
-## Bug 修复
-- 修复文档化 input, output 处注释无法正常显示到文档的 bug
-- 修复 iverilog 仿真功能中,将重复的路径作为编译参数编译的 bug
-- 修复 iverilog 仿真功能中,将 `include
加入或去除后,无法通过仿真编译的 bug (没有更新 instance 的 instModPathStatus 属性)
-- 修复其他已知 bug
\ No newline at end of file
+## Bug Fixes
+- Fixed a bug where comments on `input` and `output` were not displayed correctly in the documentation.
+- Fixed a bug in the Icarus Verilog simulation feature where duplicate paths were included as compilation parameters.
+- Fixed a bug in the Icarus Verilog simulation feature where adding or removing `include
would cause simulation compilation to fail (the `instModPathStatus` property of the instance was not updated).
+- Fixed other known bugs.
\ No newline at end of file
diff --git a/README_CN.md b/README_CN.md
new file mode 100644
index 0000000..4f231f0
--- /dev/null
+++ b/README_CN.md
@@ -0,0 +1,51 @@
+
Digital IDE
| All in one vscode
plugin for Verilog/VHDL development
+
+
+[Document (New)](https://nc-ai.cn/en/) | [中文文档 (New)](https://nc-ai.cn/) | [Bilibili Video](https://www.bilibili.com/video/BV1t14y1179V/?spm_id_from=333.999.0.0)
+
+
+
+
+
+
+`include
加入或去除后,无法通过仿真编译的 bug (没有更新 instance 的 instModPathStatus 属性)
+- 修复其他已知 bug
\ No newline at end of file
diff --git a/package.json b/package.json
index 0fd74bf..3e15364 100644
--- a/package.json
+++ b/package.json
@@ -9,7 +9,7 @@
"l10n": "./l10n",
"icon": "images/icon.png",
"engines": {
- "vscode": "^1.94.0"
+ "vscode": "^1.85.0"
},
"keywords": [
"FPGA Develop Support",
diff --git a/scripts/vscode-package.py b/scripts/vscode-package.py
index d1a5a76..e128ca9 100644
--- a/scripts/vscode-package.py
+++ b/scripts/vscode-package.py
@@ -107,6 +107,6 @@ pipe.add_command('make vsix installer', 'vsce package')
pipe.add_command('modify vsix installer', lambda : modify_vsix())
# pipe.add_command('remove out-js', lambda : remove_folder('out-js'))
# pipe.add_command('remove out', lambda : remove_folder('out'))
-pipe.add_command('install', lambda : install_extension())
+# pipe.add_command('install', lambda : install_extension())
pipe.run()
\ No newline at end of file
From db41b67e0495658784622cc7db7d2d4d4238814f Mon Sep 17 00:00:00 2001
From: Kirigaya <1193466151@qq.com>
Date: Thu, 6 Feb 2025 20:26:30 +0800
Subject: [PATCH 02/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20logic=20=E9=AB=98?=
=?UTF-8?q?=E4=BA=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package-lock.json | 2 +-
syntaxes/systemverilog.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 98001f7..dab49d4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -39,7 +39,7 @@
"webpack-cli": "^5.1.4"
},
"engines": {
- "vscode": "^1.94.0"
+ "vscode": "^1.85.0"
}
},
"node_modules/@discoveryjs/json-ext": {
diff --git a/syntaxes/systemverilog.json b/syntaxes/systemverilog.json
index f890480..19838ec 100644
--- a/syntaxes/systemverilog.json
+++ b/syntaxes/systemverilog.json
@@ -172,7 +172,7 @@
"keywords": {
"patterns": [
{
- "match": "\\b(always|and|assign|attribute|begin|buf|bufif0|bufif1|case(xz)?|cmos|deassign|default|defparam|disable|edge|else|end(attribute|case|function|generate|module|primitive|specify|table|task)?|event|for|force|forever|fork|function|generate|genvar|highz(01)|if(none)?|initial|inout|input|output|integer|join|localparam|medium|module|large|macromodule|nand|negedge|nmos|nor|not|notif(01)|or|parameter|pmos|posedge|primitive|pull0|pull1|pulldown|pullup|rcmos|real|realtime|reg|release|repeat|rnmos|rpmos|rtran|rtranif(01)|scalared|signed|small|specify|specparam|strength|strong0|strong1|supply0|supply1|table|task|time|tran|tranif(01)|tri(01)?|tri(and|or|reg)|unsigned|vectored|wait|wand|weak(01)|while|wire|wor|xnor|xor)\\b",
+ "match": "\\b(always|and|assign|attribute|begin|buf|bufif0|bufif1|case(xz)?|cmos|deassign|default|defparam|disable|edge|else|end(attribute|case|function|generate|module|primitive|specify|table|task)?|event|for|force|forever|fork|function|generate|genvar|highz(01)|if(none)?|initial|inout|input|output|logic|integer|join|localparam|medium|module|large|macromodule|nand|negedge|nmos|nor|not|notif(01)|or|parameter|pmos|posedge|primitive|pull0|pull1|pulldown|pullup|rcmos|real|realtime|reg|release|repeat|rnmos|rpmos|rtran|rtranif(01)|scalared|signed|small|specify|specparam|strength|strong0|strong1|supply0|supply1|table|task|time|tran|tranif(01)|tri(01)?|tri(and|or|reg)|unsigned|vectored|wait|wand|weak(01)|while|wire|wor|xnor|xor)\\b",
"name": "keyword.other.verilog"
},
{
From 759c774add4e5c55f870c792796521c9a7c4aa11 Mon Sep 17 00:00:00 2001
From: Kirigaya <1193466151@qq.com>
Date: Thu, 6 Feb 2025 21:23:25 +0800
Subject: [PATCH 03/14] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=89=A9=E4=BD=99?=
=?UTF-8?q?=E5=85=B3=E9=94=AE=E8=AF=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
syntaxes/systemverilog.json | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/syntaxes/systemverilog.json b/syntaxes/systemverilog.json
index 19838ec..bdb5a72 100644
--- a/syntaxes/systemverilog.json
+++ b/syntaxes/systemverilog.json
@@ -175,6 +175,10 @@
"match": "\\b(always|and|assign|attribute|begin|buf|bufif0|bufif1|case(xz)?|cmos|deassign|default|defparam|disable|edge|else|end(attribute|case|function|generate|module|primitive|specify|table|task)?|event|for|force|forever|fork|function|generate|genvar|highz(01)|if(none)?|initial|inout|input|output|logic|integer|join|localparam|medium|module|large|macromodule|nand|negedge|nmos|nor|not|notif(01)|or|parameter|pmos|posedge|primitive|pull0|pull1|pulldown|pullup|rcmos|real|realtime|reg|release|repeat|rnmos|rpmos|rtran|rtranif(01)|scalared|signed|small|specify|specparam|strength|strong0|strong1|supply0|supply1|table|task|time|tran|tranif(01)|tri(01)?|tri(and|or|reg)|unsigned|vectored|wait|wand|weak(01)|while|wire|wor|xnor|xor)\\b",
"name": "keyword.other.verilog"
},
+ {
+ "match": "\\b(byte|program|config|incdir|instance|int|shortint|longint|bind|liblist|void|local|endconfig|package|library|const|virtual|automatic|constraint|include|var|covergroup|string|null|randc|class|extends|sequence|shortreal|interface|protected|rand)\\b",
+ "name": "keyword.other.verilog"
+ },
{
"match": "\\b(initial|always|wait|force|release|assign|always_comb|always_ff|always_latch|forever|repeat|while|for|if|iff|else|case|casex|casez|default|endcase|return|break|continue|do|foreach|with|inside|dist|clocking|cover|coverpoint|property|bins|binsof|illegal_bins|ignore_bins|randcase|modport|matches|solve|static|assert|assume|before|expect|cross|ref|first_match|srandom|struct|packed|final|chandle|alias|tagged|extern|throughout|timeprecision|timeunit|priority|type|union|uwire|wait_order|triggered|randsequence|import|export|context|pure|intersect|wildcard|within|new|typedef|enum|this|super|begin|fork|forkjoin|unique|unique0|priority)\\b",
"name": "keyword.other.systemverilog"
From a0fddd3dd1909c8c2e8512d9e56ce7098309a2c9 Mon Sep 17 00:00:00 2001
From: Kirigaya <1193466151@qq.com>
Date: Fri, 7 Feb 2025 17:38:12 +0800
Subject: [PATCH 04/14] =?UTF-8?q?=E6=B5=8B=E8=AF=95=20issue=20=E6=A8=A1?=
=?UTF-8?q?=E6=9D=BF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/ISSUE_TEMPLATE/bug-report.yaml | 64 ++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
create mode 100644 .github/ISSUE_TEMPLATE/bug-report.yaml
diff --git a/.github/ISSUE_TEMPLATE/bug-report.yaml b/.github/ISSUE_TEMPLATE/bug-report.yaml
new file mode 100644
index 0000000..6b372c8
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-report.yaml
@@ -0,0 +1,64 @@
+name: Bug Report
+description: File a bug report.
+title: "[Bug]: "
+labels: ["bug", "triage"]
+projects: ["octo-org/1", "octo-org/44"]
+assignees:
+ - octocat
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thanks for taking the time to fill out this bug report!
+ - type: input
+ id: contact
+ attributes:
+ label: Contact Details
+ description: How can we get in touch with you if we need more info?
+ placeholder: ex. email@example.com
+ validations:
+ required: false
+ - type: textarea
+ id: what-happened
+ attributes:
+ label: What happened?
+ description: Also tell us, what did you expect to happen?
+ placeholder: Tell us what you see!
+ value: "A bug happened!"
+ validations:
+ required: true
+ - type: dropdown
+ id: version
+ attributes:
+ label: Version
+ description: What version of our software are you running?
+ options:
+ - 1.0.2 (Default)
+ - 1.0.3 (Edge)
+ default: 0
+ validations:
+ required: true
+ - type: dropdown
+ id: browsers
+ attributes:
+ label: What browsers are you seeing the problem on?
+ multiple: true
+ options:
+ - Firefox
+ - Chrome
+ - Safari
+ - Microsoft Edge
+ - type: textarea
+ id: logs
+ attributes:
+ label: Relevant log output
+ description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
+ render: shell
+ - type: checkboxes
+ id: terms
+ attributes:
+ label: Code of Conduct
+ description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com).
+ options:
+ - label: I agree to follow this project's Code of Conduct
+ required: true
From 4486fff053f38c8b43d38531b84393cb4931ab2f Mon Sep 17 00:00:00 2001
From: Kirigaya <1193466151@qq.com>
Date: Fri, 7 Feb 2025 17:41:49 +0800
Subject: [PATCH 05/14] =?UTF-8?q?=E6=B5=8B=E8=AF=95=20issue=20=E6=A8=A1?=
=?UTF-8?q?=E6=9D=BF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/ISSUE_TEMPLATE/bug-report.cn.yaml | 64 +++++++++++++++++++++++
1 file changed, 64 insertions(+)
create mode 100644 .github/ISSUE_TEMPLATE/bug-report.cn.yaml
diff --git a/.github/ISSUE_TEMPLATE/bug-report.cn.yaml b/.github/ISSUE_TEMPLATE/bug-report.cn.yaml
new file mode 100644
index 0000000..4c0cbf6
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-report.cn.yaml
@@ -0,0 +1,64 @@
+name: 报告错误
+description: 提交一个错误报告。
+title: "[Bug]: "
+labels: ["bug", "triage"]
+projects: ["octo-org/1", "octo-org/44"]
+assignees:
+ - octocat
+body:
+ - type: markdown
+ attributes:
+ value: |
+ 感谢您抽出时间填写此错误报告!
+ - type: input
+ id: contact
+ attributes:
+ label: 联系方式
+ description: 如果需要更多信息,我们如何联系您?
+ placeholder: 例如:email@example.com
+ validations:
+ required: false
+ - type: textarea
+ id: what-happened
+ attributes:
+ label: 发生了什么?
+ description: 请告诉我们,您期望发生什么?
+ placeholder: 告诉我们您看到的情况!
+ value: "发生了一个错误!"
+ validations:
+ required: true
+ - type: dropdown
+ id: version
+ attributes:
+ label: 版本
+ description: 您正在运行的软件版本是什么?
+ options:
+ - 1.0.2 (默认)
+ - 1.0.3 (最新)
+ default: 0
+ validations:
+ required: true
+ - type: dropdown
+ id: browsers
+ attributes:
+ label: 您在哪些浏览器上遇到此问题?
+ multiple: true
+ options:
+ - Firefox
+ - Chrome
+ - Safari
+ - Microsoft Edge
+ - type: textarea
+ id: logs
+ attributes:
+ label: 相关日志输出
+ description: 请复制并粘贴任何相关的日志输出。这将自动格式化为代码,因此无需使用反引号。
+ render: shell
+ - type: checkboxes
+ id: terms
+ attributes:
+ label: 行为准则
+ description: 提交此问题即表示您同意遵守我们的 [行为准则](https://example.com)。
+ options:
+ - label: 我同意遵守本项目的行为准则
+ required: true
From aa6e0045532dc943c2c0492b21d5a1e21fce9cee Mon Sep 17 00:00:00 2001
From: Kirigaya <1193466151@qq.com>
Date: Fri, 7 Feb 2025 18:02:46 +0800
Subject: [PATCH 06/14] =?UTF-8?q?=E6=B5=8B=E8=AF=95=20issue=20=E6=A8=A1?=
=?UTF-8?q?=E6=9D=BF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/ISSUE_TEMPLATE/bug-report.cn.yaml | 121 +++++++++++++---------
1 file changed, 73 insertions(+), 48 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/bug-report.cn.yaml b/.github/ISSUE_TEMPLATE/bug-report.cn.yaml
index 4c0cbf6..a33e27b 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.cn.yaml
+++ b/.github/ISSUE_TEMPLATE/bug-report.cn.yaml
@@ -1,64 +1,89 @@
-name: 报告错误
-description: 提交一个错误报告。
-title: "[Bug]: "
-labels: ["bug", "triage"]
-projects: ["octo-org/1", "octo-org/44"]
-assignees:
- - octocat
+name: 报告 Bug
+description: 向我们报告 Bug。
+title: ""
+labels: ["bug"]
body:
- type: markdown
attributes:
value: |
- 感谢您抽出时间填写此错误报告!
- - type: input
- id: contact
- attributes:
- label: 联系方式
- description: 如果需要更多信息,我们如何联系您?
- placeholder: 例如:email@example.com
- validations:
- required: false
- - type: textarea
- id: what-happened
- attributes:
- label: 发生了什么?
- description: 请告诉我们,您期望发生什么?
- placeholder: 告诉我们您看到的情况!
- value: "发生了一个错误!"
- validations:
- required: true
+ 投我以木桃,报之以琼瑶。
+ 填写之前请阅读 [nc-ai | 关于反馈](https://nc-ai.cn/article/cxnqr517/#%E5%85%B3%E4%BA%8E%E5%8F%8D%E9%A6%88)
- type: dropdown
- id: version
+ id: os
attributes:
- label: 版本
- description: 您正在运行的软件版本是什么?
+ label: 操作系统
+ description: 您在什么操作系统上运行?
options:
- - 1.0.2 (默认)
- - 1.0.3 (最新)
+ - Windows
+ - Mac
+ - Linux
+ - 其他
default: 0
validations:
required: true
- type: dropdown
- id: browsers
+ id: chip
attributes:
- label: 您在哪些浏览器上遇到此问题?
- multiple: true
+ label: 芯片架构
+ description: 您在什么架构的芯片上运行?
options:
- - Firefox
- - Chrome
- - Safari
- - Microsoft Edge
+ - x86
+ - arm
+ - loongson
+ - 其他
+ default: 0
+ validations:
+ required: true
+ - type: dropdown
+ id: connect
+ attributes:
+ label: 运行方式
+ description: 您采用何种方式运行?
+ options:
+ - 桌面运行
+ - SSH 远程连接
+ - WSL2
+ - 虚拟机
+ - 其他
+ default: 0
+ validations:
+ required: true
+ - type: input
+ id: vscode-version
+ attributes:
+ label: Vscode / Vscodium 版本
+ placeholder: "1.96.2"
+ validations:
+ required: true
+ - type: input
+ id: dide-version
+ attributes:
+ label: Digital IDE 版本
+ placeholder: "0.4.0"
+ validations:
+ required: true
- type: textarea
- id: logs
+ id: meet-question
attributes:
- label: 相关日志输出
- description: 请复制并粘贴任何相关的日志输出。这将自动格式化为代码,因此无需使用反引号。
+ label: 你遇到的问题
+ validations:
+ required: true
+ - type: textarea
+ id: expect
+ attributes:
+ label: 你希望的运行结果
+ validations:
+ required: false
+ - type: textarea
+ id: actual
+ attributes:
+ label: 实际的运行结果
+ validations:
+ required: false
+ - type: textarea
+ id: log
+ attributes:
+ label: 运行日志
render: shell
- - type: checkboxes
- id: terms
- attributes:
- label: 行为准则
- description: 提交此问题即表示您同意遵守我们的 [行为准则](https://example.com)。
- options:
- - label: 我同意遵守本项目的行为准则
- required: true
+ validations:
+ required: false
\ No newline at end of file
From 99df944e4f10ac9ba57093885d2e7c05df3b6826 Mon Sep 17 00:00:00 2001
From: Kirigaya <1193466151@qq.com>
Date: Fri, 7 Feb 2025 18:04:05 +0800
Subject: [PATCH 07/14] =?UTF-8?q?=E6=B5=8B=E8=AF=95=20issue=20=E6=A8=A1?=
=?UTF-8?q?=E6=9D=BF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/ISSUE_TEMPLATE/bug-report.cn.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/ISSUE_TEMPLATE/bug-report.cn.yaml b/.github/ISSUE_TEMPLATE/bug-report.cn.yaml
index a33e27b..db1eda6 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.cn.yaml
+++ b/.github/ISSUE_TEMPLATE/bug-report.cn.yaml
@@ -1,6 +1,6 @@
name: 报告 Bug
description: 向我们报告 Bug。
-title: ""
+title: "[Bug]: "
labels: ["bug"]
body:
- type: markdown
From 2f90a87a1c9df236ee621e586d8e56ac0e7aaa57 Mon Sep 17 00:00:00 2001
From: Kirigaya <1193466151@qq.com>
Date: Fri, 7 Feb 2025 18:45:41 +0800
Subject: [PATCH 08/14] =?UTF-8?q?=E6=B5=8B=E8=AF=95=20issue=20=E6=A8=A1?=
=?UTF-8?q?=E6=9D=BF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/ISSUE_TEMPLATE/bug-report.yaml | 117 +++++++++++++++----------
1 file changed, 71 insertions(+), 46 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/bug-report.yaml b/.github/ISSUE_TEMPLATE/bug-report.yaml
index 6b372c8..416ed51 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.yaml
+++ b/.github/ISSUE_TEMPLATE/bug-report.yaml
@@ -1,64 +1,89 @@
name: Bug Report
-description: File a bug report.
+description: Report a bug to us.
title: "[Bug]: "
-labels: ["bug", "triage"]
-projects: ["octo-org/1", "octo-org/44"]
-assignees:
- - octocat
+labels: ["bug"]
body:
- type: markdown
attributes:
value: |
- Thanks for taking the time to fill out this bug report!
- - type: input
- id: contact
- attributes:
- label: Contact Details
- description: How can we get in touch with you if we need more info?
- placeholder: ex. email@example.com
- validations:
- required: false
- - type: textarea
- id: what-happened
- attributes:
- label: What happened?
- description: Also tell us, what did you expect to happen?
- placeholder: Tell us what you see!
- value: "A bug happened!"
- validations:
- required: true
+ "You give me a peach, I repay you with a jade."
+ Please read [nc-ai | About Feedback](https://nc-ai.cn/article/cxnqr517/#%E5%85%B3%E4%BA%8E%E5%8F%8D%E9%A6%88) before filling out this form.
- type: dropdown
- id: version
+ id: os
attributes:
- label: Version
- description: What version of our software are you running?
+ label: Operating System
+ description: What operating system are you running on?
options:
- - 1.0.2 (Default)
- - 1.0.3 (Edge)
+ - Windows
+ - Mac
+ - Linux
+ - Other
default: 0
validations:
required: true
- type: dropdown
- id: browsers
+ id: chip
attributes:
- label: What browsers are you seeing the problem on?
- multiple: true
+ label: Chip Architecture
+ description: What chip architecture are you running on?
options:
- - Firefox
- - Chrome
- - Safari
- - Microsoft Edge
+ - x86
+ - arm
+ - loongson
+ - Other
+ default: 0
+ validations:
+ required: true
+ - type: dropdown
+ id: connect
+ attributes:
+ label: Running Method
+ description: How are you running the software?
+ options:
+ - Desktop
+ - SSH Remote Connection
+ - WSL2
+ - Virtual Machine
+ - Other
+ default: 0
+ validations:
+ required: true
+ - type: input
+ id: vscode-version
+ attributes:
+ label: Vscode / Vscodium Version
+ placeholder: "1.96.2"
+ validations:
+ required: true
+ - type: input
+ id: dide-version
+ attributes:
+ label: Digital IDE Version
+ placeholder: "0.4.0"
+ validations:
+ required: true
- type: textarea
- id: logs
+ id: meet-question
attributes:
- label: Relevant log output
- description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
+ label: Issue You Encountered
+ validations:
+ required: true
+ - type: textarea
+ id: expect
+ attributes:
+ label: Expected Result
+ validations:
+ required: false
+ - type: textarea
+ id: actual
+ attributes:
+ label: Actual Result
+ validations:
+ required: false
+ - type: textarea
+ id: log
+ attributes:
+ label: Runtime Log
render: shell
- - type: checkboxes
- id: terms
- attributes:
- label: Code of Conduct
- description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com).
- options:
- - label: I agree to follow this project's Code of Conduct
- required: true
+ validations:
+ required: false
From bae22883de110362de6f2917550335e35610d490 Mon Sep 17 00:00:00 2001
From: Kirigaya <1193466151@qq.com>
Date: Fri, 14 Feb 2025 01:40:25 +0800
Subject: [PATCH 09/14] =?UTF-8?q?=E5=AE=8C=E6=88=90=20codedoc=20=E4=B8=AD?=
=?UTF-8?q?=E7=AB=AF=E9=87=8D=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.vscode/settings.json | 6 +-
l10n/bundle.l10n.de.json | 7 +-
l10n/bundle.l10n.en.json | 7 +-
l10n/bundle.l10n.ja.json | 7 +-
l10n/bundle.l10n.zh-cn.json | 7 +-
l10n/bundle.l10n.zh-tw.json | 7 +-
resources/dide-doc/README.md | 6 +
resources/dide-doc/iconfont.css | 43 ---
resources/dide-doc/iconfont.woff2 | Bin 1844 -> 0 bytes
resources/dide-doc/index.html | 65 ----
resources/dide-doc/scripts/update_icon.py | 42 ---
resources/dide-doc/view/CascadiaCode.woff2 | Bin 0 -> 65732 bytes
resources/dide-doc/view/animation.css | 127 ++++++++
.../{documentation.css => view/codedoc.css} | 267 +++++++++++++--
resources/dide-doc/view/css/app.6bbe8d76.css | 1 +
.../view/css/chunk-vendors.0be1d56f.css | 1 +
resources/dide-doc/{ => view}/icon.png | Bin
resources/dide-doc/view/icon.svg | 42 +++
resources/dide-doc/view/iconfont.css | 99 ++++++
resources/dide-doc/view/iconfont.woff2 | Bin 0 -> 3376 bytes
resources/dide-doc/view/index.html | 1 +
resources/dide-doc/view/js/661.6678bd27.js | 1 +
resources/dide-doc/view/js/664.3bf7a321.js | 6 +
resources/dide-doc/view/js/842.bcf3c20f.js | 1 +
resources/dide-doc/view/js/app.c552ae0e.js | 1 +
.../view/js/chunk-vendors.bfc2ce54.js | 71 ++++
resources/dide-doc/view/svg.css | 59 ++++
resources/dide-doc/view/vscode.css | 149 +++++++++
src/function/dide-doc/codedoc.ts | 308 ++++++++++++++++++
src/function/dide-doc/index.ts | 83 ++++-
src/function/dide-netlist/index.ts | 4 -
31 files changed, 1211 insertions(+), 207 deletions(-)
create mode 100644 resources/dide-doc/README.md
delete mode 100644 resources/dide-doc/iconfont.css
delete mode 100644 resources/dide-doc/iconfont.woff2
delete mode 100644 resources/dide-doc/index.html
delete mode 100644 resources/dide-doc/scripts/update_icon.py
create mode 100644 resources/dide-doc/view/CascadiaCode.woff2
create mode 100644 resources/dide-doc/view/animation.css
rename resources/dide-doc/{documentation.css => view/codedoc.css} (66%)
create mode 100644 resources/dide-doc/view/css/app.6bbe8d76.css
create mode 100644 resources/dide-doc/view/css/chunk-vendors.0be1d56f.css
rename resources/dide-doc/{ => view}/icon.png (100%)
create mode 100644 resources/dide-doc/view/icon.svg
create mode 100644 resources/dide-doc/view/iconfont.css
create mode 100644 resources/dide-doc/view/iconfont.woff2
create mode 100644 resources/dide-doc/view/index.html
create mode 100644 resources/dide-doc/view/js/661.6678bd27.js
create mode 100644 resources/dide-doc/view/js/664.3bf7a321.js
create mode 100644 resources/dide-doc/view/js/842.bcf3c20f.js
create mode 100644 resources/dide-doc/view/js/app.c552ae0e.js
create mode 100644 resources/dide-doc/view/js/chunk-vendors.bfc2ce54.js
create mode 100644 resources/dide-doc/view/svg.css
create mode 100644 resources/dide-doc/view/vscode.css
create mode 100644 src/function/dide-doc/codedoc.ts
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 8a3043b..d0146e9 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,12 +1,10 @@
-// Place your settings in this file to overwrite default and user settings.
{
"files.exclude": {
- "out": false // set this to true to hide the "out" folder with the compiled JS files
+ "out": false
},
"search.exclude": {
- "out": true // set this to false to include "out" folder in search results
+ "out": true
},
- // Turn off tsc task auto detection since we have the necessary tasks as npm scripts
"typescript.tsc.autoDetect": "off",
"i18n-haru.root": "l10n",
"i18n-haru.main": "zh-cn",
diff --git a/l10n/bundle.l10n.de.json b/l10n/bundle.l10n.de.json
index 8df01b2..e3402b1 100644
--- a/l10n/bundle.l10n.de.json
+++ b/l10n/bundle.l10n.de.json
@@ -126,5 +126,10 @@
"info.pdf.exporting": "PDF wird nach {0} exportiert",
"info.generate-pdf-to": "PDF wurde unter {0} generiert",
"info.vivado-gui.started": "Vivado GUI wird gestartet, bitte warten Sie einen Moment",
- "ok": "Gut"
+ "ok": "Gut",
+ "netlist.save-as-markdown": "Als Markdown speichern",
+ "markdown-file": "Markdown-Datei",
+ "toolbar.save-as-html": "Als HTML speichern",
+ "html-file": "HTML-Datei",
+ "dide-doc.error.loading-html": "Digital CodeDoc-Ressourcen konnten nicht geladen werden, das Installationsverzeichnis ist beschädigt. Bitte installieren Sie das Programm neu!"
}
\ No newline at end of file
diff --git a/l10n/bundle.l10n.en.json b/l10n/bundle.l10n.en.json
index 6e0b938..01da669 100644
--- a/l10n/bundle.l10n.en.json
+++ b/l10n/bundle.l10n.en.json
@@ -126,5 +126,10 @@
"info.pdf.exporting": "Exporting PDF to {0}",
"info.generate-pdf-to": "PDF has been generated to {0}",
"info.vivado-gui.started": "Vivado GUI is starting, please wait a moment",
- "ok": "Good"
+ "ok": "Good",
+ "netlist.save-as-markdown": "Save as Markdown",
+ "markdown-file": "Markdown file",
+ "toolbar.save-as-html": "Save as HTML",
+ "html-file": "HTML file",
+ "dide-doc.error.loading-html": "Digital CodeDoc resource loading failed, the installation directory is corrupted, please reinstall!"
}
\ No newline at end of file
diff --git a/l10n/bundle.l10n.ja.json b/l10n/bundle.l10n.ja.json
index ed37dfe..76bbedd 100644
--- a/l10n/bundle.l10n.ja.json
+++ b/l10n/bundle.l10n.ja.json
@@ -126,5 +126,10 @@
"info.pdf.exporting": "PDFを{0}にエクスポート中",
"info.generate-pdf-to": "PDFは{0}に生成されました",
"info.vivado-gui.started": "Vivado GUI を起動しています、少々お待ちください",
- "ok": "良い"
+ "ok": "良い",
+ "netlist.save-as-markdown": "Markdownとして保存",
+ "markdown-file": "Markdownファイル",
+ "toolbar.save-as-html": "HTMLとして保存",
+ "html-file": "HTMLファイル",
+ "dide-doc.error.loading-html": "Digital CodeDoc リソースの読み込みに失敗しました。インストールディレクトリが破損しています。再インストールしてください!"
}
\ No newline at end of file
diff --git a/l10n/bundle.l10n.zh-cn.json b/l10n/bundle.l10n.zh-cn.json
index b327d92..9cd3d42 100644
--- a/l10n/bundle.l10n.zh-cn.json
+++ b/l10n/bundle.l10n.zh-cn.json
@@ -126,5 +126,10 @@
"info.pdf.exporting": "正在导出 pdf 到 {0}",
"info.generate-pdf-to": "pdf 已经生成至 {0}",
"info.vivado-gui.started": "Vivado GUI 正在启动中,稍等片刻",
- "ok": "好的"
+ "ok": "好的",
+ "netlist.save-as-markdown": "保存为 Markdown",
+ "markdown-file": "Markdown 文件",
+ "toolbar.save-as-html": "保存为 HTML",
+ "html-file": "HTML 文件",
+ "dide-doc.error.loading-html": "Digital CodeDoc 资源加载失败,安装目录已经损坏,请重新安装!"
}
\ No newline at end of file
diff --git a/l10n/bundle.l10n.zh-tw.json b/l10n/bundle.l10n.zh-tw.json
index 8aec2ff..3b29529 100644
--- a/l10n/bundle.l10n.zh-tw.json
+++ b/l10n/bundle.l10n.zh-tw.json
@@ -126,5 +126,10 @@
"info.pdf.exporting": "正在導出PDF到{0}",
"info.generate-pdf-to": "PDF 已生成至 {0}",
"info.vivado-gui.started": "Vivado GUI 正在啟動中,稍等片刻",
- "ok": "好的"
+ "ok": "好的",
+ "netlist.save-as-markdown": "儲存為 Markdown",
+ "markdown-file": "Markdown 檔案",
+ "toolbar.save-as-html": "保存為HTML",
+ "html-file": "HTML檔案",
+ "dide-doc.error.loading-html": "Digital CodeDoc 資源加載失敗,安裝目錄已經損壞,請重新安裝!"
}
\ No newline at end of file
diff --git a/resources/dide-doc/README.md b/resources/dide-doc/README.md
new file mode 100644
index 0000000..0fcf892
--- /dev/null
+++ b/resources/dide-doc/README.md
@@ -0,0 +1,6 @@
+dide-doc
+ - view
+ - index.html
+ - css
+ - js
+ - ...
\ No newline at end of file
diff --git a/resources/dide-doc/iconfont.css b/resources/dide-doc/iconfont.css
deleted file mode 100644
index 8b0a030..0000000
--- a/resources/dide-doc/iconfont.css
+++ /dev/null
@@ -1,43 +0,0 @@
-@font-face {
- font-family: "iconfont"; /* Project id 4748764 */
- src: url('iconfont.woff2?t=1731914985969') format('woff2'),
- url('iconfont.woff?t=1731914985969') format('woff'),
- url('iconfont.ttf?t=1731914985969') format('truetype');
-}
-
-.iconfont {
- font-family: "iconfont" !important;
-
- font-style: normal;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-.icon-tree:before {
- content: "\e601";
-}
-
-.icon-verilog:before {
- content: "\e634";
-}
-
-.icon-top-module:before {
- content: "\e682";
-}
-
-.icon-top:before {
- content: "\e600";
-}
-
-.icon-parameter:before {
- content: "\e655";
-}
-
-.icon-unknown:before {
- content: "\e62a";
-}
-
-.icon-port:before {
- content: "\e638";
-}
-
diff --git a/resources/dide-doc/iconfont.woff2 b/resources/dide-doc/iconfont.woff2
deleted file mode 100644
index 6e233832eee55ddb6098d79e649ddc261d353b0b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1844
zcmV-42g~?(Pew8T0RR9100%Sx3jhEB01hw!00!j%0RR9100000000000000000000
z0000SR0d!GgKP?pRE!}3HUcCAAPW)z1Rw>3X9s8-DGbOCrL2&U0ASz&LOk$)_`7fX
z*5ot_%ffBj!aZ?Lz>qs(HYRAN_y2#Jb|3i6Af7lCky2&ZWH@I38h^gI2~9+@tJ^>6^y|G5*m`e9 zV|^dj$Mr&eK;44KmV0$;zUBB{U`wk-t!4v?Gl zCJh1rHf<`|ev%TN*Am>06tbnD;ks{)grPhO$HXH9Cw(4kKZAA(#V50+|E9=jfwj@Y z*!`DUjyYy>s>onWlxm&l_iw8{<54`! 0K|9`34x2-}TK{`=(`!|0U zf8@{V342KLPkA+Q74rVQ``*K=danwh0FniO6ai3yL7@mLkdSPn0McCqX*WfyrzzV0 zM{ax0QD@oTbB^sv04ds3a9a{BC)pk3pMoc4**`^lQi_YsY*&+4lNY #46(Ehl>zgP)RpZlJM#=D_EY35JC`o1Lr!pK=dRH&+FOG5 z5U`T|bLCup>x}ro!zW*58>fJ~+!TfV=coBeJw^6z(os+)FwB3P$^u{rv~SVz>Z$zR zU|NGZ_i5Honr#(s01Cjt0hENr|8G`5`>IkoeS1Qk(|=t6hf)0(#Yea=G3KRG)v0s{ z|4rV^kQugST}C+An{81H!fZm~kVpyqf9_KOGUax*KNE<;E-fJ)UI1my&G9NFJ1ar> zsq0IT!s_=fQ+g_MWs6fffFbOs4@|<0Se{nvpQ2M*W1$t$^&J_zBWR-RjCY5c!w17( z>k)F{|8uWNbtbEflnQC-ki}YSo{O&SEq_s95OII2v_cpT?3O?Kl78<=Z-7>o0s~+u zv}(Fj)2{7r8td(WN5gV(KOg@NzZr-EUd^1{{Z5!`pjCqJ) zjBrz}FhZ!p2;mALge#02LiWm@=U4Xls@YaRZFhu3M2tWn5D^FjB4Pvrk=jBa5c|yj z_xal`%(Wk{xxD4giin6DAp{W#B9eCh9wll`klBNMa~0u -Z-1$4AV6&1qmKVBGrIX25|UAERy9PfW`Oh5UP3mAMU @8 z7=SR5At1)cChRf79~8k_ *0k!=;Zc2TT2 z%9KZynyAN%X3fz`5F+A`lEznqAtw(7MX0G`#4IuZVj89aVg_acVnb{Mh%M3qu}uKP zV}d~J91g^;5kSn23}VlyAohs?;>ig>9FPpeGm?XNRxltAjuVLgi93iFh6v(S2>}UA z&;SWK!2l!-2tz=^m@oz;%-R77`vOSuZ#RUJH-XRuMFOE2lpYY;avhMi9SPD7qe0qf zEJ*v#fdB#mzyb!T__qyEzcrvm6BG&70%==(7!z3M7(zkQF6u9S?#byde*YnuFCKX3 zi!;8`on7+k-OXxa7rr&LI=Q%bF|E6c`MRfAuPeTZ{A7fJctRlfcUuoeJAc|Oh-RGt zV0*6tmHHFp?w$-F7=Zl ?t>nHxS*$?7jVFd2~6T^ zxZ%NhOko-q;KfDw@C`zsdJqr92Q}k|rt6U*fdwR2l-g1USpW!s5`*H3cux!mi&fUO zH2=(k4@6mG9D_XgT|T t)z?+??(Oiw@Vl?4k zYnjrtzO! P+o$BJQ^>?ooeC}| nDeFmN7t~BdaFbJB zIjF1AT>Mv9wZDx&6CiraomyvRZiip6H)yMji!xlY$cLRp%1oCt=lws<7P`g)+{6y1 z<@Vb*8>^hN=Tsi4nctR ;XTf~a zA nR9>zw#K3fJLj=d2W}*Se)lYzr%{UXS?7U_v^q6Ac803b zC9!}}TSDy!^>mO5!RDs(B1mzIu(NhO#CuVgLoAjDncO!RCsM@(+V_GSRh5Bh(=0I; zIcZ03$}*s~`w-~y=-91|xTi%@I18iK6RGuZ+A@)~GU$m0%R7g%jqE>y9ZpP$p7~?6 za?E)YLcv1`T(s5#OP*@qG&6X0QJ`ED;` T)k z<%Z=R>_^!-MVXw4_QW6~9tlwdvSOJAb;O+7en*iXNa-Y*GnGj8mX=s@(YiOuRG>Yx z1sQHD$K~a0|JDMAWS@Ez_t5h5iX!oOZX3F2K`ZB0{0$1RFW(V(SiBx~0c)iw)#tg^ zz|+Uj#_9Sg;>yAQvgXqNb=;r-BMMAhz@BEIbg+)O4m9A2g13q!AG9ihS? zxicVJKhShYG!_sM2G6oMi?izNR20IDkkWxt0JT6mcMWwzozJ!8=FQ?CV_n(Ci2>Ki zYayE X4x#w zrJ1FMEEa@j%q1oY6Li2nDK79N1Zn-K7;aF<&%&`B6kw2NX}q$W8A%9m9nkSCA&X>; z60KbxYR!KNkPIlW2^iqr%g? YV;kp`F2mz5F3WX4 eXTPjKf zY|xC{cfjw<@u_iJy^8wEz_9ua?o^gQKaloM1&EM9K!Jw 6)WL)yOqjD` z$H7>x+<6&iqA8{cFjJ7Z=KEWS#g+-R+BzF;v0a#5_S)~DBaVp><)jK#YBgxmqC=M+ z{f1mLZVJ&gdnQaaLqP9N;k%%}XARejAP`Eaqi$XG>2qj2Ex=rgBbCvRN^Xl`D30P{)F9QPZ z0?(S$p9 R*^#J=V~mPD9rudqJ~oI{RGH+p0o)3u>)kY1?S4(rs<~lJ6iot+ZiJCmUwEsICUn zhq|Ym&DwAju92|#J@^`dC-xGZB%p@GlDCl-GTlS<^iD@_xKHYj_5;Il{W+?hl2fs_ z?bH%9=RpZ^Zd<0s?X;RHL%bwY&J39W1fY!`^1li)vxRIq``qZN=;BC($nmP;UK^(` zbxH5?pmQBx#lJSKni}qK3gGl_AExlSFgg9#k)TKrHL( FbSbH_Z27kJ~I(R2DZ-|#>7eSSC~1wn96FcP9d zFdT;Za6Zh0xd@KLku#c!%i %$q?IbusWg_gWNle@7Ri _PKj zd=Sh@d7eL#+w=7TUz{y;#axjt?v>MQDchxnH1eKuk3q9&E*&)ra<1VR^pw78U}4qC z>L!d?lL%SRIOH$`7VW9Yr-rRb8$DUf)wnlt^|r;q@3r>c f*r{Z<;LT=n$ z@ur`aK0WQt`Bn90ed9jbzLopLFd1H`_6_@0I1hL_Oh(`{YoF Y>Z7(OFfM=GfZZ(lAWC7CNKFZ2xVI5feDk9 zX}fa&JGt}F#nruKYfwZ{lpY|=gJ5SBjtx$usyA!Z1EMUY1WO&n8zb2o+q~d4OD(g~ zTI;O$e;aJ{i!BOmv)vB6?Dl6Kq$tHHNomSbo{CUYnTd>rH|J-n^1wrnJodzqr=EH4 z*bA?o4|R$G1ONmE5If^6#8Mn#4v7|{Ri6<|EZ6Y~br_&&99c;zsOcEF(NH5zw%=#2 zhm{3x*Z{L~(Gv!5n|K)tRgE1o6{#L!vJ|TsJ7p_TJ9f!Y8ZmauRTeq+$WtCQ_R3cg zJ@zR;jT!q t;fY9Oq7t2$#HKqv>CJ@ ?s)%9X!`wu(dmjsJJ|049R-YFG}-xf%Zl;0;IKrf>KG+X=sXSt$Jdmr)zw z@Qc)O_p5*KOT)kP;b#2Lz*oaV8f4$;M-bs^xGrp|L*pOt-vP_y30Ks9W4#oct;=^S z<`?8scp~F@5awru6_9h6R{+u(2U$U!< a)5r =^YlsYfel_m$shr0c%~K#C-@ z(H5sX*0XQ*%i_>gB&L!$i{+qr%xJ?~yvvQWeODjmrr8^9sy?1#Fn?xSkes|24&~Lk z+=6f#!vV)vN1HeioK|JOF* EV`o>w$?~!{#AXr;R=FJ~ z{l<62I*D~D%%|1@oRMnRiyVR#!*Lm&C5bx?C77x=o*Y|J+^PbO`R6}DK;*}rd6kQz zVaU|btc1|RiHaJJ3hHi9%ZkgfF}3TP9fF18Sc?ELZX*XnsN@7Snn}Dv0dx7sdjG}; z+9954t9$iLCO%+`s%?%CAPBp@alUexRoj74Yc2VA^Mj`&&_HV9pH66uua+2XA*MCL z$bW>7KGgpvh^(~Q9=G@F3rt)~DuMkyPG}k((#7Vc6vo5Tc9?Ju+aEI)&1AJ5rd3FH zSksR=$jM+o#JG)Sviv=<6Pq_Dl}uChAoGBvFv(D(WN*X#hOzS44?-fUb=}EhT;{83 znk5Bb<&VpO1Lti{V48rA6Q(@KFNV!Hik0NURg65+Zbk!^?C1JYBQ~GF(1BINZUdvT z+P9R7MtDY;H!PzJ=XM`HveH`nG_nJ6ElG%#oY2Gy7n3QQ*u*ld8cw=sbBEdu1+@w^ zwP?sX;FJ*(jN52iWu@^WBx!5X0+kUFbez3JifoI+{KB_t^DRu0 zYGIaY20jBP e%89TH}5)A *?RerD0OD-C%qN|F!;u`BdjP*Z>=7}H*DP35nEU{%MkTpZn zL(Ww`>&)O2BK>JtGOx(uU45e7>M6 Dp3+w zFrS3h5;3j`a-gdV3sLvQ#?BT@9 pq9WOl0%0LdxNq067=%u&bCpdw4D76|{%KgUuWazHEGjxZu{Cxj2*qf7NG$My z10fXKDsn6|xQKvY4V1-+5}#0` 2_bGM51RPEUI*OG z#9nID#ks}r2Dfqc>=?)Vh|}P!tQmZM(Dt#Q2bR~4!imbj6_qwQC-5d7wR`!h^Bv<+ z&KESDIOO>DQePFOs;N5d6-VHq0fQxxt!fNKMXW2F0duZ$Ip+$uDD&dmu#KObRsACJ z^8)IerW`m<;D%Y}q@+y3{H!nBJB(60&4JRLWK10yOCCU(E2VAd lgNeYhDnWC8uoS+kby@PC }NiYfFv-l(}THF?ILPa1o>~cHe_%6_xv)t%z6V|8D-*H5_#1k8JR|4mc zModKJ6y^ m8oCX6A_(I+kqi_Zmxqp$$>K5U^+|*%p(4hhAj4{ z>oD($b+RjA2#$J|M3!P+PZd!eUkiJ{MPo3CHcskl$FE4_jzQHDPpn%eDfB-Qx=~T5 zriA4+$HtmTb)^F?4jL!AbW+zx9s`Y1A!-tY62vX;OU+)QCBwy8iCV}9}%30=LK zv0?lN@lQKL{QQtLtdGAvakczLQ+(a6q2uX}Twcm0wPvoB5}O2-nyan?E|ZA%no?Md zAAI8LAmy3$$(+w{a#fY~#4y*DprRv8(?-UZqXu&oL^WX^`fLgmN1@XJmkQM<&^)QD z)eaoGC-O^GjsAdPizz8!I8&p^--yVF+72vP@?1_+Wu+)3*%UlqYBqPD@KD_H)#D-$ zUz93C `nKsKZ5tfbdvK#p9g aBd@?8@^c^;0Vvq9NwWx5Z#`89q@LdxttR z7aJL!$VJhw^?R{o^C3DgBr6eh`4C C|F8xrj>NifUu?oH4Pp#92fauuN8m)Iz zfn2CY*=7sD*XFgLkd%eQeywI{tAFr`Q*vWIKl3SDw%_oC=GuxfBTW+#-i3J@wZ-5H zrCtZh5*ioknAFt@-z!pnaX!6(=`@|W{cSOd2Q4c 2X}QKIzV(G?$~vr=@U$DB<~czh zdj`O%=>a-2?(Fsq+l{ehn|)GMJ~P#JFsh(+WG%V_t`38WaU0F*`TLs Eu+JVu;zEpgLBxKUpH-_@-Z+`453F@PMpG8bc3cYV5{L<`3q;FE&VM?|c zJ!e-~FxZ<$==)w1ddbKqmT`e6l%G<#YEnxQV1g5xDCq*2hauaF&ZW@pfNKM^GH#<; zJAY5^yBtk7ZPa$7treak>87O#cT6JJW4>)II;jRNs%ph$CsAH&R)zW>e9|oZrZ=DT zbN?`*L~P;%kp&3ML@aNVv>wcN#kL!*4TM~ENY@R5<*UNqeC_$SX)8qZTMRuciX(xz zmLy;=Cp4)@uEIQa7QIAJY<9r)0qYpI(d+_$PgG(v(iN?n)RF|W#0gE5G%n1em>oc4 zQRH*L(Se+d+h}R OnH09i-kB&FvX%#-1QK}02e4!B_qN+Fs_UG2kA zk=Ad%U!bosRk^K*#0iR$+NHJwR(51vU!47hgWM?kCB|*EH8%cz`w&)AS{@FoPXS2+ zEtaPVd{%0Wb*Qf46h&1gL|uCtkgGVsWIlcBOov62ul>+}-gF|_1e~y7dp8x}9AH~a zO2;;`4^*a^4l$U60A~a^$1&AQ>jYA$_K+^^mnf4Iy1)xs`%8v$x4YhUcRr7uO9SKz zaOZUlcX>A$ZM|!rZL&AAGh3I>*)fW$8pt&&63sCgQx%Tpp);ruV*YEWcw+ALGW0VA zHP7GW#AAcb=q6E30Hz{lxj41 Te9~r@lq2v#efu7B|Cc4>egJ zNpZ`@aJ8&(6RksSfT6H;3O;*9f(-e44z9B4`_dSoTfNWW#;6KA7ig?%*U|aQr=@2i zj!{J$aul)I>BF|mi5ll{-9APx* hH`GOhTA$DbO){K_BtUsHn&~TJnPud z9&tla;nJYyY=xweLQh$`DsV0tmEILAOZqj18yMchsB>z9p+BX48^g3?0w=zk!!r`5 zidYQS6>WCcf1}sq9Ivr;g0J}{w?-~*$u{sUJ`&Yrz>vB{;qK%nD^2yrI^E1+czZ2K zzd3}TPP3GXz8p!M2tyo6#0Dyyg0p)RjceDO55)@WY0_(hV?-rO?etrK#!Ax@h6};~ zl(Pg72!|-fmD*{d1kP&Vo(zS}=zVfbPud5M@_hmhW9e>PlLeJ(H_`(7g1skffrjmg zng~L1)&uPHWKIlUdevD@DMVfbbyqZaWnE3 z=lU9}+JqPHO{E^@5_%bM?v=1;Q!iS(7wSteVESEjIQD0J1TtTfjXM^e_oS%&3YMX} z_+oG`T`oAC396K1YxhDN< =vNf3!AXK)9mx)Et46pg?&fK!Q zT{)IipLsJnU(~Smri)}_PPOc&ps6nc-lA%$rF*ZzIa*UXa~c1t$*4E&4 v~!_vAQH0@YN~BOIS4~eoYz$P4#=- zwW3Xj+iw6M{+)SC2UrYjv2=-T%*m?E>(~PIC2-whkLJ9_i3v9WFx4`Gzatxf8))pb z0xZ3Y<7IqcduXe`fqu;DvnR`ZF2?}`i}hZaPjhJ}iV_Muk14|;mVfrI#&n3N^g@wI zI$mC?xU$>8SEfi*ql3JbY<$(Hm?ypV)@xcD$5-tb0I#lO^nTEQrut!>t{A{ryP`br z%=-FQddTma;8!rc=WYzY*wlRup7P6vzb8dyn-Nb=a+AvOFJ8l=fnUbc$MLm$F>+<3 zWlV>1^=P0^pbZ|iVV`i63#$E`#wCt-Q1vzx-E)_1n+WtsRIT_%IDP>`yszB`1qLy- zsjD*uAoNp9?Y 7(*FF!2LgQJ`pK5RoKve3X9+ZLFLwfzc zKjwwzvPuoAY+o1A{ikTriMo#aGZ5$)E|cR+E7#ELv~ymC)tPc~O(H;w!^o`t0Z%XD z;mGl )8?7axV$WC7zSgB9t=s<(MhkV1{Qxk zgjt03FkRQwmm8jQL?!v;UP>J`6S;?N=^#u+wsGK;QPPOYQWFR#OzB@sE3$lAx9`{J z^gqvi`Y{5n>SI_q%>=zate{=tnW;^6NujgnZl7%;bVQ=sy-=J`6q{&1(Hw}Pez*R# zw?UgZ# )`x^y9+O6%3tW3r;dU zHY;n;;cJ_6C!lC#C6ydDR2I<&ydc+yZFp&0JT<0CrVfZUvb6>S9tWtma%_oTWQf}* z$z@+83T`vExn?s+XB8*U@YA&XET=t2Lf(sD^fh`|VD=8xXO;xuVCDy2dqia~lxeVg z lyXH6mO+Q 58Mpx|K}n0q2ojbN4HW}G h zvh?ed^H%MuJIzQ-;#>$TAiN AV6&1Yr%Qnwdqo*JBEDNKb8%rS>$Ez>)*H2P}) z960*`rO4SKHwy0D4$B8BBq1*N8G{+W?RpS@fsf)iFjX8*H-drZ?NRy4%I>9iFOm!m zwzQ$JRX)M+0Pe|fQR=wVL8-Uyac-59!sj;4Ycp>{?7Zcfts*~sLG!}qIdbn^-26z- zn^NZj!{%ekKiBTXldSF4M$tEyvAO!4sReAsg}9i_A 5VZL{BMx_~)SNV|xz&rq-#=(Ar^_p qfA$mmln+~Z^S6K>>{Drv}{xgmey 0-TrYJDf zdagHi4mJXb^BTgP-VaaWtoj_plZ+kx%biFeSU;#nE_AZ;H%jVXvIND*tOr?Mth9%G ze}fD~vYbjYZT&+NAw`G|k-6-_m`yv8$^w)#5|lG0Ft;=EFAez@$Q>(lSNGwKUK;Bw zqbIT7ip8y1Uhc8am-!D #E`2P0EyRi(4=B2#g!hiRBqlASzuWNl)( z((eR=lS0-Cbi&dKfIMF5S%HT<8d+0H${i5I$}=z*D>d$cGvfoqet=Y!Y2PgE7-(8M z7;460VC1#^|L=eflT}OzOmP1cAmtmI;RC1%=X(IpG@pjwXTo*EaFWu)VATFH+|A^l z{~o?U0hHeV3WR)mBmOeGUI@TC@A0>QUi`lUnY|AHz(oV#3?@?%Li67P$d*=svSMK1 zOb><_XPW4R(OY_P1U6r;Gxb-uuT<1=IuJKuCgPu 8x-90eWVIQSLl2B*3ulh15n zIt*e2#$fg`A2Bv&fw_SY2!$R*SkyuU0wg09O{14t49l?Z@Pqsb{ {FF 03#+wa4>=U>eI$Zl4e=es+Q0B0B!*v z2EjL0flsP!aV;1vcM`OMXFwM?33?!i|H{vAA5b4}EFlt9i3)aL2AA*6OU=w1roY$4 zP_4&OzZnsp_n5)}JPH8h699DdDJr_C(}#E>o~ zr{IrLo`U4%G`HU0Khb|U{i!bBBjUm}qL%-TDK{z<+yB*EGHIu?BE0xL^hPE0l8(7C z&%X{O|L>l%lJ_J5wS`IK9T%$q{84V?UxnN#>-pIv8#l6r7{Fc(rnpqNAT4+cQ^M<# zE(E~WagoeW+6N%T14!Bc5M2Tg*GO8#CSqgJPtkYLAb_au=oA1za07^x+}{QGDn8^( zi?)TyX@%&!8UVtOD7l5!fOxbRLFnlNs+i~|VURM^t^5npVnYR+?=MR&PyYfyGv*La zFaS!eRdwFIOLKFaO3(~wMl{yoqb|Av)D$Yn5TJ@M3Du22Hl!E1ilqL#{LA^zmcaV^ za`jCDaFd_Ul{~Hh5qN@fHBU1UM%D6cE~h)A=}B*Ot5(m;hxm-~F9$y}1PZaxVxd;z z2p1{JDYY668Zv6kFznhjWO1= zOrGdW)u #!<-eC30%1w=TEcE6>O~acG_T*V|E-3j<~Ezi&o<(IZ`Ft75}SHr$MuR zQtf&pKpPN&FneV|#z3)(o*VVhOK;<}@C2jPAdo{sEjxS;S~zNDuZa^8XJV5Ka3kZZ z&t!wx+WcY2G`~$ZEP%o+YBQ<)n;`rhKg^+ncL~5eBZA_C1%Y5uqR0rA1YucFmL|^f zV5~@jRUufD46Bp2%i3f)lpz~a kE3?i9+SB6(Ik&&@_Ay$s%$t`jknVs~0x&3}ji{^Sm4goS$68Xe7q z^WjL$ZL(u|9jr5X?)lsAPM!Jauk*8fa&AUQKlC6CJ@eR6`8`?fZ*u7p#bR@LHd!dJ zLy4%pxP2Ib(k(WaDBe5gJ@eEHFTIk6>$Qtg-15+AXPk9Tj93X0B}w+5+wQpMuKON% z?1@L7d*iL*OGaZ=8-%okG)WmC{KREFx_tA~FV$-NR<7Sy0|tH9tIrQS4a7QKP~knf zbVEK+_-NQCN}s7@P|Ku|Wke30&A@huULVG_Ih0@#JT3|ol}uG*qL=|n8KR64%ITv7 ziCp~1M@In$3ek|qz*iG}GsSlvI(X^gt(%V?o;v*%FU*e{!cu2fnru#qttqoD6}G3! zmeA};n| Bz1TD_)B#GK_BMk}$0a8LFPOxwsIdfr6ogy2iFtjPn zkXf8QJt~xw@+lX;pzk^Ok*zP;`I@CS67FQ-#JrW9v&+K&Ic1ZXe`DvCxfk)gtv2o+ z;WPETy #ajgyi4?a2@)evW?YnQ$KY$((OvXW(9NSPv^~?bO~8B(bh3CZB}QR1^j( z4du*;#qiv?^We#gHy^=*5D^3l;4eg+cnSP;`n83n(U~kZhs)y&h$I3Thu0a|`sA zonl$m1}64Oyf<}FD%%DI$GFnug97;qB}$Ph4Oylv=`s{6QR)E%hCl&8-&LqoCJI9& zmPpOaEqpX4S16sxkt@%EDm7lHHCn&FeipfM-JTl#W#o02uSTsJ6g;zBv)|e@slM2T zea37OPO8%!&qA(Ui-vEH+jxsvG>vaoWga8?^m)Xtz&&dY886dio^LgzLz}M20k6rH z`(+vYu%UcX1& +YpCvlbIbLLVA za@`gLHVU0O49yPt{7>CK$K;nS4o{m!#7cCy0YA mvg+vPgeLIy?Us}+fh zS`UrISKOF0akLF;m_bQ~Zcb&b>W=23|XJr;#_!@6{tS}Jrxl#{z}_wRu{xaT_S zOxKF-O6R+^QzGoP*V%^7b(NzoblT~z5z`g++3%oe;e}^^s*r@?J`Obd3o^cwrR^wu zpj__K#_<|Ag_(cll2W?PJ)3^_TJMLl<;%ECjPt-}J#NXTE%w2fqtV0GE95 Q**BN_y`{blnb1N4)|F8eLuBi%&zz_&L z+}}k ~2JikKtm*afK&soLY#TWE>oQN{(06T9S7ni }WFO3Zu z!kZ5SCezueRrpJU c2Av9yG3vk9F3SV|Ou2f7u3 z&}4-O0XEtv^809|azI7{ZdC@XKpY&ZTE6x%Z@~mqY0Jt8P06bx6&wVI!RLUPbS9ks zE3bQ<0Gn_@QVUI$*gwu)rTCmTX*Pn*ibU=G=~sJVSc9-kaF-E8<$sj_YA6+A?ob zhy=ya_laiDFq8E3EHx_=Yv*htv#cYTsZ-uCTg~=q#q@&u`u&@^#Vxw`M(R8xLNN4e zvkD3B904cDOx hON+! z%`}@~jMifDvw=^KmQX7Ybvlm+=W?ROYT^jeBcQ~!RhAOYY3aq;z*&6ad*>^u(mWX& z2}Yv1&vVVonvN9Z*-cLj7JTH>-hB1myK+@6@(cz0vm&A98q!xb7i4jNHq!UgkSyZX z!U7#Fi9 ARd>}I%mi)eQ`BBb|_z?M(4 zZ)LH~U`KE~OC`iL61U(d+$E#cj?&T9Cll9GauRy$;gQ-OPkv@>fb`F!vf&WN1D|Rk zb~%+KqZU)yTd+4D2jV=%kn7P@3UO<+sxq`n(FIx87`l@gmj1faNlLdCq9c@tDf>fv z$+iQ63_*p^z|3|Za5eza(#XhJiVVG-P9P{B+V7Q6E!pEZE#XFenhPL_U55Avlnt5| z+pxeA0tucgRE%0TSC>rkUHY2npu7v|6!)>*{1$5p1?kVPqGL-1wP~f}$#mca(F5`D z6ew%R_J}kN!JNHzy1ZuJ!|--$w_|U${QU_idgOVeffS|fHPYPg(Gr}usaOV5E|mpA zkN4u85?I!ZM|G0R1yf3ko~UUsiVSFyb%kw3> Li6TujwT1p8V zhWZTFLNE$%`;xLZ2Nzx@AZcs{2A$J1<$3PEflV_XzJn600;NxQKkiF*?39hl7Gp8a z+)LqUqIrnka`d qbjAR~3yZDP^`77mNUM>1-BDJ(`zir`5yT52WG18C-halZ^2)?|t$lWk!G zl8)XA|Da)PFOkt-tyF(YvEC Wkd69S{1*jdQW zEG-PFSX1wanOwDmcf8OGulzf i+Cn>rm5da??y=YR6ux7f~onDZicu_ zJGjR9KBe#$X(aPMz#|(VP!E@jA`+C1lg@QNq+zvCY93(aX_1B5Z0S=pI}F2#5XtcQ z1@2A4j(~k0LV4f)pK}hEp6e7h4@6bm3w+dMgznu=GUzLtf?FyV)=m9);H&iiNUM}N z-*$BKS4XFVE#9@;J?M(>!Ygl8hl&k}-XzFSXRP%RNxO;cI3!6fEsg3}q#=D5qumqM zVElM|vPtQ=AU#9PFz;sA`wWLCNY9T;9|zF-s@dC}ugJ|$bULG^;!<(3L0Y>ZvsK)& zxQrp0fLI^2&xI@eNJ&Eo%r80N#^MR2|CUTU68e$gFIY$X)CjsD=@L)|>-bB%5JR|$ zzp`Uw FJCIo70OwvR?YXC?Q~7Y z)qQXlmHM5d4#6g~XjP9?i1h<`lFI1EBQ~i+R?AAZnT0s(CZ=}4r6OP?5ZQ`v=&xS^ z1Oj?sVglo4(^~+bCx8IXCcu6VI1m7@eE{_R0zmr{fR%q3xOr!eH1|@V-c`W2M+IS3 zhw d;>&%*C4b+27sw80Gs>}!`m78sylNNM7@`S4Z4V9i>Dcm z7_rj^yDKZJo{9YK{~3m_DoFP6z=*}CT?dPZlD1CKd`)o|iI5d%!5a+($$ImS2?tO> z=L(Ptf=E&z3=RvLZHWeHAZ;b=q{1tL!$BX#luWVIBJ`YH&7F@FMX%* i_q {Lmw4+H`olIATPC|8MsLIv8m~4Kx)jk{J}fd!lB6h|krw z_pgzmHpTz)_!YPJuaTj=fdD^1z`vss)*8yN?{ sb z1Q#gPZvzi`ZCA)BCgy#w8Y8#D$|7vIor@FK82b*GkyVEneeE|ee|WH|VAk!y7{bCU zo+}gQ9JZsFpF^)F+G{t5c2UxUPNb0Qg{QX7lIPu4+GQoTS%6iM!w9XvRsaX<_|Z&u}syrT>ihhz_fQ{F~^n%6hT#) z*j8ppzEN N zG*SQss>{u#>o`56zN_~DmCfv^LD&3gV}rM`Pf zstQmE<%l|g_QbM|PIxAIjHUJfpuT%sTHnHi3{r_sZq{SCm3!*uAm_W=d2sGwxxUyd zMI<}7RcST& ZI$x85`|p zG((FH?=4zI5%|Paw4lm@Zh#qaV4|_sTFpFD#r$5ZXjF@tOHO6LM$;;3;|3>gGN|Qk zMszp6bo|~bjs}jM0Yokx3;{00277VAK;sGc0Pq&YB33K}nh=h8qDky-n{#8nFdTGk z1Q*cyAS8r>0z5cerI6bP0~ZcwouFR&hzG%5YH}j$J#(DG2Jt8IS+Sg_2X%kj)Q?K_ zktW`?e)oOO88;kXK=$6>Q-wSmYqE=G((NiNG-TtPD`AH8pak67FE^)u{6*V(Wj)H{a}XxB(d1v}X2X t+%DPF5XnJ?%J45SU z9o6}|y1^A8I~eU20OT|h$} rN8Qa?7k{sXW z8X+TtMg|6Q3GFqFeolE3lL@k}KwqgG=&EyAx#vkV@&PoE&A?S#np3 *^ctuL!pBdlv zLOI7Ei<7y!{!=2cBnoHBx>w}OV`k T8ZT z5|xEC5(=cfeWf<+K4j@nlUJj@w19k0#}VJUcz2&056G_`KA8M+$%YH=Q^b}P4XccX zJQ#6*K*PSWDnRksxDbrS#{dcqYZEsmbKrDI^iLO<2v%d7N`ATg55Y?w${^;O=LQ*_ zcWX0-Bb&DBtUW~ #A&HCuOuSm*;# zj$d`F2a$23c)N(EGKLb2V`9%>{W&ghW@(YZ!aAP+#8>0)oF`)CZWPYa0M3j2x*9Z* zopbN2@P?=fkg_S@;L`(MvpyBrCx6a$%NT!Vo0eSMC)H;j+4I6~G0<|Gzv3oFC&%k~ zHlp#u$E8b=fS+akvAdZB+9^VhTMEQfwiS1eZU0mvOAk!gJue!Sfi$qN6EcpRd2dx5 zdua;}T_u`nRuK-3<=~`yw5xyzF6J~MnDjVvAOR73r-7lRYLascQE50q?IM!4%8>k! z55)<=a=mO%5iRDiz-6~5o`_W+FE*?M32|j?CW>8~NS5SiFlsMkk0Xv9@ypZC32LgH zp-7o-ue}Q| Mr&0N?cWGD-w~xNCrpPX`3s>jL8 OeH-yqX%qu>DtmG1xK=S|63D@2uQd%Ubbj+=~}agoxx@)4||+$00> z>%Co1W&PP#(l& UAs>&n|k@#qk0 Xwy*HV zbQ5hQ{I80e7YoQ^Np1S<+`K#Kdq8U|>)uQSke$U|K`@@)3zVZtB)t}#EELJQqKbR^ z9XXRJfg1>!3ReU-Fc1KBIj&V4E&7;oZBx>ETWi;q#cb)BzgW@8B{K#mhv_sughQGX z73snpRkq!0nL4t=JzW`yg6T20O@Nh|0);T9d+v~Nh;SH)6P;^cZ%H|vXs$P88T=Hg zDT8e8Zglh5LWo+u=&UUke!XSg?WdG oa;GN46DcNm=+p}>>|LQHHaeUAa7<{)Ac6$j8~ywdB)q3E99uWzBSoSKzFN|r zkA-JQ+OPA%vwK5}`19Uy3>p4eU25f`(*1Yqxmo+i0n-H^L)m{o2UD`jV_z?cAmigV zdR&(0DLPe3;9`8xKA @omhMjalKNmVh{gMG?R40Z1{AfSja@?mz#O&7n+*)_r7E&FI%C(Qu`G z`BwqB7hm$!;IaLZ969|uMFV%rk{lW(Ex*ZiMKrt)12weBJY4|NX1TBGX1pnQ=%yWk zF`&udVgJFY%^fJq0W-^Fy|KLG+j+{=U`S$ G>A{SRlMklb)(g( zlmK|K9E1gLM{uW&;2R{UCS4 iKRaBEH7s17F7I*C4ZlxL(`dQDH*%O$* zJ0iTthabj|+X4`}>vK}D=qD jDf{YzF}2d8ZJbH3e$v`Zn9J?*+T8v zOxcK6cB$_oIW6hAS1KP_&fNHwr`iiAm&q5CiUy=i@;uI1^xC#qy!=JNLdna%g5a11 z#tUB+(Q1 |ob{V2F2Trua%rCZgdw5uIz!0;7u z%tbx#NKh=m>)?f8wK5%EuB2~4j<6)OYEn(4Nzk8$OMy#ML$@N&qZ&L2|P!*FLg= zZ|*{u9Mg*EK )1A?db9rZ(=~G*5JWR(mR`IQW@p{_ANdXh)COpAN$Z&o^ry)}n3aLVUbvCBNi`0t)M zcgO9e_@V*YN>TGwbBGlxXYHbF^n->At%9nc_%348KbdNg(uxK@eZ5LFt03N0^q-Jy zDit#G1zF9ag)+`}iIF!s9^SId0E_=0wh___c9#N)EXRT5MkukpbIeBW`6KJk4y&g? zwn9u;Fc|zd6umTly3{fh6qu>ENc`IV!k7XDYP^i8mHOc7A*>cg2nY>TNR>n563P_F z@ZlS{hfK27^#lHCZxAO2^*$K^S^DTbO)!JNW=W}Nq%`1@q8~AVB+CmO8;wmgG`-i) zR1B{i#n-Pu$kd6Sp{iEJ2j3P1O}(=_O0RR0V{u#I#b@O qY+vflPBqz_3U zA7h4PW-)s}Gm0$=P;nW-hM!)*AN~cb3=$d`tQlc?W0kT!LS-&cm-+-x`3R2r6i@gV zj#jV $m|$!5rXWw!hnGAIvg$Rxp4HBao`> z1Q!qc!(_-Z27j~54PgoUweBu!T;`!!`VbHFOa)ZOR1FLa?7@C25lR%5AP_ iWKHVl^)vv0~vV>d@HNPOx4bw?nk&otx?eMFkiy8Iu{2 8VTC0y6a999^K8s~46+6`Gfp)$^Z>5uMRsT=DLmiVgeo-PNYaBP zVIaTTAFYqO+n-T$Mlbwx4;Ef0O}a~DI!u2hWqBrKs^&FrzZPI7gHmwN9Gb=b(e=C5 zzwkWN55rlsDc|Y*J~xylZ>TOo2kD`~X8}l7A{|v7a&>!oT0?>Qv7Y6sT^&dcZuhw1 zeE%eXB56V<#0bCO3kb7a6|}O_at {Y)5gCE%BwcvD8!7 zz+KCVZ#R=i5uF{>+h!&ciZ_{gsCN8DHyIHpdxRD Mj)oNa4DZH&V5+VzSAr&a2%Ng0P><1E-B`(J(8Ca%kJ+BOtLo3*^%LDf& zQe&wbx$GDT1Bsk%$)fs5pcC8T@bI0SXj=s~?sUOza(*+iz$R I$% C$n!MZ&0|oiK}6)-JR-+zh+8O49lfp(QxT>}5hW$V;5@bLR?o7y@V$O~`SFGulTZ z39K^rJOGHyCA5q%7R}7KDn^4*eH-r_`Br>VA7eTdV1BoN!Qr8qr6a_D^HK)Sygs1=_sWUQ{kX`j$QOoD~AKy zLv97(wr1QvR2)I(SZld*ITV7%I2hf-1bv7C4@V-dQK&N*lgr7QyNXbCUn2#!)fBeV zwC!5cwY_HDHqElqovfPyg36{MK`jH+kDDm>^Pa9Bv+7_N^=nz*rJHqs75BYZKP^zH zg<>O2C=KRZ;3<5j8StjD%AuzcxW!x;z#=A_4EjOR?|nItSBfbn(RYSt0v9wDHj$aea%yw)vJwX zNlOi0H=VUbZM>7*s~|1 5b@ ug`Fa=qCc4*>r9^(h`^<*WaQlwzo2A=JfI90#UsR;s#tsdDLLbr^ z%w~^*=nQS#q-~@QpMc 7$YV(OWoszj;NZm@_+Sh(pTBoboSR z(?xgvBbQpM8GpK@RvuOXaP{_8+v>4N_cHlmcdXUwXeOqfcwxe8wsgnwKg7;IoG&YV zvKc5&{pE)fc=;;*x19Errh!d5(u78W`$U9w;;G?ML4|6s@7>Zd20}saYBqoaj$V@L zyTqbU<$BPeJm}IA1tu4I$-3bz8KP#h@HQFK5E;}$OYu<#rOua#PE6Ag-!j5)WI%-a z*bXG5s}q}Q-&B;wqx+SxHfm%Un52EsZs^cbqM@o$3)BfUa=H-yt47{Y;R#2@z zFiHZn6naSHcw`0 ?Xiw1O&wGXKUp1f$*>nr;p8cyrBx{dU6jPU8Xjb@Xf^mYh% zAjFv&z80jxti$%yWrbXVK*LZRqJoA(Y-%CP{P4NZnScjukY)qOpV5vEgh7UD2r|gM zDQNjX0aYoA>6;xi@{E$DGTS+#jm&Ap0Sk)b^fEY-MW3LSkSET_mJcJ)yre-v;&Jj6 zeGsGg!KYBJ$l7oU$QS@341iamNd?Qi0y1ytQc$~Q` #)^=Jdnm*o?aFwfvG1m zyGsNSd8Ji;a5-a^tn?`Woi>7I+44-Pf}y8GYRpY5Fy4|ChPoWon5aca{@JirpVBB` zl_(~2>&;I`ckg#k$+jU2-yhOK9+q7J6!v=B%7t(C$U`a1KRqQvZM*uqKHWQG#?fHI z-%ESMtV=oZAYmV 9=Qzq$%;X`W{ut>9;w409 z)(T$4h`8La!X!IXJ_0Y8yZA;&@O%s6*)O{zRVea+*9~51IV5SE1WcK^Tix|8AxB86 zqTh^)`l6JbWE(HkjI?Att@cRowfUVvQ&nLAVGw)Bqq?y&dbJR@?Bhl2XePVpQGNzJ z{b=hNNJsZ$z-adAkdvFOm6t!^8Ot7@)*#Kf?lOx zMA6rO${|!hHapznjBT j-Q9Jg=j=z9lxgm4=1M~C>r zY4?N1(`<4=g|g<&2hQQX?X9bPcmQp`(cxykaX8fG;BdDZmpl9UXpk(QKibY|oJ5E1 ztaUUQsIipD(x>e{vEfJ$`ihw0e~F!_|E}!b*zvJ?Xt%o7`l>iIc_3M+f?5N&U8_kP z?tUTA@Q%(ldx!|{O|}u}=c~WYNHU(HtZHn&D6U@H@~q{~Ule$d;%Rbxw^g*KiO<5m z6qPqn^|UBou$aw@KCfAA@HGm1nNFhKIQ62@11dQ*C9GGjX J(cnS9Pk(kvGl%iHUGXTJSW~F4(FEkQQP~rhS^;jTCV);k#TCm9ikrhjF z>!Duhd>7nxF4qE5B=w1$8mNq_f&Ks*fli~iQ|8w+4+3JmSJ@tRW4-IR5##+}Ujh{{ zvBDq2&|Sy1(dk_TYz3^!i3y ?vf4kAUQ}HyOKCW~_Wy-qYIY}>FBSSBHon)|^Sx67> zHlp)ldSqrGytc(U_&&VwLhhGuVz0RCo@9ZtGmvH$yN7pU=i!BaWzPaN -tzdc)yQ3|Kyv+fK8%tq^nY6oKnNp+Sp+p$4``B9zelz#uAhNnJi-y`r7 z0DAk|4c=iyw*_>($-lB^0UM(J{9J; %VtZ$E9v%&)P%Vb-|zT;z8(LY zx}d=;8`_3{u&3xa$q~1IJ#lu;cVQnIa9oCs4MlUfDIK8e`77klhyGm;|NWAm3IDCx zmonftQsQ_`k4o91X8`|u7(p-FKASX0|JUdnbV|0gjgtr>|M~4~C!S&Mcg%PBvn{c1 zo}CyM+sqG)^k`nBDM7Bxw7Dgf1Oda3 bs43uXy~5&Q;98)crd!ort_i^d*YbOvx>Y zDvBp^J0*7-h^gD%sD?t>!~(NfC0TUMreX>-dIpuMa-0y-I*DqXPW(6Jkby!4a-AP) zwn7$%Dd}LDP5H~&R|Rt-OH{ELZ@mhOmn3{Tw2TO+pmA@6Q_Kq+QThUpd{*0 ~qR$BXJOzvX {fGGYBkjz>=#U^no+o^~u5t2m z(Uj(^Z=J_1@y_$EVCK)hYT>@X&yK-!j{iDpf#?9Ae&o@g?&)%7&k#i94)^PoQP%UD zA@tRQu`(95C7Kl46`^JexueirzPuE2R{{D9tn( rODlSyH~H?mEhlG*IeCY8}hN4ASPRc-4B{&Yk)u?+ub5F z^Vcpx1>_9-<3HZ7yT k^G)d92oMNNTuX*Ax!osP1`-<0754yn zM3IPA)eJKGIqpIAimw5DDJA(*E~$%G&k%$J5nv*RCxs#>hYu`SN@-hKYD>XG4KVRp zK@`+7x{-@}(p3;U+H~QIaSlucHmKO!n#(+OQrQz9R}XiS{w+pfx3UUPeN!+OdLlBG z?iM~;h0nfKvYdJ-GM(umRko^ `rhH;isw=_%T7)Tc v*6 zJyS23Zu8N&kY+Ryrn97eUtL9qoUbGV+#!qty!Ig;nV+vel=AUBUKSlbcr1L}Kix%Z zpB|K5f+sqfL&*Mk^I;nw_v54AGd|Im?wF<{Em8Zk%YqDt%6Y6*KW!t({Z}k(t~bqk zfsDT2z~4Pxd4BK- o07o=2eLD%eQW0{$(M|6=)N0Ov-O<65e~+S }K~ffp?UAiK|M8Drz0b|h^Z(*#jts@I?pW6Uak@vkXm>b>o`k-@3-4G9XP@W%EGm z$kqbWdDtYXH?xi>j2pHP#?333$n?5?xwT*DlM=VH&P`ZlV@rm`U(yq~L?MmB%ei{# z(h_Mk`7*FpCtNcR9W{t+wtVYN$V Gn@vUzjdtWrLC9Fg`gs5U(VXr}rpBH-4x<+ojISuWe|4bYX!#=G`ZX z2O(Ah#g{<0jZ^Z$ZXDtHKu?wT{*$>Uk;jRCV_p{$pOz8|?h192jsGf=4(Nlki?5-b zVb4GD4cxta(_J>3DjzM*&y&WuU8OdYl#t+c!NMTwy>ok}qMzE#iiv-QxAvAkACKI} zB`Jx<+ViC)HB?Gh*|4dTa?*TMdMC?FIsMts6SlR4`m_Le5#IlG?E0=I#m>YgbCMHh z61UC!`qo{CiK)tgcz+;I9xmm5cO~u1Qm@p|9ZJCVBGM~i;=Mvb=vGS0d65R0rs{6g zEiZ_e{OCPev8s-^OlYbdm1E#!0UntTqXu$?J@^y(P4ub2?8T)okra9$)({mr5YG?A z*DKtYv9bC*s )W_M(!wCd(cGoRDzdHdM~V17{;{Q-tXa-%OjL64Pkn#cvF*f}#AHr#>`W|) zURML8p}cPs7-(Y~7(nL~5MXN)5Qyg8pJ~5NWNPO)&7kP@^}ECw6OmBng
&B)384ldex)ji6>oSu4E`K&w?M HT4QVttkv|NDk|4Wgx sW!1MhF+uaWmP%9j=L}vTXF%|Ebzjl2NGFnVZ91R_ATfKX?4Hx54 zO?`8}ly^o21OoHH@+L%`#1I?tVstT=!Dd@WeO>p@HhpTX*?BX BzJ`J+b(1OkD;*a~LP&xe04{hxh#u-!=^MAsn_t?Xi9fbpLh z^$#{nb#9#>xadU@6Gd#efYTsa#bj3(l4OPl-Z0X|$soSrrg4m`xr;3p*q2|PYtEq> zj!+|+k)5iK@={>%C3}HrKE3}*99jKiiH{F<;*01RVGIZJa^~exS3!D%VVbbBAY#Q4 zL @@PQJJlZ&<}tsKUC7MEbpi@X*1j8lf VXfebqa0M>{0(o%8B^H1R z5U2lTBro-8iC78jlzZ>@G?}L|(aJ|~22~7VL_LC`uUoCRzuo&=gV-EQX#FCr7(7fd zFCPyzC!HC8C4ouA g55|`jdpL~`no18x zx;j$bf;WR$vRu3 -3BCu86Qh9hw*^I8CJncF72@~+?f7evw%5F)g)*wN1utZk_)p^K zWD-IQkt1QOh=lN~eh5^72oEaOcm;)o7}%@t-bf{FFSlT%A75O0bZC4nxg^GkpF3rS zdznYLWe}JHruu7sB#Mx~^N|^{b-~s~)kK1wvf&uX9j~HN!QHdE)YZMZ*wf2e?CxSM z^>jD~#Q6D>?yN)pertzAVUop6p$t)XKYQog@`5xvtGXyNuQBJPZWSWCIT>HRnUuIy zQJ%OBrz*E#K;A%#yDC#syQs){OHm{H`oTk>=5OSWO?S^8A8eIJ9fz_t2jsTESA5mf z4vLR=i6=@TybazW>(U!)Bcl+=2ofYZ%tpYTDyiH1JL7m-v|Dhz{>~V6rKd0iJ2;RK z8t-mqWZ4=w5!Y&kHgk_Bh6V%+tC&u_2HFNVo}hhu05L4?DzsI|(&*QtI6_z;P823P zJJD3{i>tGY?qgDOG8PKjJK?Jz1?u7w{o2!~Rbxe?#Lc9ZVq>5busQt8MsE?le@R0m zfp^g_?LtNom30=Q_O}1PO 5Z>-qKP4ZD|hw_$`k|%a})_HztNl)0j(J4XgO>cJkM{-Ma4d+G45cPj|8? z>3Z$)jRPuD9q$sQOE2?}&OMp{;HZGIW5Nfiff7*)uujA)r9S%j@5J)W^u${<8X %(E&4q-ry)dm>Kv_u72#>CYYpC+_idzXEFI$k#}<{+kFS(R`R}O( zZ82gE3rwRQMc=z$EoE%$=DAC^7PU|7R+@c%j6c+2>#E$_{>*Me)Du|s9|1)Frl;US zGmV_%d=(QKvUQ|x|G6+b$n(EgS1>Nw5d@1$wCL%<(UdW}IsWc%-sG=UyH(v$wdA{F zNN<3qXD40|_PnS&xjam&qzwBnPhZp$bh{A!f#Hw;PeujL@9&T2SCPU0r{m1aMyWl3 zI-$#u VAncG-cl;220 zgAabPjoBH&?5j)b57^*e%60Z4dfs)Jy zS X)D(H~#M!Fgt 0g6HpMIjx6PJsOl%s}O6 zbD7BKk!^+6v8K(4kwB-`tVo1H>QY|i{IxH~zuyG}pK{9wT5GB8`P8P`QYX}yvLs`+ zr7F5Bqm~!e$30bDP&wM#Ex;2CIaR>>*jiW+ZPlC1rJV3SE?6wl1#PYTiLDST4zgCZ z<=x$`iiN9*?#CGU>-;@X{$FhI{%+AM7*w&;qw-lRbbE}91c|z`wGdXwDtkZYE50(m zSN)tZRf?7fEw*cXa&XLq8INh!>ilY!DUaDiOiFN^eZ3@Ju?nMJRjzc{S0UXbzsR^0 z^!+!bc$^lj;144|kC--Rqh$?zQKLJ?kM4a#Q X!iO$e)EM&>j?c5LrpQ N10F!}&5Y>T+YsoYm!3PF0g_^>F{oemNHYA-0|UFS|V! z213KivwqpBWeZk}ir N{W9dAgUyikz)6t_aXMS>i0zwi8l{tmd_1un~i6uwP{%(;px&2AW zE980dDw(5 |s>S{K$oi6Gv8vvnx5Q1*HDXh#GG<73I&vArxX zLHkBTPo5>fIV?oAMR%PoWr`MOcZ6{j;;AF&W6owyva5CCLa8=z2h87Aae_JS2j1OF z?ZdDuuN #ZE0FuR=n6 ziwtRz)|UhENGhU44+{=w4(B=Zq#079gxI~a{^^@6OO9nsP_p+M{Ue=J6whJJ|D0Yh*oocjoTxRkngS?+ouK@`P;%d#Y4uf6fWV>nr1n<2~n$DO7q2vtzp^ zXNJbpl}8(KtMpY|(}*%Xew0df71l7W2w3N2pZk9L_IJ@C{1IX2=qe+{j^+1CTxM9Z z%YIp*cxU$kKLL`bTEr_;=Kzd~t=iu$YOPL%et+|ak`u&B=$tMTru$N${+&FSo #r5j88G9T}CJ6cLyZ7Jh2_ zKpRyD`|nd O(aQM?D<3yYE?e0<@Lc`x{_C^Fwb{urRVkDbT1Mg{Svu_I6IYJ2 z#@<(-RywYSOdenQG=E-=oK4N?$V^E}%ou~zCri-#a=>F<162H)ra}0u? FPqBF9_QVZqBD`7tw;1 %wG{5iW?JV4W*u;s?$+3^!{Y#fK0RP%pgGcjKo_hF(@q_e4z*>53l z+1>2lA-}UR?dX#uS7Bp^C$_PZL$1Fv=0)90ejug&-~mlazJUvNukL8&8uZGwIL@dZ zFo_;DQJ?iE&?#W~Y3x=1=ihqpd%*Rkl>zS$r|I4+ua|;WG|pHT)e{x{lK2nnqxY+- zY7|+g2v1Aa?uc^HFIBsPYPX)hzz*``HyGyTXHJWPre!|i+fQxaCZOKPE7$i_LR;9A zO9fi1V?bdNg<||O>12kpH1mG|RpoE;M)3YodtXw`;zo3%hjso830KzRxvwh6yK^y? zhjaLPSOxEMUXpAutocD|_HNZEb8ARYlBQE!6+85jdHd+g#F(LCugUCqYn)|>bDBcC z`e9lMo8FZB;NfeHOL@%`4Fw%-g_-sJ71ZVdm2}v?_Mw4>1k7=dn=M;tftjy0UHVp7 zPZvYXD^|A@e=8hPIW=W_!4IX;|34?q?O0?Px|m^wltll%lWr$#$#Q2UzHy>#j2_Nx zH1zZ|h@(D~?knaLe+)fNo&Y<05>#4B=2?Hd81CQve2(BB-y;-_7ih;7 JE_4of(7+0XN zvi=HE0Wu_SyrrxfVnxfWv^Pzo4T7dl-r$S3`M}Euvb4_6=XEKRtEE5BLHFJSG?GKh zj4LE%W!DaQa`HY9{0&dzIde$!ISk#Uu|}>`t@J*~s0%{n&zv_O;y2tmM-hRd$uFgN zm8D}~d;S+zR-YiDx4`4wby+3lB?!1StA_P#68s(%D7t=;XG8Y)39ECyDYf**&-u%d z0xdmwnRU2h$Jh||byY82Cok|7G-Abxqt{m6H?99O7CCxT =NvlU8_9d*x=^7H zo5%2Z7gYAQlz;dX$}T@A%|*y21)IfXaR)vB^abI!T`#*ixQwfzr>=Z-8RZLme2V1% z?^NP(7`sRcBNUxrITX>BcC>q>dObB~b&8S0OwFV)8B>&1MDTM_8ha|6zTf=NAxdEF zGk~3kf^81F|3YzLFOYt^xw%5)&}I tX>HN=9 zncn@Assu33-x(Z4hX%RZhvunJ+p|p@(p7ljr=!pM+LgmX+_0qQQgyz-ye$s&jo; tg>x7@XS?6RKvnW1k z2r@62f4cM`BuEqjrAje%-uA8E9i(M^t=BnSMhYRTe_Ph75nv~WDLC!yjk91WZ7^6{ z3SMRt7-;teR>&?8(f^$rC_BN5 gZ1-&CePBl)AMZpD zmlfpIw)WI1YF202lVPv^XPLr6M>8Q-&z{^~Oy&JhOMsp7*zxIi^^J~5z}E9+ =1tPa)^k zSC*C4SLTuHDazmYbZ1xpd2ZO~&b~1`v$QtWq*e#?G*D`&=n#C<+__y0KKI-ivqc9( zPH &AW084a?-f1F%Uk1Gs|#e3=4*D@=Wyt3<)gZe&~i-PMBN(^ZXuv>IWz2&tx z*r>|RxCA4V8O|S|BxOL3@Q{;eN0LSDC{!n`u@BxsR0=N~>}DI*9i<|{Qx9{0JZ$P) znbnu&SnrtFmnf^kkS?Lcgl-tR2RLEF&7YJCX5Xn- BHQ>uQp)Yqqmx|9G@$&@Z{ z4kuz0e8Po^!r^W )^*C|m`LvBNspVeDo6{eArX@>hbAMk@%^ z5An7T&rS1(yS%ooBnQ6s^0F~0-oq_E+7pjlF$k%)RO${X1M{K%*LC3s>FyybcKle= zYE+PCQKc)setH|&!F=8WdZ%%dv9oeC`fFY+^Ref?<{hC?M!qe-eVRDr2cN ^y249V5AOyRJNN z4nBR_U*enXtMaQ uLDTzuVJ`pwcS)6@w6-{}K7|>-lOppSQ#fwj z&{>c}+d$@2|_ju?pXHjD5E7l~WrDIE9)l{KgLI6K)X`frwwf^_^lKU0R5F<^(sQ zKVZymU-IW-5Y4@9lcY5I)sj&@cDkWl1ODT)iwr9dVL`;WGKN>q86V_J;JZMG%1Vys zQi|uwBA*N4yWkgsk93y9@Szdof*!)?-20ZEBi5lYd~J~-ejgKZE{kj>M@grB@j=kS ztBjoA`j(8@#c_YGflysvyCjrazebXjx2-vmi{XE1b{m~}A25sz_5{G^nP9_j+@I &V}NWrUoQg(QHtha zz@W>i)sSR?3f81QY!kRn=krnkFl%tWv^OKJcY_Lajv?BlFPjk`#Futj8v?Bjx>zk^ zTk3QKd)F^t=cS@{hGKGctKy9shk^BVElSDepMd+e3l@gJR{%jkzP}|X5rUeaXF{rA zOHpSv!kn7j`RaQLWH&GYbMdcObb0y8Gg#S{<$E5rHuJ5K)@A{@se94W1%0*nQX5V= z+1ffGNEZFs1lYW0{42FN4!`?$A@~$ml}l_b;l@?rc
KD?Z8KHOwo@Pj%)i zbAF}a`|-HkqVhb$48B+JqqcdWu$HNO9Lxxi8DE;+W<=S$YX- ?hqU;H$55B>h^ zs(s9(<&-1U;}PDL#B1)<_f<><=w;r_DuB;Zb*7o}Zia1i-rWq_=bCL}@mXP=7q7#J z>f7UWYtu_PKX`*CEO! Lg zOg^bKR(P~}{Mbm=zwXGbNfIBoroUYBc|2Dq_eb;+x6aJ{(v%)7s-uC$O=zfPg|nQv z&Wgn%H%G`bs0fc d5g0Z7(KblVwp8^(zt?Qsf6g%p#JDMcP9JRyE*> z`u$E@CZ^BgDa-1QdzHEU%k9(JA6V|w)m^Zd=<^0Xihw)t6tJI@fKN-*VJPv~L1qFb zqdk_t$MORvp Nf)}w4ir$AQSES&m>Ga&-L5z)I_Dk${IkoR8pFa_jh$zE99ICdKY zGNall>liYNm80c+%&SAfU&Rz-Z_9XuI`KNZ!^bCjEJy1&y4&${USd}^C;ZjBYgOff z=Y4OUCf|{ljBj#Ia1YNc%}%A(iExFB+23mn?B>HO<4Pr7Wih`yL+?Z?Ni4#ed+wEV z=?5SKDa>=eKl9jvwE=F>bu>>DgH{?@?k~>Dx0}V1uOW@;XF*t9TVxn6t)h4TC`$-y zc_$M+|BLT@I9+~@FZL_lsijONaT5S^VwZ50cET(s! pY%T>unhurE z7ozLc*6K@X5#tC8fA9Tr9<^WMqRE{=Z(x1ZI#AOhR38u9Cy4imv!DO6IfC2Ltf|7D zG)>Y_flE%Q%ncWyNfZ)Btl+^HL|`sUL`8B(!9s@Ydb$MVl2(mtHNv^;9rLp4sq(p@ zkxDmC>z^Wf($qkPAy_#_*Ep!HwbKS<^m7H@xDRfMiPe}ae^WNrat1vTr`|w)ejq;N zxxheIRb6hw?_kS?@~Wb&(mr~umS |3P`&1w~8s3S?)2d ztsXJ6Ync`7ha_D}QMmro`p~qDbLY}BLi=m6MA~V;2b}KGH)6H6^h3CBxhws9V2xu} zuBSuwX}V;Ad4GSux`yKPH0X}YUkCnx(IZF4NN9dUpnC|}=ja;974^P?uGC#(`77vu zoC{tRWJWU0JpZ8OBDB!rxiqTU4@}Wf^SuoHxY1%Y_X2;Hypd_-&;!~V5d{OS6WSdY zC!?A&E1gRhvGZ@d{x{pK1-k#Py`JCMTYsp|)!d%iXdRlJkWod+pp=k#s`Xj9bQlXZ zl*`f~90{!^fwLh=y$nG<&2!@C%oj61OPhVSe(v`hM+cy4^ta`-a@ju%op#lhX8Tqp z&CXEFvez1x^G~GwW2>6)a)^OvdmFK|1GGK1zi?BtkVjh%2jy7c)jQA((8Zx>eLs+y zx1QsEd*aTdVf!_TGl?7%=Qif-g{f-@3-}gVx%)Vwtgt;?;_G16&ZKqwhNGpEcO{|V z+_6ELj`WQ%<&TuEXP^5@%skUQr6sKB26P(z&ZoGKbNh52rRE&XNkjkNJ})1QK$e mG*(5_+RZTzn-wTw$iQNBwt7{Er z8Bkfqc*i<%$6?x%(C_3+#jerqr~em+VO0&+5-&GGa&r7gHLW^cNC;N#6?bx~Gj=^? zS>*1w@1Pa~433T63r~I8K`w#|$@NDiL>PqI)*6PG`&~?Td}vero8da^_1xw3uB*t> zWTQHIa(Cs(XBrc<#UH0yPQJaYokl147unt^+Z;~dg3Kj!nxYr+saete=rsDJp)U_7 zz_)y9fl^l`?*H+BoAdaweM{zOA&pQwnjw*(_*92}Y}J$KDe4T} ;4IUC0fx3e~xRQv+0t5>3PS7DcaQF-+Efq zy?+Nj8Ju{2;Mks2?{g(hR#1p4$36c{OG3-rrz)T7)1)x`={0{C;!1_IZg{9eb-Sax z+j(Cl!7z6id >>cX2`OW<4VHB0;6c*YV-TaY&sh%Q7DP7&8MY7 zg}*<8F*yadX;4Jyk<|rkWr*_Y!FMf^%5sVGSm&25(3Wh%rC6`2mS5(z;SzJo(%|C_ zu_0{Ls|Q>Ehchl#mhRu~Yq6N)P)6XS9YQhZdU>}=XC8ygq(ynI-E~;&G4S8j_do9d zD72$!nTwo>6V5yD#NS4OH0oaTubig!aK6B>gxYYP^B|k%JLO9gDe)8ibqcNq!F~Qy z{`B}8yBk{k*bl6CEZefG@*HW8otXnrVGf$(JMjU S^F_ z=O^1)?c OG_c4O zV;%xHYCpQT1YH%9Nuab}XN WS)&&ANn!zFLCj%c zgHH@0P^Uv%*F-{yu%)yGi3NPWQ8k`_9L_HBk36-{&a^$@D>U7DJxtY=Y6QQw11MuM z8^We(okMCy9qEo8=62C`9Gfb?1(p+TQKp&l;ybIvgXCc-B!IrnRu;e536ECZOjKuy zBY0#QCz&m6lg!43iRsRk3FhaU9Rz2*Gf^X!sOie1ePXi!5_KYY9kWeyB@8VD*L!9J zXJ~6`cg9~%DyvP;z)nd?rL`I9Kb#YrRQL1^_Ec3L8|XhS+@jXE`L(DU7`$uilC0}` z_Hn9P%0G~LCdYGiYjx_}`L3%?673CR;$20o@oLWk2lA;@SDhrr-hrI_C#lPZa#`87 zoz%DQl-0h~x@Q;l)V*PC8t)9gsJpAbwRiP4$vTZ^koF878ugtORsj{xT%`z}z%pDj zVj2OSgUq;hn~B-e7GfUc0sc))!k>`969_Pb1my@YgoMlpEC9+n25QWhX^d7oNuf!* zX}gKo^r4CBlj$a`vdys{Qk4!74_46AJ2{mVxriQMVoWZ{R3yc(RPj`Gvk%FJW1{-p z0p||~52}~sfrtC|4?mI41FuI%*@t2iYAW}iF9XUjusxI~E{4iK-#z@lDSs(S{Tu*v z|HFwBluJ#D4*B4~;qk{QJC16*d0zTpoi}~3?a|tr-+tQ^Y{-|%_kk%KNZF!ytmWJ} z%CTdX>Bm~AR7zf+#Rh|}T_V}hoq18OJo;LroKtHO2oE4Tu}~aPk)nJy8f0ZD=S%a@ zq7JrEP)~g^ pFEaBh&?d{lEUWgY&E|`v8CF#ukT32U|@O4c1*)O;}T5{VuV5 zuzcWZ_!iK8%NZtok@gNFlcYG#X1LHXv486+`>6eA #KyxK*U&5LlC8E<&trO6dt ^ztGP3*X7bWRtvl{QPMqg}lU}Ms>74hm$o{~N9vh_^ zC1~!3b=~_KntPQ2yl=rm)8-fDX_1s8DLs~$TRjYi4^HEm{kGctC**d-78JyGZtKIK zRV@}W7&TC*>JFTbFZQE+a9H1Zz5t=Aa%iZsYG{xK2M4Pv2b<$N9K5_7Kn}n!%LKN_ zgQ^`B5JQFB5TIhRBO~DF(=vW5b!&f4kFb9W{6r?vO{jEzC-ox$73rlLk#Ib|`5^WY z_17xyA$YRs4*37ZYohI4>b3UFNfT+OmNcwqoWL&(;B+-(z o!0=#3V8S6G>umFME0? zRhx>nw>q>N8XDTmnPWOXyfAxbnf3LVGTq}l Uwo?9AdQ*N&)V1{ZA9EIj~hZ~Q?mQJnrUCxQ7h(|jLM@rbbWD-xOgV(>j ze7*SOb?4mo*JEm~Ul| C)#HInF|X`2V(yI+o{8Foyg%>Qnp1vS~&^K z?w60d(qDwSO8pxNj0C`$qvtm?9L^v2&H-AV5E-r8TOHcK_S%k)+z+` 29QKjPFv;lA+g=x1<1PJ5lkQ1mYO%)g;%zc=a&S4)Lu0hiXUmKr{vBwGb z8qe^UyinA{@XjseU5bSW#XivCi{*TceQkl)!w&7X;sI #?x5z`(2 zQ2L>6eR)6myaC`nwHw^I4+m`Gp$VXN_M^neS#~ix`VUB4+W87+Ofb$lYdrlU(pMP$ zn-Q+}iv93@WT(1}CV`F6dO9xAyDxR{fakLoVPlQ6+R>=9`cs;~B!VZL1re8CJLE@0 zc|AZr;sNpz-;q$rkAfG;z}QaX0d(O*qejsv4Me<_v4~VeQ#Le^+fPG5#7^?W;0gqQ zJGCN>-nFAq#vXbX8*xDztiLy8L@#o31;mzg(?-bb>`!Wfe#2n9t#0ew9844EbTzwY zQOt5_xNg+)nUpB)aFPj&!O^I%#Mx>E$$`SO0hH(z k6jZq<0z3#dwp2-kRX|yfhI!mk549 z!5cw~8GvqxT{OZm>X>e$aeJr%P+W)X - z>GcB&f ~99MfeDwu-Ec3MmNo*s#W`feCcaZ%Uq zFQn)MiPs*fP=^d%SlBVrvmPxriSI~jLa~w^(wH=lxdZkg?pVaMnl-YI(}nSX&wH)E zGOO~Y=Z!*~V2q!vn=&Jyi*1;Rlh9~ >PTkDZ%7nU>37Z)>Q z3p9Jo(H{2r!rt*&z%oX|Qfza|Kl8Lan|RqcgT07TNnltAuU)QZQUSn3Y_b;Cz!mR# zXt;M~6pD{)Axv7p1Z UJ42N#mufW7t38v8@LzW+tHYF<%WBHp*LA1XWYZs zV=*S;yKA8B)VF7ltH>Z{V8D3JZs6b~g#qI!UYP@K!56s5(IF?|gx>$Zf%Yjbu*Lr3 zn%d)AqgAE3;+G%gS|v%EQ`0NT%L`YfD!mSBwKuYlYYHK0=;dKAWGW3fB?RG0WkL zKecVRx!?k7T}~A2aoXqIEiAn4&&9`){9|JLja7o8beuGUv8I;i(#a%B=JH{T*1`hY zws%@){lm4UUrR@#pGyx*az0GU^kUiA#ofgyvFzfOs-ohm?Cj#IqN?H+wfnGxSF{hW z+f|_uS1GBG5uzKuW*&!|udxfwe8lHXE_(H$opx(IE_JZIF10f*F153+J#|nIIvAPM zRwY (S-lVojQhdTWb-gJ)^>c{{(t?A;q`c^awBjo9t**W_$eTt-Yrc z`+I4zscjLcNQ84(T5&>jVqOp_BQIJVJB3w`PR~;$SPcYy5Uen#kG0&)i)k1T>lS&i zyI~+EujS?#y~5&yAozK;57{5G-(-Vv*N6u>!%#WnM+c6t>)~_jb5=5;xYC560jEqQ z?1el%l14~elaYO!J@GYFDO@!#Pp@cBO_JnVl^?a@SEX5_)#K}$>IJI56O*}2A!U$B zRt~0`!A?3+DnZ8nF){w<;^NNPTX?%$oY%(LE1b9l)Vkm{+_V{Om91YB?=QZq_DIcx zr-~>POA!Y`Z<(JIIZMrZO66F~H?mxTt4jB$I3nVysd-ZC-T`@OQyzVI-=NCYD&JPE zTd<{P*B{q)Y|=CeW;!-F2Sv} ^%g{^s6^FAB)@kb1Q#L zW^eU+c0gf#Tvt>m*tmzb=3+2HU54&%TG#%)^Jgb}>|i%!Kah5s9jb3F9psWr)QrhV zn*6&*nB6*WS~{!$5EQRPr1a^xHnvu=s&51RGE_@l3?n^ezV%9w-?Ut){}AqQIp(IQ zH3T>o8q*Wp2) +&kxV;USdzudsn8Wf{Ja&3dmY6{_cK0?!?%z2<<@8Iz+Dl8Km0EpNLq#EYQv> zN{sBG7}OrGrreC$ulrU%Q6Cx*pjY|XXD4MBm1NZqmwhY0TOOK_paq)a=kBLIpbm21 zse0liA($imB3d7VU4?S|gusv0rLcPROT%4l3-pn&3ftw8k9T**6McOAh-iL4gVfyq z-6`Z4wZQp1I#VYLOGkfa#~DrZezdp;BhcM7LM8ZQ3Rgr7O89e2L^OFE(mND`9Oc(Q z!~q){x*IA&?StQ$;Qx!!=H$oZxQ#Zsjg-dFd~?#9w;8j6{e!X_%ROZhvMEKbf5rbc zzI?dx$1mQBA2#w)3Jqiu0S~xrzxrV;4o`N>DiP2*6QjdX{b*}+zal@^CO?;IzlOC& zznTDCgNNaQdsj!1D4e34X-Tw;6Aew&iB>y2(bUknX4J&i3**qq#MI8q0rO4uqk=}F z=|sT(M`(&^BV7OgA~H!@O&;=GkBF}+nx&}}b!pFYT?3ui))4)oXL5Y)RR}2pT11Xj z9bg5m|4)zdhI8i-X>WgGlKex$$=d=D?D<{d&cE_r
h>?=YuPa58n8L@?|GW` zhR@Uq+)R7Dbzlxr(Fd%6bG00VmSv-5W2^%lSU%TK?(t`TKOyZsmq-ISC;xxIg>Hrn zA1 y!V!rpcxqvLE$3e8zaUC5WJ^(lj3KXZ`pUAPABs*Yxs~wET z69%jil4Sq^n?hxa!FhJvn1u{Q_{uSGYC436K8+dy0}L(cxFf`-V^NRPfe*elJ`uc+ z$5VV_yrD}&xl+%Fn?)+j*iTJ%mA7$-4`#UyvY6vpKi1af;OgyWW|VFIZ-Z39 X$)bfI zl*#Uj4ADdAfLl{r@3ud_265eC6k!*{_^V7lgS?{hTpV8+{>!WIE!YXEMfrIKnY<@> zr5^~taQ7|0WG+{Q+gGG->B3dzxc^q>+3;WZ#LuQMO@VxmDH8xpnfzp#DQkjcwHsPM zzJ *(amWD=RFaQgtWz%QF8I}xeZ{{++&!Wm-gTvRTqL@FE*(~~q zLFm3o1^&+mT$; rpVE(}(yf2N)$P3Z$L?k>G`XUPIj)C>LXs>?KSZTExN<1`22 zr|`YVJN)LA7ZnB^T?4qH*Xk}P50toL*C(wfH!Jp42h$qxW&EU>-IYjINhyG2*;z9V zPP@v@+A9Tccv%lTPkFwyqaAyxmT-VIunF8OfgY96y#ZDW9l%{d9(_aF(C75Uviu7* zU|M1^(v}8oOW9@OhopqNqQe1J#zxKbM5}o$zg~^rDJkcd=C&=FfdN>l$H4i2;`;?7 zDmvi4n^^tC)NwQV_d83{vO%SQ*&@mtU?u1SUrimglnJ *{O6gueyjfNDCZy5G2o_ce~MQ> zVbE?mP?Mi_KK<68IUWX3v>e0?&cnaz;7PvjJ->?>lv_Bt7!R}Oz(t`s?WKR!KCKD4 z6-oB1+@h3hcIWF~$+eQ{`XTd5YoC%3?c~AT7gz4WWQ$m`|MA-6rd};4d;YarI^dym zcZ91tEn0=d+=+X%L9)lo$AJ-b8e8fW`~-h-<^}Eh^Q)RH{yRBRhW2{UyltlvQcl^k zK{Y@6Z8X%K>tClRen0f`MdnkrLPm@2)5&rx!h49&$%r}SqFk47jxE1{?ke%-67qHr zu76HLNF)K<<<4zWoB!!}JBVG`Upq`GXD^OR(BBZq6_xdW|B59MMOZW&?4Zw^ )TIhhA?hPE3Kwp;(Yy$3 ~3PS9VMUt@rL$`^8a<&XBBh9YB3Y}lFwOxXImq^z`@+vRlN{V1(1O3By6 zvjNs~$|eKbVn@|n@16qplb~BkwWYw{d065M8`Rn!<&JLu0p)|{;YU_4280NdRmAR0 zADh?NISy|2m?`GEhdmYqZ41$T9rE8@(R9F_87FFnKf3$&-!7#2naQ?HeTV1}`Oc#V zj;TtK+EGeYZe=#FJ=09=^VXgAf-^8aGz>5Ms!ZC`W&n=8w1J} z4D`(Q{+4i$ZneQG{~oPoXP#?#+f#kW+SRWe>wxM@F|o<>(Oa+5aZW$ovq7~V{WcnE z{h~+twfaSALnSvprp=u$ {4;bo#3WwO}G uMZsD7jl(85@%n8pItfk2JnLf1P;r|B=^9NS{CzJc%EBfPOMnTSZ#I+HrN-DLy`G z1~cwY&ZxWrr@df*ox6;g^oJ{s>YOvYX~!az0xV*acC;>mHx+*lZBM+?jD7tTnz(KD z+OPHw*IlAVi1z&gUv&@T7p=rs&Q8&K?$%kVZjbym)e~}q_YdU#l{hHTilpQtW$x(f z^j~F}N1{=xI!4g~uOuI!C3z*Xs}}kq=*aE|_(2+lWm9&>dc;EN9z(mB>g4V?WRRur zL`aeC%g4Vj8R@9_mcc{DOqO*nxPX=bms*~$TaefX*lUp38LddP*zOO>wRLzTQasYx zI{D!yzhS29^-o2gO2{9Z7dC8>+Ro>1u{Zo|2;sG};_@xgwfRW+NtP{va07ZTJDwxw z;jN9wlMd@vzs^6DLtW*E`r!)Y6B60sqn=S?e3|%hI^B*cZ2G95iP-U@CJt}LN8`uQ z(QT0|kF&<+DT%vQF^n%WT+|Y142be^ #`!fWQc^SWTT{>sY0 z)cJ|b05KLmWB sS>Dj~kdN@gIXdO*%>mEzHTWqBG KzBEOOGgW)b13r@G*dEs-$pY~Jc4V+`}^;In>8P?n}_m!k9YWlHmv@Qzi}($ zd%U}2cjeFgP=a62Q)vWvum*q8!CxMzmnNRqF2qj>l^5U1Rby75m+i@Y=eL=PADp#) zI2DhQII8aB%M2H_3>xv#z;UGJ3$Gw~qUbeaJVhDUhK^_=rMl6TyN7Gx`k`3N<7 z*cUJ?g^#TAnb*p%wy>B0ib}K~`gUDU3@=+?L0vh1Ac-Gp_%`3mgO^fxl#cP`!0YmrAZs3i$O2FxQGlKf&=mm}A225+Fwbiq; >oH@we;od0BlF zH4E`HGxzkM2j}5oZsy^6w6!SMJ8K*-Jm_~Khr$`Be2k?RF6I>W4jp$;o;A`b 1 Xphz @ZcpS2E$*o6h4I`gDt=Z z9!~I5UU+f$dzR%VOp>c>F1R7T4@JuIX_M%RtMK^qta})|W7J3PAeZB%^}S~Si3wG- zrQ{_zY%q9=HqS3M0;RoN`^iTkG i_>6}z zaj7D<40q8kxnjL-Y#qE^FVQ+Qc2>@&7bZnUl9?X)^_ZL)9vl)L9uf=_)vyeIhTTJ@ zx=uZoo`SKSsyg)$!(=fsgL`FU@OW!k(I&4olxK4L+#g%V*lWk1VkY{AV>KOeyz!H- z7}h497?n-a(X#Dd84Q2Dj~dL!ubk+}wMx_*GbB9}Gv#^vAPessz J3YR@flu 6M`I5bJkYI=CBMgT#hS54|`{4$`P;7=0HxLx?b)N9fqGz)@y9ISTu6Sxk-BD zP}H_CBINKHx#)RePulq-x6p= $$=1o$g3KG-M|SmlZA->w+A}W7Wv}eai!wOic`^+yWe*6JF|xX>Sh*r12Qd z0AUeMl=MI6a`{X^!0hZL;YLxxQ_zyvot*&z@csV74 LToaa-7Pj%@<$VI% zQji%QUYV6@*gwHVQSG0XQbJ8k%PaUM?v#Hgp$4M5&`&-IH412J)pBfeCJoi6`zPLx z`?%RW%h V3bV zc7bVsWY7w74of$xVU!ySv8;d_gS0myn%3-6D*H@626SFwk81m&!^q}AhyF7P8+l}G z%5Cf-S(UMQq(K+{^M|LatZ2HXe+ov~e!gtR>_+0)k KzuS`2K4r zZPW@rJ8K_w@64Ow1vQcWc4K>>l}8aP_x#@Go5gSCKmCP2*R8BLcP!xEC) x^9v8RiU!^(%2GcAP6E!I?aR|?_+DUKO<$=r7Kwt86{G`G06xQaIGdPYve;fp?wucf9W&~MN6W6}7t_{+yf zagzZ7kfsd-gfMN=w1TUJOuq;9GP6nX0ty#=F%-1Zw7`7-1kF$tbGy)b7~YPeAST=Z zgvET3CyE`QP!wpIZZ`4(+@iP;z7rIf_daNuP^^OV>|#q{2dY&USQYzb2+A1otoEmd zvE1UKW>^F@sGh4Da2>)7QPJfXES@OHB-{iU0z0})jqMP{4p1lxG)>oN*}+d~)}tC# zedocn9auXfCpIwC5=h)HKsgR!2PiZJqMOX$h5R-&6{M50(5h#@S=_reti2c)FU;=3 z_hGEHuCz{yYU!L9R*sm68c}Uot^0Ex#CZ_sK^){D2RV^L_-!bJQZ{wB2O@TWqNiY^ ze^dtDAxC1NxJ0q0nWDPsWY$ws0;*M4UatazjTOgO^9GwvbxqPIpaxYa#|}|UBB@t3 ziP#~Eed3Xjh;odOR7NHc9~b~siF`8Fa>d9M?gXV{lT=e6x``WkJ3&;3p%Qd-f7Z%1 zFtbkImLkha;sH5$3g7yyr)VwAUevz=*EHsT3ot2`IZldqs~N2K;Q2Cu%M#rX%}@}p z?LvD|c{|=}Mp1kCj0|ldE-HKeKu(GDQnPh(Oi ej^zw4RLx_`9ff! z5>8NE-B!RhO};@gYau9+84Blu23&^#!?h?mg2l@a9+Mg1U?L2#1QyMDzD2USFij=| z)f}i~Y>^IOc~ZpU_^xx}PNCr&c&w;u{fU zK!M^9tBy9+?9|AZ>qgBHD8|P7H=dIKs@4E2bx_5GWGxvrA{~ol1dc5&V&jdyz&Jr2 z1s51v2U-cGY7Ve6B`Y0nB-ZxuEamWoer?j8nm;LG;i1Xs%_1SEmmw|;kXGy?nsA4j z1EP&G-kA=YAzeD7cc1-N6mr#nBc%s9O%Xp-P{7a{Gr&POY#A$#pX!7OfHa&sH1LdX zfguE31Rfk?-ssdEb-=6+E@dsjkc_UJ(iO@07HalJiUH+nj=x`uTK`vDE58iB%+OXb zuVas)&d`<|%~YD| ^?6mZl3@i>8*uRZqN4H$7aChR0){*9dqQ`G%JgJ z3eQt3yDX}tUqfUu3g4V*d|+OOHYKf=;$6f}0CWS;n~7E&&|5_7nzIwUp-!H^Map!C zx5&-v@RoSY2shv68l?8_sEWqM*&{unBc-!)TcE4Za78(4x(b~d<_fZIiPu+Z`oZif z)!AsIt%e?~R6w&h60n)vTn*bP4hxGssi4VB7u(xYbsbo&k1UhRL>nh_>VvLRL;JY{ z03S_gMhjXYfDj^xA%PTKqi$)yM_#qcCll`PUIuk1$8NjK$WdXF^#a2R7$8mjsuvPa zKcun2QPOG3X!Yi)D1UuT6KES-P8FAUI$&b={~npyyuaY)uUzEaFHO@*esyQ2 a@wneh!|A`QH)_(aOeKQD&HjN>XsS&%|ig_5-1+C?B3Wh0N#K) zQ@Cx&a@G_w7xGgi$|dx8I+_jr2@k&@*qRQ)_?1>;M`T#1vwk#HFFK7zi3X2>ROR&& z`z47pyr~J@2wd8dORN~ONPR0qIj7dcwo7VgH~LLpa6wo~L_^J?d;LN#{R{hu0dIeB zf2!_xno_S#*Fd7_-aqLo^NJz8NLFkcYcp9ir0Kgbj6|o)*W0POk4pRT@akKS2xO3> zw|xt#{H@C1_1!~G=tf{wuB3ul%W5wgQgj!Az-2bbEG r`qN9mmPq3kuG8-e!yVO{TlmxOKvp5B&R3tF;X1c{_#t;dEmWN1j! z6NZuKgDs^#U@UE2$g*F{9+gmPkDh7GJ1zZD7IHTZ0MB`7`j}Bl$@ocVdcrUgoz8km z)r(GZAeFHm4KJEb#@-K3?yrobilCgYYFTU3+agWt%-lRhqU^D_*nvYYw>I8!+FH~& zp;uD$+)3+nRF0-*T8Gf$rcDNHZLL4HMR&;4Vg#NBMmcj5q=<#C+g-H1G|mSkl53%H zc7wCRtqZj6^Wy1G!