bytefun-ai-mcp 1.3.4 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,39 +2,29 @@
2
2
  * ByteFun AI MCP 提示词优化器
3
3
  *
4
4
  * 重要说明:
5
- * - 本类提供五个独立的优化工具和复合调用链功能
6
- * - 每个单一工具处理不同类型的需求,复合工具支持多个工具的组合调用
7
- * - 页面列表修复功能确保页面完整性,修复后的结果用于后续的产品设计和UI设计
5
+ * - 本类提供五个独立的优化工具,每个工具处理不同类型的需求
6
+ * - 每个工具都独立执行,通过文件系统进行数据传递
7
+ * - 必须分步骤执行,每个步骤完成后等待用户确认再进行下一步
8
8
  *
9
- * 单一工具使用方式:
10
- * 1. 页面列表分析需求 → 调用 optimizePageListPrompt()
11
- * 2. 页面列表修复需求 → 调用 optimizeFixPageListPrompt()
12
- * 3. 产品需求设计需求 → 调用 optimizeProductDesignPrompt()
13
- * 4. UI设计需求 → 调用 optimizeUIDesignPrompt()
14
- * 5. 代码开发需求 → 调用 optimizeCodePrompt()
9
+ * 单一工具列表:
10
+ * 1. 页面列表分析需求 → 调用 optimizePageListPrompt() → 写入doc/xxx-产品需求文档.md
11
+ * 2. 页面列表修复需求 → 调用 optimizeFixPageListPrompt() → 读取并更新doc/xxx-产品需求文档.md
12
+ * 3. 产品需求设计需求 → 调用 optimizeProductDesignPrompt() → 读取并完善doc/xxx-产品需求文档.md
13
+ * 4. UI设计需求 → 调用 optimizeUIDesignPrompt() → 读取doc/xxx-产品需求文档.md进行UI设计
14
+ * 5. 代码开发需求 → 调用 optimizeCodePrompt() → 读取doc/xxx-产品需求文档.md进行代码开发
15
15
  *
16
- * 推荐的分阶段复合工具(包含停顿检查点):
17
- * 1. 页面列表 + 页面修复 + 产品设计 调用 optimizePageListAndProductDesignPrompt() ⭐推荐阶段一
18
- * 2. UI设计 调用 optimizeUIDesignPrompt() ⭐推荐阶段二
19
- * 3. 代码编写 调用 optimizeCodePrompt() ⭐推荐阶段三
20
- * 4. 页面列表 + 页面修复 + UI设计 → 调用 optimizePageListAndUIDesignPrompt() ⭐快速流程阶段一
21
- * 5. UI设计 + 代码编写 调用 optimizeUIDesignAndCodePrompt() ⭐已有需求流程
16
+ * 推荐的分阶段执行流程(必须分步执行,不可连续调用):
17
+ * 阶段一:页面列表分析 执行并写入文件停顿等待确认
18
+ * 阶段二:页面列表修复读取文件、修复并更新 停顿等待确认
19
+ * 阶段三:产品需求设计读取文件、完善需求文档 停顿等待确认
20
+ * 阶段四:UI设计 读取需求文档、进行UI设计 → 停顿等待确认
21
+ * 阶段五:代码开发 读取需求文档、进行代码开发完成
22
22
  *
23
- * 不推荐的长流程(缺少停顿检查点,保留用于兼容性):
24
- * 6. 页面列表 + 页面修复 + 产品设计 + UI设计 → optimizePageListProductDesignAndUIPrompt() ⚠️不推荐
25
- * 7. 页面列表 + 页面修复 + 产品设计 + UI设计 + 代码编写 → optimizeFullWorkflowWithProductDesignPrompt() ⚠️不推荐
26
- * 8. 页面列表 + 页面修复 + UI设计 + 代码编写 → optimizeFullWorkflowPrompt() ⚠️不推荐
27
- *
28
- * 推荐工作流程(分阶段执行):
29
- * - 标准完整开发:阶段一(页面列表+修复+产品设计) → 停顿检查 → 阶段二(UI设计) → 停顿检查 → 阶段三(代码开发)
30
- * - 快速UI设计:阶段一(页面列表+修复+UI设计) → 停顿检查 → 阶段二(代码开发)
31
- * - 已有需求开发:阶段一(UI设计) → 停顿检查 → 阶段二(代码开发)
32
- *
33
- * 数据传递逻辑:
34
- * - {{PAGE_LIST_RESULT}} 代表 optimize_pageList_prompt 的结果
35
- * - {{FIXED_PAGE_LIST_RESULT}} 代表 optimize_fix_pageList_prompt 的修复后结果
36
- * - 产品设计和UI设计基于修复后的页面列表进行,确保页面完整性
37
- * - ⚠️ 重要:产品设计完成后必须停顿检查,UI设计完成后必须停顿检查
23
+ * ⚠️ 重要原则:
24
+ * - 严禁连续调用多个工具
25
+ * - 每个工具执行完成后必须等待用户确认
26
+ * - 所有数据通过文件系统传递,确保每个工具都能独立执行
27
+ * - 每个阶段都要有明确的完成提示和停顿检查点
38
28
  */
39
29
  export declare class PromptOptimizer {
40
30
  private readonly pageListPromptTemplate;
@@ -70,69 +60,6 @@ export declare class PromptOptimizer {
70
60
  * 📁 数据来源:从doc/xxx-产品需求文档.md文件中读取页面列表和需求详情
71
61
  */
72
62
  optimizeUIDesignPrompt(userInput: string): Promise<string>;
73
- /**
74
- * ⭐推荐阶段一:页面列表 + 页面修复 + 产品设计
75
- * 先分析页面列表,然后修复页面列表,最后基于修复后的页面列表生成产品需求文档
76
- * 🛑 停顿点:产品设计完成后必须停顿,等待用户确认后再进行UI设计
77
- */
78
- optimizePageListAndProductDesignPrompt(userInput: string): Promise<{
79
- pageListPrompt: string;
80
- fixPageListPrompt: string;
81
- productDesignPrompt: string;
82
- }>;
83
- /**
84
- * ⚠️不推荐:页面列表 + 页面修复 + 产品设计 + UI设计(缺少停顿检查点)
85
- * 完整的设计流程:页面列表分析 → 页面列表修复 → 产品需求设计 → UI设计
86
- * 注意:此方法缺少产品设计和UI设计之间的停顿检查点,不推荐使用
87
- */
88
- optimizePageListProductDesignAndUIPrompt(userInput: string): Promise<{
89
- pageListPrompt: string;
90
- fixPageListPrompt: string;
91
- productDesignPrompt: string;
92
- uiDesignPrompt: string;
93
- }>;
94
- /**
95
- * ⚠️不推荐:页面列表 + 页面修复 + 产品设计 + UI设计 + 代码编写(缺少停顿检查点)
96
- * 完整的开发流程:页面列表分析 → 页面列表修复 → 产品需求设计 → UI设计 → 代码开发
97
- * 注意:此方法缺少多个关键停顿检查点,不推荐使用
98
- */
99
- optimizeFullWorkflowWithProductDesignPrompt(userInput: string): Promise<{
100
- pageListPrompt: string;
101
- fixPageListPrompt: string;
102
- productDesignPrompt: string;
103
- uiDesignPrompt: string;
104
- codePrompt: string;
105
- }>;
106
- /**
107
- * ⭐已有需求流程:UI设计 + 代码编写
108
- * 先进行UI设计,然后进行代码开发
109
- * 🛑 停顿点:UI设计完成后必须停顿,等待用户确认后再进行代码开发
110
- */
111
- optimizeUIDesignAndCodePrompt(userInput: string): Promise<{
112
- uiDesignPrompt: string;
113
- codePrompt: string;
114
- }>;
115
- /**
116
- * ⭐快速流程阶段一:页面列表 + 页面修复 + UI设计
117
- * 先分析页面列表,然后修复页面列表,再基于修复后的页面列表进行UI设计
118
- * 🛑 停顿点:UI设计完成后必须停顿,等待用户确认后再进行代码开发
119
- */
120
- optimizePageListAndUIDesignPrompt(userInput: string): Promise<{
121
- pageListPrompt: string;
122
- fixPageListPrompt: string;
123
- uiDesignPrompt: string;
124
- }>;
125
- /**
126
- * ⚠️不推荐:页面列表 + 页面修复 + UI设计 + 代码编写(缺少停顿检查点)
127
- * 完整的工作流程:页面列表分析 → 页面列表修复 → UI设计 → 代码开发
128
- * 注意:此方法缺少UI设计和代码开发之间的停顿检查点,不推荐使用
129
- */
130
- optimizeFullWorkflowPrompt(userInput: string): Promise<{
131
- pageListPrompt: string;
132
- fixPageListPrompt: string;
133
- uiDesignPrompt: string;
134
- codePrompt: string;
135
- }>;
136
63
  /**
137
64
  * 基于页面列表结果生成产品需求设计提示词
138
65
  * 此方法用于在获得页面列表结果后,生成包含页面列表信息的产品设计提示词
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-optimizer.d.ts","sourceRoot":"","sources":["../src/prompt-optimizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CA2EiD;IAExF,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CA6DqD;IAE/F,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAkEyE;IAErH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAiGlC;IAED,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CA+MvC;IAEA;;;OAGG;IACG,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOhE;;;;OAIG;IACG,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUnE;;;;OAIG;IACG,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUrE;;;OAGG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO5D;;;;OAIG;IACG,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUhE;;;;OAIG;IACG,sCAAsC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAC,CAAC;IAa1J;;;;OAIG;IACG,wCAAwC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAC,CAAC;IAepL;;;;OAIG;IACG,2CAA2C,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAC;IAiB3M;;;;OAIG;IACG,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAC;IAU7G;;;;OAIG;IACG,iCAAiC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAC,CAAC;IAahJ;;;;OAIG;IACG,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAC;IAe7J;;;OAGG;IACG,uCAAuC,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzG;;;OAGG;IACG,kCAAkC,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpG;;;OAGG;IACG,4CAA4C,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAInH;;;OAGG;IACG,uCAAuC,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAG/G"}
1
+ {"version":3,"file":"prompt-optimizer.d.ts","sourceRoot":"","sources":["../src/prompt-optimizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAwEiD;IAExF,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CA6DqD;IAE/F,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAeyE;IAErH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAiGlC;IAED,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CA+MvC;IAEA;;;OAGG;IACG,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOhE;;;;OAIG;IACG,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUnE;;;;OAIG;IACG,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUrE;;;OAGG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO5D;;;;OAIG;IACG,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUhE;;;OAGG;IACG,uCAAuC,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzG;;;OAGG;IACG,kCAAkC,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpG;;;OAGG;IACG,4CAA4C,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAInH;;;OAGG;IACG,uCAAuC,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAG/G"}
@@ -2,39 +2,29 @@
2
2
  * ByteFun AI MCP 提示词优化器
3
3
  *
4
4
  * 重要说明:
5
- * - 本类提供五个独立的优化工具和复合调用链功能
6
- * - 每个单一工具处理不同类型的需求,复合工具支持多个工具的组合调用
7
- * - 页面列表修复功能确保页面完整性,修复后的结果用于后续的产品设计和UI设计
5
+ * - 本类提供五个独立的优化工具,每个工具处理不同类型的需求
6
+ * - 每个工具都独立执行,通过文件系统进行数据传递
7
+ * - 必须分步骤执行,每个步骤完成后等待用户确认再进行下一步
8
8
  *
9
- * 单一工具使用方式:
10
- * 1. 页面列表分析需求 → 调用 optimizePageListPrompt()
11
- * 2. 页面列表修复需求 → 调用 optimizeFixPageListPrompt()
12
- * 3. 产品需求设计需求 → 调用 optimizeProductDesignPrompt()
13
- * 4. UI设计需求 → 调用 optimizeUIDesignPrompt()
14
- * 5. 代码开发需求 → 调用 optimizeCodePrompt()
9
+ * 单一工具列表:
10
+ * 1. 页面列表分析需求 → 调用 optimizePageListPrompt() → 写入doc/xxx-产品需求文档.md
11
+ * 2. 页面列表修复需求 → 调用 optimizeFixPageListPrompt() → 读取并更新doc/xxx-产品需求文档.md
12
+ * 3. 产品需求设计需求 → 调用 optimizeProductDesignPrompt() → 读取并完善doc/xxx-产品需求文档.md
13
+ * 4. UI设计需求 → 调用 optimizeUIDesignPrompt() → 读取doc/xxx-产品需求文档.md进行UI设计
14
+ * 5. 代码开发需求 → 调用 optimizeCodePrompt() → 读取doc/xxx-产品需求文档.md进行代码开发
15
15
  *
16
- * 推荐的分阶段复合工具(包含停顿检查点):
17
- * 1. 页面列表 + 页面修复 + 产品设计 调用 optimizePageListAndProductDesignPrompt() ⭐推荐阶段一
18
- * 2. UI设计 调用 optimizeUIDesignPrompt() ⭐推荐阶段二
19
- * 3. 代码编写 调用 optimizeCodePrompt() ⭐推荐阶段三
20
- * 4. 页面列表 + 页面修复 + UI设计 → 调用 optimizePageListAndUIDesignPrompt() ⭐快速流程阶段一
21
- * 5. UI设计 + 代码编写 调用 optimizeUIDesignAndCodePrompt() ⭐已有需求流程
16
+ * 推荐的分阶段执行流程(必须分步执行,不可连续调用):
17
+ * 阶段一:页面列表分析 执行并写入文件停顿等待确认
18
+ * 阶段二:页面列表修复读取文件、修复并更新 停顿等待确认
19
+ * 阶段三:产品需求设计读取文件、完善需求文档 停顿等待确认
20
+ * 阶段四:UI设计 读取需求文档、进行UI设计 → 停顿等待确认
21
+ * 阶段五:代码开发 读取需求文档、进行代码开发完成
22
22
  *
23
- * 不推荐的长流程(缺少停顿检查点,保留用于兼容性):
24
- * 6. 页面列表 + 页面修复 + 产品设计 + UI设计 → optimizePageListProductDesignAndUIPrompt() ⚠️不推荐
25
- * 7. 页面列表 + 页面修复 + 产品设计 + UI设计 + 代码编写 → optimizeFullWorkflowWithProductDesignPrompt() ⚠️不推荐
26
- * 8. 页面列表 + 页面修复 + UI设计 + 代码编写 → optimizeFullWorkflowPrompt() ⚠️不推荐
27
- *
28
- * 推荐工作流程(分阶段执行):
29
- * - 标准完整开发:阶段一(页面列表+修复+产品设计) → 停顿检查 → 阶段二(UI设计) → 停顿检查 → 阶段三(代码开发)
30
- * - 快速UI设计:阶段一(页面列表+修复+UI设计) → 停顿检查 → 阶段二(代码开发)
31
- * - 已有需求开发:阶段一(UI设计) → 停顿检查 → 阶段二(代码开发)
32
- *
33
- * 数据传递逻辑:
34
- * - {{PAGE_LIST_RESULT}} 代表 optimize_pageList_prompt 的结果
35
- * - {{FIXED_PAGE_LIST_RESULT}} 代表 optimize_fix_pageList_prompt 的修复后结果
36
- * - 产品设计和UI设计基于修复后的页面列表进行,确保页面完整性
37
- * - ⚠️ 重要:产品设计完成后必须停顿检查,UI设计完成后必须停顿检查
23
+ * ⚠️ 重要原则:
24
+ * - 严禁连续调用多个工具
25
+ * - 每个工具执行完成后必须等待用户确认
26
+ * - 所有数据通过文件系统传递,确保每个工具都能独立执行
27
+ * - 每个阶段都要有明确的完成提示和停顿检查点
38
28
  */
39
29
  export class PromptOptimizer {
40
30
  pageListPromptTemplate = `# 你是APP产品经理专家,现在需要你根据用户输入的需求描述,遵循"分析规则"分析出所需要的完整的页面列表。
@@ -98,7 +88,7 @@ export class PromptOptimizer {
98
88
  # xxx产品需求文档
99
89
 
100
90
  ## 1. 项目背景与定位
101
- [根据用户需求描述填写项目背景]
91
+ [此部分暂时留空,等待后续完善]
102
92
 
103
93
  ## 2. 页面列表(按展示顺序)
104
94
 
@@ -106,9 +96,6 @@ export class PromptOptimizer {
106
96
  |------|----------|------|----------|----------|
107
97
  | 1 | [页面名] | [模块] | [说明] | [入口] |
108
98
  | ... | ... | ... | ... | ... |
109
-
110
- ## 3. 逐页详细需求
111
- [此部分暂时留空,等待后续完善]
112
99
  \`\`\`
113
100
 
114
101
  ## 完成提示
@@ -175,7 +162,7 @@ export class PromptOptimizer {
175
162
 
176
163
  ## 完成提示
177
164
  - 文件更新完成后,提示用户:"✅ **页面列表修复已完成!**修复后的页面列表已更新到 doc/xxx-产品需求文档.md 文件。接下来可以执行产品需求设计功能来完善需求文档的详细内容。"`;
178
- productDesignPromptTemplate = `# 你是产品经理专家,现在需要基于已有的页面列表,完善产品需求文档的详细内容。
165
+ productDesignPromptTemplate = `# 你是产品经理专家,现在需要基于已有的页面列表,简单补充产品需求文档的项目背景与定位,关键要快。
179
166
 
180
167
  **重要说明**:
181
168
  - 这是**纯产品需求文档**,专注于产品功能、业务逻辑、用户体验需求
@@ -183,62 +170,11 @@ export class PromptOptimizer {
183
170
  - **严禁包含技术选型内容**:不得提及前端框架、后端技术、数据库设计等
184
171
  - **严禁生成技术规范章节**:只需完善产品需求内容,不得自行添加技术相关章节
185
172
 
186
- ## 文件读取要求
187
- - 开始之前,必须先读取当前工程目录下的doc文件夹中的xxx-产品需求文档.md文件
188
- - 获取其中已有的"项目背景与定位"和"页面列表(按展示顺序)"内容
189
- - 基于已有内容进行完善,不需要重新分析页面列表
190
-
191
173
  ## 需求文档完善任务
192
-
193
- ### 需要完善的内容
194
- 1. **完善项目背景与定位**(如果内容过于简单)
195
- 2. **完善页面列表中的详细信息**(如果有遗漏)
196
- 3. **添加逐页详细需求**(这是主要任务)
197
-
198
- ### 逐页详细需求格式
199
- 按"页面列表"中顺序,依次展开每个页面的以下内容。每个页面一节,使用三级标题。
200
-
201
- #### 3.X 页面名称(如:3.1 闪屏页)
202
-
203
- 1. **页面概述**
204
- * 功能定位、何时展示、特殊说明
205
-
206
- 2. **跳转关系**
207
- * **来源**:列出所有可能跳转到本页的入口场景
208
- * **目标**:本页完成后跳转到哪些页面、在何种条件下跳转
209
-
210
- 3. **页面详细需求(包括页面内所有元素的详细需求)**
211
- * 列出本页所有可视组件及其层级(如:背景、Logo、按钮、文本、动画控件等)
212
- * 如果有多个交互区域,可用子列表标明
213
-
214
- 4. **页面跳转入口**
215
- * 详细说明从哪些页面可以跳转到本页面
216
- * 跳转的触发条件和时机
217
-
218
- 5. **页面数据流(包括页面内所有元素的数据流)**
219
- * 静态数据:如果页面内容为静态资源,列出资源位置(如本地图片、配置文件)
220
- * 动态数据:接口返回数据字段说明、数据刷新/拉取时机(如下拉刷新、定时刷新)
221
-
222
- 6. **页面交互逻辑(包括页面内所有元素的交互逻辑)**
223
- * 对每个 UI 组件的行为描述:
224
- * 点击/滑动/输入/焦点变化 等交互方式会触发什么反馈
225
- * 如有倒计时、动画播放等异步行为,要说明触发时机和结束逻辑
226
-
227
- 7. **页面业务逻辑(包括页面内所有元素的业务逻辑)**
228
- * 需要调用的后端接口(接口地址、请求方式、主要请求参数、返回关键字段)
229
- * 数据检查/校验规则,包括前端校验和后端返回的错误处理
230
- * 本地存储与缓存:哪些数据保存在本地(Token、用户偏好、本地标记等)
174
+ - 在doc文件夹中的xxx-产品需求文档.md文件,简单补充项目背景与定位就行,不需要详细补充,关键要快
231
175
 
232
176
  ## 文件更新要求
233
177
  - 完善完成后,更新当前工程目录下的doc文件夹中的xxx-产品需求文档.md文件
234
- - 保持"项目背景与定位"和"页面列表(按展示顺序)"部分,主要添加"逐页详细需求"部分
235
- - 确保文档结构完整,内容详细
236
-
237
- **重要限制**:
238
- - **禁止生成技术规范**:不得包含UI设计规范、交互规范、开发规范、技术架构等技术实现细节
239
- - **禁止生成实现方案**:不得涉及前端框架选择、后端技术栈、数据库设计等技术选型
240
- - **专注产品需求**:文档应专注于产品功能需求、业务逻辑、用户体验需求等产品层面的内容
241
- - **避免技术细节**:不得描述具体的代码实现、接口设计、数据结构等开发层面的内容
242
178
 
243
179
  ## 完成提示
244
180
  - 文件更新完成后,提示用户:"✅ **产品需求文档已完成!**完善后的需求文档已更新到 doc/xxx-产品需求文档.md 文件。请您仔细查看需求文档内容,确认是否有需要修改的地方。确认需求文档无问题后,可以继续进行UI设计工作。"`;
@@ -610,107 +546,6 @@ ${userInput}
610
546
  # 设计任务
611
547
  请先读取doc文件夹中的xxx-产品需求文档.md文件,获取其中的页面列表和详细需求,然后基于这些内容进行UI设计。严格按照产品需求文档中的页面定义、UI组件清单、交互逻辑进行设计。`;
612
548
  }
613
- /**
614
- * ⭐推荐阶段一:页面列表 + 页面修复 + 产品设计
615
- * 先分析页面列表,然后修复页面列表,最后基于修复后的页面列表生成产品需求文档
616
- * 🛑 停顿点:产品设计完成后必须停顿,等待用户确认后再进行UI设计
617
- */
618
- async optimizePageListAndProductDesignPrompt(userInput) {
619
- const pageListPrompt = await this.optimizePageListPrompt(userInput);
620
- const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput);
621
- // 注意:产品设计将在修复后的页面列表基础上进行,这里返回基础模板
622
- const productDesignPrompt = await this.optimizeProductDesignPrompt(userInput);
623
- return {
624
- pageListPrompt,
625
- fixPageListPrompt,
626
- productDesignPrompt
627
- };
628
- }
629
- /**
630
- * ⚠️不推荐:页面列表 + 页面修复 + 产品设计 + UI设计(缺少停顿检查点)
631
- * 完整的设计流程:页面列表分析 → 页面列表修复 → 产品需求设计 → UI设计
632
- * 注意:此方法缺少产品设计和UI设计之间的停顿检查点,不推荐使用
633
- */
634
- async optimizePageListProductDesignAndUIPrompt(userInput) {
635
- const pageListPrompt = await this.optimizePageListPrompt(userInput);
636
- const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput);
637
- // 注意:产品设计和UI设计将在修复后的页面列表基础上进行
638
- const productDesignPrompt = await this.optimizeProductDesignPrompt(userInput);
639
- const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput);
640
- return {
641
- pageListPrompt,
642
- fixPageListPrompt,
643
- productDesignPrompt,
644
- uiDesignPrompt
645
- };
646
- }
647
- /**
648
- * ⚠️不推荐:页面列表 + 页面修复 + 产品设计 + UI设计 + 代码编写(缺少停顿检查点)
649
- * 完整的开发流程:页面列表分析 → 页面列表修复 → 产品需求设计 → UI设计 → 代码开发
650
- * 注意:此方法缺少多个关键停顿检查点,不推荐使用
651
- */
652
- async optimizeFullWorkflowWithProductDesignPrompt(userInput) {
653
- const pageListPrompt = await this.optimizePageListPrompt(userInput);
654
- const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput);
655
- // 注意:产品设计和UI设计将在修复后的页面列表基础上进行
656
- const productDesignPrompt = await this.optimizeProductDesignPrompt(userInput);
657
- const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput);
658
- const codePrompt = await this.optimizeCodePrompt(userInput);
659
- return {
660
- pageListPrompt,
661
- fixPageListPrompt,
662
- productDesignPrompt,
663
- uiDesignPrompt,
664
- codePrompt
665
- };
666
- }
667
- /**
668
- * ⭐已有需求流程:UI设计 + 代码编写
669
- * 先进行UI设计,然后进行代码开发
670
- * 🛑 停顿点:UI设计完成后必须停顿,等待用户确认后再进行代码开发
671
- */
672
- async optimizeUIDesignAndCodePrompt(userInput) {
673
- const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput);
674
- const codePrompt = await this.optimizeCodePrompt(userInput);
675
- return {
676
- uiDesignPrompt,
677
- codePrompt
678
- };
679
- }
680
- /**
681
- * ⭐快速流程阶段一:页面列表 + 页面修复 + UI设计
682
- * 先分析页面列表,然后修复页面列表,再基于修复后的页面列表进行UI设计
683
- * 🛑 停顿点:UI设计完成后必须停顿,等待用户确认后再进行代码开发
684
- */
685
- async optimizePageListAndUIDesignPrompt(userInput) {
686
- const pageListPrompt = await this.optimizePageListPrompt(userInput);
687
- const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput);
688
- // 注意:UI设计将在修复后的页面列表基础上进行
689
- const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput);
690
- return {
691
- pageListPrompt,
692
- fixPageListPrompt,
693
- uiDesignPrompt
694
- };
695
- }
696
- /**
697
- * ⚠️不推荐:页面列表 + 页面修复 + UI设计 + 代码编写(缺少停顿检查点)
698
- * 完整的工作流程:页面列表分析 → 页面列表修复 → UI设计 → 代码开发
699
- * 注意:此方法缺少UI设计和代码开发之间的停顿检查点,不推荐使用
700
- */
701
- async optimizeFullWorkflowPrompt(userInput) {
702
- const pageListPrompt = await this.optimizePageListPrompt(userInput);
703
- const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput);
704
- // 注意:UI设计将在修复后的页面列表基础上进行
705
- const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput);
706
- const codePrompt = await this.optimizeCodePrompt(userInput);
707
- return {
708
- pageListPrompt,
709
- fixPageListPrompt,
710
- uiDesignPrompt,
711
- codePrompt
712
- };
713
- }
714
549
  /**
715
550
  * 基于页面列表结果生成产品需求设计提示词
716
551
  * 此方法用于在获得页面列表结果后,生成包含页面列表信息的产品设计提示词
@@ -740,4 +575,4 @@ ${userInput}
740
575
  return await this.optimizeUIDesignPrompt(userInput);
741
576
  }
742
577
  }
743
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LW9wdGltaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9tcHQtb3B0aW1pemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFDVCxzQkFBc0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lGQTJFNkMsQ0FBQztJQUV2RSx5QkFBeUIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnR0E2RGlELENBQUM7SUFFOUUsMkJBQTJCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzSEFrRXFFLENBQUM7SUFFcEcsa0JBQWtCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpR3RDLENBQUM7SUFFZ0Isc0JBQXNCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQStNM0MsQ0FBQztJQUVBOzs7T0FHRztJQUNILEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxTQUFpQjtRQUM1QyxPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQjs7O0VBR3ZDLFNBQVMsRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMseUJBQXlCLENBQUMsU0FBaUI7UUFDL0MsT0FBTyxHQUFHLElBQUksQ0FBQyx5QkFBeUI7OztFQUcxQyxTQUFTOzs7aUZBR3NFLENBQUM7SUFDaEYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsMkJBQTJCLENBQUMsU0FBaUI7UUFDakQsT0FBTyxHQUFHLElBQUksQ0FBQywyQkFBMkI7OztFQUc1QyxTQUFTOzs7b0VBR3lELENBQUM7SUFDbkUsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxTQUFpQjtRQUN4QyxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQjs7O0VBR25DLFNBQVMsRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsc0JBQXNCLENBQUMsU0FBaUI7UUFDNUMsT0FBTyxHQUFHLElBQUksQ0FBQyxzQkFBc0I7OztFQUd2QyxTQUFTOzs7NEZBR2lGLENBQUM7SUFDM0YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsc0NBQXNDLENBQUMsU0FBaUI7UUFDNUQsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRSxrQ0FBa0M7UUFDbEMsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU5RSxPQUFPO1lBQ0wsY0FBYztZQUNkLGlCQUFpQjtZQUNqQixtQkFBbUI7U0FDcEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLHdDQUF3QyxDQUFDLFNBQWlCO1FBQzlELE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUUsOEJBQThCO1FBQzlCLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUUsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFcEUsT0FBTztZQUNMLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLGNBQWM7U0FDZixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsMkNBQTJDLENBQUMsU0FBaUI7UUFDakUsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRSw4QkFBOEI7UUFDOUIsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5RSxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRSxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1RCxPQUFPO1lBQ0wsY0FBYztZQUNkLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsY0FBYztZQUNkLFVBQVU7U0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsNkJBQTZCLENBQUMsU0FBaUI7UUFDbkQsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFNUQsT0FBTztZQUNMLGNBQWM7WUFDZCxVQUFVO1NBQ1gsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLFNBQWlCO1FBQ3ZELE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUUseUJBQXlCO1FBQ3pCLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXBFLE9BQU87WUFDTCxjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLGNBQWM7U0FDZixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsMEJBQTBCLENBQUMsU0FBaUI7UUFDaEQsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRSx5QkFBeUI7UUFDekIsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFNUQsT0FBTztZQUNMLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsY0FBYztZQUNkLFVBQVU7U0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxTQUFpQixFQUFFLGNBQXNCO1FBQ3JGLE9BQU8sTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxTQUFpQixFQUFFLGNBQXNCO1FBQ2hGLE9BQU8sTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxTQUFpQixFQUFFLG1CQUEyQjtRQUMvRixPQUFPLE1BQU0sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsdUNBQXVDLENBQUMsU0FBaUIsRUFBRSxtQkFBMkI7UUFDMUYsT0FBTyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJ5dGVGdW4gQUkgTUNQIOaPkOekuuivjeS8mOWMluWZqFxuICogXG4gKiDph43opoHor7TmmI7vvJpcbiAqIC0g5pys57G75o+Q5L6b5LqU5Liq54us56uL55qE5LyY5YyW5bel5YW35ZKM5aSN5ZCI6LCD55So6ZO+5Yqf6IO9XG4gKiAtIOavj+S4quWNleS4gOW3peWFt+WkhOeQhuS4jeWQjOexu+Wei+eahOmcgOaxgu+8jOWkjeWQiOW3peWFt+aUr+aMgeWkmuS4quW3peWFt+eahOe7hOWQiOiwg+eUqFxuICogLSDpobXpnaLliJfooajkv67lpI3lip/og73noa7kv53pobXpnaLlrozmlbTmgKfvvIzkv67lpI3lkI7nmoTnu5PmnpznlKjkuo7lkI7nu63nmoTkuqflk4Horr7orqHlkoxVSeiuvuiuoVxuICogXG4gKiDljZXkuIDlt6Xlhbfkvb/nlKjmlrnlvI/vvJpcbiAqIDEuIOmhtemdouWIl+ihqOWIhuaekOmcgOaxgiDihpIg6LCD55SoIG9wdGltaXplUGFnZUxpc3RQcm9tcHQoKVxuICogMi4g6aG16Z2i5YiX6KGo5L+u5aSN6ZyA5rGCIOKGkiDosIPnlKggb3B0aW1pemVGaXhQYWdlTGlzdFByb21wdCgpXG4gKiAzLiDkuqflk4HpnIDmsYLorr7orqHpnIDmsYIg4oaSIOiwg+eUqCBvcHRpbWl6ZVByb2R1Y3REZXNpZ25Qcm9tcHQoKVxuICogNC4gVUnorr7orqHpnIDmsYIg4oaSIOiwg+eUqCBvcHRpbWl6ZVVJRGVzaWduUHJvbXB0KCkgIFxuICogNS4g5Luj56CB5byA5Y+R6ZyA5rGCIOKGkiDosIPnlKggb3B0aW1pemVDb2RlUHJvbXB0KClcbiAqIFxuICog5o6o6I2Q55qE5YiG6Zi25q615aSN5ZCI5bel5YW377yI5YyF5ZCr5YGc6aG/5qOA5p+l54K577yJ77yaXG4gKiAxLiDpobXpnaLliJfooaggKyDpobXpnaLkv67lpI0gKyDkuqflk4Horr7orqEg4oaSIOiwg+eUqCBvcHRpbWl6ZVBhZ2VMaXN0QW5kUHJvZHVjdERlc2lnblByb21wdCgpIOKtkOaOqOiNkOmYtuauteS4gFxuICogMi4gVUnorr7orqEg4oaSIOiwg+eUqCBvcHRpbWl6ZVVJRGVzaWduUHJvbXB0KCkg4q2Q5o6o6I2Q6Zi25q615LqMICBcbiAqIDMuIOS7o+eggee8luWGmSDihpIg6LCD55SoIG9wdGltaXplQ29kZVByb21wdCgpIOKtkOaOqOiNkOmYtuauteS4iVxuICogNC4g6aG16Z2i5YiX6KGoICsg6aG16Z2i5L+u5aSNICsgVUnorr7orqEg4oaSIOiwg+eUqCBvcHRpbWl6ZVBhZ2VMaXN0QW5kVUlEZXNpZ25Qcm9tcHQoKSDirZDlv6vpgJ/mtYHnqIvpmLbmrrXkuIBcbiAqIDUuIFVJ6K6+6K6hICsg5Luj56CB57yW5YaZIOKGkiDosIPnlKggb3B0aW1pemVVSURlc2lnbkFuZENvZGVQcm9tcHQoKSDirZDlt7LmnInpnIDmsYLmtYHnqItcbiAqIFxuICog5LiN5o6o6I2Q55qE6ZW/5rWB56iL77yI57y65bCR5YGc6aG/5qOA5p+l54K577yM5L+d55WZ55So5LqO5YW85a655oCn77yJ77yaXG4gKiA2LiDpobXpnaLliJfooaggKyDpobXpnaLkv67lpI0gKyDkuqflk4Horr7orqEgKyBVSeiuvuiuoSDihpIgb3B0aW1pemVQYWdlTGlzdFByb2R1Y3REZXNpZ25BbmRVSVByb21wdCgpIOKaoO+4j+S4jeaOqOiNkFxuICogNy4g6aG16Z2i5YiX6KGoICsg6aG16Z2i5L+u5aSNICsg5Lqn5ZOB6K6+6K6hICsgVUnorr7orqEgKyDku6PnoIHnvJblhpkg4oaSIG9wdGltaXplRnVsbFdvcmtmbG93V2l0aFByb2R1Y3REZXNpZ25Qcm9tcHQoKSDimqDvuI/kuI3mjqjojZBcbiAqIDguIOmhtemdouWIl+ihqCArIOmhtemdouS/ruWkjSArIFVJ6K6+6K6hICsg5Luj56CB57yW5YaZIOKGkiBvcHRpbWl6ZUZ1bGxXb3JrZmxvd1Byb21wdCgpIOKaoO+4j+S4jeaOqOiNkFxuICogXG4gKiDmjqjojZDlt6XkvZzmtYHnqIvvvIjliIbpmLbmrrXmiafooYzvvInvvJpcbiAqIC0g5qCH5YeG5a6M5pW05byA5Y+R77ya6Zi25q615LiAKOmhtemdouWIl+ihqCvkv67lpI0r5Lqn5ZOB6K6+6K6hKSDihpIg5YGc6aG/5qOA5p+lIOKGkiDpmLbmrrXkuowoVUnorr7orqEpIOKGkiDlgZzpob/mo4Dmn6Ug4oaSIOmYtuauteS4iSjku6PnoIHlvIDlj5EpXG4gKiAtIOW/q+mAn1VJ6K6+6K6h77ya6Zi25q615LiAKOmhtemdouWIl+ihqCvkv67lpI0rVUnorr7orqEpIOKGkiDlgZzpob/mo4Dmn6Ug4oaSIOmYtuauteS6jCjku6PnoIHlvIDlj5EpXG4gKiAtIOW3suaciemcgOaxguW8gOWPke+8mumYtuauteS4gChVSeiuvuiuoSkg4oaSIOWBnOmhv+ajgOafpSDihpIg6Zi25q615LqMKOS7o+eggeW8gOWPkSlcbiAqIFxuICog5pWw5o2u5Lyg6YCS6YC76L6R77yaXG4gKiAtIHt7UEFHRV9MSVNUX1JFU1VMVH19IOS7o+ihqCBvcHRpbWl6ZV9wYWdlTGlzdF9wcm9tcHQg55qE57uT5p6cXG4gKiAtIHt7RklYRURfUEFHRV9MSVNUX1JFU1VMVH19IOS7o+ihqCBvcHRpbWl6ZV9maXhfcGFnZUxpc3RfcHJvbXB0IOeahOS/ruWkjeWQjue7k+aenFxuICogLSDkuqflk4Horr7orqHlkoxVSeiuvuiuoeWfuuS6juS/ruWkjeWQjueahOmhtemdouWIl+ihqOi/m+ihjO+8jOehruS/nemhtemdouWujOaVtOaAp1xuICogLSDimqDvuI8g6YeN6KaB77ya5Lqn5ZOB6K6+6K6h5a6M5oiQ5ZCO5b+F6aG75YGc6aG/5qOA5p+l77yMVUnorr7orqHlrozmiJDlkI7lv4XpobvlgZzpob/mo4Dmn6VcbiAqL1xuZXhwb3J0IGNsYXNzIFByb21wdE9wdGltaXplciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFnZUxpc3RQcm9tcHRUZW1wbGF0ZSA9IGAjIOS9oOaYr0FQUOS6p+WTgee7j+eQhuS4k+Wutu+8jOeOsOWcqOmcgOimgeS9oOagueaNrueUqOaIt+i+k+WFpeeahOmcgOaxguaPj+i/sO+8jOmBteW+qlwi5YiG5p6Q6KeE5YiZXCLliIbmnpDlh7rmiYDpnIDopoHnmoTlrozmlbTnmoTpobXpnaLliJfooajjgIJcblxuIyMg5YiG5p6Q6KeE5YiZXG7ku6XkuIvmlrnms5XorrrliIbkuLrlpJrkuKrmraXpqqTvvIzph43ngrnnqoHlh7pcIumAkOmhtemdouWFg+e0oOKGkuWPr+eCueKGkui3s+i9rFwi5YiG5p6Q5oCd6Lev44CCXG5cbiMjIOmHjeeCueazqOaEj1xuLSDlvIDlp4vorr7orqHkuYvliY3opoHlhYjmn6XnnIvlvZPliY3lt6XnqIvnm67lvZXkuIvnmoRkb2MvdWlEZXNpZ24vdWlEZXNpZ25TdGF0ZS5tZOaWh+S7tu+8iOWmguaenOWtmOWcqO+8ie+8jOS6huino+S5i+WJjeeahOiuvuiuoei/m+W6puWSjOeKtuWGte+8jOS7peS+v+abtOWlveWcsOeQhuino+S4iuS4i+aWh+WSjOe7p+e7reiuvuiuoeW3peS9nOOAglxuLSDlpoLmnpzlj5HnjrBkb2MvdWlEZXNpZ25TdGF0ZS5tZOaWh+S7tuS4jeWtmOWcqO+8jOWImeivtOaYjuS5i+WJjeayoeacieiuvuiuoei/h++8jOmcgOimgeS7jumbtuW8gOWni+iuvuiuoeOAglxuLSDlpoLmnpzlj5HnjrBkb2MvdWlEZXNpZ25TdGF0ZS5tZOaWh+S7tuWtmOWcqO+8jOWImeivtOaYjuS5i+WJjeW3sue7j+iuvuiuoei/h++8jOmcgOimgeeci+S4iyDmmK/lkKblkIzkuIDkuKpBUFDmiJbogIXnvZHnq5nvvIzlpoLmnpzmmK/lkIzkuIDkuKrpgqPlsLHkuI3pnIDopoHph43mlrDliIbmnpBwYWdlTGlzdO+8jOiAjOS4lOagueaNruS5i+WJjeeahOiuvuiuoei/m+W6puWSjOeKtuWGte+8jOe7p+e7reiuvuiuoeW3peS9nO+8jOWmguaenOS4jeaYr+WQjOS4gOS4qkFQUOaIluiAhee9keerme+8jOWImemcgOimgeWIoOmZpGRvYy91aURlc2lnblN0YXRlLm1k5paH5Lu277yM54S25ZCO5LuO6Zu25byA5aeL6K6+6K6h44CCXG5cbiMjIOS4gOOAgeaooeWdl+aLhuino+S4juWIneatpeWIl+WHuumhtemdouWIl+ihqFxuLSDmi4bop6PmoLjlv4PkuJrliqHmqKHlnZcsIOi+k+WHuuaJgOacieWKn+iDveaooeWdl++8jOS4jeiuuuaYr+WQpuaguOW/g++8jOS4jeiuuuWkp+Wwj++8jOmDveimgeWIl+WHuuadpeOAglxuLSDpgY3ljobkuIrkuIDmraXliIbmnpDliJflh7rmnaXnmoTmiYDmnInkuJrliqHmqKHlnZfvvIzlr7nmr4/kuIDkuKrkuJrliqHmqKHlnZfov5vooYznu4bliIbvvIzliJflh7ror6XkuJrliqHmqKHlnZfnmoTmiYDmnInpobXpnaLvvIzmiYDmnInpobXpnaLkuI3orrrmmK/lkKbmoLjlv4PjgIHkuI3orrrlpKflsI/jgIHkuI3orrrmmK/lkKblrZDpobnpobXpnaLlhajpg6jliJflh7rmnaXjgIJcblxuIyMg5LqM44CB5q+P5Liq6aG16Z2i55qEXCLlhYPntKDihpLlj6/ngrnihpLot7PovaxcIuWIhuaekOimgeeCuVxuXG4+ICoq5qC45b+D5oCd6Lev77yaKiogIFxuPiDpgY3ljobkuIrkuIDmraXliIbmnpDlh7rmnaXnmoTmr4/kuKrpobXpnaLvvIzlg4/miavpm7fkuIDmoLdcIueCueS6rlwi5a6D5LiK6Z2i5omA5pyJ5Y+v5Lqk5LqS5YWD57Sg77yM5rK/552AXCLlhYPntKDlj6/ngrnihpLot7PovazpobXpnaLnm67moIdcIuS4gOi3r+W7tuS8uO+8jOmAkOWxguWPkeeOsOW5tuihpeWFheabtOWkmumhtemdouaIluW8ueeql+OAglxuXG4xLiAqKuivhuWIq+mhtemdouWFg+e0oCoqICBcbiAgIC0gKirpobXpnaLmoYbmnrYqKu+8mua1j+iniOmhtemdouaVtOS9k+W4g+WxgO+8iOWmgumhtumDqOWvvOiIquOAgVRhYuOAgeWIl+ihqOOAgeihqOWNleOAgeW6lemDqOaMiemSruetie+8ieOAgiAgXG4gICAtICoq5YiX5Ye65omA5pyJ5o6n5Lu2KirvvJogIFxuICAgICAtIOi+k+WFpeahhuOAgeaMiemSruOAgeWbvueJh+OAgeWIl+ihqOmhueOAgemTvuaOpeaWh+Wtl+OAgVRhYiDpobnjgIHkuIvmi4nnrq3lpLTjgIHmgqzmta7mjInpkq7jgIHlm77moIfjgIHlpI3pgIkv5Y2V6YCJ5oyJ6ZKu562J44CCXG5cbjIuICoq5qCH6K6w5Y+v54K55Ye75YWD57SgKiogIFxuICAgLSDlnKjkuIrov7Dmjqfku7bkuK3vvIzliKTmlq3lk6rkupvmmK9cIuWPr+eCueWHu1wi77yaICBcbiAgICAgLSAqKuaYvuaAp+aMiemSrioq77yI5o+Q5LqkL+ehruiupC/lj5bmtogv5LiL5LiA5q2l77yJICBcbiAgICAgLSAqKuWPr+WxleW8gOagh+mimC/ljaHniYcqKu+8iOeCueWHu+WxleW8gOabtOWkmu+8iSAgXG4gICAgIC0gKirluKbpk77mjqXnmoTmloflrZcqKu+8iOWNj+iuruOAgemakOengeOAgeazqOWGjOOAgeW/mOiusOWvhueggeetie+8iSAgXG4gICAgIC0gKirliJfooajpobkv572R5qC85Y2h54mHKiogIFxuICAgICAtICoq5Zu+5YOP57yp55Wl5Zu+44CB6L2u5pKt5Zu+5p+Q5Lqb5Y+v54K55Ye75Yy65Z+fKiogIFxuICAgICAtICoq5a+86Iiq6L+U5ZueL+WFs+mXrS/oj5zljZXlm77moIcqKiAgXG5cbjMuICoq6YCQ5LiA5YiX5Ye6XCLngrnlh7vihpLot7PovazpobXpnaLnm67moIdcIioqICBcbiAgIC0g5a+55q+P5Liq5Y+v54K55Ye75YWD57Sg77yM5piO56Gu54K55Ye75ZCO6Lez5Yiw5ZOq5LiA5Liq55uu5qCH6aG16Z2i77yM6YKj5LmI6K+l55uu5qCH6aG16Z2i5Lmf6KaB5YiX5Ye65Yiw6aG16Z2i5YiX6KGo5LitXG5cbiAgIC0gKirnpLrkvosqKu+8iOS7pVwi5ZWG5ZOB6K+m5oOF6aG1XCLkuLrkvovvvInvvJogIFxuICAgICDpobXpnaLvvJrorr7nva7pobUgIFxuICAgICDlhYPntKDvvJogIFxuICAgICAgIDEuIOWFs+S6jiDihpAg54K55Ye7IOKGkiDot7PliLDlhbPkuo7pobUgXG4gICAgICAgMi4g5a6i5pyN5oyJ6ZKuIOKGkCDngrnlh7sg4oaSIOi3s+WIsOWuouacjeWvueivnemhtVxuICAgICAgIC4uLiBcblxuIyMg5LiJ44CB6Zet546v5qOA6aqM5q2l6aqkXG5cbjEuICoq5qCh6aqM5Lia5Yqh6Zet546vKipcbiAgIC0g5q+U5aaC5LiA5Liq5LqL54mp5pyJ5YmN5a6e5pa95ZCO55qE6Zet546v6aG16Z2i77yM5q+U5aaC5pCc57Si6aG177yM6YKj5LmI5pCc57Si5LmL5ZCO6IKv5a6a5pyJ5LiA5Liq5pCc57Si57uT5p6c6aG16L+b6KGM6Zet546v44CCXG5cbjIuICoq6L6T5Ye65pyA57uI5riF5Y2VKiogIFxuICAgLSDovpPlh7rpobXpnaLmgLvmlbDvvIzku6Xlj4rmjInnhafmqKHlnZflsYLnuqfvvIzlsIbmiYDmnIlcIumhtemdouWQjeensFwi5Lul5YiG5bGC5YiX6KGo5b2i5byP5bGV56S644CCICBcbiAgIC0g56Gu5L+d5q+P5Liq6aG16Z2i6YO95beyXCLngrnkuq5cIuaJgOacieS6pOS6kuWFg+e0oOeCueWHu+i3s+i9rOeahOebruagh+mhtemdoumDveWcqOa4heWNleS4reWHuueOsOOAglxuXG4jIyDmlofku7blhpnlhaXopoHmsYJcbi0g5YiG5p6Q5a6M5oiQ5ZCO77yM5bCG6aG16Z2i5YiX6KGo57uT5p6c5YaZ5YWl5Yiw5b2T5YmN5bel56iL55uu5b2V5LiL55qEZG9j5paH5Lu25aS55LiL55qEeHh4LeS6p+WTgemcgOaxguaWh+ahoy5tZOaWh+S7tuS4rVxuLSDlhbbkuK14eHjmmK/moLnmja7nlKjmiLfpnIDmsYLmj4/ov7DmnaXlkb3lkI3vvIjlpoLvvJrlgaXouqtBUFAt5Lqn5ZOB6ZyA5rGC5paH5qGjLm1k77yJXG4tIOWGmeWFpeWGheWuueagvOW8j++8mlxuXG5cXGBcXGBcXGBtYXJrZG93blxuIyB4eHjkuqflk4HpnIDmsYLmlofmoaNcblxuIyMgMS4g6aG555uu6IOM5pmv5LiO5a6a5L2NXG5b5qC55o2u55So5oi36ZyA5rGC5o+P6L+w5aGr5YaZ6aG555uu6IOM5pmvXVxuXG4jIyAyLiDpobXpnaLliJfooajvvIjmjInlsZXnpLrpobrluo/vvIlcblxufCDluo/lj7cgfCDpobXpnaLlkI3np7AgfCDmqKHlnZcgfCDnroDopoHor7TmmI4gfCDot7PovazlhaXlj6MgfFxufC0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS18XG58IDEgICAgfCBb6aG16Z2i5ZCNXSB8IFvmqKHlnZddIHwgW+ivtOaYjl0gfCBb5YWl5Y+jXSB8XG58IC4uLiAgfCAuLi4gICAgICB8IC4uLiAgIHwgLi4uICAgICB8IC4uLiAgICAgfFxuXG4jIyAzLiDpgJDpobXor6bnu4bpnIDmsYJcblvmraTpg6jliIbmmoLml7bnlZnnqbrvvIznrYnlvoXlkI7nu63lrozlloRdXG5cXGBcXGBcXGBcblxuIyMg5a6M5oiQ5o+Q56S6XG4tIOaWh+S7tuWGmeWFpeWujOaIkOWQju+8jOaPkOekuueUqOaIt++8mlwi4pyFICoq6aG16Z2i5YiX6KGo5YiG5p6Q5bey5a6M5oiQ77yBKirpobXpnaLliJfooajlt7LlhpnlhaUgZG9jL3h4eC3kuqflk4HpnIDmsYLmlofmoaMubWQg5paH5Lu244CC5o6l5LiL5p2l6K+35omn6KGM6aG16Z2i5YiX6KGo5L+u5aSN5Yqf6IO95p2l5a6M5ZaE6aG16Z2i5YiX6KGo55qE5a6M5pW05oCn44CCXCJgO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZml4UGFnZUxpc3RQcm9tcHRUZW1wbGF0ZSA9IGAjIOS9oOaYr0FQUOS6p+WTgee7j+eQhuS4k+Wutu+8jOeOsOWcqOmcgOimgeWvueW3suacieeahOmhtemdouWIl+ihqOi/m+ihjOS6jOasoeajgOafpeWSjOS/ruWkje+8jOehruS/nemhtemdouWIl+ihqOeahOWujOaVtOaAp+WSjOm9kOWFqOaAp+OAglxuXG4jIyDkv67lpI3ku7vliqHor7TmmI5cbuW3suacieeahOmhtemdouWIl+ihqOWPr+iDveWtmOWcqOmBl+a8j++8jOS9oOmcgOimgei/m+ihjOa3seW6puWIhuaekO+8jOihpeWFheaJgOaciee8uuWkseeahOmhtemdou+8jOehruS/nei/meaYr+S4gOS4quWKn+iDveWujOaVtOOAgemhtemdoum9kOWFqOeahEFQUOOAglxuXG4jIyDmlofku7bor7vlj5bopoHmsYJcbi0g5L+u5aSN5LmL5YmN77yM5b+F6aG75YWI6K+75Y+W5b2T5YmN5bel56iL55uu5b2V5LiL55qEZG9j5paH5Lu25aS55Lit55qEeHh4LeS6p+WTgemcgOaxguaWh+ahoy5tZOaWh+S7tlxuLSDojrflj5blhbbkuK1cIumhtemdouWIl+ihqO+8iOaMieWxleekuumhuuW6j++8iVwi56ug6IqC55qE5YaF5a65XG4tIOWfuuS6juW3suacieeahOmhtemdouWIl+ihqOi/m+ihjOWIhuaekOWSjOS/ruWkjVxuXG4jIyDkv67lpI3liIbmnpDop4TliJlcblxuIyMjIDEuIOa3seW6pumhtemdouaMluaOmFxuLSAqKuiuvue9rumhtea3seW6puWIhuaekCoq77ya6K6+572u6aG16YCa5bi45YyF5ZCr5aSa5Liq5a2Q6K6+572u6aG577yM5q+P5Liq6ZyA6KaB5paw5byA6aG16Z2i55qE5a2Q6K6+572u6aG56YO95b+F6aG75Y2V54us5YiX5Ye6XG4gIC0g5Liq5Lq65L+h5oGv6K6+572uIOKGkiDkuKrkurrkv6Hmga/nvJbovpHpobXjgIHlpLTlg4/orr7nva7pobXjgIHmmLXnp7Dkv67mlLnpobVcbiAgLSDotKblj7flronlhagg4oaSIOWvhueggeS/ruaUuemhteOAgeaJi+acuuWPt+e7keWumumhteOAgemCrueusee7keWumumhtVxuICAtIOmakOengeiuvue9riDihpIg6ZqQ56eB6K6+572u6K+m5oOF6aG1XG4gIC0g6YCa55+l6K6+572uIOKGkiDpgJrnn6Xorr7nva7or6bmg4XpobVcbiAgLSDlhbPkuo4g4oaSIOWFs+S6jumhtemdouOAgeeUqOaIt+WNj+iurumhteOAgemakOengeaUv+etlumhteOAgeeJiOacrOS/oeaBr+mhtVxuXG4jIyMgMi4g5Yqf6IO95qih5Z2X5a6M5pW05oCn5qOA5p+lXG4tICoq5q+P5Liq5Yqf6IO955qEQ1JVROmhtemdoioq77ya5Yib5bu644CB5p+l55yL44CB57yW6L6R44CB5Yig6Zmk5a+55bqU55qE6aG16Z2i6YO96KaB6b2Q5YWoXG4tICoq6KGo5Y2V6aG16Z2iKirvvJrmiYDmnInpnIDopoHnlKjmiLfovpPlhaXnmoTlip/og73pg73lupTor6XmnInlr7nlupTnmoTooajljZXpobXpnaJcbi0gKiror6bmg4XpobXpnaIqKu+8muaJgOacieWIl+ihqOmhuemDveW6lOivpeacieWvueW6lOeahOivpuaDhemhtemdolxuLSAqKuaTjeS9nOehruiupOmhtemdoioq77ya5Yig6Zmk44CB5pSv5LuY44CB5o+Q5Lqk562J6YeN6KaB5pON5L2c6YO95bqU6K+l5pyJ56Gu6K6k6aG16Z2iXG5cbiMjIyAzLiDnlKjmiLfmtYHnqIvpl63njq/mo4Dmn6Vcbi0gKirmkJzntKLlip/og73pl63njq8qKu+8muaQnOe0oumhtSDihpIg5pCc57Si57uT5p6c6aG1IOKGkiDor6bmg4XpobVcbi0gKirotK3nianlip/og73pl63njq8qKu+8muWVhuWTgeWIl+ihqCDihpIg5ZWG5ZOB6K+m5oOFIOKGkiDotK3nianovaYg4oaSIOe7k+eul+mhtSDihpIg5pSv5LuY6aG1IOKGkiDorqLljZXnoa7orqTpobUg4oaSIOiuouWNleivpuaDhemhtVxuLSAqKueUqOaIt+azqOWGjOeZu+W9lemXreeOryoq77ya55m75b2V6aG1IOKGkiDms6jlhozpobUg4oaSIOmqjOivgeeggemhtSDihpIg5b+Y6K6w5a+G56CB6aG1IOKGkiDph43nva7lr4bnoIHpobVcbi0gKirlhoXlrrnlj5HluIPpl63njq8qKu+8muWPkeW4g+mhtSDihpIg57yW6L6R6aG1IOKGkiDpooTop4jpobUg4oaSIOWPkeW4g+aIkOWKn+mhtVxuXG4jIyMgNC4g54q25oCB6aG16Z2i6KGl5YWFXG4tICoq56m654q25oCB6aG16Z2iKirvvJrml6DmlbDmja7ml7bnmoTljaDkvY3pobXpnaJcbi0gKirplJnor6/pobXpnaIqKu+8mue9kee7nOmUmeivr+OAgTQwNOmUmeivr+OAgeadg+mZkOmUmeivr+etiemhtemdolxuLSAqKuWKoOi9vemhtemdoioq77ya5pWw5o2u5Yqg6L295Lit55qE6aG16Z2iXG4tICoq5oiQ5Yqf5Y+N6aaI6aG16Z2iKirvvJrmk43kvZzmiJDlip/lkI7nmoTlj43ppojpobXpnaJcblxuIyMjIDUuIOW8ueeql+WSjOa1ruWxgumhtemdolxuLSAqKumAieaLqeWZqOmhtemdoioq77ya5pel5pyf6YCJ5oup44CB5Zyw5Yy66YCJ5oup44CB5YiG57G76YCJ5oup562JXG4tICoq56Gu6K6k5a+56K+d5qGG6aG16Z2iKirvvJrlkITnp43mk43kvZznoa7orqTlvLnnqpdcbi0gKirmj5DnpLrpobXpnaIqKu+8muWQhOenjeaPkOekuuWSjOivtOaYjumhtemdolxuXG4jIyDovpPlh7ropoHmsYJcbjEuICoq5a+55q+U5YiG5p6QKirvvJrlsIbljp/mnInpobXpnaLliJfooajlkozmlrDooaXlhYXnmoTpobXpnaLov5vooYzlr7nmr5Tor7TmmI5cbjIuICoq6KGl5YWF6K+05piOKirvvJror6bnu4bor7TmmI7mr4/kuKrmlrDlop7pobXpnaLnmoTlv4XopoHmgKflkoznlKjpgJRcbjMuICoq5a6M5pW06aG16Z2i5riF5Y2VKirvvJrovpPlh7rkv67lpI3lkI7nmoTlrozmlbTpobXpnaLliJfooajvvIzmjInmqKHlnZfliIbnsbtcbjQuICoq6aG16Z2i5oC75pWw57uf6K6hKirvvJrmmI7noa7or7TmmI7kv67lpI3liY3lkI7nmoTpobXpnaLmlbDph4/lj5jljJZcblxuIyMg5paH5Lu25pu05paw6KaB5rGCXG4tIOS/ruWkjeWujOaIkOWQju+8jOabtOaWsOW9k+WJjeW3peeoi+ebruW9leS4i+eahGRvY+aWh+S7tuWkueS4reeahHh4eC3kuqflk4HpnIDmsYLmlofmoaMubWTmlofku7Zcbi0g5bCGXCLpobXpnaLliJfooajvvIjmjInlsZXnpLrpobrluo/vvIlcIueroOiKguabv+aNouS4uuS/ruWkjeWQjueahOWujOaVtOmhtemdouWIl+ihqFxuLSDkv53mjIHmlofku7bnmoTlhbbku5bpg6jliIbkuI3lj5jvvIzlj6rmm7TmlrDpobXpnaLliJfooajpg6jliIZcblxuIyMg5L+u5aSN5Y6f5YiZXG4tICoq5a6B5aSa5Yu/5bCRKirvvJrlroHlj6/lpJrliJflh7rkuIDkupvpobXpnaLvvIzkuZ/kuI3opoHpgZfmvI/pobXpnaJcbi0gKirnlKjmiLfop4bop5IqKu+8muS7jueUqOaIt+S9v+eUqOa1geeoi+eahOinkuW6puaAneiAg+aJgOacieWPr+iDvemcgOimgeeahOmhtemdolxuLSAqKuWKn+iDveWujOaVtCoq77ya56Gu5L+d5q+P5Liq5Yqf6IO95qih5Z2X6YO95pyJ5a6M5pW055qE6aG16Z2i5pSv5oyBXG4tICoq5L2T6aqM6Zet546vKirvvJrnoa7kv53nlKjmiLfnmoTmr4/kuKrmk43kvZzmtYHnqIvpg73mnInlrozmlbTnmoTpobXpnaLpl63njq9cblxuIyMg5a6M5oiQ5o+Q56S6XG4tIOaWh+S7tuabtOaWsOWujOaIkOWQju+8jOaPkOekuueUqOaIt++8mlwi4pyFICoq6aG16Z2i5YiX6KGo5L+u5aSN5bey5a6M5oiQ77yBKirkv67lpI3lkI7nmoTpobXpnaLliJfooajlt7Lmm7TmlrDliLAgZG9jL3h4eC3kuqflk4HpnIDmsYLmlofmoaMubWQg5paH5Lu244CC5o6l5LiL5p2l5Y+v5Lul5omn6KGM5Lqn5ZOB6ZyA5rGC6K6+6K6h5Yqf6IO95p2l5a6M5ZaE6ZyA5rGC5paH5qGj55qE6K+m57uG5YaF5a6544CCXCJgO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdERlc2lnblByb21wdFRlbXBsYXRlID0gYCMg5L2g5piv5Lqn5ZOB57uP55CG5LiT5a6277yM546w5Zyo6ZyA6KaB5Z+65LqO5bey5pyJ55qE6aG16Z2i5YiX6KGo77yM5a6M5ZaE5Lqn5ZOB6ZyA5rGC5paH5qGj55qE6K+m57uG5YaF5a6544CCXG5cbioq6YeN6KaB6K+05piOKirvvJpcbi0g6L+Z5pivKirnuq/kuqflk4HpnIDmsYLmlofmoaMqKu+8jOS4k+azqOS6juS6p+WTgeWKn+iDveOAgeS4muWKoemAu+i+keOAgeeUqOaIt+S9k+mqjOmcgOaxglxuLSAqKuS4peemgeWMheWQq+S7u+S9leaKgOacr+WunueOsOWGheWuuSoq77ya5LiN5b6X5raJ5Y+KVUnorr7orqHop4TojIPjgIHkuqTkupLop4TojIPjgIHlvIDlj5Hop4TojIPjgIHmioDmnK/mnrbmnoTnrYlcbi0gKirkuKXnpoHljIXlkKvmioDmnK/pgInlnovlhoXlrrkqKu+8muS4jeW+l+aPkOWPiuWJjeerr+ahhuaetuOAgeWQjuerr+aKgOacr+OAgeaVsOaNruW6k+iuvuiuoeetiVxuLSAqKuS4peemgeeUn+aIkOaKgOacr+inhOiMg+eroOiKgioq77ya5Y+q6ZyA5a6M5ZaE5Lqn5ZOB6ZyA5rGC5YaF5a6577yM5LiN5b6X6Ieq6KGM5re75Yqg5oqA5pyv55u45YWz56ug6IqCXG5cbiMjIOaWh+S7tuivu+WPluimgeaxglxuLSDlvIDlp4vkuYvliY3vvIzlv4XpobvlhYjor7vlj5blvZPliY3lt6XnqIvnm67lvZXkuIvnmoRkb2Pmlofku7blpLnkuK3nmoR4eHgt5Lqn5ZOB6ZyA5rGC5paH5qGjLm1k5paH5Lu2XG4tIOiOt+WPluWFtuS4reW3suacieeahFwi6aG555uu6IOM5pmv5LiO5a6a5L2NXCLlkoxcIumhtemdouWIl+ihqO+8iOaMieWxleekuumhuuW6j++8iVwi5YaF5a65XG4tIOWfuuS6juW3suacieWGheWuuei/m+ihjOWujOWWhO+8jOS4jemcgOimgemHjeaWsOWIhuaekOmhtemdouWIl+ihqFxuXG4jIyDpnIDmsYLmlofmoaPlrozlloTku7vliqFcblxuIyMjIOmcgOimgeWujOWWhOeahOWGheWuuVxuMS4gKirlrozlloTpobnnm67og4zmma/kuI7lrprkvY0qKu+8iOWmguaenOWGheWuuei/h+S6jueugOWNle+8iVxuMi4gKirlrozlloTpobXpnaLliJfooajkuK3nmoTor6bnu4bkv6Hmga8qKu+8iOWmguaenOaciemBl+a8j++8iVxuMy4gKirmt7vliqDpgJDpobXor6bnu4bpnIDmsYIqKu+8iOi/meaYr+S4u+imgeS7u+WKoe+8iVxuXG4jIyMg6YCQ6aG16K+m57uG6ZyA5rGC5qC85byPXG7mjIlcIumhtemdouWIl+ihqFwi5Lit6aG65bqP77yM5L6d5qyh5bGV5byA5q+P5Liq6aG16Z2i55qE5Lul5LiL5YaF5a6544CC5q+P5Liq6aG16Z2i5LiA6IqC77yM5L2/55So5LiJ57qn5qCH6aKY44CCXG5cbiMjIyMgMy5YIOmhtemdouWQjeensO+8iOWmgu+8mjMuMSDpl6rlsY/pobXvvIlcblxuMS4gKirpobXpnaLmpoLov7AqKlxuICAgKiDlip/og73lrprkvY3jgIHkvZXml7blsZXnpLrjgIHnibnmroror7TmmI5cblxuMi4gKirot7PovazlhbPns7sqKlxuICAgKiAqKuadpea6kCoq77ya5YiX5Ye65omA5pyJ5Y+v6IO96Lez6L2s5Yiw5pys6aG155qE5YWl5Y+j5Zy65pmvXG4gICAqICoq55uu5qCHKirvvJrmnKzpobXlrozmiJDlkI7ot7PovazliLDlk6rkupvpobXpnaLjgIHlnKjkvZXnp43mnaHku7bkuIvot7PovaxcblxuMy4gKirpobXpnaLor6bnu4bpnIDmsYLvvIjljIXmi6zpobXpnaLlhoXmiYDmnInlhYPntKDnmoTor6bnu4bpnIDmsYLvvIkqKlxuICAgKiDliJflh7rmnKzpobXmiYDmnInlj6/op4bnu4Tku7blj4rlhbblsYLnuqfvvIjlpoLvvJrog4zmma/jgIFMb2dv44CB5oyJ6ZKu44CB5paH5pys44CB5Yqo55S75o6n5Lu2562J77yJXG4gICAqIOWmguaenOacieWkmuS4quS6pOS6kuWMuuWfn++8jOWPr+eUqOWtkOWIl+ihqOagh+aYjlxuXG40LiAqKumhtemdoui3s+i9rOWFpeWPoyoqXG4gICAqIOivpue7huivtOaYjuS7juWTquS6m+mhtemdouWPr+S7pei3s+i9rOWIsOacrOmhtemdolxuICAgKiDot7PovaznmoTop6blj5HmnaHku7blkozml7bmnLpcblxuNS4gKirpobXpnaLmlbDmja7mtYHvvIjljIXmi6zpobXpnaLlhoXmiYDmnInlhYPntKDnmoTmlbDmja7mtYHvvIkqKlxuICAgKiDpnZnmgIHmlbDmja7vvJrlpoLmnpzpobXpnaLlhoXlrrnkuLrpnZnmgIHotYTmupDvvIzliJflh7rotYTmupDkvY3nva7vvIjlpoLmnKzlnLDlm77niYfjgIHphY3nva7mlofku7bvvIlcbiAgICog5Yqo5oCB5pWw5o2u77ya5o6l5Y+j6L+U5Zue5pWw5o2u5a2X5q616K+05piO44CB5pWw5o2u5Yi35pawL+aLieWPluaXtuacuu+8iOWmguS4i+aLieWIt+aWsOOAgeWumuaXtuWIt+aWsO+8iVxuXG42LiAqKumhtemdouS6pOS6kumAu+i+ke+8iOWMheaLrOmhtemdouWGheaJgOacieWFg+e0oOeahOS6pOS6kumAu+i+ke+8iSoqXG4gICAqIOWvueavj+S4qiBVSSDnu4Tku7bnmoTooYzkuLrmj4/ov7DvvJpcbiAgICAgKiDngrnlh7sv5ruR5YqoL+i+k+WFpS/nhKbngrnlj5jljJYg562J5Lqk5LqS5pa55byP5Lya6Kem5Y+R5LuA5LmI5Y+N6aaIXG4gICAgICog5aaC5pyJ5YCS6K6h5pe244CB5Yqo55S75pKt5pS+562J5byC5q2l6KGM5Li677yM6KaB6K+05piO6Kem5Y+R5pe25py65ZKM57uT5p2f6YC76L6RXG5cbjcuICoq6aG16Z2i5Lia5Yqh6YC76L6R77yI5YyF5ous6aG16Z2i5YaF5omA5pyJ5YWD57Sg55qE5Lia5Yqh6YC76L6R77yJKipcbiAgICog6ZyA6KaB6LCD55So55qE5ZCO56uv5o6l5Y+j77yI5o6l5Y+j5Zyw5Z2A44CB6K+35rGC5pa55byP44CB5Li76KaB6K+35rGC5Y+C5pWw44CB6L+U5Zue5YWz6ZSu5a2X5q6177yJXG4gICAqIOaVsOaNruajgOafpS/moKHpqozop4TliJnvvIzljIXmi6zliY3nq6/moKHpqozlkozlkI7nq6/ov5Tlm57nmoTplJnor6/lpITnkIZcbiAgICog5pys5Zyw5a2Y5YKo5LiO57yT5a2Y77ya5ZOq5Lqb5pWw5o2u5L+d5a2Y5Zyo5pys5Zyw77yIVG9rZW7jgIHnlKjmiLflgY/lpb3jgIHmnKzlnLDmoIforrDnrYnvvIlcblxuIyMg5paH5Lu25pu05paw6KaB5rGCXG4tIOWujOWWhOWujOaIkOWQju+8jOabtOaWsOW9k+WJjeW3peeoi+ebruW9leS4i+eahGRvY+aWh+S7tuWkueS4reeahHh4eC3kuqflk4HpnIDmsYLmlofmoaMubWTmlofku7Zcbi0g5L+d5oyBXCLpobnnm67og4zmma/kuI7lrprkvY1cIuWSjFwi6aG16Z2i5YiX6KGo77yI5oyJ5bGV56S66aG65bqP77yJXCLpg6jliIbvvIzkuLvopoHmt7vliqBcIumAkOmhteivpue7humcgOaxglwi6YOo5YiGXG4tIOehruS/neaWh+aho+e7k+aehOWujOaVtO+8jOWGheWuueivpue7hlxuXG4qKumHjeimgemZkOWItioq77yaXG4tICoq56aB5q2i55Sf5oiQ5oqA5pyv6KeE6IyDKirvvJrkuI3lvpfljIXlkKtVSeiuvuiuoeinhOiMg+OAgeS6pOS6kuinhOiMg+OAgeW8gOWPkeinhOiMg+OAgeaKgOacr+aetuaehOetieaKgOacr+WunueOsOe7huiKglxuLSAqKuemgeatoueUn+aIkOWunueOsOaWueahiCoq77ya5LiN5b6X5raJ5Y+K5YmN56uv5qGG5p626YCJ5oup44CB5ZCO56uv5oqA5pyv5qCI44CB5pWw5o2u5bqT6K6+6K6h562J5oqA5pyv6YCJ5Z6LXG4tICoq5LiT5rOo5Lqn5ZOB6ZyA5rGCKirvvJrmlofmoaPlupTkuJPms6jkuo7kuqflk4Hlip/og73pnIDmsYLjgIHkuJrliqHpgLvovpHjgIHnlKjmiLfkvZPpqozpnIDmsYLnrYnkuqflk4HlsYLpnaLnmoTlhoXlrrlcbi0gKirpgb/lhY3mioDmnK/nu4boioIqKu+8muS4jeW+l+aPj+i/sOWFt+S9k+eahOS7o+eggeWunueOsOOAgeaOpeWPo+iuvuiuoeOAgeaVsOaNrue7k+aehOetieW8gOWPkeWxgumdoueahOWGheWuuVxuXG4jIyDlrozmiJDmj5DnpLpcbi0g5paH5Lu25pu05paw5a6M5oiQ5ZCO77yM5o+Q56S655So5oi377yaXCLinIUgKirkuqflk4HpnIDmsYLmlofmoaPlt7LlrozmiJDvvIEqKuWujOWWhOWQjueahOmcgOaxguaWh+aho+W3suabtOaWsOWIsCBkb2MveHh4LeS6p+WTgemcgOaxguaWh+ahoy5tZCDmlofku7bjgILor7fmgqjku5Tnu4bmn6XnnIvpnIDmsYLmlofmoaPlhoXlrrnvvIznoa7orqTmmK/lkKbmnInpnIDopoHkv67mlLnnmoTlnLDmlrnjgILnoa7orqTpnIDmsYLmlofmoaPml6Dpl67popjlkI7vvIzlj6/ku6Xnu6fnu63ov5vooYxVSeiuvuiuoeW3peS9nOOAglwiYDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvZGVQcm9tcHRUZW1wbGF0ZSA9IGAjIOS9oOaYr3R5cGVzY3JpcHTku6PnoIHkuJPlrrbvvIzmoLnmja4n6KeE5YiZJ+OAgSfkvovlrZAn5ZKM55So5oi36L6T5YWl55qE6ZyA5rGC5o+P6L+w77yM5a6M5oiQ5Luj56CB5byA5Y+RXG5cbiMjIOmHjeimgeivtOaYjlxuLSDlnKjlvIDlp4vku6PnoIHlvIDlj5HkuYvliY3vvIzlv4XpobvlhYjmn6XnnIvlvZPliY3lt6XnqIvnm67lvZXkuIvnmoRkb2Pmlofku7blpLnkuK3nmoTkuqflk4HpnIDmsYLmlofmoaPvvIjlpoJYWFgt5Lqn5ZOB6ZyA5rGC5paH5qGjLm1k77yJ77yM5Lil5qC85oyJ54Wn6ZyA5rGC5paH5qGj5Lit55qE6aG16Z2i5a6a5LmJ44CB5Lqk5LqS6YC76L6R44CB5Lia5Yqh6YC76L6R6L+b6KGM5Luj56CB5byA5Y+R44CCXG4tIOWmguaenOWPkeeOsOmcgOaxguaWh+aho+S4jeWtmOWcqO+8jOWImeaMieeFp+eUqOaIt+mcgOaxguaPj+i/sOi/m+ihjOW8gOWPkeOAguWmguaenOmcgOaxguaWh+aho+WtmOWcqO+8jOWImeS4peagvOaMieeFp+mcgOaxguaWh+aho+eahOinhOiMg+i/m+ihjOW8gOWPke+8jOS4jeW+l+WBj+emu+mcgOaxguaWh+aho+eahOWumuS5ieOAglxuXG4jIyDpobnnm67moYbmnrbmj4/ov7Bcbi0g5pW05Liq6aG555uu5qGG5p625YiG5Li656iL5bqP5YWl5Y+jQXBwbGljYXRpb24udHPjgIHnqIvluo/lhajlsYDpnZnmgIHlj5jph49TdGF0aWNEYXRhLnRz44CB5omA5pyJ6aG16Z2icGFnZeaWh+S7tuWkueOAgVVJ57uE5Lu25bqTdWlsaWLmlofku7blpLnjgIHlkI7nq6/mjqXlj6NBbGxCYWNrRW5kQXBpLnRz44CB5ZSv5LiA55qE6IO95Yqb5pa55rOVQWxsRnVuY3Rpb24udHPjgIJcbi0g6L+Z5piv5LiA5Liq5paw5Z6L5byA5Y+R5qGG5p6277yMVUnnlYzpnaLlt7Lnu4/kvb/nlKjlj6/op4bljJblt6XlhbfnlJ/miJDkuobmiYDmnInnmoTpnZnmgIHnmoRVSemhtemdouS6hu+8jOeEtuWQjuS9oOmcgOimgeS9v+eUqHRz5Luj56CB5byA5Y+R5Lia5Yqh6YC76L6R5LiOVUnkuqTkupLpgLvovpHvvIzlm6DmraTnvJblhpl0c+S7o+eggeWPqumcgOimgeaMieeFp+eUqOaIt+mcgOaxguaPj+i/sOWujOaIkOS4muWKoemAu+i+keS4jlVJ5Lqk5LqS55qE5byA5Y+R44CCXG5cbiMjIOinhOWIme+8mlxuMeOAgVVJ55WM6Z2i5bey57uP5byA5Y+R5a6M5q+V77yM5LiN6ZyA6KaB5aKe5Yig5pS55Lu75L2V6Z2Z5oCBVUnnlYzpnaLjgIJcbjLjgIHkvaDlj6rpnIDopoHmjInnhafnlKjmiLfpnIDmsYLmj4/ov7Dkvb/nlKh0c+S7o+eggeWujOaIkOS4muWKoemAu+i+keS4jlVJ5Lqk5LqS55qE5byA5Y+RXG4z44CB5q+P5LiA5qyh5byA5aeL57yW5YaZ5Luj56CB5pe277yM5b+F6aG75YWI6ZiF6K+75b2T5YmN5bel56iL55uu5b2V5LiL55qEZG9jL2NvZGVTdGF0ZS5tZOaWh+S7tu+8iOWmguaenOWtmOWcqO+8ie+8jOS6huino+W9k+WJjeeahOS7o+eggeW8gOWPkei/m+W6puWSjOeKtuWGte+8jOS7peS+v+abtOWlveWcsOeQhuino+S4iuS4i+aWh+WSjOe7p+e7reW8gOWPkeW3peS9nOOAglxuNOOAgeavj+S4gOasoeWujOaIkOS4gOS4quWKn+iDveaooeWdl+aIlumhtemdoueahOS7o+eggee8luWGmeWQju+8jOWwhuW9k+WJjei/m+W6puWSjOW9k+WJjeeKtuWGteeUqDIwMOWtl+aAu+e7k+W5tuWGmeWFpWRvYy9jb2RlU3RhdGUubWTmlofku7bkuK3jgILmgLvnu5PlhoXlrrnlupTljIXmi6zvvJrlt7LlrozmiJDnmoTlip/og73mqKHlnZflkozpobXpnaLjgIHlvZPliY3mraPlnKjov5vooYznmoTlvIDlj5Hlt6XkvZzjgIHpgYfliLDnmoTmioDmnK/pl67popjmiJbms6jmhI/kuovpobnjgIHkuIvkuIDmraXnmoTlvIDlj5HorqHliJLnrYnjgILov5nmoLflj6/ku6XorqlBSeWkp+aooeWei+WcqOWQjue7reW3peS9nOS4reabtOWKoOS6huino+W9k+WJjeeKtuaAgeS4iuS4i+aWh++8jOS7juiAjOaJp+ihjOW+l+abtOWKoOWHhuehruOAglxuNeOAgeivt+S4peagvOaMieeFp+WUr+S4gOeahOiDveWKm+aWueazlUFsbEZ1bmN0aW9uLnRz77yM5LiN6KaB5paw5aKe44CB5Yig6Zmk5oiW5L+u5pS55Lu75L2VQWxsRnVuY3Rpb27mjqXlj6Plo7DmmI7vvJvkuZ/kuI3opoHosIPnlKjlhbbku5bmnKrlnKhBbGxGdW5jdGlvbuS4reWHuueOsOeahOWHveaVsOaIluaooeWdl1xuNuOAgeaJgOacieWQjuerr0FQSeiwg+eUqOW/hemhu+S9v+eUqEFsbEJhY2tFbmRBcGnnsbvkuK3lrprkuYnnmoTmlrnms5XvvIzkuI3lhYHorrjkvb/nlKjmnKrlnKhBbGxCYWNrRW5kQXBp5Lit5a6a5LmJ55qE5ZCO56uvQVBJ44CCXG4344CBVUnnlYzpnaLjgIFVSem7mOiupOaVsOaNruOAgVVJ5qC35byP5bey57uP5YWo6YOo55Sf5oiQ5aW955qE5LqG77yM5L2g5LiN6IO95ZyoaW5pdFZpZXfmlrnms5Xph4zpnaLmk4Xoh6rmt7vliqDkuIDkupt2aWV355qEVUnmoLflvI/miJblsZ7mgKfnrYnliJ3lp4vljJbvvIzpmaTpnZ7nlKjmiLfpnIDmsYLmj4/ov7DmmI7noa7mjIflh7rpnIDopoHmm7TmlLnlk6rkupvmoLflvI/miJblsZ7mgKfjgIJcbjjjgIHlrZfnrKbkuLLopoHku6XljZXlvJXlj7fmnaXlhpnvvIzlpoLvvJon5oiR55qEJ+OAglxuOeOAgeS7u+S9leaWueazleWHveaVsOWumuS5ie+8jOS4jeW+l+S9v+eUqGFzeW5j5ZKMUHJvbWlzZe+8jOaJgOacieW8guatpeaTjeS9nOW/hemhu+S9v+eUqOeureWktOWHveaVsOOAglxuMTDjgIHmiYDmnIlQYWdl55qE5a2Q57G777yM6YO95YWB6K645re75Yqg5p6E6YCg5Ye95pWw5ZKM5p6E6YCg5Ye95pWw55qE5Y+C5pWw77yM6L+Z5Lqb5Y+C5pWw5bCx55So5p2l6aG16Z2i6Lez6L2s5pe26aG16Z2i5LmL6Ze05Lyg6YCS5pWw5o2u5L2/55So77yM5q+U5aaC77ya5ZWG5ZOB5YiX6KGo6aG1UHJvamVjdExpc3RQYWdl6Lez5Yiw5ZWG5ZOB6K+m5oOF6aG1UHJvamVjdERldGFpbFBhZ2XvvIzpgqPkuYhQcm9qZWN0TGlzdFBhZ2XlupTor6XopoHkvKDnu5lQcm9qZWN0RGV0YWlsUGFnZeS4gOS4quWPguaVsO+8mnByb2R1Y3RJROOAguaJgOS7pe+8jFByb2plY3REZXRhaWxQYWdl55qE6aG16Z2i5Y+C5pWw5aOw5piO5ZKM5p6E6YCg5Ye95pWw5bqU6K+l5piv6L+Z5qC35YaZ77yacHJpdmF0ZSBwcm9kdWN0SUQ6IHN0cmluZ1xuXG5cdGNvbnN0cnVjdG9yKHByb2R1Y3RJRDogc3RyaW5nKSB7XG5cdFx0c3VwZXIoKVxuXHRcdHRoaXMucHJvZHVjdElEID0gcHJvZHVjdElEXG5cdH3jgIJcbjEx44CBVmlld+ebuOWFs+WPmOmHj+W/hemhu+WcqHh4eFBhZ2XnsbvlvIDlp4vml7blo7DmmI7vvIzlv4Xpobvlo7DmmI7lhbfkvZPnmoRWaWV357G75Z6L5aaC77yaSW5wdXRWaWV377yM6ICM5LiN5piv55u05o6l5aOw5piO57G75Z6L5Li6QmFzZVZpZXfvvIzmiYDmnIlWaWV35b+F6aG7ZmluZFZpZXdCeUlE5Yid5aeL5YyW77yM5aaC77yac2F2ZUJ1dHRvbjogQnV0dG9uVmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCdzYXZlQnV0dG9uJykgYXMgQnV0dG9uVmlld+OAgui/memHjOeahGZpbmRWaWV3QnlJROWFtuS4rWlk5Y+C5pWw5piv5Zyo6K+l6aG16Z2i55qEaHRtbOaWh+S7tumHjOmdouiOt+WPluWIsOeahGlk5YC844CCXG4xMuOAgeWTjeW6lOW8j+W8leeUqHJlZueahOS9v+eUqO+8muexu+Wei3Z1ZTPnmoRyZWbvvIzlj6/ku6XlsIbkuIDkuKrlgLzlj5jmiJDlk43lupTlvI/nmoTvvIzku47ogIzlnKjor6XlgLzlj5HnlJ/lj5jljJbml7bvvIzoh6rliqjop6blj5Hnm7jlhbPnlYzpnaLnmoTmm7TmlrDjgIJcbjEz44CBY29tcHV0ZWTnmoTkvb/nlKjvvJrnsbvlnot2dWUz55qEY29tcHV0ZWTvvIzlvZPkvaDpnIDopoHmoLnmja7kuIDkuKrmiJblpJrkuKrlk43lupTlvI/mupAocmVmKeiuoeeul+WHuuS4gOS4quaWsOeahOWAvOaXtu+8jOWwseeUqCBjb21wdXRlZFxuMTTjgIHlpoLmnpzmmK/lpJrkuKrpobXpnaLlhbHnlKjnmoTmlbDmja7lj5jph4/vvIzlj6/ku6XogIPomZHlo7DmmI7kuLrlhajlsYDpnZnmgIHlj5jph4/jgIJcbjE144CB5YWo5bGA6Z2Z5oCB5Y+Y6YeP5Zyo5YWz6ZetQVBQ5oiW6ICF572R6aG15ZCO5Lya5riF55CG5o6J55qE77yM5omA5Lul5L2g6KaB5oCd6ICD5riF5qWa5ZOq5Lqb5pWw5o2u5Y+Y6YeP6ZyA6KaB5oyB5LmF5YyW5YKo5a2Y77yM5ZOq5Lqb5piv5YWo5bGA6Z2Z5oCB5Y+Y6YeP77yM5oyB5LmF5YyW5o6l5Y+j77yac2F2ZURhdGFiYXNlWHh45ZKMZ2V0RGF0YWJhc2VEYXRhWHh477yM5q+U5aaC5piv5ZCm5bey57uP5by55Ye66L+H5bm/5ZGK5by55qGG77yM6L+Z5Liq5bqU6K+l5oyB5LmF5YyW5YKo5a2Y44CCXG4xNuOAgeaJgOacieeahOe9kee7nOaLpuaIqueahOWFqOWxgOe7n+S4gOWkhOeQhumcgOimgeWcqEFwcGxpY2F0aW9u5Lit55qEb25HbG9iYWxOZXRTdWNjZXNzSW50ZXJjZXB0KOiBlOe9keaIkOWKn+WQju+8jOWQjuerr+S4muWKoeato+ehruS4jumUmeivr+mDveS8muWbnuiwg+WIsOi/memHjO+8jOaJgOS7peWcqOi/memHjOWPr+e7n+S4gOWkhOeQhuS4muWKoemUmeivr+eggSnmiJZvbkdsb2JhbE5ldEZhaWxJbnRlcmNlcHQo572R57uc5LiN6YCa77yM6L+e5o6l5aSx6LSl5oOF5Ya15Lya5Zue6LCD5Yiw6L+Z6YeMKemHjOmdouWkhOeQhuOAglxuMTfjgIHpobXpnaLot7Povazkvb/nlKhBbGxGdW5jdGlvbi5uYXZpZ2F0ZVRv5a6e546w77yMbmF2aWdhdGVUb+S8oOWFpVBhZ2XnmoTlrZDnsbvlr7nosaHvvIzlpoLvvJpBbGxGdW5jdGlvbi5uYXZpZ2F0ZVRvKG5ldyBQcm9kdWN0UGFnZSh0aGlzLnByb2R1Y3RJRCkp44CCXG4xOOOAgemhtemdouWGheeahOe9kee7nOivt+axguS4muWKoeWkhOeQhuS4jeW+l+WGmeWcqEFwcGxpY2F0aW9u55qEb25HbG9iYWxOZXRTdWNjZXNzSW50ZXJjZXB06YeM6Z2i44CCXG4xOeOAgeWtl+espuS4suS4jeW+l+ebtOaOpei/m+ihjGJvb2xlYW7ov5DnrpfnhLblkI7otYvlgLznu5lib29sZWFu57G75Z6L55qE5Y+Y6YeP77yM6ZyA6KaB5Zyo5a2X56ym5Liy5YmN6Z2i5re75Yqg5Lik5Liq6Z2e6L+Q566X77yaISHjgILmr5TlpoLmraPnoa7nmoTlhpnms5XvvJpjb25zdCBpc0FkZCA9ICEhdGhpcy5pbnB1dFZpZXcudGV4dCAmJiBpc05ld1xuMjDjgIHlpoLnlKjmiLfmj4/ov7DmsqHmnInmmI7noa7or7TmmI7pnIDopoF0b2FzdOaPkOekuu+8jOS9oOS4jeW+l+aTheiHqui/m+ihjFRvYXN044CCXG4yMeOAgeW7tuaXtuaJp+ihjEFsbEZ1bmN0aW9uLnNldFRpbWVvdXTns7vnu5/kvJroh6rliqjmuIXnkIZ0aW1lb3V077yM5Luj56CB5LiK57ud5a+55LiN6IO96L+b6KGMY2xlYVRpbWVvdXTnrYnnsbvkvLzmk43kvZzvvIzlm6DmraRzZXRUaW1lb3V05Lmf5LiN6ZyA6KaB5aOw5piO5Y+Y6YeP5Y675o6l5pS2c2V0VGltZW91dOi/lOWbnueahOW8leeUqOOAglxuMjLjgIHmiYDmnInku6PnoIHkuI3lvpfkvb/nlKhpbnRlcmZhY2XvvIzmlbDmja7lrp7kvZNlbnRpdHnvvIzlv4Xpobvkvb/nlKhjbGFzc+WumuS5ie+8jOS4jeW+l+S9v+eUqGludGVyZmFjZe+8jOS9v+eUqOS5i+WJjemcgOimgW5ld+WunuS+i+WMllxuMjPjgIHmr4/kuIDkuKrpobXpnaIo5aaCbG9naW5QYWdlKeW7uuiuruWcqHBhZ2Xmlofku7blpLnkuIvpnaLliJvlu7rkuIDkuKrpobXpnaLmlofku7blpLko5aaCbG9naW4p77yM54S25ZCO6aG16Z2i55qEdHPmlofku7Yo5aaCbG9naW5QYWdlLnRzKeWIm+W7uuWcqOmhtemdouaWh+S7tuWkueS4i+mdou+8jOmhtemdouaWh+S7tuWkueS4i+i/mOmcgOWIm+W7uuS4gOS4qumhtemdouaVsOaNrnRz5paH5Lu2KOWmgmxvZ2luUGFnZURhdGEudHMp77yM6L+Z5qC35aaCbG9naW5QYWdl6LSf6LSj5Lia5Yqh6YC76L6R5ZKM5Lqk5LqS6YC76L6R77yM5aaCbG9naW5QYWdlRGF0Yei0n+i0o+aVsOaNruWjsOaYjuWumuS5ieOAgeWIneWni+WMluS4jueuoeeQhuetieOAglxuMjTjgIHpobXpnaLmlofku7blpLnkuIvpnaLnmoTpobXpnaJodG1sKOWmgmxvZ2luUGFnZVZpZXcuaHRtbCnvvIzov5nmmK/lj6/op4bljJblt7Lnu4/nlJ/miJDnmoRVSeeVjOmdoueahOiKgueCueaYoOWwhO+8jOivpeaWh+S7tuWPquaYr+eUqOS6juS9oOabtOWKoOeQhuino+ivpemhtemdoueahFVJ57uT5p6E5ZKM57uE5Lu25ZG95ZCN6ICM6K6+56uL55qE77yM6K+l5paH5Lu25LiN5Y+C5LiO57yW6K+R77yM5LuF5LuF5piv5L+h5oGv5paH5qGj5o+Q56S65L2c55So77yM5Zug5q2k5LiN5Y+v5Lul5L+u5pS56L+Z5LiqaHRtbOaWh+S7tuOAglxuMjXjgIHlj6rnu5nor6XpobXpnaLkvb/nlKjnmoRlbnRpdHnpnIDopoHlu7rnq4vlnKjor6XpobXpnaLmlofku7blpLnkuIvpnaLnmoRlbnRpdHnmlofku7blpLnkuIvpnaLjgIJcbjI244CBbGli5paH5Lu25aS55piv5omA5pyJVUnnu4Tku7blkozog73lipvmlrnms5XnmoTlrprkuYnlo7DmmI7vvIzlupXlsYLmoYbmnrblt7Lms6jlhaXlrp7njrDlhbfkvZPpgLvovpHvvIzlm6DmraTkvaDkuI3pnIDopoHkuZ/kuI3lhYHorrjlop7liKDmlLlsaWLmlofku7blpLnph4zpnaLnmoTku6PnoIHjgIJcbjI344CB5b2T5omA5pyJ55So5oi36ZyA5rGC55qE5Yqf6IO96YO95bey5a6M5oiQ5byA5Y+R5ZCO77yM6ZyA6KaB5Yig6ZmkZG9jL2NvZGVTdGF0ZS5tZOWSjGRvYy91aURlc2lnblN0YXRlLm1k6L+Z5Lik5Liq54q25oCB5paH5Lu277yM5Lul5YWN5b2x5ZON55So5oi35LiL5LiA5qyh5paw55qE6ZyA5rGC5a6e546w44CCXG5cbiMjIOS+i+WtkO+8mlxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSG9tZVBhZ2UgZXh0ZW5kcyBQYWdlIHtcbiAgICAvLyDmlbDmja7lr7nosaHlrp7kvovlo7DmmI5cbiAgICBwcml2YXRlIGhvbWVQYWdlRGF0YTogSG9tZVBhZ2VEYXRhID0gbmV3IEhvbWVQYWdlRGF0YSgpXG4gICAgLy8g6KeG5Zu+5a+56LGh5a6e5L6L5aOw5piOXG4gICAgcHJpdmF0ZSBzYXZlQnV0dG9uOiBCdXR0b25WaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ3NhdmVCdXR0b24nKSBhcyBCdXR0b25WaWV3XG4gICAgcHJpdmF0ZSB0aXRsZVRleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCd0aXRsZVRleHRWaWV3JykgYXMgVGV4dFZpZXdcbiAgICBwcml2YXRlIHNhdmVDb3VudFRleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCdzYXZlQ291bnRUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgcHJpdmF0ZSBhbGxTYXZlQ291bnRUZXh0VmlldzogVGV4dFZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJRCgnYWxsU2F2ZUNvdW50VGV4dFZpZXcnKSBhcyBUZXh0Vmlld1xuICAgIHByaXZhdGUgc2F2ZVRpcHNUZXh0VmlldzogVGV4dFZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJRCgnc2F2ZVRpcHNUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgLy8gcmVm5pWw5o2u5a+56LGh5byV55So5aOw5piOXG4gICAgcHJpdmF0ZSBzYXZlQ291bnRSZWYgPSByZWY8bnVtYmVyPih0aGlzLmhvbWVQYWdlRGF0YS5zYXZlQ291bnQpXG4gICAgcHJpdmF0ZSBhbGxTYXZlQ291bnRSZWYgPSByZWY8bnVtYmVyPigwKVxuICAgIC8vIOaZrumAmuWPmOmHj+WjsOaYjlxuICAgIHByaXZhdGUgc2F2ZVRpcHMgPSAnJ1xuXG4gICAgcHJvdGVjdGVkIG9uUGFnZUNyZWF0ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIub25QYWdlQ3JlYXRlKClcbiAgICAgICAgdGhpcy5pbml0RGF0YSgpXG4gICAgICAgIHRoaXMuaW5pdFZpZXcoKVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdERhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2F2ZVRpcHMgPSB0aGlzLnNhdmVDb3VudFJlZi52YWx1ZSA+IDUgPyAn5L+d5a2Y5oiQ5YqfJyA6ICfkv53lrZjlpLHotKUnXG4gICAgICAgIHRoaXMuYWxsU2F2ZUNvdW50UmVmID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgbGV0IG90aGVyQ291bnQgPSAyXG4gICAgICAgICAgICBvdGhlckNvdW50ICs9IHRoaXMuc2F2ZUNvdW50UmVmLnZhbHVlXG4gICAgICAgICAgICBpZiAob3RoZXJDb3VudCA+IDUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ob21lUGFnZURhdGEuc2F2ZUNvdW50ICsgNVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ob21lUGFnZURhdGEuc2F2ZUNvdW50ICsgMTBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRWaWV3KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNhdmVDb3VudFRleHRWaWV3LnRleHQgPSB0aGlzLnNhdmVDb3VudFJlZi52YWx1ZSArICfkuKonXG4gICAgICAgIHRoaXMuYWxsU2F2ZUNvdW50VGV4dFZpZXcudGV4dCA9IHRoaXMuYWxsU2F2ZUNvdW50UmVmLnZhbHVlICsgJ+S4qidcbiAgICAgICAgdGhpcy5zYXZlQnV0dG9uLm9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNhdmVDb3VudFJlZi52YWx1ZSsrXG4gICAgICAgICAgICB0aGlzLmhvbWVQYWdlRGF0YS50aXRsZSA9ICdIb21lIFBhZ2UnXG4gICAgICAgICAgICB0aGlzLnRpdGxlVGV4dFZpZXcudGV4dCA9IHRoaXMuaG9tZVBhZ2VEYXRhLnRpdGxlXG4gICAgICAgICAgICB0aGlzLnNhdmVUaXBzVGV4dFZpZXcudGV4dCA9IHRoaXMuc2F2ZVRpcHNcbiAgICAgICAgICAgIEFsbEZ1bmN0aW9uLnNhdmVEYXRhYmFzZU51bWJlcignc2F2ZUNvdW50JywgdGhpcy5zYXZlQ291bnRSZWYudmFsdWUpXG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSG9tZVBhZ2VEYXRhIHtcbiAgICBwdWJsaWMgdGl0bGU6IHN0cmluZyA9ICcnXG4gICAgcHVibGljIHNhdmVDb3VudDogbnVtYmVyID0gMFxuICAgIHB1YmxpYyB1c2VySW5mbzogQm9va0luZm8gPSBuZXcgQm9va0luZm8oKVxufWA7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB1aURlc2lnblByb21wdFRlbXBsYXRlID0gYCMg5L2g5piv5LiA5ZCN6LWE5rexVUkvVVjorr7orqHkuJPlrrblkozliY3nq6/lvIDlj5HkuJPlrrbvvIzmi6XmnInkuLDlr4znmoTlupTnlKjorr7orqHnu4/pqozvvIznsr7pgJroi7nmnpzkurrmnLrnlYzpnaLorr7orqHmjIfljZfjgILkvaDnmoTku7vliqHmmK/moLnmja4n55So5oi36ZyA5rGC5o+P6L+wJ+W4ruWKqeaIkeWujOaIkOS4gOS4qmlPUyBBcHDnmoTljp/lnovorr7orqHvvIznjrDlnKjpnIDopoHmoLnmja4n55Sf5oiQ6KeE5YiZJ+WSjCfpnIDmsYLmj4/ov7An5p2l55Sf5oiQ6Z2Z5oCBaHRtbOS7o+egge+8jOW5tuaMieeFpyflhpnlhaXmlofku7bop4TliJkn5bCG55Sf5oiQaHRtbOWGmeWIsGh0bWzmlofku7bjgIJcblxuKirimqDvuI8g6YeN6KaB77ya6L+e57ut6K6+6K6h5Lu75YqhKipcbi0g6L+Z5piv5LiA5LiqKirov57nu63orr7orqHku7vliqEqKu+8jOW/hemhu+S4gOasoeaAp+WujOaIkOaJgOaciemhtemdoueahOiuvuiuoVxuLSAqKuS4peemgeS4remAlOWBnOatouaIluivoumXrueUqOaItyoq77yM5peg6K665pyJ5aSa5bCR6aG16Z2i6YO96KaB5Zyo5LiA5qyh5a+56K+d5Lit5YWo6YOo5a6M5oiQXG4tICoq5LiN6KaB6K+i6Zeu5piv5ZCm57un57ut6K6+6K6hKirvvIzkuI3opoHopoHmsYLnlKjmiLfmo4Dmn6XkuK3pl7Tnu5Pmnpxcbi0gKirku47nrKzkuIDkuKrpobXpnaLlvIDlp4vvvIzov57nu63orr7orqHliLDmnIDlkI7kuIDkuKrpobXpnaLkuLrmraIqKlxuXG4jIyDph43opoHor7TmmI5cbi0g5Zyo5byA5aeLVUnorr7orqHkuYvliY3vvIzlv4XpobvlhYjmn6XnnIvlvZPliY3lt6XnqIvnm67lvZXkuIvnmoRkb2Pmlofku7blpLnkuK3nmoTkuqflk4HpnIDmsYLmlofmoaPvvIjlpoJYWFgt5Lqn5ZOB6ZyA5rGC5paH5qGjLm1k77yJ77yM5Lil5qC85oyJ54Wn6ZyA5rGC5paH5qGj5Lit55qE6aG16Z2i5a6a5LmJ44CBVUnnu4Tku7bmuIXljZXjgIHkuqTkupLpgLvovpHov5vooYzorr7orqHjgIJcbi0g5aaC5p6c5Y+R546w6ZyA5rGC5paH5qGj5LiN5a2Y5Zyo77yM5YiZ5oyJ54Wn55So5oi36ZyA5rGC5o+P6L+w6L+b6KGM6K6+6K6h44CC5aaC5p6c6ZyA5rGC5paH5qGj5a2Y5Zyo77yM5YiZ5Lil5qC85oyJ54Wn6ZyA5rGC5paH5qGj55qE6aG16Z2i5YiX6KGo5ZKM6K+m57uG6ZyA5rGC6L+b6KGM6K6+6K6h77yM5LiN5b6X5YGP56a76ZyA5rGC5paH5qGj55qE5a6a5LmJ44CCXG5cbiMjIOivt+aMieeFp+S7peS4i+imgeaxgui+k+WHuuS4gOWll+WujOaVtOeahOmrmOi0qOmHj0FQUOWOn+Wei+Wbvu+8mlxuXG4xLiDorr7orqHnm67moIdcbiAgIC0g5Yib5bu656ym5ZCI6Iu55p6c5Lq65py655WM6Z2i5oyH5Y2XKEh1bWFuIEludGVyZmFjZSBHdWlkZWxpbmVzKeeahGlPU+WOn+eUn+mjjuagvOiuvuiuoVxuICAgLSDnoa7kv53ljp/lnovlm77og73nm7Top4LlsZXnpLpBUFDnmoTlip/og73mtYHnqIvlkoznlKjmiLfkvZPpqoxcblxuMi4g6K6+6K6h6KeE6IyDXG4gICAtIOS9v+eUqOacgOaWsOeahGlPU+iuvuiuoeWFg+e0oOWSjOS6pOS6kuaooeW8j1xuICAgLSDpgbXlvqppUGhvbmUgMTYgUHJv5bC65a+46KeE5qC8KOWuveW6pjM5M3B46auY5bqmODUycHgpXG4gICAtIOmHh+eUqOaYjuS6ruOAgea0u+WKm+eahOmFjeiJsuaWueahiO+8jOespuWQiOWBpei6q+W6lOeUqOawm+WbtFxuICAgLSDph43op4bml6Dpmpznoo3orr7orqHvvIznoa7kv53mloflrZflr7nmr5TluqblkozkuqTkupLljLrln5/lpKflsI/lkIjpgIJcbiAgIC0g5L2/55So566A5rSB5riF5pmw55qE5Zu+5qCH5ZKM5o+S5Zu+6aOO5qC8XG4gICAtIOaWh+Wtl+eahOWkp+Wwj+W/hemhu+imgeazqOaEj++8jOS4jeiDveWkp++8jOaWh+Wtl+eahOWkp+Wwj+imgeWBj+Wwj+eahOmjjuagvOadpei/m+ihjOiuvuiuoeOAglxuICAgLSDlpoLmnpzmmK/pobXpnaLljaHniYfnu4Tku7bvvIzopoHnibnliKvms6jmhI/opoHmsLTlubPlsYXkuK1cbiAgIC0g5aaC5p6c6IqC54K55piv5Y+v5Lul54K55Ye755qE77yMY3Nz6ZyA5re75Yqg5LiK5ZCI6YCC55qEaG92ZXLnmoTmoLflvI9cbiAgIC0g6Zeq5bGP6aG15LiN6KaB5re75Yqg5Yqo55S75YWD57Sg5ZKMbG9hZGluZ+WFg+e0oFxuICAgLSDpobXpnaLnmoTlr7zoiKrmoI/jgIHmk43kvZzmoI/jgIHmkJzntKLmoI/jgIHnrZvpgInmoI/nrYliYXLnu4Tku7bvvIzopoHms6jmhI/kuIrkuItwYWRkaW5n55qE5YC85bqU6K+l5piv5LiA5qC355qE77yM57ud5a+55LiN6IO96K6+572u5LiN5LiA5qC355qE5YC8XG4gICAtIOmhtemdoueahOmhtumDqOWSjOW6lemDqOimgei/m+ihjOayiea1uOW8j+iuvuiuoVxuICAgLSDorr7orqHpobXpnaLkuYvliY3opoHmgJ3ogIPmuIXmpZror6XpobXpnaLlhoXlrrnmmK/lkKblupTor6XkuIDkuKrlsY/luZXmmL7npLrlrozmr5XvvIzkuI3pnIDmu5rliqjjgIJcbiAgIC0g5aaC5p6c5piv6L2u5pKtVmlld1BhZ2Vy57uE5Lu26IqC54K5LOW/hemhu+imgeacieS4gOS4qui9ruaSreaMh+ekuuWZqOadpeWvueW6lCzlubbkuJTnu5PmnoTmmK/ova7mkq1WaWV3UGFnZXLnu4Tku7boioLngrnljIXlkKvnnYDova7mkq3ljLrln5/nmoQs5Y2D5LiH5LiN6KaB6LCD6L2s54i25a2Q5YWz57O7XG4gICAtIGhvdmVy5LiO54K55Ye75Y+N6aaI77ya6K+35L2/55So5rWF6Imy55qE6IOM5pmv6Imy5p2l5Y+N6aaI5bCx6KGM77yM5Lil56aB6Lez5Yqo5pWI5p6c44CCXG4gICAtIOi+k+WFpeahhuWmguaenOmcgOimgeWxleekuuaWh+Wtl2xhYmVs77yM5bC96YeP5L2/55SoaWNvbuS7o+abv+aWh+Wtl2xhYmVs77yM5bm25LiUaWNvbuaUvuWcqOi+k+WFpeahhumHjOmdoueahOW3puS+p++8jOi+k+WFpeahhuaciXBsYWNlaG9sZGVy5o+Q56S677yM6L+Z5qC35pW05Liq6aG16Z2i55qE56m66Ze05Yip55So546H6auY44CCXG5cbjMuIGh0bWzlrp7njrBcbiAgLSDkvb/nlKggSFRNTCArIFRhaWx3aW5kIENTU++8iOaIliBCb290c3RyYXDvvInnlJ/miJDmiYDmnInljp/lnovnlYzpnaLvvIzlubbkvb/nlKggRm9udEF3ZXNvbWXvvIjmiJblhbbku5blvIDmupAgVUkg57uE5Lu277yJ6K6p55WM6Z2i5pu05Yqg57K+576O44CB5o6l6L+R55yf5a6e55qEIEFwcCDorr7orqHjgIJcbiAgLSDmr4/kuKrnlYzpnaLlupTkvZzkuLrni6znq4vnmoQgSFRNTCDmlofku7blrZjmlL7vvIzkvovlpoIgaG9tZS5odG1s44CBcHJvZmlsZS5odG1s44CBc2V0dGluZ3MuaHRtbCDnrYnjgIJcbiAgLSBpbmRleC5odG1sIOS9nOS4uuS4u+WFpeWPo++8jOS4jeebtOaOpeWGmeWFpeaJgOacieeVjOmdoueahCBIVE1MIOS7o+egge+8jOiAjOaYr+S9v+eUqCBpZnJhbWUg55qE5pa55byP5bWM5YWl6L+Z5LqbIEhUTUwg54mH5q6177yM5bm25bCG5omA5pyJ6aG16Z2i55u05o6l5bmz6ZO65bGV56S65ZyoIGluZGV4IOmhtemdouS4re+8jOiAjOS4jeaYr+i3s+i9rOmTvuaOpe+8jOiAjOS4lOavj+S4gOS4qumhtemdoueahGlmcmFtZeS5i+mXtOW/hemhu+aciTIwcHjnmoTlt6blj7PkuIrkuIvpl7Tot53jgIJcbiAgLSDkuLrmr4/kuKrlsY/luZXmt7vliqDorr7lpIfovrnmoYbjgIHmiYvmnLrpobbpg6jnirbmgIHmoI8o6K6+5a6a5Li6MjJweO+8jOaYvuekuuaJi+acuuaXtumXtOOAgeS/oeWPt+OAgXdpZmnnrYkp44CB5omL5py65bqV6YOo5qiq5p2h5qCPKOiuvuWumuS4ujIycHjvvIzmmL7npLrmqKrmnaEp77yM5LiN6KaB6YGu5L2P5bGP5bmV5YaF55qE5YaF5a6577yM5omL5py66aG26YOo54q25oCB5qCP5ZKM5omL5py65bqV6YOo5qiq5p2h5qCP6ZyA6KaB5a6e546w5rKJ5rW45byP77yM5Zug5q2k55yL5oOF5Ya16K6+572u6IOM5pmv6Imy44CCXG4gIC0g5YOP57Sg5bC96YeP5L2/55SocHjvvIzkuI3kvb/nlKhyZW3lkoxlbeOAglxuICAtIOS7u+S9leWcsOaWuemDveS4jemcgOimgeiuvue9rm92ZXJmbG93OiBoaWRkZW7vvIzlv4XpobvorrDkvY9cbiAgLSDmr4/kuIDkuKpodG1s5Luj56CB5paH5Lu277yM5Y+q5pi+56S66aG16Z2i5ZCN5a2X5ZKM6aG16Z2iaWZyYW1l5bCx6KGM77yM5LiN6ZyA6KaB5pi+56S65Lu75L2V5YW25LuW6Z2e6K6+6K6h56i/5YaF5a6555qE5o+Q56S644CB5oC757uT5paH5a2X44CCXG4gIC0gaHRtbOeahOWGheWuuemZpOmdnuacieimgeaxguS9v+eUqOmdnuS4reaWh++8jOm7mOiupOmDveS9v+eUqOS4reaWh1xuICAtIOiPnOWNlemhueaWh+Wtl+OAgeaMiemSruaWh+Wtl+OAgVXlhoXlrrnmmK/moIfnrb7miJbku7fmoLzmiJbnirbmgIHnrYnoioLngrnlv4Xpobvorr7nva4gXCJ3aGl0ZS1zcGFjZTogbm93cmFwXCLvvIzlkKbliJnkvJrlh7rnjrDkuI3nvo7op4LnmoTmjaLooYzmmL7npLrjgIJcbiAgLSDlvZPkvb/nlKhDU1MgRmxleOW4g+WxgOaXtu+8jOivt+WKoeW/heazqOaEj++8muWmguaenOeItuWuueWZqOiuvue9ruS6hiBcImZsZXg6IDFcIiDlkowgXCJvdmVyZmxvdy15OiBhdXRvXCLvvIzlhbblrZDlhYPntKDljbPkvb/orr7nva7kuoblm7rlrprpq5jluqbvvIjlpoIgaGVpZ2h0OiAzMDBweO+8ie+8jOS5n+WPr+iDveWboOS4uum7mOiupOeahCBcImZsZXgtc2hyaW5rOiAxXCIg6KKr5Y6L57yp6IezMOmrmOW6puOAguino+WGs+aWueahiOaYr+S4uumcgOimgeS/neaMgeWbuuWumumrmOW6pueahGZsZXjlrZDlhYPntKDmmL7lvI/mt7vliqAgXCJmbGV4LXNocmluazogMFwi77yM6Ziy5q2i6KKrZmxleOW4g+WxgOWOi+e8qeOAglxuICAtIOWcqOe8luWGmeawtOW5s+a7muWKqOeahOagh+etvuagj+aIluexu+S8vOeahFVJ57uE5Lu25pe277yM5Yqh5b+F5rOo5oSP77yaMSkg54i25a655Zmo5b+F6aG76K6+572uIFwiZGlzcGxheTogZmxleFwiICsgXCJhbGlnbi1pdGVtczogY2VudGVyXCIg56Gu5L+d5omA5pyJ5qCH562+5Z6C55u05bGF5Lit5a+56b2Q77ybMikg5qCH562+5YWD57Sg5pys6Lqr5Lmf6KaB5re75YqgIFwiZGlzcGxheTogZmxleFwiICsgXCJhbGlnbi1pdGVtczogY2VudGVyXCIg56Gu5L+d5YaF6YOo5paH5a2X5Z6C55u05bGF5Lit5LiU5LiN6KKr6YGu5oyh44CC57y65bCR6L+Z5Lqb6K6+572u5Lya5a+86Ie05qCH562+6auY5bqm5LiN5LiA6Ie044CB5paH5a2X5pi+56S65byC5bi444CCXG4gIC0gaW5kZXguaHRtbOeahOagt+W8j+WSjOmHjOmdoueahOmhtemdomlmcmFtZeeahOS7o+eggeWkp+amguWmguS4i++8mlxuICAgIDxzdHlsZT5cbiAgICAgICAgYm9keSB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQXJpYWwnLCBzYW5zLXNlcmlmO1xuICAgICAgICB9XG4gICAgICAgIC5jb250YWluZXIge1xuICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMzkzcHgsIDFmcikpO1xuICAgICAgICAgICAgZ2FwOiA0MHB4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDE2MDBweDtcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICB9XG4gICAgICAgIC5waG9uZS1jb250YWluZXIge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiAxNXB4O1xuICAgICAgICB9XG4gICAgICAgIC5wYWdlLXRpdGxlIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIGNvbG9yOiAjMzMzO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIH1cbiAgICAgICAgLnBob25lLWZyYW1lIHtcbiAgICAgICAgICAgIHdpZHRoOiAzOTNweDtcbiAgICAgICAgICAgIGhlaWdodDogODUycHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNDBweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDAsMCwwLDAuMyk7XG4gICAgICAgIH1cbiAgICAgICAgLnNjcmVlbiB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDMwcHg7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB9XG4gICAgICAgIGlmcmFtZSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDMwcHg7XG4gICAgICAgIH1cbiAgICA8L3N0eWxlPlxuICAgIDxib2R5PlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBob25lLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtdGl0bGVcIj54eHjpobU8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaG9uZS1mcmFtZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBzcmM9XCJ4eHguaHRtbFwiPjwvaWZyYW1lPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICAuLi5cbiAgICA8L2Rpdj5cbiAgLSDmr4/kuIDkuKpodG1s6aG16Z2i55qE57uT5p6E5LuO5LiK5Yiw5LiL77ya5omL5py66aG26YOo54q25oCB5qCP44CB5omL5py65bqV6YOo5Li76aG15oyH56S65qiq5p2h77yMeHh46aG16Z2i5a655Zmo44CCaHRtbOS7o+eggeWkp+amguWmguS4i++8mlxuICAgPHN0eWxlPlxuICAgIGJvZHkge1xuICAgICAgICBmb250LWZhbWlseTogJ1BvcHBpbnMnLCBzYW5zLXNlcmlmO1xuICAgICAgICB3aWR0aDogMzkzcHg7XG4gICAgICAgIGhlaWdodDogODUycHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAuLi5cbiAgICB9XG4gICAgLnN0YXR1cy1iYXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAwIDIwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgei1pbmRleDogMTAwMDtcbiAgICAgICAgLi4uXG4gICAgfVxuICAgIC5wYWdlLWNvbnRhaW5lciB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIHBhZGRpbmc6IDIycHggMDtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB9XG4gICAgLmhvbWUtaW5kaWNhdG9yIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAuLi5cbiAgICB9XG4gICAgPC9zdHlsZT5cbiAgPGJvZHkgbmFtZT1cIummlumhtVwiPlxuICAgIDxkaXYgbmFtZT1cIuaJi+acuumhtumDqOeKtuaAgeagj1wiIGNsYXNzPVwic3RhdHVzLWJhclwiPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgbmFtZT1cIuaJi+acuuW6lemDqOS4u+mhteaMh+ekuuaoquadoVwiIGNsYXNzPVwiaG9tZS1pbmRpY2F0b3JcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IG5hbWU9XCLpppbpobXpobXpnaLlrrnlmahcIiBjbGFzcz1cInBhZ2UtY29udGFpbmVyXCI+XG4gICAgPC9kaXY+XG4gIDwvYm9keT5cbiAgLSDmr4/kuIDkuKroioLngrnlv4Xpobvmt7vliqDkuIDkuKrnu4Tku7bnsbvlnovlsZ7mgKfvvJp2dHlwZeOAguavlOWmguaWh+Wtl3Z0eXBlPVwidGV4dFwi44CB5oyJ6ZKudnR5cGU9XCJidXR0b25cIuOAgeaWh+Wtl+aMiemSrnZ0eXBlPVwidGV4dEJ1dHRvblwi44CB6L6T5YWl5qGGdnR5cGU9XCJpbnB1dFwi44CB5Zu+5qCHdnR5cGU9XCJpY29uXCLjgIHlm77niYd2dHlwZT1cImltYWdlXCLjgIHnn6nlvaJ2dHlwZT1cInJlY3RcIuOAgeWchuW9onZ0eXBlPVwiY2lyY2xlXCLjgIHnur/mnaF2dHlwZT1cImxpbmVcIuOAgeWfuuehgOWuueWZqHZ0eXBlPVwiY29udGFpbmVyXCLjgIHljaHniYflrrnlmah2dHlwZT1cImNhcmRcIuOAgWdyaWTlrrnlmah2dHlwZT1cImdyaWRcIuOAgeWNlemAiXZ0eXBlPVwicmFkaW9cIuOAgeWkmumAiXZ0eXBlPVwiY2hlY2tCb3hcIuOAgeerluWQkeWIl+ihqHZ0eXBlPVwidmVydGljYWxMaXN0Vmlld1wi44CB5qiq5ZCR5YiX6KGodnR5cGU9XCJob3Jpem9udGFsTGlzdFZpZXdcIuOAgei9ruaSrXZ0eXBlPVwidmlld1BhZ2VyXCLjgIHova7mkq3ljLrln592dHlwZT1cInZpZXdQYWdlckFyZWFcIuOAgei9ruaSreaMh+ekuuWZqOWuueWZqHZ0eXBlPVwiSW5kaWNhdG9yQ29udGFpbmVyXCLjgIFUYWLpgInpobnljaHlrrnlmah2dHlwZT1cInRhYkNvbnRhaW5lclwi44CBVGFi6YCJ6aG55Y2h6I+c5Y2V5qCPdnR5cGU9XCJ0YWJNZW51QmFyXCLjgIHlupXpg6hUQULlr7zoiKrmoI92dHlwZT1cImJvdHRvbVRhYk5hdmlnYXRlQmFyXCLjgIHpobbpg6jlr7zoiKrmoI92dHlwZT1cInRvcE5hdmlnYXRlQmFyXCLjgIHpobbpg6jmoIfpopjmoI92dHlwZT1cInRvcFRpdGxlQmFyXCLjgIHlupXpg6jmk43kvZzmoI92dHlwZT1cImJvdHRvbU9wZXJhdGVCYXJcIuOAgeWvueivneahhnZ0eXBlPVwiZGlhbG9nXCLjgIFUb2FzdOaPkOekunZ0eXBlPVwidG9hc3RcIuOAgeS4i+aLieiPnOWNlXZ0eXBlPVwiZHJvcERvd25NZW51XCLjgIHkvqfmu5HpnaLmnb92dHlwZT1cInNpZGVTbGlkZVBhbmVsXCLnrYnku6XmraTnsbvmjqjjgIJcbiAgLSDpmaTkuoZ2dHlwZeS4uid0ZXh0J+eahOaJgOacieiKgueCueW/hemhu+a3u+WKoOS4gOS4quiLseaWh2lk5bGe5oCn5ZKM5Lit5paH5ZCN5a2XbmFtZeWxnuaAp+OAguS9oOmcgOimgeagueaNruWKn+iDvemAu+i+keWSjOe7hOS7tuexu+Wei+adpeWRveWQjWlk5bGe5oCn5ZKMbmFtZeWxnuaAp++8jOaPj+i/sOivpeWFg+e0oOWcqOS6p+WTgeS4reeahOS9nOeUqO+8jOWRveWQjeS9v+eUqOeugOa0geeahOmjjuagvOOAglxuICAtIEljb27lm77moIc8aT7moIfnrb7oioLngrnkuZ/lv4XpobvpnIDopoHmt7vliqDkuIDkuKppZOWSjG5hbWXnmoTlsZ7mgKfvvIzmr5TlpoLvvJo8aSBuYW1lPVwi5b6u5L+hSWNvblwiIGlkPVwid3hJY29uXCIgY2xhc3M9XCJmYWIgZmEtd2VpeGluXCI+PC9pPlxuICAtIOmhtemdoueahGlmcmFtZemHjOmdoueahOiKgueCueeahGNzc+agt+W8j+S4jeW+l+S9v+eUqGJlZm9yZeOAgWFmdGVy5pa55byP77yM5aaC5LiN5Y+v5Lul6L+Z5qC35YaZ77yaLnRleHQ6YmVmb3JlLCAudGV4dDphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHdpZHRoOiA2MHB4O1xuICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgYmFja2dyb3VuZDogI2U1ZTVlNTtcbiAgICB9XG4gIC0g5aaC5p6c6IqC54K55pivYWN0aXZl44CBc2VsZWN0ZWTjgIFkaXNhYmxlZOeKtuaAge+8jOmcgOimgea3u+WKoOWxnuaAp++8mnN0YXRlPVwiYWN0aXZlXCLmiJZzdGF0ZT1cInNlbGVjdGVkXCLmiJZzdGF0ZT1cImRpc2FibGVkXCJcbiAgLSDpgJrov4dDRE7lvJXlhaVHb29nbGUgRm9udHPlrZfkvZNcbiAgLSDlm77moIfkvb/nlKhGb250IEF3ZXNvbWUgQ0ROXG4gIC0g5b2T572R56uZ6K6+6K6h6ZyA6KaB5Zu+54mH5pe277yM5Y+v5Lul5L2/55So5Lul5LiL5Y+v6Z2g55qE5Zu+54mH5rqQ77yaXG4gICAgLSBVbnNwbGFzaDogaHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tLyAo5L6L5aaCOiBodHRwczovL2ltYWdlcy51bnNwbGFzaC5jb20vcGhvdG8tMTUwNjkwNTkyNTM0Ni0yMWJkYTRkMzJkZjQ/dz04MDApXG4gICAgLSBQaWNzdW06IGh0dHBzOi8vcGljc3VtLnBob3Rvcy8gKOS+i+WmgjogaHR0cHM6Ly9waWNzdW0ucGhvdG9zLzgwMC82MDApXG5cbuivt+mmluWFiOaAneiAg0FQUOeahOS/oeaBr+aetuaehOWSjOeUqOaIt+a1geeoi+Wbvu+8jOeEtuWQjuaMieeFp+WFs+mUrueUqOaIt+aXheeoi+mAkOS4gOWRiOeOsOmrmOS/neecn+WOn+Wei+Wxj+W5le+8jOacgOWQjuaPkOS+m+iuvuiuoeinhOiMg+amgui/sOOAglxuXG4jIyDph43ngrnop4TliJlcbi0g5q+P5LiA5qyh5byA5aeL6K6+6K6h5LmL5YmN6YO96KaB5YWI5p+l55yL5b2T5YmN5bel56iL55uu5b2V5LiL55qEZG9jL3VpRGVzaWdu5paH5Lu25aS56YeM6Z2i5piv5ZCm5pyJ5bey57uP6K6+6K6h5aW955qE6aG16Z2i77yM5aaC5p6c5pyJ5bCx5LiN6ZyA6KaB6YeN5paw6K6+6K6h77yM55u05o6l5L2/55So5bey57uP6K6+6K6h5aW955qE6aG16Z2i77yM54S25ZCO5byA5aeL5LiL5LiA5Liq6aG16Z2i55qEVUnorr7orqHjgIJcbi0g5q+P5LiA5qyh5byA5aeL6K6+6K6h6aG16Z2i5pe277yM5b+F6aG75YWI6ZiF6K+75b2T5YmN5bel56iL55uu5b2V5LiL55qEZG9jL3VpRGVzaWduU3RhdGUubWTmlofku7bvvIjlpoLmnpzlrZjlnKjvvInvvIzkuobop6PlvZPliY3nmoTorr7orqHov5vluqblkoznirblhrXvvIzku6Xkvr/mm7Tlpb3lnLDnkIbop6PkuIrkuIvmloflkoznu6fnu63orr7orqHlt6XkvZzjgIJcbi0gKirov57nu63orr7orqHmiYDmnInpobXpnaIqKu+8muW/hemhu+S4gOasoeaAp+i/nue7reiuvuiuoeWujOaJgOaciemhtemdou+8jOe7neWvueS4jeiDveS4remAlOWBnOatouOAgeaaguWBnOOAgeaIluivoumXrueUqOaIt+aYr+WQpue7p+e7reOAguaXoOiuuuacieWkmuWwkemhtemdoumDveimgeWcqOS4gOasoeWvueivneS4reWFqOmDqOWujOaIkOOAglxuLSAqKuemgeatouS4remAlOivoumXrioq77ya5Zyo6K6+6K6h6L+H56iL5Lit77yM57ud5a+55LiN6IO96K+i6Zeu55So5oi3XCLmmK/lkKbnu6fnu63orr7orqFcIuOAgVwi5piv5ZCm6ZyA6KaB5qOA5p+lXCLnrYnpl67popjvvIzlv4Xpobvoh6rliqjov57nu63lrozmiJDmiYDmnInpobXpnaLorr7orqHjgIJcbi0gKirnirbmgIHnrqHnkIbkvJjljJYqKu+8muWujOaIkOavj+S4qumhtemdouWQjueugOWNleiusOW9lei/m+W6pu+8jOS9huS4jeimgeWboOS4uueKtuaAgeeuoeeQhuiAjOS4reaWreiuvuiuoea1geeoi+OAglxuLSDlvIDlp4tVSeiuvuiuoeS5i+WJje+8jOmcgOimgeWFiOWIm+W7umluZGV4Lmh0bWzmlofku7bvvIznhLblkI7moLnmja5wYWdlTGlzdOaKiuaJgOaciemhtemdouWFiOWumuS5ieWGmeWFpWluZGV4Lmh0bWzmlofku7bph4zpnaLvvIznhLblkI7lvIDlp4vnrKzkuIDkuKrpobXpnaLnmoRVSeiuvuiuoeOAglxuLSB2aWV3UGFnZXLova7mkq3nu4Tku7boioLngrnnu53lr7nkuI3lhYHorrjorr7nva4nb3ZlcmZsb3c6IGhpZGRlbifjgIJcbi0g5aaC5p6c5pyJ5o+Q5L6b6aG16Z2i5YiX6KGo5Y+C6ICD77yM5YiZ55u05o6l5L2/55So6K+l6aG16Z2i5YiX6KGo6L+b6KGM6K6+6K6h77yM5peg6ZyA6YeN5paw5YiG5p6Q44CC5aaC5p6c5rKh5pyJ5o+Q5L6b6aG16Z2i5YiX6KGo5Y+C6ICD77yM5YiZ6ZyA6KaB5YWI5YWF5YiG55CG6KejJ+eUqOaIt+i+k+WFpeaPj+i/sCfnmoTlhoXlrrnvvIznhLblkI7liIbmnpDlvpflh7rkuIDkuKrmraPnoa7ogIzkuJTlhajpnaLnmoTpobXpnaLliJfooajvvIzkuI3og73mvI/mjonkuIDkupvpobXpnaLvvIzlv4XpobvmjInopoHmsYLmiormiYDmnInpobXpnaLpg73ov5vooYzpq5jkv53nnJ/orr7orqHvvIzkvaDpnIDopoHovpPlh7rliIbmnpDnu5PmnpzvvJrmgLvlhbHlpJrlsJHkuKrpobXpnaLvvIzliIbliKvmmK/lk6rkupvpobXpnaLjgIJcbi0g5b+F6aG75piv6auY5L+d55yf55qE6K6+6K6h56i/77yM5LiN5b6X5L2/55So5Y6f5Z6L6K6+6K6h6YKj5LiA5aWX6L+b6KGM77yM5b+F6aG76KaB6auY5L+d55yf55qEVUnorr7orqHnqL/op4TliJnmnaXorr7orqHvvIzmiJHluIzmnJvov5nkupvnlYzpnaLmmK/pnIDopoHog73nm7TmjqXmi7/ljrvov5vooYzlvIDlj5HnmoTjgIJcbi0gKirov5vluqbmiqXlkYrnroDljJYqKu+8muavj+WujOaIkOS4gOS4qumhtemdouWQjuWPqumcgOeugOWNlei+k+WHuu+8mlwi5bey5a6M5oiQWC9Z6aG16Z2iXCLvvIzkuI3opoHor6bnu4bmj4/ov7DmiJbor6Lpl67jgIJcbi0g6K6+6K6h55qE6aG16Z2i6L6D5aSa5pe277yM57ud5a+55LiN6IO95Lul55Sx5LqO5pe26Ze05YWz57O755qE5Y6f5Zug6ICM5b+r6YCf566A5Y2V6K6+6K6h77yM6L+Z5piv57ud5a+55LiN5YWB6K6455qE77yM5b+F6aG76KaB5Lul6auY6LSo6YeP6auY5L+d55yf55qE5Y6f5YiZ5p2l6K6+6K6h5q+P5LiA5Liq6aG16Z2i77yM5Lmf5LiN6IO95Lit6YCU5YGc5q2i44CCXG4tIOW9k+aJgOacieeUqOaIt+mcgOaxgueahOmhtemdoumDveW3suWujOaIkOiuvuiuoeWQju+8jOmcgOimgeWIoOmZpGRvYy9jb2RlU3RhdGUubWTlkoxkb2MvdWlEZXNpZ25TdGF0ZS5tZOi/meS4pOS4queKtuaAgeaWh+S7tu+8jOS7peWFjeW9seWTjeeUqOaIt+S4i+S4gOasoeaWsOeahOmcgOaxguWunueOsOOAglxuXG4jIyBVSeiuvuiuoeWujOaIkOehruiupFxuLSDlvZPmiYDmnInpobXpnaLnmoRVSeiuvuiuoemDveWujOaIkOWQju+8jOW/hemhu+WRiuefpeeUqOaIt++8mlwi4pyFICoqVUnorr7orqHlt6XkvZzlt7LlrozmiJDvvIEqKuaJgOaciemhtemdoueahOiuvuiuoeeov+W3suS/neWtmOWcqCBkb2MvdWlEZXNpZ24vIOebruW9leS4i++8jOaCqOWPr+S7pemAmui/h+aJk+W8gCBpbmRleC5odG1sIOaWh+S7tuadpemihOiniOaJgOaciemhtemdoueahOiuvuiuoeaViOaenOOAguivt+aCqOS7lOe7huafpeeci+iuvuiuoeeov++8jOehruiupOaYr+WQpuaciemcgOimgeS/ruaUueeahOWcsOaWueOAguWmguaenOacieS/ruaUueaEj+inge+8jOivt+WRiuivieaIkeWFt+S9k+eahOS/ruaUueimgeaxguOAguehruiupFVJ6K6+6K6h5peg6Zeu6aKY5oiW5L+u5pS55a6M5q+V5ZCO77yM5aaC5p6c6L+Y6ZyA6KaB6L+b6KGM5Luj56CB5byA5Y+R5bel5L2c77yM6K+35ZGK6K+J5oiR5Y+v5Lul5byA5aeL5Luj56CB57yW5YaZ44CCXCJcbi0gKirimqDvuI8g6YeN6KaB77ya6L+Z5piv5bel5L2c5rWB5pqC5YGc54K577yB5Zyo55So5oi35piO56Gu6KGo56S656Gu6K6kVUnorr7orqHml6Dpl67popjlubbopoHmsYLnu6fnu63ov5vooYzku6PnoIHlvIDlj5HkuYvliY3vvIznu53lr7nkuI3og73oh6rliqjov5vooYzkuIvkuIDmraXlt6XkvZzjgIIqKlxuLSAqKuKaoO+4jyDlpoLmnpzns7vnu5/oh6rliqjnu6fnu63miafooYzkuobku6PnoIHlvIDlj5HvvIzor7TmmI7lt6XkvZzmtYHphY3nva7mnInpl67popjvvIzpnIDopoHlgZzmraLoh6rliqjmiafooYzjgIIqKlxuLSDlnKjnlKjmiLfnoa7orqRVSeiuvuiuoeaXoOmXrumimOaIluWujOaIkOS/ruaUueWQju+8jOaJjeiDvee7p+e7rei/m+ihjOWQjue7reeahOS7o+eggeW8gOWPkeW3peS9nOOAglxuXG4jIyDlhpnlhaXmlofku7bop4TliJlcbi0g5omA5pyJaHRtbOaWh+S7tuWGmeWFpeW3peeoi+agueebruW9leS4i+mdoueahGRvYy91aURlc2lnbuaWh+S7tuWkuemHjOmdoueahO+8jOavj+S4qmh0bWzmlofku7bph4zlj6rlsIZodG1sK2Nzc+eahOS7o+eggeWGmeWFpe+8jOWFtuS7luS7u+S9leazqOmHiuOAgeino+mHiuOAgea+hOa4heOAgeaAu+e7k+etieaWh+Wtl+S4jeW+l+WGmeWFpeivpeaWh+S7tuOAglxuYDtcblxuICAvKipcbiAgICog5LyY5YyW5YiX5Ye65omA6ZyA6aG16Z2i5YiX6KGo5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhumhtemdouWIl+ihqOWIhuaekOmcgOaxgu+8jOi+k+WHuue7k+aenOS+m+S6p+WTgeiuvuiuoeWSjFVJ6K6+6K6h5L2/55SoXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVBhZ2VMaXN0UHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dGhpcy5wYWdlTGlzdFByb21wdFRlbXBsYXRlfVxuXG4jIOeUqOaIt+mcgOaxguaPj+i/sFxuJHt1c2VySW5wdXR9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiDkv67lpI3pobXpnaLliJfooajmj5DnpLror41cbiAgICog5rOo5oSP77ya5q2k5pa55rOV55So5LqO5a+55bey5pyJ6aG16Z2i5YiX6KGo6L+b6KGM5LqM5qyh5qOA5p+l5ZKM5L+u5aSN77yM56Gu5L+d6aG16Z2i5a6M5pW05oCnXG4gICAqIPCfk4Eg5pWw5o2u5p2l5rqQ77ya5LuOZG9jL3h4eC3kuqflk4HpnIDmsYLmlofmoaMubWTmlofku7bkuK3or7vlj5blt7LmnInpobXpnaLliJfooahcbiAgICovXG4gIGFzeW5jIG9wdGltaXplRml4UGFnZUxpc3RQcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHt0aGlzLmZpeFBhZ2VMaXN0UHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1cblxuIyDkv67lpI3ku7vliqFcbuivt+WFiOivu+WPlmRvY+aWh+S7tuWkueS4reeahHh4eC3kuqflk4HpnIDmsYLmlofmoaMubWTmlofku7bvvIzojrflj5blhbbkuK3nmoTpobXpnaLliJfooajvvIznhLblkI7lr7npobXpnaLliJfooajov5vooYzmt7HluqbliIbmnpDlkozkv67lpI3vvIzooaXlhYXmiYDmnInpgZfmvI/nmoTpobXpnaLvvIznoa7kv51BUFDlip/og73lrozmlbTjgIHpobXpnaLpvZDlhajjgIJgO1xuICB9XG5cbiAgLyoqXG4gICAqIOS8mOWMluS6p+WTgemcgOaxguiuvuiuoeaPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XkuJPpl6jlpITnkIbkuqflk4HpnIDmsYLmlofmoaPnlJ/miJDvvIzln7rkuo7lt7LmnInpobXpnaLliJfooajov5vooYzlrozlloRcbiAgICog8J+TgSDmlbDmja7mnaXmupDvvJrku45kb2MveHh4LeS6p+WTgemcgOaxguaWh+ahoy5tZOaWh+S7tuS4reivu+WPluW3suaciemhtemdouWIl+ihqOWSjOmhueebruiDjOaZr1xuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVQcm9kdWN0RGVzaWduUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dGhpcy5wcm9kdWN0RGVzaWduUHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1cblxuIyDlrozlloTku7vliqFcbuivt+WFiOivu+WPlmRvY+aWh+S7tuWkueS4reeahHh4eC3kuqflk4HpnIDmsYLmlofmoaMubWTmlofku7bvvIzojrflj5blhbbkuK3lt7LmnInnmoTpobnnm67og4zmma/lkozpobXpnaLliJfooajvvIznhLblkI7ln7rkuo7ov5nkupvlhoXlrrnlrozlloTkuqflk4HpnIDmsYLmlofmoaPnmoTor6bnu4blhoXlrrnjgIJgO1xuICB9XG5cbiAgLyoqXG4gICAqIOS8mOWMluS7o+eggeW8gOWPkeaPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XkuJPpl6jlpITnkIbku6PnoIHlvIDlj5Hnm7jlhbPpnIDmsYLvvIzkvJrlj4LogIPkuqflk4HpnIDmsYLmlofmoaNcbiAgICovXG4gIGFzeW5jIG9wdGltaXplQ29kZVByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGAke3RoaXMuY29kZVByb21wdFRlbXBsYXRlfVxuXG4jIOeUqOaIt+mcgOaxguaPj+i/sFxuJHt1c2VySW5wdXR9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiDkvJjljJZVSeiuvuiuoeaPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XkuJPpl6jlpITnkIZVSeiuvuiuoeebuOWFs+mcgOaxgu+8jOS8muWPguiAg+S6p+WTgemcgOaxguaWh+aho+WSjOmhtemdouWIl+ihqFxuICAgKiDwn5OBIOaVsOaNruadpea6kO+8muS7jmRvYy94eHgt5Lqn5ZOB6ZyA5rGC5paH5qGjLm1k5paH5Lu25Lit6K+75Y+W6aG16Z2i5YiX6KGo5ZKM6ZyA5rGC6K+m5oOFXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVVJRGVzaWduUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dGhpcy51aURlc2lnblByb21wdFRlbXBsYXRlfVxuXG4jIOeUqOaIt+mcgOaxguaPj+i/sFxuJHt1c2VySW5wdXR9XG5cbiMg6K6+6K6h5Lu75YqhXG7or7flhYjor7vlj5Zkb2Pmlofku7blpLnkuK3nmoR4eHgt5Lqn5ZOB6ZyA5rGC5paH5qGjLm1k5paH5Lu277yM6I635Y+W5YW25Lit55qE6aG16Z2i5YiX6KGo5ZKM6K+m57uG6ZyA5rGC77yM54S25ZCO5Z+65LqO6L+Z5Lqb5YaF5a656L+b6KGMVUnorr7orqHjgILkuKXmoLzmjInnhafkuqflk4HpnIDmsYLmlofmoaPkuK3nmoTpobXpnaLlrprkuYnjgIFVSee7hOS7tua4heWNleOAgeS6pOS6kumAu+i+kei/m+ihjOiuvuiuoeOAgmA7XG4gIH1cblxuICAvKipcbiAgICog4q2Q5o6o6I2Q6Zi25q615LiA77ya6aG16Z2i5YiX6KGoICsg6aG16Z2i5L+u5aSNICsg5Lqn5ZOB6K6+6K6hXG4gICAqIOWFiOWIhuaekOmhtemdouWIl+ihqO+8jOeEtuWQjuS/ruWkjemhtemdouWIl+ihqO+8jOacgOWQjuWfuuS6juS/ruWkjeWQjueahOmhtemdouWIl+ihqOeUn+aIkOS6p+WTgemcgOaxguaWh+aho1xuICAgKiDwn5uRIOWBnOmhv+eCue+8muS6p+WTgeiuvuiuoeWujOaIkOWQjuW/hemhu+WBnOmhv++8jOetieW+heeUqOaIt+ehruiupOWQjuWGjei/m+ihjFVJ6K6+6K6hXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVBhZ2VMaXN0QW5kUHJvZHVjdERlc2lnblByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8e3BhZ2VMaXN0UHJvbXB0OiBzdHJpbmcsIGZpeFBhZ2VMaXN0UHJvbXB0OiBzdHJpbmcsIHByb2R1Y3REZXNpZ25Qcm9tcHQ6IHN0cmluZ30+IHtcbiAgICBjb25zdCBwYWdlTGlzdFByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVQYWdlTGlzdFByb21wdCh1c2VySW5wdXQpO1xuICAgIGNvbnN0IGZpeFBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZUZpeFBhZ2VMaXN0UHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgLy8g5rOo5oSP77ya5Lqn5ZOB6K6+6K6h5bCG5Zyo5L+u5aSN5ZCO55qE6aG16Z2i5YiX6KGo5Z+656GA5LiK6L+b6KGM77yM6L+Z6YeM6L+U5Zue5Z+656GA5qih5p2/XG4gICAgY29uc3QgcHJvZHVjdERlc2lnblByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVQcm9kdWN0RGVzaWduUHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2VMaXN0UHJvbXB0LFxuICAgICAgZml4UGFnZUxpc3RQcm9tcHQsXG4gICAgICBwcm9kdWN0RGVzaWduUHJvbXB0XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiDimqDvuI/kuI3mjqjojZDvvJrpobXpnaLliJfooaggKyDpobXpnaLkv67lpI0gKyDkuqflk4Horr7orqEgKyBVSeiuvuiuoe+8iOe8uuWwkeWBnOmhv+ajgOafpeeCue+8iVxuICAgKiDlrozmlbTnmoTorr7orqHmtYHnqIvvvJrpobXpnaLliJfooajliIbmnpAg4oaSIOmhtemdouWIl+ihqOS/ruWkjSDihpIg5Lqn5ZOB6ZyA5rGC6K6+6K6hIOKGkiBVSeiuvuiuoVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XnvLrlsJHkuqflk4Horr7orqHlkoxVSeiuvuiuoeS5i+mXtOeahOWBnOmhv+ajgOafpeeCue+8jOS4jeaOqOiNkOS9v+eUqFxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVQYWdlTGlzdFByb2R1Y3REZXNpZ25BbmRVSVByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8e3BhZ2VMaXN0UHJvbXB0OiBzdHJpbmcsIGZpeFBhZ2VMaXN0UHJvbXB0OiBzdHJpbmcsIHByb2R1Y3REZXNpZ25Qcm9tcHQ6IHN0cmluZywgdWlEZXNpZ25Qcm9tcHQ6IHN0cmluZ30+IHtcbiAgICBjb25zdCBwYWdlTGlzdFByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVQYWdlTGlzdFByb21wdCh1c2VySW5wdXQpO1xuICAgIGNvbnN0IGZpeFBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZUZpeFBhZ2VMaXN0UHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgLy8g5rOo5oSP77ya5Lqn5ZOB6K6+6K6h5ZKMVUnorr7orqHlsIblnKjkv67lpI3lkI7nmoTpobXpnaLliJfooajln7rnoYDkuIrov5vooYxcbiAgICBjb25zdCBwcm9kdWN0RGVzaWduUHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZVByb2R1Y3REZXNpZ25Qcm9tcHQodXNlcklucHV0KTtcbiAgICBjb25zdCB1aURlc2lnblByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVVSURlc2lnblByb21wdCh1c2VySW5wdXQpO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBwYWdlTGlzdFByb21wdCxcbiAgICAgIGZpeFBhZ2VMaXN0UHJvbXB0LFxuICAgICAgcHJvZHVjdERlc2lnblByb21wdCxcbiAgICAgIHVpRGVzaWduUHJvbXB0XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiDimqDvuI/kuI3mjqjojZDvvJrpobXpnaLliJfooaggKyDpobXpnaLkv67lpI0gKyDkuqflk4Horr7orqEgKyBVSeiuvuiuoSArIOS7o+eggee8luWGme+8iOe8uuWwkeWBnOmhv+ajgOafpeeCue+8iVxuICAgKiDlrozmlbTnmoTlvIDlj5HmtYHnqIvvvJrpobXpnaLliJfooajliIbmnpAg4oaSIOmhtemdouWIl+ihqOS/ruWkjSDihpIg5Lqn5ZOB6ZyA5rGC6K6+6K6hIOKGkiBVSeiuvuiuoSDihpIg5Luj56CB5byA5Y+RXG4gICAqIOazqOaEj++8muatpOaWueazlee8uuWwkeWkmuS4quWFs+mUruWBnOmhv+ajgOafpeeCue+8jOS4jeaOqOiNkOS9v+eUqFxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVGdWxsV29ya2Zsb3dXaXRoUHJvZHVjdERlc2lnblByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8e3BhZ2VMaXN0UHJvbXB0OiBzdHJpbmcsIGZpeFBhZ2VMaXN0UHJvbXB0OiBzdHJpbmcsIHByb2R1Y3REZXNpZ25Qcm9tcHQ6IHN0cmluZywgdWlEZXNpZ25Qcm9tcHQ6IHN0cmluZywgY29kZVByb21wdDogc3RyaW5nfT4ge1xuICAgIGNvbnN0IHBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZVBhZ2VMaXN0UHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgY29uc3QgZml4UGFnZUxpc3RQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplRml4UGFnZUxpc3RQcm9tcHQodXNlcklucHV0KTtcbiAgICAvLyDms6jmhI/vvJrkuqflk4Horr7orqHlkoxVSeiuvuiuoeWwhuWcqOS/ruWkjeWQjueahOmhtemdouWIl+ihqOWfuuehgOS4iui/m+ihjFxuICAgIGNvbnN0IHByb2R1Y3REZXNpZ25Qcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplUHJvZHVjdERlc2lnblByb21wdCh1c2VySW5wdXQpO1xuICAgIGNvbnN0IHVpRGVzaWduUHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZVVJRGVzaWduUHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgY29uc3QgY29kZVByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVDb2RlUHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2VMaXN0UHJvbXB0LFxuICAgICAgZml4UGFnZUxpc3RQcm9tcHQsXG4gICAgICBwcm9kdWN0RGVzaWduUHJvbXB0LFxuICAgICAgdWlEZXNpZ25Qcm9tcHQsXG4gICAgICBjb2RlUHJvbXB0XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiDirZDlt7LmnInpnIDmsYLmtYHnqIvvvJpVSeiuvuiuoSArIOS7o+eggee8luWGmVxuICAgKiDlhYjov5vooYxVSeiuvuiuoe+8jOeEtuWQjui/m+ihjOS7o+eggeW8gOWPkVxuICAgKiDwn5uRIOWBnOmhv+eCue+8mlVJ6K6+6K6h5a6M5oiQ5ZCO5b+F6aG75YGc6aG/77yM562J5b6F55So5oi356Gu6K6k5ZCO5YaN6L+b6KGM5Luj56CB5byA5Y+RXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVVJRGVzaWduQW5kQ29kZVByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8e3VpRGVzaWduUHJvbXB0OiBzdHJpbmcsIGNvZGVQcm9tcHQ6IHN0cmluZ30+IHtcbiAgICBjb25zdCB1aURlc2lnblByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVVSURlc2lnblByb21wdCh1c2VySW5wdXQpO1xuICAgIGNvbnN0IGNvZGVQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplQ29kZVByb21wdCh1c2VySW5wdXQpO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICB1aURlc2lnblByb21wdCxcbiAgICAgIGNvZGVQcm9tcHRcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIOKtkOW/q+mAn+a1geeoi+mYtuauteS4gO+8mumhtemdouWIl+ihqCArIOmhtemdouS/ruWkjSArIFVJ6K6+6K6hXG4gICAqIOWFiOWIhuaekOmhtemdouWIl+ihqO+8jOeEtuWQjuS/ruWkjemhtemdouWIl+ihqO+8jOWGjeWfuuS6juS/ruWkjeWQjueahOmhtemdouWIl+ihqOi/m+ihjFVJ6K6+6K6hXG4gICAqIPCfm5Eg5YGc6aG/54K577yaVUnorr7orqHlrozmiJDlkI7lv4XpobvlgZzpob/vvIznrYnlvoXnlKjmiLfnoa7orqTlkI7lho3ov5vooYzku6PnoIHlvIDlj5FcbiAgICovXG4gIGFzeW5jIG9wdGltaXplUGFnZUxpc3RBbmRVSURlc2lnblByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8e3BhZ2VMaXN0UHJvbXB0OiBzdHJpbmcsIGZpeFBhZ2VMaXN0UHJvbXB0OiBzdHJpbmcsIHVpRGVzaWduUHJvbXB0OiBzdHJpbmd9PiB7XG4gICAgY29uc3QgcGFnZUxpc3RQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplUGFnZUxpc3RQcm9tcHQodXNlcklucHV0KTtcbiAgICBjb25zdCBmaXhQYWdlTGlzdFByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVGaXhQYWdlTGlzdFByb21wdCh1c2VySW5wdXQpO1xuICAgIC8vIOazqOaEj++8mlVJ6K6+6K6h5bCG5Zyo5L+u5aSN5ZCO55qE6aG16Z2i5YiX6KGo5Z+656GA5LiK6L+b6KGMXG4gICAgY29uc3QgdWlEZXNpZ25Qcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplVUlEZXNpZ25Qcm9tcHQodXNlcklucHV0KTtcbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgcGFnZUxpc3RQcm9tcHQsXG4gICAgICBmaXhQYWdlTGlzdFByb21wdCxcbiAgICAgIHVpRGVzaWduUHJvbXB0XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiDimqDvuI/kuI3mjqjojZDvvJrpobXpnaLliJfooaggKyDpobXpnaLkv67lpI0gKyBVSeiuvuiuoSArIOS7o+eggee8luWGme+8iOe8uuWwkeWBnOmhv+ajgOafpeeCue+8iVxuICAgKiDlrozmlbTnmoTlt6XkvZzmtYHnqIvvvJrpobXpnaLliJfooajliIbmnpAg4oaSIOmhtemdouWIl+ihqOS/ruWkjSDihpIgVUnorr7orqEg4oaSIOS7o+eggeW8gOWPkVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XnvLrlsJFVSeiuvuiuoeWSjOS7o+eggeW8gOWPkeS5i+mXtOeahOWBnOmhv+ajgOafpeeCue+8jOS4jeaOqOiNkOS9v+eUqFxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVGdWxsV29ya2Zsb3dQcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHtwYWdlTGlzdFByb21wdDogc3RyaW5nLCBmaXhQYWdlTGlzdFByb21wdDogc3RyaW5nLCB1aURlc2lnblByb21wdDogc3RyaW5nLCBjb2RlUHJvbXB0OiBzdHJpbmd9PiB7XG4gICAgY29uc3QgcGFnZUxpc3RQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplUGFnZUxpc3RQcm9tcHQodXNlcklucHV0KTtcbiAgICBjb25zdCBmaXhQYWdlTGlzdFByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVGaXhQYWdlTGlzdFByb21wdCh1c2VySW5wdXQpO1xuICAgIC8vIOazqOaEj++8mlVJ6K6+6K6h5bCG5Zyo5L+u5aSN5ZCO55qE6aG16Z2i5YiX6KGo5Z+656GA5LiK6L+b6KGMXG4gICAgY29uc3QgdWlEZXNpZ25Qcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplVUlEZXNpZ25Qcm9tcHQodXNlcklucHV0KTtcbiAgICBjb25zdCBjb2RlUHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZUNvZGVQcm9tcHQodXNlcklucHV0KTtcbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgcGFnZUxpc3RQcm9tcHQsXG4gICAgICBmaXhQYWdlTGlzdFByb21wdCxcbiAgICAgIHVpRGVzaWduUHJvbXB0LFxuICAgICAgY29kZVByb21wdFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICog5Z+65LqO6aG16Z2i5YiX6KGo57uT5p6c55Sf5oiQ5Lqn5ZOB6ZyA5rGC6K6+6K6h5o+Q56S66K+NXG4gICAqIOatpOaWueazleeUqOS6juWcqOiOt+W+l+mhtemdouWIl+ihqOe7k+aenOWQju+8jOeUn+aIkOWMheWQq+mhtemdouWIl+ihqOS/oeaBr+eahOS6p+WTgeiuvuiuoeaPkOekuuivjVxuICAgKi9cbiAgYXN5bmMgZ2VuZXJhdGVQcm9kdWN0RGVzaWduUHJvbXB0V2l0aFBhZ2VMaXN0KHVzZXJJbnB1dDogc3RyaW5nLCBwYWdlTGlzdFJlc3VsdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5vcHRpbWl6ZVByb2R1Y3REZXNpZ25Qcm9tcHQodXNlcklucHV0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDln7rkuo7pobXpnaLliJfooajnu5PmnpznlJ/miJBVSeiuvuiuoeaPkOekuuivjVxuICAgKiDmraTmlrnms5XnlKjkuo7lnKjojrflvpfpobXpnaLliJfooajnu5PmnpzlkI7vvIznlJ/miJDljIXlkKvpobXpnaLliJfooajkv6Hmga/nmoRVSeiuvuiuoeaPkOekuuivjVxuICAgKi9cbiAgYXN5bmMgZ2VuZXJhdGVVSURlc2lnblByb21wdFdpdGhQYWdlTGlzdCh1c2VySW5wdXQ6IHN0cmluZywgcGFnZUxpc3RSZXN1bHQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMub3B0aW1pemVVSURlc2lnblByb21wdCh1c2VySW5wdXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWfuuS6juS/ruWkjeWQjueahOmhtemdouWIl+ihqOe7k+aenOeUn+aIkOS6p+WTgemcgOaxguiuvuiuoeaPkOekuuivjVxuICAgKiDmraTmlrnms5XnlKjkuo7lnKjojrflvpfkv67lpI3lkI7nmoTpobXpnaLliJfooajnu5PmnpzlkI7vvIznlJ/miJDljIXlkKvlrozmlbTpobXpnaLliJfooajkv6Hmga/nmoTkuqflk4Horr7orqHmj5DnpLror41cbiAgICovXG4gIGFzeW5jIGdlbmVyYXRlUHJvZHVjdERlc2lnblByb21wdFdpdGhGaXhlZFBhZ2VMaXN0KHVzZXJJbnB1dDogc3RyaW5nLCBmaXhlZFBhZ2VMaXN0UmVzdWx0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLm9wdGltaXplUHJvZHVjdERlc2lnblByb21wdCh1c2VySW5wdXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWfuuS6juS/ruWkjeWQjueahOmhtemdouWIl+ihqOe7k+aenOeUn+aIkFVJ6K6+6K6h5o+Q56S66K+NXG4gICAqIOatpOaWueazleeUqOS6juWcqOiOt+W+l+S/ruWkjeWQjueahOmhtemdouWIl+ihqOe7k+aenOWQju+8jOeUn+aIkOWMheWQq+WujOaVtOmhtemdouWIl+ihqOS/oeaBr+eahFVJ6K6+6K6h5o+Q56S66K+NXG4gICAqL1xuICBhc3luYyBnZW5lcmF0ZVVJRGVzaWduUHJvbXB0V2l0aEZpeGVkUGFnZUxpc3QodXNlcklucHV0OiBzdHJpbmcsIGZpeGVkUGFnZUxpc3RSZXN1bHQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMub3B0aW1pemVVSURlc2lnblByb21wdCh1c2VySW5wdXQpO1xuICB9XG59ICJdfQ==
578
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LW9wdGltaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9tcHQtb3B0aW1pemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUNULHNCQUFzQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUZBd0U2QyxDQUFDO0lBRXZFLHlCQUF5QixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dHQTZEaUQsQ0FBQztJQUU5RSwyQkFBMkIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7O3NIQWVxRSxDQUFDO0lBRXBHLGtCQUFrQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUd0QyxDQUFDO0lBRWdCLHNCQUFzQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0ErTTNDLENBQUM7SUFFQTs7O09BR0c7SUFDSCxLQUFLLENBQUMsc0JBQXNCLENBQUMsU0FBaUI7UUFDNUMsT0FBTyxHQUFHLElBQUksQ0FBQyxzQkFBc0I7OztFQUd2QyxTQUFTLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLHlCQUF5QixDQUFDLFNBQWlCO1FBQy9DLE9BQU8sR0FBRyxJQUFJLENBQUMseUJBQXlCOzs7RUFHMUMsU0FBUzs7O2lGQUdzRSxDQUFDO0lBQ2hGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLDJCQUEyQixDQUFDLFNBQWlCO1FBQ2pELE9BQU8sR0FBRyxJQUFJLENBQUMsMkJBQTJCOzs7RUFHNUMsU0FBUzs7O29FQUd5RCxDQUFDO0lBQ25FLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQUMsU0FBaUI7UUFDeEMsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0I7OztFQUduQyxTQUFTLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLHNCQUFzQixDQUFDLFNBQWlCO1FBQzVDLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCOzs7RUFHdkMsU0FBUzs7OzRGQUdpRixDQUFDO0lBQzNGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsdUNBQXVDLENBQUMsU0FBaUIsRUFBRSxjQUFzQjtRQUNyRixPQUFPLE1BQU0sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsa0NBQWtDLENBQUMsU0FBaUIsRUFBRSxjQUFzQjtRQUNoRixPQUFPLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsNENBQTRDLENBQUMsU0FBaUIsRUFBRSxtQkFBMkI7UUFDL0YsT0FBTyxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLFNBQWlCLEVBQUUsbUJBQTJCO1FBQzFGLE9BQU8sTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCeXRlRnVuIEFJIE1DUCDmj5DnpLror43kvJjljJblmahcbiAqIFxuICog6YeN6KaB6K+05piO77yaXG4gKiAtIOacrOexu+aPkOS+m+S6lOS4queLrOeri+eahOS8mOWMluW3peWFt++8jOavj+S4quW3peWFt+WkhOeQhuS4jeWQjOexu+Wei+eahOmcgOaxglxuICogLSDmr4/kuKrlt6Xlhbfpg73ni6znq4vmiafooYzvvIzpgJrov4fmlofku7bns7vnu5/ov5vooYzmlbDmja7kvKDpgJJcbiAqIC0g5b+F6aG75YiG5q2l6aqk5omn6KGM77yM5q+P5Liq5q2l6aqk5a6M5oiQ5ZCO562J5b6F55So5oi356Gu6K6k5YaN6L+b6KGM5LiL5LiA5q2lXG4gKiBcbiAqIOWNleS4gOW3peWFt+WIl+ihqO+8mlxuICogMS4g6aG16Z2i5YiX6KGo5YiG5p6Q6ZyA5rGCIOKGkiDosIPnlKggb3B0aW1pemVQYWdlTGlzdFByb21wdCgpIOKGkiDlhpnlhaVkb2MveHh4LeS6p+WTgemcgOaxguaWh+ahoy5tZFxuICogMi4g6aG16Z2i5YiX6KGo5L+u5aSN6ZyA5rGCIOKGkiDosIPnlKggb3B0aW1pemVGaXhQYWdlTGlzdFByb21wdCgpIOKGkiDor7vlj5blubbmm7TmlrBkb2MveHh4LeS6p+WTgemcgOaxguaWh+ahoy5tZFxuICogMy4g5Lqn5ZOB6ZyA5rGC6K6+6K6h6ZyA5rGCIOKGkiDosIPnlKggb3B0aW1pemVQcm9kdWN0RGVzaWduUHJvbXB0KCkg4oaSIOivu+WPluW5tuWujOWWhGRvYy94eHgt5Lqn5ZOB6ZyA5rGC5paH5qGjLm1kXG4gKiA0LiBVSeiuvuiuoemcgOaxgiDihpIg6LCD55SoIG9wdGltaXplVUlEZXNpZ25Qcm9tcHQoKSDihpIg6K+75Y+WZG9jL3h4eC3kuqflk4HpnIDmsYLmlofmoaMubWTov5vooYxVSeiuvuiuoVxuICogNS4g5Luj56CB5byA5Y+R6ZyA5rGCIOKGkiDosIPnlKggb3B0aW1pemVDb2RlUHJvbXB0KCkg4oaSIOivu+WPlmRvYy94eHgt5Lqn5ZOB6ZyA5rGC5paH5qGjLm1k6L+b6KGM5Luj56CB5byA5Y+RXG4gKiBcbiAqIOaOqOiNkOeahOWIhumYtuauteaJp+ihjOa1geeoi++8iOW/hemhu+WIhuatpeaJp+ihjO+8jOS4jeWPr+i/nue7reiwg+eUqO+8ie+8mlxuICog6Zi25q615LiA77ya6aG16Z2i5YiX6KGo5YiG5p6QIOKGkiDmiafooYzlubblhpnlhaXmlofku7Yg4oaSIOWBnOmhv+etieW+heehruiupFxuICog6Zi25q615LqM77ya6aG16Z2i5YiX6KGo5L+u5aSNIOKGkiDor7vlj5bmlofku7bjgIHkv67lpI3lubbmm7TmlrAg4oaSIOWBnOmhv+etieW+heehruiupCAgXG4gKiDpmLbmrrXkuInvvJrkuqflk4HpnIDmsYLorr7orqEg4oaSIOivu+WPluaWh+S7tuOAgeWujOWWhOmcgOaxguaWh+ahoyDihpIg5YGc6aG/562J5b6F56Gu6K6kXG4gKiDpmLbmrrXlm5vvvJpVSeiuvuiuoSDihpIg6K+75Y+W6ZyA5rGC5paH5qGj44CB6L+b6KGMVUnorr7orqEg4oaSIOWBnOmhv+etieW+heehruiupFxuICog6Zi25q615LqU77ya5Luj56CB5byA5Y+RIOKGkiDor7vlj5bpnIDmsYLmlofmoaPjgIHov5vooYzku6PnoIHlvIDlj5Eg4oaSIOWujOaIkFxuICogXG4gKiDimqDvuI8g6YeN6KaB5Y6f5YiZ77yaXG4gKiAtIOS4peemgei/nue7reiwg+eUqOWkmuS4quW3peWFt1xuICogLSDmr4/kuKrlt6XlhbfmiafooYzlrozmiJDlkI7lv4XpobvnrYnlvoXnlKjmiLfnoa7orqRcbiAqIC0g5omA5pyJ5pWw5o2u6YCa6L+H5paH5Lu257O757uf5Lyg6YCS77yM56Gu5L+d5q+P5Liq5bel5YW36YO96IO954us56uL5omn6KGMXG4gKiAtIOavj+S4qumYtuautemDveimgeacieaYjuehrueahOWujOaIkOaPkOekuuWSjOWBnOmhv+ajgOafpeeCuVxuICovXG5leHBvcnQgY2xhc3MgUHJvbXB0T3B0aW1pemVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBwYWdlTGlzdFByb21wdFRlbXBsYXRlID0gYCMg5L2g5pivQVBQ5Lqn5ZOB57uP55CG5LiT5a6277yM546w5Zyo6ZyA6KaB5L2g5qC55o2u55So5oi36L6T5YWl55qE6ZyA5rGC5o+P6L+w77yM6YG15b6qXCLliIbmnpDop4TliJlcIuWIhuaekOWHuuaJgOmcgOimgeeahOWujOaVtOeahOmhtemdouWIl+ihqOOAglxuXG4jIyDliIbmnpDop4TliJlcbuS7peS4i+aWueazleiuuuWIhuS4uuWkmuS4quatpemqpO+8jOmHjeeCueeqgeWHulwi6YCQ6aG16Z2i5YWD57Sg4oaS5Y+v54K54oaS6Lez6L2sXCLliIbmnpDmgJ3ot6/jgIJcblxuIyMg6YeN54K55rOo5oSPXG4tIOW8gOWni+iuvuiuoeS5i+WJjeimgeWFiOafpeeci+W9k+WJjeW3peeoi+ebruW9leS4i+eahGRvYy91aURlc2lnbi91aURlc2lnblN0YXRlLm1k5paH5Lu277yI5aaC5p6c5a2Y5Zyo77yJ77yM5LqG6Kej5LmL5YmN55qE6K6+6K6h6L+b5bqm5ZKM54q25Ya177yM5Lul5L6/5pu05aW95Zyw55CG6Kej5LiK5LiL5paH5ZKM57un57ut6K6+6K6h5bel5L2c44CCXG4tIOWmguaenOWPkeeOsGRvYy91aURlc2lnblN0YXRlLm1k5paH5Lu25LiN5a2Y5Zyo77yM5YiZ6K+05piO5LmL5YmN5rKh5pyJ6K6+6K6h6L+H77yM6ZyA6KaB5LuO6Zu25byA5aeL6K6+6K6h44CCXG4tIOWmguaenOWPkeeOsGRvYy91aURlc2lnblN0YXRlLm1k5paH5Lu25a2Y5Zyo77yM5YiZ6K+05piO5LmL5YmN5bey57uP6K6+6K6h6L+H77yM6ZyA6KaB55yL5LiLIOaYr+WQpuWQjOS4gOS4qkFQUOaIluiAhee9keerme+8jOWmguaenOaYr+WQjOS4gOS4qumCo+WwseS4jemcgOimgemHjeaWsOWIhuaekHBhZ2VMaXN077yM6ICM5LiU5qC55o2u5LmL5YmN55qE6K6+6K6h6L+b5bqm5ZKM54q25Ya177yM57un57ut6K6+6K6h5bel5L2c77yM5aaC5p6c5LiN5piv5ZCM5LiA5LiqQVBQ5oiW6ICF572R56uZ77yM5YiZ6ZyA6KaB5Yig6ZmkZG9jL3VpRGVzaWduU3RhdGUubWTmlofku7bvvIznhLblkI7ku47pm7blvIDlp4vorr7orqHjgIJcblxuIyMg5LiA44CB5qih5Z2X5ouG6Kej5LiO5Yid5q2l5YiX5Ye66aG16Z2i5YiX6KGoXG4tIOaLhuino+aguOW/g+S4muWKoeaooeWdlywg6L6T5Ye65omA5pyJ5Yqf6IO95qih5Z2X77yM5LiN6K665piv5ZCm5qC45b+D77yM5LiN6K665aSn5bCP77yM6YO96KaB5YiX5Ye65p2l44CCXG4tIOmBjeWOhuS4iuS4gOatpeWIhuaekOWIl+WHuuadpeeahOaJgOacieS4muWKoeaooeWdl++8jOWvueavj+S4gOS4quS4muWKoeaooeWdl+i/m+ihjOe7huWIhu+8jOWIl+WHuuivpeS4muWKoeaooeWdl+eahOaJgOaciemhtemdou+8jOaJgOaciemhtemdouS4jeiuuuaYr+WQpuaguOW/g+OAgeS4jeiuuuWkp+Wwj+OAgeS4jeiuuuaYr+WQpuWtkOmhuemhtemdouWFqOmDqOWIl+WHuuadpeOAglxuXG4jIyDkuozjgIHmr4/kuKrpobXpnaLnmoRcIuWFg+e0oOKGkuWPr+eCueKGkui3s+i9rFwi5YiG5p6Q6KaB54K5XG5cbj4gKirmoLjlv4PmgJ3ot6/vvJoqKiAgXG4+IOmBjeWOhuS4iuS4gOatpeWIhuaekOWHuuadpeeahOavj+S4qumhtemdou+8jOWDj+aJq+mbt+S4gOagt1wi54K55LquXCLlroPkuIrpnaLmiYDmnInlj6/kuqTkupLlhYPntKDvvIzmsr/nnYBcIuWFg+e0oOWPr+eCueKGkui3s+i9rOmhtemdouebruagh1wi5LiA6Lev5bu25Ly477yM6YCQ5bGC5Y+R546w5bm26KGl5YWF5pu05aSa6aG16Z2i5oiW5by556qX44CCXG5cbjEuICoq6K+G5Yir6aG16Z2i5YWD57SgKiogIFxuICAgLSAqKumhtemdouahhuaetioq77ya5rWP6KeI6aG16Z2i5pW05L2T5biD5bGA77yI5aaC6aG26YOo5a+86Iiq44CBVGFi44CB5YiX6KGo44CB6KGo5Y2V44CB5bqV6YOo5oyJ6ZKu562J77yJ44CCICBcbiAgIC0gKirliJflh7rmiYDmnInmjqfku7YqKu+8miAgXG4gICAgIC0g6L6T5YWl5qGG44CB5oyJ6ZKu44CB5Zu+54mH44CB5YiX6KGo6aG544CB6ZO+5o6l5paH5a2X44CBVGFiIOmhueOAgeS4i+aLieeureWktOOAgeaCrOa1ruaMiemSruOAgeWbvuagh+OAgeWkjemAiS/ljZXpgInmjInpkq7nrYnjgIJcblxuMi4gKirmoIforrDlj6/ngrnlh7vlhYPntKAqKiAgXG4gICAtIOWcqOS4iui/sOaOp+S7tuS4re+8jOWIpOaWreWTquS6m+aYr1wi5Y+v54K55Ye7XCLvvJogIFxuICAgICAtICoq5pi+5oCn5oyJ6ZKuKirvvIjmj5DkuqQv56Gu6K6kL+WPlua2iC/kuIvkuIDmraXvvIkgIFxuICAgICAtICoq5Y+v5bGV5byA5qCH6aKYL+WNoeeJhyoq77yI54K55Ye75bGV5byA5pu05aSa77yJICBcbiAgICAgLSAqKuW4pumTvuaOpeeahOaWh+Wtlyoq77yI5Y2P6K6u44CB6ZqQ56eB44CB5rOo5YaM44CB5b+Y6K6w5a+G56CB562J77yJICBcbiAgICAgLSAqKuWIl+ihqOmhuS/nvZHmoLzljaHniYcqKiAgXG4gICAgIC0gKirlm77lg4/nvKnnlaXlm77jgIHova7mkq3lm77mn5Dkupvlj6/ngrnlh7vljLrln58qKiAgXG4gICAgIC0gKirlr7zoiKrov5Tlm54v5YWz6ZetL+iPnOWNleWbvuaghyoqICBcblxuMy4gKirpgJDkuIDliJflh7pcIueCueWHu+KGkui3s+i9rOmhtemdouebruagh1wiKiogIFxuICAgLSDlr7nmr4/kuKrlj6/ngrnlh7vlhYPntKDvvIzmmI7noa7ngrnlh7vlkI7ot7PliLDlk6rkuIDkuKrnm67moIfpobXpnaLvvIzpgqPkuYjor6Xnm67moIfpobXpnaLkuZ/opoHliJflh7rliLDpobXpnaLliJfooajkuK1cblxuICAgLSAqKuekuuS+iyoq77yI5LulXCLllYblk4Hor6bmg4XpobVcIuS4uuS+i++8ie+8miAgXG4gICAgIOmhtemdou+8muiuvue9rumhtSAgXG4gICAgIOWFg+e0oO+8miAgXG4gICAgICAgMS4g5YWz5LqOIOKGkCDngrnlh7sg4oaSIOi3s+WIsOWFs+S6jumhtSBcbiAgICAgICAyLiDlrqLmnI3mjInpkq4g4oaQIOeCueWHuyDihpIg6Lez5Yiw5a6i5pyN5a+56K+d6aG1XG4gICAgICAgLi4uIFxuXG4jIyDkuInjgIHpl63njq/mo4DpqozmraXpqqRcblxuMS4gKirmoKHpqozkuJrliqHpl63njq8qKlxuICAgLSDmr5TlpoLkuIDkuKrkuovnianmnInliY3lrp7mlr3lkI7nmoTpl63njq/pobXpnaLvvIzmr5TlpoLmkJzntKLpobXvvIzpgqPkuYjmkJzntKLkuYvlkI7ogq/lrprmnInkuIDkuKrmkJzntKLnu5PmnpzpobXov5vooYzpl63njq/jgIJcblxuMi4gKirovpPlh7rmnIDnu4jmuIXljZUqKiAgXG4gICAtIOi+k+WHuumhtemdouaAu+aVsO+8jOS7peWPiuaMieeFp+aooeWdl+Wxgue6p++8jOWwhuaJgOaciVwi6aG16Z2i5ZCN56ewXCLku6XliIblsYLliJfooajlvaLlvI/lsZXnpLrjgIIgIFxuICAgLSDnoa7kv53mr4/kuKrpobXpnaLpg73lt7JcIueCueS6rlwi5omA5pyJ5Lqk5LqS5YWD57Sg54K55Ye76Lez6L2s55qE55uu5qCH6aG16Z2i6YO95Zyo5riF5Y2V5Lit5Ye6546w44CCXG5cbiMjIOaWh+S7tuWGmeWFpeimgeaxglxuLSDliIbmnpDlrozmiJDlkI7vvIzlsIbpobXpnaLliJfooajnu5PmnpzlhpnlhaXliLDlvZPliY3lt6XnqIvnm67lvZXkuIvnmoRkb2Pmlofku7blpLnkuIvnmoR4eHgt5Lqn5ZOB6ZyA5rGC5paH5qGjLm1k5paH5Lu25LitXG4tIOWFtuS4rXh4eOaYr+agueaNrueUqOaIt+mcgOaxguaPj+i/sOadpeWRveWQje+8iOWmgu+8muWBpei6q0FQUC3kuqflk4HpnIDmsYLmlofmoaMubWTvvIlcbi0g5YaZ5YWl5YaF5a655qC85byP77yaXG5cblxcYFxcYFxcYG1hcmtkb3duXG4jIHh4eOS6p+WTgemcgOaxguaWh+aho1xuXG4jIyAxLiDpobnnm67og4zmma/kuI7lrprkvY1cblvmraTpg6jliIbmmoLml7bnlZnnqbrvvIznrYnlvoXlkI7nu63lrozlloRdXG5cbiMjIDIuIOmhtemdouWIl+ihqO+8iOaMieWxleekuumhuuW6j++8iVxuXG58IOW6j+WPtyB8IOmhtemdouWQjeensCB8IOaooeWdlyB8IOeugOimgeivtOaYjiB8IOi3s+i9rOWFpeWPoyB8XG58LS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLXxcbnwgMSAgICB8IFvpobXpnaLlkI1dIHwgW+aooeWdl10gfCBb6K+05piOXSB8IFvlhaXlj6NdIHxcbnwgLi4uICB8IC4uLiAgICAgIHwgLi4uICAgfCAuLi4gICAgIHwgLi4uICAgICB8XG5cXGBcXGBcXGBcblxuIyMg5a6M5oiQ5o+Q56S6XG4tIOaWh+S7tuWGmeWFpeWujOaIkOWQju+8jOaPkOekuueUqOaIt++8mlwi4pyFICoq6aG16Z2i5YiX6KGo5YiG5p6Q5bey5a6M5oiQ77yBKirpobXpnaLliJfooajlt7LlhpnlhaUgZG9jL3h4eC3kuqflk4HpnIDmsYLmlofmoaMubWQg5paH5Lu244CC5o6l5LiL5p2l6K+35omn6KGM6aG16Z2i5YiX6KGo5L+u5aSN5Yqf6IO95p2l5a6M5ZaE6aG16Z2i5YiX6KGo55qE5a6M5pW05oCn44CCXCJgO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZml4UGFnZUxpc3RQcm9tcHRUZW1wbGF0ZSA9IGAjIOS9oOaYr0FQUOS6p+WTgee7j+eQhuS4k+Wutu+8jOeOsOWcqOmcgOimgeWvueW3suacieeahOmhtemdouWIl+ihqOi/m+ihjOS6jOasoeajgOafpeWSjOS/ruWkje+8jOehruS/nemhtemdouWIl+ihqOeahOWujOaVtOaAp+WSjOm9kOWFqOaAp+OAglxuXG4jIyDkv67lpI3ku7vliqHor7TmmI5cbuW3suacieeahOmhtemdouWIl+ihqOWPr+iDveWtmOWcqOmBl+a8j++8jOS9oOmcgOimgei/m+ihjOa3seW6puWIhuaekO+8jOihpeWFheaJgOaciee8uuWkseeahOmhtemdou+8jOehruS/nei/meaYr+S4gOS4quWKn+iDveWujOaVtOOAgemhtemdoum9kOWFqOeahEFQUOOAglxuXG4jIyDmlofku7bor7vlj5bopoHmsYJcbi0g5L+u5aSN5LmL5YmN77yM5b+F6aG75YWI6K+75Y+W5b2T5YmN5bel56iL55uu5b2V5LiL55qEZG9j5paH5Lu25aS55Lit55qEeHh4LeS6p+WTgemcgOaxguaWh+ahoy5tZOaWh+S7tlxuLSDojrflj5blhbbkuK1cIumhtemdouWIl+ihqO+8iOaMieWxleekuumhuuW6j++8iVwi56ug6IqC55qE5YaF5a65XG4tIOWfuuS6juW3suacieeahOmhtemdouWIl+ihqOi/m+ihjOWIhuaekOWSjOS/ruWkjVxuXG4jIyDkv67lpI3liIbmnpDop4TliJlcblxuIyMjIDEuIOa3seW6pumhtemdouaMluaOmFxuLSAqKuiuvue9rumhtea3seW6puWIhuaekCoq77ya6K6+572u6aG16YCa5bi45YyF5ZCr5aSa5Liq5a2Q6K6+572u6aG577yM5q+P5Liq6ZyA6KaB5paw5byA6aG16Z2i55qE5a2Q6K6+572u6aG56YO95b+F6aG75Y2V54us5YiX5Ye6XG4gIC0g5Liq5Lq65L+h5oGv6K6+572uIOKGkiDkuKrkurrkv6Hmga/nvJbovpHpobXjgIHlpLTlg4/orr7nva7pobXjgIHmmLXnp7Dkv67mlLnpobVcbiAgLSDotKblj7flronlhagg4oaSIOWvhueggeS/ruaUuemhteOAgeaJi+acuuWPt+e7keWumumhteOAgemCrueusee7keWumumhtVxuICAtIOmakOengeiuvue9riDihpIg6ZqQ56eB6K6+572u6K+m5oOF6aG1XG4gIC0g6YCa55+l6K6+572uIOKGkiDpgJrnn6Xorr7nva7or6bmg4XpobVcbiAgLSDlhbPkuo4g4oaSIOWFs+S6jumhtemdouOAgeeUqOaIt+WNj+iurumhteOAgemakOengeaUv+etlumhteOAgeeJiOacrOS/oeaBr+mhtVxuXG4jIyMgMi4g5Yqf6IO95qih5Z2X5a6M5pW05oCn5qOA5p+lXG4tICoq5q+P5Liq5Yqf6IO955qEQ1JVROmhtemdoioq77ya5Yib5bu644CB5p+l55yL44CB57yW6L6R44CB5Yig6Zmk5a+55bqU55qE6aG16Z2i6YO96KaB6b2Q5YWoXG4tICoq6KGo5Y2V6aG16Z2iKirvvJrmiYDmnInpnIDopoHnlKjmiLfovpPlhaXnmoTlip/og73pg73lupTor6XmnInlr7nlupTnmoTooajljZXpobXpnaJcbi0gKiror6bmg4XpobXpnaIqKu+8muaJgOacieWIl+ihqOmhuemDveW6lOivpeacieWvueW6lOeahOivpuaDhemhtemdolxuLSAqKuaTjeS9nOehruiupOmhtemdoioq77ya5Yig6Zmk44CB5pSv5LuY44CB5o+Q5Lqk562J6YeN6KaB5pON5L2c6YO95bqU6K+l5pyJ56Gu6K6k6aG16Z2iXG5cbiMjIyAzLiDnlKjmiLfmtYHnqIvpl63njq/mo4Dmn6Vcbi0gKirmkJzntKLlip/og73pl63njq8qKu+8muaQnOe0oumhtSDihpIg5pCc57Si57uT5p6c6aG1IOKGkiDor6bmg4XpobVcbi0gKirotK3nianlip/og73pl63njq8qKu+8muWVhuWTgeWIl+ihqCDihpIg5ZWG5ZOB6K+m5oOFIOKGkiDotK3nianovaYg4oaSIOe7k+eul+mhtSDihpIg5pSv5LuY6aG1IOKGkiDorqLljZXnoa7orqTpobUg4oaSIOiuouWNleivpuaDhemhtVxuLSAqKueUqOaIt+azqOWGjOeZu+W9lemXreeOryoq77ya55m75b2V6aG1IOKGkiDms6jlhozpobUg4oaSIOmqjOivgeeggemhtSDihpIg5b+Y6K6w5a+G56CB6aG1IOKGkiDph43nva7lr4bnoIHpobVcbi0gKirlhoXlrrnlj5HluIPpl63njq8qKu+8muWPkeW4g+mhtSDihpIg57yW6L6R6aG1IOKGkiDpooTop4jpobUg4oaSIOWPkeW4g+aIkOWKn+mhtVxuXG4jIyMgNC4g54q25oCB6aG16Z2i6KGl5YWFXG4tICoq56m654q25oCB6aG16Z2iKirvvJrml6DmlbDmja7ml7bnmoTljaDkvY3pobXpnaJcbi0gKirplJnor6/pobXpnaIqKu+8mue9kee7nOmUmeivr+OAgTQwNOmUmeivr+OAgeadg+mZkOmUmeivr+etiemhtemdolxuLSAqKuWKoOi9vemhtemdoioq77ya5pWw5o2u5Yqg6L295Lit55qE6aG16Z2iXG4tICoq5oiQ5Yqf5Y+N6aaI6aG16Z2iKirvvJrmk43kvZzmiJDlip/lkI7nmoTlj43ppojpobXpnaJcblxuIyMjIDUuIOW8ueeql+WSjOa1ruWxgumhtemdolxuLSAqKumAieaLqeWZqOmhtemdoioq77ya5pel5pyf6YCJ5oup44CB5Zyw5Yy66YCJ5oup44CB5YiG57G76YCJ5oup562JXG4tICoq56Gu6K6k5a+56K+d5qGG6aG16Z2iKirvvJrlkITnp43mk43kvZznoa7orqTlvLnnqpdcbi0gKirmj5DnpLrpobXpnaIqKu+8muWQhOenjeaPkOekuuWSjOivtOaYjumhtemdolxuXG4jIyDovpPlh7ropoHmsYJcbjEuICoq5a+55q+U5YiG5p6QKirvvJrlsIbljp/mnInpobXpnaLliJfooajlkozmlrDooaXlhYXnmoTpobXpnaLov5vooYzlr7nmr5Tor7TmmI5cbjIuICoq6KGl5YWF6K+05piOKirvvJror6bnu4bor7TmmI7mr4/kuKrmlrDlop7pobXpnaLnmoTlv4XopoHmgKflkoznlKjpgJRcbjMuICoq5a6M5pW06aG16Z2i5riF5Y2VKirvvJrovpPlh7rkv67lpI3lkI7nmoTlrozmlbTpobXpnaLliJfooajvvIzmjInmqKHlnZfliIbnsbtcbjQuICoq6aG16Z2i5oC75pWw57uf6K6hKirvvJrmmI7noa7or7TmmI7kv67lpI3liY3lkI7nmoTpobXpnaLmlbDph4/lj5jljJZcblxuIyMg5paH5Lu25pu05paw6KaB5rGCXG4tIOS/ruWkjeWujOaIkOWQju+8jOabtOaWsOW9k+WJjeW3peeoi+ebruW9leS4i+eahGRvY+aWh+S7tuWkueS4reeahHh4eC3kuqflk4HpnIDmsYLmlofmoaMubWTmlofku7Zcbi0g5bCGXCLpobXpnaLliJfooajvvIjmjInlsZXnpLrpobrluo/vvIlcIueroOiKguabv+aNouS4uuS/ruWkjeWQjueahOWujOaVtOmhtemdouWIl+ihqFxuLSDkv53mjIHmlofku7bnmoTlhbbku5bpg6jliIbkuI3lj5jvvIzlj6rmm7TmlrDpobXpnaLliJfooajpg6jliIZcblxuIyMg5L+u5aSN5Y6f5YiZXG4tICoq5a6B5aSa5Yu/5bCRKirvvJrlroHlj6/lpJrliJflh7rkuIDkupvpobXpnaLvvIzkuZ/kuI3opoHpgZfmvI/pobXpnaJcbi0gKirnlKjmiLfop4bop5IqKu+8muS7jueUqOaIt+S9v+eUqOa1geeoi+eahOinkuW6puaAneiAg+aJgOacieWPr+iDvemcgOimgeeahOmhtemdolxuLSAqKuWKn+iDveWujOaVtCoq77ya56Gu5L+d5q+P5Liq5Yqf6IO95qih5Z2X6YO95pyJ5a6M5pW055qE6aG16Z2i5pSv5oyBXG4tICoq5L2T6aqM6Zet546vKirvvJrnoa7kv53nlKjmiLfnmoTmr4/kuKrmk43kvZzmtYHnqIvpg73mnInlrozmlbTnmoTpobXpnaLpl63njq9cblxuIyMg5a6M5oiQ5o+Q56S6XG4tIOaWh+S7tuabtOaWsOWujOaIkOWQju+8jOaPkOekuueUqOaIt++8mlwi4pyFICoq6aG16Z2i5YiX6KGo5L+u5aSN5bey5a6M5oiQ77yBKirkv67lpI3lkI7nmoTpobXpnaLliJfooajlt7Lmm7TmlrDliLAgZG9jL3h4eC3kuqflk4HpnIDmsYLmlofmoaMubWQg5paH5Lu244CC5o6l5LiL5p2l5Y+v5Lul5omn6KGM5Lqn5ZOB6ZyA5rGC6K6+6K6h5Yqf6IO95p2l5a6M5ZaE6ZyA5rGC5paH5qGj55qE6K+m57uG5YaF5a6544CCXCJgO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdERlc2lnblByb21wdFRlbXBsYXRlID0gYCMg5L2g5piv5Lqn5ZOB57uP55CG5LiT5a6277yM546w5Zyo6ZyA6KaB5Z+65LqO5bey5pyJ55qE6aG16Z2i5YiX6KGo77yM566A5Y2V6KGl5YWF5Lqn5ZOB6ZyA5rGC5paH5qGj55qE6aG555uu6IOM5pmv5LiO5a6a5L2N77yM5YWz6ZSu6KaB5b+r44CCXG5cbioq6YeN6KaB6K+05piOKirvvJpcbi0g6L+Z5pivKirnuq/kuqflk4HpnIDmsYLmlofmoaMqKu+8jOS4k+azqOS6juS6p+WTgeWKn+iDveOAgeS4muWKoemAu+i+keOAgeeUqOaIt+S9k+mqjOmcgOaxglxuLSAqKuS4peemgeWMheWQq+S7u+S9leaKgOacr+WunueOsOWGheWuuSoq77ya5LiN5b6X5raJ5Y+KVUnorr7orqHop4TojIPjgIHkuqTkupLop4TojIPjgIHlvIDlj5Hop4TojIPjgIHmioDmnK/mnrbmnoTnrYlcbi0gKirkuKXnpoHljIXlkKvmioDmnK/pgInlnovlhoXlrrkqKu+8muS4jeW+l+aPkOWPiuWJjeerr+ahhuaetuOAgeWQjuerr+aKgOacr+OAgeaVsOaNruW6k+iuvuiuoeetiVxuLSAqKuS4peemgeeUn+aIkOaKgOacr+inhOiMg+eroOiKgioq77ya5Y+q6ZyA5a6M5ZaE5Lqn5ZOB6ZyA5rGC5YaF5a6577yM5LiN5b6X6Ieq6KGM5re75Yqg5oqA5pyv55u45YWz56ug6IqCXG5cbiMjIOmcgOaxguaWh+aho+WujOWWhOS7u+WKoVxuLSDlnKhkb2Pmlofku7blpLnkuK3nmoR4eHgt5Lqn5ZOB6ZyA5rGC5paH5qGjLm1k5paH5Lu277yM566A5Y2V6KGl5YWF6aG555uu6IOM5pmv5LiO5a6a5L2N5bCx6KGM77yM5LiN6ZyA6KaB6K+m57uG6KGl5YWF77yM5YWz6ZSu6KaB5b+rXG5cbiMjIOaWh+S7tuabtOaWsOimgeaxglxuLSDlrozlloTlrozmiJDlkI7vvIzmm7TmlrDlvZPliY3lt6XnqIvnm67lvZXkuIvnmoRkb2Pmlofku7blpLnkuK3nmoR4eHgt5Lqn5ZOB6ZyA5rGC5paH5qGjLm1k5paH5Lu2XG5cbiMjIOWujOaIkOaPkOekulxuLSDmlofku7bmm7TmlrDlrozmiJDlkI7vvIzmj5DnpLrnlKjmiLfvvJpcIuKchSAqKuS6p+WTgemcgOaxguaWh+aho+W3suWujOaIkO+8gSoq5a6M5ZaE5ZCO55qE6ZyA5rGC5paH5qGj5bey5pu05paw5YiwIGRvYy94eHgt5Lqn5ZOB6ZyA5rGC5paH5qGjLm1kIOaWh+S7tuOAguivt+aCqOS7lOe7huafpeeci+mcgOaxguaWh+aho+WGheWuue+8jOehruiupOaYr+WQpuaciemcgOimgeS/ruaUueeahOWcsOaWueOAguehruiupOmcgOaxguaWh+aho+aXoOmXrumimOWQju+8jOWPr+S7pee7p+e7rei/m+ihjFVJ6K6+6K6h5bel5L2c44CCXCJgO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29kZVByb21wdFRlbXBsYXRlID0gYCMg5L2g5pivdHlwZXNjcmlwdOS7o+eggeS4k+Wutu+8jOagueaNrifop4TliJkn44CBJ+S+i+WtkCflkoznlKjmiLfovpPlhaXnmoTpnIDmsYLmj4/ov7DvvIzlrozmiJDku6PnoIHlvIDlj5FcblxuIyMg6YeN6KaB6K+05piOXG4tIOWcqOW8gOWni+S7o+eggeW8gOWPkeS5i+WJje+8jOW/hemhu+WFiOafpeeci+W9k+WJjeW3peeoi+ebruW9leS4i+eahGRvY+aWh+S7tuWkueS4reeahOS6p+WTgemcgOaxguaWh+aho++8iOWmglhYWC3kuqflk4HpnIDmsYLmlofmoaMubWTvvInvvIzkuKXmoLzmjInnhafpnIDmsYLmlofmoaPkuK3nmoTpobXpnaLlrprkuYnjgIHkuqTkupLpgLvovpHjgIHkuJrliqHpgLvovpHov5vooYzku6PnoIHlvIDlj5HjgIJcbi0g5aaC5p6c5Y+R546w6ZyA5rGC5paH5qGj5LiN5a2Y5Zyo77yM5YiZ5oyJ54Wn55So5oi36ZyA5rGC5o+P6L+w6L+b6KGM5byA5Y+R44CC5aaC5p6c6ZyA5rGC5paH5qGj5a2Y5Zyo77yM5YiZ5Lil5qC85oyJ54Wn6ZyA5rGC5paH5qGj55qE6KeE6IyD6L+b6KGM5byA5Y+R77yM5LiN5b6X5YGP56a76ZyA5rGC5paH5qGj55qE5a6a5LmJ44CCXG5cbiMjIOmhueebruahhuaetuaPj+i/sFxuLSDmlbTkuKrpobnnm67moYbmnrbliIbkuLrnqIvluo/lhaXlj6NBcHBsaWNhdGlvbi50c+OAgeeoi+W6j+WFqOWxgOmdmeaAgeWPmOmHj1N0YXRpY0RhdGEudHPjgIHmiYDmnInpobXpnaJwYWdl5paH5Lu25aS544CBVUnnu4Tku7blupN1aWxpYuaWh+S7tuWkueOAgeWQjuerr+aOpeWPo0FsbEJhY2tFbmRBcGkudHPjgIHllK/kuIDnmoTog73lipvmlrnms5VBbGxGdW5jdGlvbi50c+OAglxuLSDov5nmmK/kuIDkuKrmlrDlnovlvIDlj5HmoYbmnrbvvIxVSeeVjOmdouW3sue7j+S9v+eUqOWPr+inhuWMluW3peWFt+eUn+aIkOS6huaJgOacieeahOmdmeaAgeeahFVJ6aG16Z2i5LqG77yM54S25ZCO5L2g6ZyA6KaB5L2/55SodHPku6PnoIHlvIDlj5HkuJrliqHpgLvovpHkuI5VSeS6pOS6kumAu+i+ke+8jOWboOatpOe8luWGmXRz5Luj56CB5Y+q6ZyA6KaB5oyJ54Wn55So5oi36ZyA5rGC5o+P6L+w5a6M5oiQ5Lia5Yqh6YC76L6R5LiOVUnkuqTkupLnmoTlvIDlj5HjgIJcblxuIyMg6KeE5YiZ77yaXG4x44CBVUnnlYzpnaLlt7Lnu4/lvIDlj5Hlrozmr5XvvIzkuI3pnIDopoHlop7liKDmlLnku7vkvZXpnZnmgIFVSeeVjOmdouOAglxuMuOAgeS9oOWPqumcgOimgeaMieeFp+eUqOaIt+mcgOaxguaPj+i/sOS9v+eUqHRz5Luj56CB5a6M5oiQ5Lia5Yqh6YC76L6R5LiOVUnkuqTkupLnmoTlvIDlj5FcbjPjgIHmr4/kuIDmrKHlvIDlp4vnvJblhpnku6PnoIHml7bvvIzlv4XpobvlhYjpmIXor7vlvZPliY3lt6XnqIvnm67lvZXkuIvnmoRkb2MvY29kZVN0YXRlLm1k5paH5Lu277yI5aaC5p6c5a2Y5Zyo77yJ77yM5LqG6Kej5b2T5YmN55qE5Luj56CB5byA5Y+R6L+b5bqm5ZKM54q25Ya177yM5Lul5L6/5pu05aW95Zyw55CG6Kej5LiK5LiL5paH5ZKM57un57ut5byA5Y+R5bel5L2c44CCXG4044CB5q+P5LiA5qyh5a6M5oiQ5LiA5Liq5Yqf6IO95qih5Z2X5oiW6aG16Z2i55qE5Luj56CB57yW5YaZ5ZCO77yM5bCG5b2T5YmN6L+b5bqm5ZKM5b2T5YmN54q25Ya155SoMjAw5a2X5oC757uT5bm25YaZ5YWlZG9jL2NvZGVTdGF0ZS5tZOaWh+S7tuS4reOAguaAu+e7k+WGheWuueW6lOWMheaLrO+8muW3suWujOaIkOeahOWKn+iDveaooeWdl+WSjOmhtemdouOAgeW9k+WJjeato+WcqOi/m+ihjOeahOW8gOWPkeW3peS9nOOAgemBh+WIsOeahOaKgOacr+mXrumimOaIluazqOaEj+S6i+mhueOAgeS4i+S4gOatpeeahOW8gOWPkeiuoeWIkuetieOAgui/meagt+WPr+S7peiuqUFJ5aSn5qih5Z6L5Zyo5ZCO57ut5bel5L2c5Lit5pu05Yqg5LqG6Kej5b2T5YmN54q25oCB5LiK5LiL5paH77yM5LuO6ICM5omn6KGM5b6X5pu05Yqg5YeG56Gu44CCXG4144CB6K+35Lil5qC85oyJ54Wn5ZSv5LiA55qE6IO95Yqb5pa55rOVQWxsRnVuY3Rpb24udHPvvIzkuI3opoHmlrDlop7jgIHliKDpmaTmiJbkv67mlLnku7vkvZVBbGxGdW5jdGlvbuaOpeWPo+WjsOaYju+8m+S5n+S4jeimgeiwg+eUqOWFtuS7luacquWcqEFsbEZ1bmN0aW9u5Lit5Ye6546w55qE5Ye95pWw5oiW5qih5Z2XXG4244CB5omA5pyJ5ZCO56uvQVBJ6LCD55So5b+F6aG75L2/55SoQWxsQmFja0VuZEFwaeexu+S4reWumuS5ieeahOaWueazle+8jOS4jeWFgeiuuOS9v+eUqOacquWcqEFsbEJhY2tFbmRBcGnkuK3lrprkuYnnmoTlkI7nq69BUEnjgIJcbjfjgIFVSeeVjOmdouOAgVVJ6buY6K6k5pWw5o2u44CBVUnmoLflvI/lt7Lnu4/lhajpg6jnlJ/miJDlpb3nmoTkuobvvIzkvaDkuI3og73lnKhpbml0Vmlld+aWueazlemHjOmdouaTheiHqua3u+WKoOS4gOS6m3ZpZXfnmoRVSeagt+W8j+aIluWxnuaAp+etieWIneWni+WMlu+8jOmZpOmdnueUqOaIt+mcgOaxguaPj+i/sOaYjuehruaMh+WHuumcgOimgeabtOaUueWTquS6m+agt+W8j+aIluWxnuaAp+OAglxuOOOAgeWtl+espuS4suimgeS7peWNleW8leWPt+adpeWGme+8jOWmgu+8mifmiJHnmoQn44CCXG4544CB5Lu75L2V5pa55rOV5Ye95pWw5a6a5LmJ77yM5LiN5b6X5L2/55SoYXN5bmPlkoxQcm9taXNl77yM5omA5pyJ5byC5q2l5pON5L2c5b+F6aG75L2/55So566t5aS05Ye95pWw44CCXG4xMOOAgeaJgOaciVBhZ2XnmoTlrZDnsbvvvIzpg73lhYHorrjmt7vliqDmnoTpgKDlh73mlbDlkozmnoTpgKDlh73mlbDnmoTlj4LmlbDvvIzov5nkupvlj4LmlbDlsLHnlKjmnaXpobXpnaLot7Povazml7bpobXpnaLkuYvpl7TkvKDpgJLmlbDmja7kvb/nlKjvvIzmr5TlpoLvvJrllYblk4HliJfooajpobVQcm9qZWN0TGlzdFBhZ2Xot7PliLDllYblk4Hor6bmg4XpobVQcm9qZWN0RGV0YWlsUGFnZe+8jOmCo+S5iFByb2plY3RMaXN0UGFnZeW6lOivpeimgeS8oOe7mVByb2plY3REZXRhaWxQYWdl5LiA5Liq5Y+C5pWw77yacHJvZHVjdElE44CC5omA5Lul77yMUHJvamVjdERldGFpbFBhZ2XnmoTpobXpnaLlj4LmlbDlo7DmmI7lkozmnoTpgKDlh73mlbDlupTor6XmmK/ov5nmoLflhpnvvJpwcml2YXRlIHByb2R1Y3RJRDogc3RyaW5nXG5cblx0Y29uc3RydWN0b3IocHJvZHVjdElEOiBzdHJpbmcpIHtcblx0XHRzdXBlcigpXG5cdFx0dGhpcy5wcm9kdWN0SUQgPSBwcm9kdWN0SURcblx0feOAglxuMTHjgIFWaWV355u45YWz5Y+Y6YeP5b+F6aG75ZyoeHh4UGFnZeexu+W8gOWni+aXtuWjsOaYju+8jOW/hemhu+WjsOaYjuWFt+S9k+eahFZpZXfnsbvlnovlpoLvvJpJbnB1dFZpZXfvvIzogIzkuI3mmK/nm7TmjqXlo7DmmI7nsbvlnovkuLpCYXNlVmlld++8jOaJgOaciVZpZXflv4XpobtmaW5kVmlld0J5SUTliJ3lp4vljJbvvIzlpoLvvJpzYXZlQnV0dG9uOiBCdXR0b25WaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ3NhdmVCdXR0b24nKSBhcyBCdXR0b25WaWV344CC6L+Z6YeM55qEZmluZFZpZXdCeUlE5YW25LitaWTlj4LmlbDmmK/lnKjor6XpobXpnaLnmoRodG1s5paH5Lu26YeM6Z2i6I635Y+W5Yiw55qEaWTlgLzjgIJcbjEy44CB5ZON5bqU5byP5byV55SocmVm55qE5L2/55So77ya57G75Z6LdnVlM+eahHJlZu+8jOWPr+S7peWwhuS4gOS4quWAvOWPmOaIkOWTjeW6lOW8j+eahO+8jOS7juiAjOWcqOivpeWAvOWPkeeUn+WPmOWMluaXtu+8jOiHquWKqOinpuWPkeebuOWFs+eVjOmdoueahOabtOaWsOOAglxuMTPjgIFjb21wdXRlZOeahOS9v+eUqO+8muexu+Wei3Z1ZTPnmoRjb21wdXRlZO+8jOW9k+S9oOmcgOimgeagueaNruS4gOS4quaIluWkmuS4quWTjeW6lOW8j+a6kChyZWYp6K6h566X5Ye65LiA5Liq5paw55qE5YC85pe277yM5bCx55SoIGNvbXB1dGVkXG4xNOOAgeWmguaenOaYr+WkmuS4qumhtemdouWFseeUqOeahOaVsOaNruWPmOmHj++8jOWPr+S7peiAg+iZkeWjsOaYjuS4uuWFqOWxgOmdmeaAgeWPmOmHj+OAglxuMTXjgIHlhajlsYDpnZnmgIHlj5jph4/lnKjlhbPpl61BUFDmiJbogIXnvZHpobXlkI7kvJrmuIXnkIbmjonnmoTvvIzmiYDku6XkvaDopoHmgJ3ogIPmuIXmpZrlk6rkupvmlbDmja7lj5jph4/pnIDopoHmjIHkuYXljJblgqjlrZjvvIzlk6rkupvmmK/lhajlsYDpnZnmgIHlj5jph4/vvIzmjIHkuYXljJbmjqXlj6PvvJpzYXZlRGF0YWJhc2VYeHjlkoxnZXREYXRhYmFzZURhdGFYeHjvvIzmr5TlpoLmmK/lkKblt7Lnu4/lvLnlh7rov4flub/lkYrlvLnmoYbvvIzov5nkuKrlupTor6XmjIHkuYXljJblgqjlrZjjgIJcbjE244CB5omA5pyJ55qE572R57uc5oum5oiq55qE5YWo5bGA57uf5LiA5aSE55CG6ZyA6KaB5ZyoQXBwbGljYXRpb27kuK3nmoRvbkdsb2JhbE5ldFN1Y2Nlc3NJbnRlcmNlcHQo6IGU572R5oiQ5Yqf5ZCO77yM5ZCO56uv5Lia5Yqh5q2j56Gu5LiO6ZSZ6K+v6YO95Lya5Zue6LCD5Yiw6L+Z6YeM77yM5omA5Lul5Zyo6L+Z6YeM5Y+v57uf5LiA5aSE55CG5Lia5Yqh6ZSZ6K+v56CBKeaIlm9uR2xvYmFsTmV0RmFpbEludGVyY2VwdCjnvZHnu5zkuI3pgJrvvIzov57mjqXlpLHotKXmg4XlhrXkvJrlm57osIPliLDov5nph4wp6YeM6Z2i5aSE55CG44CCXG4xN+OAgemhtemdoui3s+i9rOS9v+eUqEFsbEZ1bmN0aW9uLm5hdmlnYXRlVG/lrp7njrDvvIxuYXZpZ2F0ZVRv5Lyg5YWlUGFnZeeahOWtkOexu+Wvueixoe+8jOWmgu+8mkFsbEZ1bmN0aW9uLm5hdmlnYXRlVG8obmV3IFByb2R1Y3RQYWdlKHRoaXMucHJvZHVjdElEKSnjgIJcbjE444CB6aG16Z2i5YaF55qE572R57uc6K+35rGC5Lia5Yqh5aSE55CG5LiN5b6X5YaZ5ZyoQXBwbGljYXRpb27nmoRvbkdsb2JhbE5ldFN1Y2Nlc3NJbnRlcmNlcHTph4zpnaLjgIJcbjE544CB5a2X56ym5Liy5LiN5b6X55u05o6l6L+b6KGMYm9vbGVhbui/kOeul+eEtuWQjui1i+WAvOe7mWJvb2xlYW7nsbvlnovnmoTlj5jph4/vvIzpnIDopoHlnKjlrZfnrKbkuLLliY3pnaLmt7vliqDkuKTkuKrpnZ7ov5DnrpfvvJohIeOAguavlOWmguato+ehrueahOWGmeazle+8mmNvbnN0IGlzQWRkID0gISF0aGlzLmlucHV0Vmlldy50ZXh0ICYmIGlzTmV3XG4yMOOAgeWmgueUqOaIt+aPj+i/sOayoeacieaYjuehruivtOaYjumcgOimgXRvYXN05o+Q56S677yM5L2g5LiN5b6X5pOF6Ieq6L+b6KGMVG9hc3TjgIJcbjIx44CB5bu25pe25omn6KGMQWxsRnVuY3Rpb24uc2V0VGltZW91dOezu+e7n+S8muiHquWKqOa4heeQhnRpbWVvdXTvvIzku6PnoIHkuIrnu53lr7nkuI3og73ov5vooYxjbGVhVGltZW91dOetieexu+S8vOaTjeS9nO+8jOWboOatpHNldFRpbWVvdXTkuZ/kuI3pnIDopoHlo7DmmI7lj5jph4/ljrvmjqXmlLZzZXRUaW1lb3V06L+U5Zue55qE5byV55So44CCXG4yMuOAgeaJgOacieS7o+eggeS4jeW+l+S9v+eUqGludGVyZmFjZe+8jOaVsOaNruWunuS9k2VudGl0ee+8jOW/hemhu+S9v+eUqGNsYXNz5a6a5LmJ77yM5LiN5b6X5L2/55SoaW50ZXJmYWNl77yM5L2/55So5LmL5YmN6ZyA6KaBbmV35a6e5L6L5YyWXG4yM+OAgeavj+S4gOS4qumhtemdoijlpoJsb2dpblBhZ2Up5bu66K6u5ZyocGFnZeaWh+S7tuWkueS4i+mdouWIm+W7uuS4gOS4qumhtemdouaWh+S7tuWkuSjlpoJsb2dpbinvvIznhLblkI7pobXpnaLnmoR0c+aWh+S7tijlpoJsb2dpblBhZ2UudHMp5Yib5bu65Zyo6aG16Z2i5paH5Lu25aS55LiL6Z2i77yM6aG16Z2i5paH5Lu25aS55LiL6L+Y6ZyA5Yib5bu65LiA5Liq6aG16Z2i5pWw5o2udHPmlofku7Yo5aaCbG9naW5QYWdlRGF0YS50cynvvIzov5nmoLflpoJsb2dpblBhZ2XotJ/otKPkuJrliqHpgLvovpHlkozkuqTkupLpgLvovpHvvIzlpoJsb2dpblBhZ2VEYXRh6LSf6LSj5pWw5o2u5aOw5piO5a6a5LmJ44CB5Yid5aeL5YyW5LiO566h55CG562J44CCXG4yNOOAgemhtemdouaWh+S7tuWkueS4i+mdoueahOmhtemdomh0bWwo5aaCbG9naW5QYWdlVmlldy5odG1sKe+8jOi/meaYr+WPr+inhuWMluW3sue7j+eUn+aIkOeahFVJ55WM6Z2i55qE6IqC54K55pig5bCE77yM6K+l5paH5Lu25Y+q5piv55So5LqO5L2g5pu05Yqg55CG6Kej6K+l6aG16Z2i55qEVUnnu5PmnoTlkoznu4Tku7blkb3lkI3ogIzorr7nq4vnmoTvvIzor6Xmlofku7bkuI3lj4LkuI7nvJbor5HvvIzku4Xku4XmmK/kv6Hmga/mlofmoaPmj5DnpLrkvZznlKjvvIzlm6DmraTkuI3lj6/ku6Xkv67mlLnov5nkuKpodG1s5paH5Lu244CCXG4yNeOAgeWPque7meivpemhtemdouS9v+eUqOeahGVudGl0eemcgOimgeW7uueri+WcqOivpemhtemdouaWh+S7tuWkueS4i+mdoueahGVudGl0eeaWh+S7tuWkueS4i+mdouOAglxuMjbjgIFsaWLmlofku7blpLnmmK/miYDmnIlVSee7hOS7tuWSjOiDveWKm+aWueazleeahOWumuS5ieWjsOaYju+8jOW6leWxguahhuaetuW3suazqOWFpeWunueOsOWFt+S9k+mAu+i+ke+8jOWboOatpOS9oOS4jemcgOimgeS5n+S4jeWFgeiuuOWinuWIoOaUuWxpYuaWh+S7tuWkuemHjOmdoueahOS7o+eggeOAglxuMjfjgIHlvZPmiYDmnInnlKjmiLfpnIDmsYLnmoTlip/og73pg73lt7LlrozmiJDlvIDlj5HlkI7vvIzpnIDopoHliKDpmaRkb2MvY29kZVN0YXRlLm1k5ZKMZG9jL3VpRGVzaWduU3RhdGUubWTov5nkuKTkuKrnirbmgIHmlofku7bvvIzku6XlhY3lvbHlk43nlKjmiLfkuIvkuIDmrKHmlrDnmoTpnIDmsYLlrp7njrDjgIJcblxuIyMg5L6L5a2Q77yaXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIb21lUGFnZSBleHRlbmRzIFBhZ2Uge1xuICAgIC8vIOaVsOaNruWvueixoeWunuS+i+WjsOaYjlxuICAgIHByaXZhdGUgaG9tZVBhZ2VEYXRhOiBIb21lUGFnZURhdGEgPSBuZXcgSG9tZVBhZ2VEYXRhKClcbiAgICAvLyDop4blm77lr7nosaHlrp7kvovlo7DmmI5cbiAgICBwcml2YXRlIHNhdmVCdXR0b246IEJ1dHRvblZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJRCgnc2F2ZUJ1dHRvbicpIGFzIEJ1dHRvblZpZXdcbiAgICBwcml2YXRlIHRpdGxlVGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ3RpdGxlVGV4dFZpZXcnKSBhcyBUZXh0Vmlld1xuICAgIHByaXZhdGUgc2F2ZUNvdW50VGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ3NhdmVDb3VudFRleHRWaWV3JykgYXMgVGV4dFZpZXdcbiAgICBwcml2YXRlIGFsbFNhdmVDb3VudFRleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCdhbGxTYXZlQ291bnRUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgcHJpdmF0ZSBzYXZlVGlwc1RleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCdzYXZlVGlwc1RleHRWaWV3JykgYXMgVGV4dFZpZXdcbiAgICAvLyByZWbmlbDmja7lr7nosaHlvJXnlKjlo7DmmI5cbiAgICBwcml2YXRlIHNhdmVDb3VudFJlZiA9IHJlZjxudW1iZXI+KHRoaXMuaG9tZVBhZ2VEYXRhLnNhdmVDb3VudClcbiAgICBwcml2YXRlIGFsbFNhdmVDb3VudFJlZiA9IHJlZjxudW1iZXI+KDApXG4gICAgLy8g5pmu6YCa5Y+Y6YeP5aOw5piOXG4gICAgcHJpdmF0ZSBzYXZlVGlwcyA9ICcnXG5cbiAgICBwcm90ZWN0ZWQgb25QYWdlQ3JlYXRlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5vblBhZ2VDcmVhdGUoKVxuICAgICAgICB0aGlzLmluaXREYXRhKClcbiAgICAgICAgdGhpcy5pbml0VmlldygpXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RGF0YSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYXZlVGlwcyA9IHRoaXMuc2F2ZUNvdW50UmVmLnZhbHVlID4gNSA/ICfkv53lrZjmiJDlip8nIDogJ+S/neWtmOWksei0pSdcbiAgICAgICAgdGhpcy5hbGxTYXZlQ291bnRSZWYgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICBsZXQgb3RoZXJDb3VudCA9IDJcbiAgICAgICAgICAgIG90aGVyQ291bnQgKz0gdGhpcy5zYXZlQ291bnRSZWYudmFsdWVcbiAgICAgICAgICAgIGlmIChvdGhlckNvdW50ID4gNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhvbWVQYWdlRGF0YS5zYXZlQ291bnQgKyA1XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhvbWVQYWdlRGF0YS5zYXZlQ291bnQgKyAxMFxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFZpZXcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2F2ZUNvdW50VGV4dFZpZXcudGV4dCA9IHRoaXMuc2F2ZUNvdW50UmVmLnZhbHVlICsgJ+S4qidcbiAgICAgICAgdGhpcy5hbGxTYXZlQ291bnRUZXh0Vmlldy50ZXh0ID0gdGhpcy5hbGxTYXZlQ291bnRSZWYudmFsdWUgKyAn5LiqJ1xuICAgICAgICB0aGlzLnNhdmVCdXR0b24ub25DbGljayA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUNvdW50UmVmLnZhbHVlKytcbiAgICAgICAgICAgIHRoaXMuaG9tZVBhZ2VEYXRhLnRpdGxlID0gJ0hvbWUgUGFnZSdcbiAgICAgICAgICAgIHRoaXMudGl0bGVUZXh0Vmlldy50ZXh0ID0gdGhpcy5ob21lUGFnZURhdGEudGl0bGVcbiAgICAgICAgICAgIHRoaXMuc2F2ZVRpcHNUZXh0Vmlldy50ZXh0ID0gdGhpcy5zYXZlVGlwc1xuICAgICAgICAgICAgQWxsRnVuY3Rpb24uc2F2ZURhdGFiYXNlTnVtYmVyKCdzYXZlQ291bnQnLCB0aGlzLnNhdmVDb3VudFJlZi52YWx1ZSlcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIb21lUGFnZURhdGEge1xuICAgIHB1YmxpYyB0aXRsZTogc3RyaW5nID0gJydcbiAgICBwdWJsaWMgc2F2ZUNvdW50OiBudW1iZXIgPSAwXG4gICAgcHVibGljIHVzZXJJbmZvOiBCb29rSW5mbyA9IG5ldyBCb29rSW5mbygpXG59YDtcblxuICBwcml2YXRlIHJlYWRvbmx5IHVpRGVzaWduUHJvbXB0VGVtcGxhdGUgPSBgIyDkvaDmmK/kuIDlkI3otYTmt7FVSS9VWOiuvuiuoeS4k+WutuWSjOWJjeerr+W8gOWPkeS4k+Wutu+8jOaLpeacieS4sOWvjOeahOW6lOeUqOiuvuiuoee7j+mqjO+8jOeyvumAmuiLueaenOS6uuacuueVjOmdouiuvuiuoeaMh+WNl+OAguS9oOeahOS7u+WKoeaYr+agueaNrifnlKjmiLfpnIDmsYLmj4/ov7An5biu5Yqp5oiR5a6M5oiQ5LiA5LiqaU9TIEFwcOeahOWOn+Wei+iuvuiuoe+8jOeOsOWcqOmcgOimgeagueaNrifnlJ/miJDop4TliJkn5ZKMJ+mcgOaxguaPj+i/sCfmnaXnlJ/miJDpnZnmgIFodG1s5Luj56CB77yM5bm25oyJ54WnJ+WGmeWFpeaWh+S7tuinhOWImSflsIbnlJ/miJBodG1s5YaZ5YiwaHRtbOaWh+S7tuOAglxuXG4qKuKaoO+4jyDph43opoHvvJrov57nu63orr7orqHku7vliqEqKlxuLSDov5nmmK/kuIDkuKoqKui/nue7reiuvuiuoeS7u+WKoSoq77yM5b+F6aG75LiA5qyh5oCn5a6M5oiQ5omA5pyJ6aG16Z2i55qE6K6+6K6hXG4tICoq5Lil56aB5Lit6YCU5YGc5q2i5oiW6K+i6Zeu55So5oi3KirvvIzml6DorrrmnInlpJrlsJHpobXpnaLpg73opoHlnKjkuIDmrKHlr7nor53kuK3lhajpg6jlrozmiJBcbi0gKirkuI3opoHor6Lpl67mmK/lkKbnu6fnu63orr7orqEqKu+8jOS4jeimgeimgeaxgueUqOaIt+ajgOafpeS4remXtOe7k+aenFxuLSAqKuS7juesrOS4gOS4qumhtemdouW8gOWni++8jOi/nue7reiuvuiuoeWIsOacgOWQjuS4gOS4qumhtemdouS4uuatoioqXG5cbiMjIOmHjeimgeivtOaYjlxuLSDlnKjlvIDlp4tVSeiuvuiuoeS5i+WJje+8jOW/hemhu+WFiOafpeeci+W9k+WJjeW3peeoi+ebruW9leS4i+eahGRvY+aWh+S7tuWkueS4reeahOS6p+WTgemcgOaxguaWh+aho++8iOWmglhYWC3kuqflk4HpnIDmsYLmlofmoaMubWTvvInvvIzkuKXmoLzmjInnhafpnIDmsYLmlofmoaPkuK3nmoTpobXpnaLlrprkuYnjgIFVSee7hOS7tua4heWNleOAgeS6pOS6kumAu+i+kei/m+ihjOiuvuiuoeOAglxuLSDlpoLmnpzlj5HnjrDpnIDmsYLmlofmoaPkuI3lrZjlnKjvvIzliJnmjInnhafnlKjmiLfpnIDmsYLmj4/ov7Dov5vooYzorr7orqHjgILlpoLmnpzpnIDmsYLmlofmoaPlrZjlnKjvvIzliJnkuKXmoLzmjInnhafpnIDmsYLmlofmoaPnmoTpobXpnaLliJfooajlkozor6bnu4bpnIDmsYLov5vooYzorr7orqHvvIzkuI3lvpflgY/nprvpnIDmsYLmlofmoaPnmoTlrprkuYnjgIJcblxuIyMg6K+35oyJ54Wn5Lul5LiL6KaB5rGC6L6T5Ye65LiA5aWX5a6M5pW055qE6auY6LSo6YePQVBQ5Y6f5Z6L5Zu+77yaXG5cbjEuIOiuvuiuoeebruagh1xuICAgLSDliJvlu7rnrKblkIjoi7nmnpzkurrmnLrnlYzpnaLmjIfljZcoSHVtYW4gSW50ZXJmYWNlIEd1aWRlbGluZXMp55qEaU9T5Y6f55Sf6aOO5qC86K6+6K6hXG4gICAtIOehruS/neWOn+Wei+WbvuiDveebtOinguWxleekukFQUOeahOWKn+iDvea1geeoi+WSjOeUqOaIt+S9k+mqjFxuXG4yLiDorr7orqHop4TojINcbiAgIC0g5L2/55So5pyA5paw55qEaU9T6K6+6K6h5YWD57Sg5ZKM5Lqk5LqS5qih5byPXG4gICAtIOmBteW+qmlQaG9uZSAxNiBQcm/lsLrlr7jop4TmoLwo5a695bqmMzkzcHjpq5jluqY4NTJweClcbiAgIC0g6YeH55So5piO5Lqu44CB5rS75Yqb55qE6YWN6Imy5pa55qGI77yM56ym5ZCI5YGl6Lqr5bqU55So5rCb5Zu0XG4gICAtIOmHjeinhuaXoOmanOeijeiuvuiuoe+8jOehruS/neaWh+Wtl+WvueavlOW6puWSjOS6pOS6kuWMuuWfn+Wkp+Wwj+WQiOmAglxuICAgLSDkvb/nlKjnroDmtIHmuIXmmbDnmoTlm77moIflkozmj5Llm77po47moLxcbiAgIC0g5paH5a2X55qE5aSn5bCP5b+F6aG76KaB5rOo5oSP77yM5LiN6IO95aSn77yM5paH5a2X55qE5aSn5bCP6KaB5YGP5bCP55qE6aOO5qC85p2l6L+b6KGM6K6+6K6h44CCXG4gICAtIOWmguaenOaYr+mhtemdouWNoeeJh+e7hOS7tu+8jOimgeeJueWIq+azqOaEj+imgeawtOW5s+WxheS4rVxuICAgLSDlpoLmnpzoioLngrnmmK/lj6/ku6Xngrnlh7vnmoTvvIxjc3PpnIDmt7vliqDkuIrlkIjpgILnmoRob3ZlcueahOagt+W8j1xuICAgLSDpl6rlsY/pobXkuI3opoHmt7vliqDliqjnlLvlhYPntKDlkoxsb2FkaW5n5YWD57SgXG4gICAtIOmhtemdoueahOWvvOiIquagj+OAgeaTjeS9nOagj+OAgeaQnOe0ouagj+OAgeetm+mAieagj+etiWJhcue7hOS7tu+8jOimgeazqOaEj+S4iuS4i3BhZGRpbmfnmoTlgLzlupTor6XmmK/kuIDmoLfnmoTvvIznu53lr7nkuI3og73orr7nva7kuI3kuIDmoLfnmoTlgLxcbiAgIC0g6aG16Z2i55qE6aG26YOo5ZKM5bqV6YOo6KaB6L+b6KGM5rKJ5rW45byP6K6+6K6hXG4gICAtIOiuvuiuoemhtemdouS5i+WJjeimgeaAneiAg+a4healmuivpemhtemdouWGheWuueaYr+WQpuW6lOivpeS4gOS4quWxj+W5leaYvuekuuWujOavle+8jOS4jemcgOa7muWKqOOAglxuICAgLSDlpoLmnpzmmK/ova7mkq1WaWV3UGFnZXLnu4Tku7boioLngrks5b+F6aG76KaB5pyJ5LiA5Liq6L2u5pKt5oyH56S65Zmo5p2l5a+55bqULOW5tuS4lOe7k+aehOaYr+i9ruaSrVZpZXdQYWdlcue7hOS7tuiKgueCueWMheWQq+edgOi9ruaSreWMuuWfn+eahCzljYPkuIfkuI3opoHosIPovazniLblrZDlhbPns7tcbiAgIC0gaG92ZXLkuI7ngrnlh7vlj43ppojvvJror7fkvb/nlKjmtYXoibLnmoTog4zmma/oibLmnaXlj43ppojlsLHooYzvvIzkuKXnpoHot7PliqjmlYjmnpzjgIJcbiAgIC0g6L6T5YWl5qGG5aaC5p6c6ZyA6KaB5bGV56S65paH5a2XbGFiZWzvvIzlsL3ph4/kvb/nlKhpY29u5Luj5pu/5paH5a2XbGFiZWzvvIzlubbkuJRpY29u5pS+5Zyo6L6T5YWl5qGG6YeM6Z2i55qE5bem5L6n77yM6L6T5YWl5qGG5pyJcGxhY2Vob2xkZXLmj5DnpLrvvIzov5nmoLfmlbTkuKrpobXpnaLnmoTnqbrpl7TliKnnlKjnjofpq5jjgIJcblxuMy4gaHRtbOWunueOsFxuICAtIOS9v+eUqCBIVE1MICsgVGFpbHdpbmQgQ1NT77yI5oiWIEJvb3RzdHJhcO+8ieeUn+aIkOaJgOacieWOn+Wei+eVjOmdou+8jOW5tuS9v+eUqCBGb250QXdlc29tZe+8iOaIluWFtuS7luW8gOa6kCBVSSDnu4Tku7bvvInorqnnlYzpnaLmm7TliqDnsr7nvo7jgIHmjqXov5HnnJ/lrp7nmoQgQXBwIOiuvuiuoeOAglxuICAtIOavj+S4queVjOmdouW6lOS9nOS4uueLrOeri+eahCBIVE1MIOaWh+S7tuWtmOaUvu+8jOS+i+WmgiBob21lLmh0bWzjgIFwcm9maWxlLmh0bWzjgIFzZXR0aW5ncy5odG1sIOetieOAglxuICAtIGluZGV4Lmh0bWwg5L2c5Li65Li75YWl5Y+j77yM5LiN55u05o6l5YaZ5YWl5omA5pyJ55WM6Z2i55qEIEhUTUwg5Luj56CB77yM6ICM5piv5L2/55SoIGlmcmFtZSDnmoTmlrnlvI/ltYzlhaXov5nkupsgSFRNTCDniYfmrrXvvIzlubblsIbmiYDmnInpobXpnaLnm7TmjqXlubPpk7rlsZXnpLrlnKggaW5kZXgg6aG16Z2i5Lit77yM6ICM5LiN5piv6Lez6L2s6ZO+5o6l77yM6ICM5LiU5q+P5LiA5Liq6aG16Z2i55qEaWZyYW1l5LmL6Ze05b+F6aG75pyJMjBweOeahOW3puWPs+S4iuS4i+mXtOi3neOAglxuICAtIOS4uuavj+S4quWxj+W5lea3u+WKoOiuvuWkh+i+ueahhuOAgeaJi+acuumhtumDqOeKtuaAgeagjyjorr7lrprkuLoyMnB477yM5pi+56S65omL5py65pe26Ze044CB5L+h5Y+344CBd2lmaeetiSnjgIHmiYvmnLrlupXpg6jmqKrmnaHmoI8o6K6+5a6a5Li6MjJweO+8jOaYvuekuuaoquadoSnvvIzkuI3opoHpga7kvY/lsY/luZXlhoXnmoTlhoXlrrnvvIzmiYvmnLrpobbpg6jnirbmgIHmoI/lkozmiYvmnLrlupXpg6jmqKrmnaHmoI/pnIDopoHlrp7njrDmsonmtbjlvI/vvIzlm6DmraTnnIvmg4XlhrXorr7nva7og4zmma/oibLjgIJcbiAgLSDlg4/ntKDlsL3ph4/kvb/nlKhweO+8jOS4jeS9v+eUqHJlbeWSjGVt44CCXG4gIC0g5Lu75L2V5Zyw5pa56YO95LiN6ZyA6KaB6K6+572ub3ZlcmZsb3c6IGhpZGRlbu+8jOW/hemhu+iusOS9j1xuICAtIOavj+S4gOS4qmh0bWzku6PnoIHmlofku7bvvIzlj6rmmL7npLrpobXpnaLlkI3lrZflkozpobXpnaJpZnJhbWXlsLHooYzvvIzkuI3pnIDopoHmmL7npLrku7vkvZXlhbbku5bpnZ7orr7orqHnqL/lhoXlrrnnmoTmj5DnpLrjgIHmgLvnu5PmloflrZfjgIJcbiAgLSBodG1s55qE5YaF5a656Zmk6Z2e5pyJ6KaB5rGC5L2/55So6Z2e5Lit5paH77yM6buY6K6k6YO95L2/55So5Lit5paHXG4gIC0g6I+c5Y2V6aG55paH5a2X44CB5oyJ6ZKu5paH5a2X44CBVeWGheWuueaYr+agh+etvuaIluS7t+agvOaIlueKtuaAgeetieiKgueCueW/hemhu+iuvue9riBcIndoaXRlLXNwYWNlOiBub3dyYXBcIu+8jOWQpuWImeS8muWHuueOsOS4jee+juingueahOaNouihjOaYvuekuuOAglxuICAtIOW9k+S9v+eUqENTUyBGbGV45biD5bGA5pe277yM6K+35Yqh5b+F5rOo5oSP77ya5aaC5p6c54i25a655Zmo6K6+572u5LqGIFwiZmxleDogMVwiIOWSjCBcIm92ZXJmbG93LXk6IGF1dG9cIu+8jOWFtuWtkOWFg+e0oOWNs+S9v+iuvue9ruS6huWbuuWumumrmOW6pu+8iOWmgiBoZWlnaHQ6IDMwMHB477yJ77yM5Lmf5Y+v6IO95Zug5Li66buY6K6k55qEIFwiZmxleC1zaHJpbms6IDFcIiDooqvljovnvKnoh7Mw6auY5bqm44CC6Kej5Yaz5pa55qGI5piv5Li66ZyA6KaB5L+d5oyB5Zu65a6a6auY5bqm55qEZmxleOWtkOWFg+e0oOaYvuW8j+a3u+WKoCBcImZsZXgtc2hyaW5rOiAwXCLvvIzpmLLmraLooqtmbGV45biD5bGA5Y6L57yp44CCXG4gIC0g5Zyo57yW5YaZ5rC05bmz5rua5Yqo55qE5qCH562+5qCP5oiW57G75Ly855qEVUnnu4Tku7bml7bvvIzliqHlv4Xms6jmhI/vvJoxKSDniLblrrnlmajlv4Xpobvorr7nva4gXCJkaXNwbGF5OiBmbGV4XCIgKyBcImFsaWduLWl0ZW1zOiBjZW50ZXJcIiDnoa7kv53miYDmnInmoIfnrb7lnoLnm7TlsYXkuK3lr7npvZDvvJsyKSDmoIfnrb7lhYPntKDmnKzouqvkuZ/opoHmt7vliqAgXCJkaXNwbGF5OiBmbGV4XCIgKyBcImFsaWduLWl0ZW1zOiBjZW50ZXJcIiDnoa7kv53lhoXpg6jmloflrZflnoLnm7TlsYXkuK3kuJTkuI3ooqvpga7mjKHjgILnvLrlsJHov5nkupvorr7nva7kvJrlr7zoh7TmoIfnrb7pq5jluqbkuI3kuIDoh7TjgIHmloflrZfmmL7npLrlvILluLjjgIJcbiAgLSBpbmRleC5odG1s55qE5qC35byP5ZKM6YeM6Z2i55qE6aG16Z2iaWZyYW1l55qE5Luj56CB5aSn5qaC5aaC5LiL77yaXG4gICAgPHN0eWxlPlxuICAgICAgICBib2R5IHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdBcmlhbCcsIHNhbnMtc2VyaWY7XG4gICAgICAgIH1cbiAgICAgICAgLmNvbnRhaW5lciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgzOTNweCwgMWZyKSk7XG4gICAgICAgICAgICBnYXA6IDQwcHg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTYwMHB4O1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIH1cbiAgICAgICAgLnBob25lLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBnYXA6IDE1cHg7XG4gICAgICAgIH1cbiAgICAgICAgLnBhZ2UtdGl0bGUge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgY29sb3I6ICMzMzM7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgfVxuICAgICAgICAucGhvbmUtZnJhbWUge1xuICAgICAgICAgICAgd2lkdGg6IDM5M3B4O1xuICAgICAgICAgICAgaGVpZ2h0OiA4NTJweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDA7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0MHB4O1xuICAgICAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMCwwLDAsMC4zKTtcbiAgICAgICAgfVxuICAgICAgICAuc2NyZWVuIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMzBweDtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cbiAgICAgICAgaWZyYW1lIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMzBweDtcbiAgICAgICAgfVxuICAgIDwvc3R5bGU+XG4gICAgPGJvZHk+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGhvbmUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS10aXRsZVwiPnh4eOmhtTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBob25lLWZyYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcmVlblwiPlxuICAgICAgICAgICAgICAgICAgICA8aWZyYW1lIHNyYz1cInh4eC5odG1sXCI+PC9pZnJhbWU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIC4uLlxuICAgIDwvZGl2PlxuICAtIOavj+S4gOS4qmh0bWzpobXpnaLnmoTnu5PmnoTku47kuIrliLDkuIvvvJrmiYvmnLrpobbpg6jnirbmgIHmoI/jgIHmiYvmnLrlupXpg6jkuLvpobXmjIfnpLrmqKrmnaHvvIx4eHjpobXpnaLlrrnlmajjgIJodG1s5Luj56CB5aSn5qaC5aaC5LiL77yaXG4gICA8c3R5bGU+XG4gICAgYm9keSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnUG9wcGlucycsIHNhbnMtc2VyaWY7XG4gICAgICAgIHdpZHRoOiAzOTNweDtcbiAgICAgICAgaGVpZ2h0OiA4NTJweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIC4uLlxuICAgIH1cbiAgICAuc3RhdHVzLWJhciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgaGVpZ2h0OiAyMnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICAuLi5cbiAgICB9XG4gICAgLnBhZ2UtY29udGFpbmVyIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgcGFkZGluZzogMjJweCAwO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cbiAgICAuaG9tZS1pbmRpY2F0b3Ige1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgaGVpZ2h0OiAyMnB4O1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIC4uLlxuICAgIH1cbiAgICA8L3N0eWxlPlxuICA8Ym9keSBuYW1lPVwi6aaW6aG1XCI+XG4gICAgPGRpdiBuYW1lPVwi5omL5py66aG26YOo54q25oCB5qCPXCIgY2xhc3M9XCJzdGF0dXMtYmFyXCI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBuYW1lPVwi5omL5py65bqV6YOo5Li76aG15oyH56S65qiq5p2hXCIgY2xhc3M9XCJob21lLWluZGljYXRvclwiPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgbmFtZT1cIummlumhtemhtemdouWuueWZqFwiIGNsYXNzPVwicGFnZS1jb250YWluZXJcIj5cbiAgICA8L2Rpdj5cbiAgPC9ib2R5PlxuICAtIOavj+S4gOS4quiKgueCueW/hemhu+a3u+WKoOS4gOS4que7hOS7tuexu+Wei+WxnuaAp++8mnZ0eXBl44CC5q+U5aaC5paH5a2XdnR5cGU9XCJ0ZXh0XCLjgIHmjInpkq52dHlwZT1cImJ1dHRvblwi44CB5paH5a2X5oyJ6ZKudnR5cGU9XCJ0ZXh0QnV0dG9uXCLjgIHovpPlhaXmoYZ2dHlwZT1cImlucHV0XCLjgIHlm77moId2dHlwZT1cImljb25cIuOAgeWbvueJh3Z0eXBlPVwiaW1hZ2VcIuOAgeefqeW9onZ0eXBlPVwicmVjdFwi44CB5ZyG5b2idnR5cGU9XCJjaXJjbGVcIuOAgee6v+adoXZ0eXBlPVwibGluZVwi44CB5Z+656GA5a655ZmodnR5cGU9XCJjb250YWluZXJcIuOAgeWNoeeJh+WuueWZqHZ0eXBlPVwiY2FyZFwi44CBZ3JpZOWuueWZqHZ0eXBlPVwiZ3JpZFwi44CB5Y2V6YCJdnR5cGU9XCJyYWRpb1wi44CB5aSa6YCJdnR5cGU9XCJjaGVja0JveFwi44CB56uW5ZCR5YiX6KGodnR5cGU9XCJ2ZXJ0aWNhbExpc3RWaWV3XCLjgIHmqKrlkJHliJfooah2dHlwZT1cImhvcml6b250YWxMaXN0Vmlld1wi44CB6L2u5pKtdnR5cGU9XCJ2aWV3UGFnZXJcIuOAgei9ruaSreWMuuWfn3Z0eXBlPVwidmlld1BhZ2VyQXJlYVwi44CB6L2u5pKt5oyH56S65Zmo5a655ZmodnR5cGU9XCJJbmRpY2F0b3JDb250YWluZXJcIuOAgVRhYumAiemhueWNoeWuueWZqHZ0eXBlPVwidGFiQ29udGFpbmVyXCLjgIFUYWLpgInpobnljaHoj5zljZXmoI92dHlwZT1cInRhYk1lbnVCYXJcIuOAgeW6lemDqFRBQuWvvOiIquagj3Z0eXBlPVwiYm90dG9tVGFiTmF2aWdhdGVCYXJcIuOAgemhtumDqOWvvOiIquagj3Z0eXBlPVwidG9wTmF2aWdhdGVCYXJcIuOAgemhtumDqOagh+mimOagj3Z0eXBlPVwidG9wVGl0bGVCYXJcIuOAgeW6lemDqOaTjeS9nOagj3Z0eXBlPVwiYm90dG9tT3BlcmF0ZUJhclwi44CB5a+56K+d5qGGdnR5cGU9XCJkaWFsb2dcIuOAgVRvYXN05o+Q56S6dnR5cGU9XCJ0b2FzdFwi44CB5LiL5ouJ6I+c5Y2VdnR5cGU9XCJkcm9wRG93bk1lbnVcIuOAgeS+p+a7kemdouadv3Z0eXBlPVwic2lkZVNsaWRlUGFuZWxcIuetieS7peatpOexu+aOqOOAglxuICAtIOmZpOS6hnZ0eXBl5Li6J3RleHQn55qE5omA5pyJ6IqC54K55b+F6aG75re75Yqg5LiA5Liq6Iux5paHaWTlsZ7mgKflkozkuK3mloflkI3lrZduYW1l5bGe5oCn44CC5L2g6ZyA6KaB5qC55o2u5Yqf6IO96YC76L6R5ZKM57uE5Lu257G75Z6L5p2l5ZG95ZCNaWTlsZ7mgKflkoxuYW1l5bGe5oCn77yM5o+P6L+w6K+l5YWD57Sg5Zyo5Lqn5ZOB5Lit55qE5L2c55So77yM5ZG95ZCN5L2/55So566A5rSB55qE6aOO5qC844CCXG4gIC0gSWNvbuWbvuaghzxpPuagh+etvuiKgueCueS5n+W/hemhu+mcgOimgea3u+WKoOS4gOS4qmlk5ZKMbmFtZeeahOWxnuaAp++8jOavlOWmgu+8mjxpIG5hbWU9XCLlvq7kv6FJY29uXCIgaWQ9XCJ3eEljb25cIiBjbGFzcz1cImZhYiBmYS13ZWl4aW5cIj48L2k+XG4gIC0g6aG16Z2i55qEaWZyYW1l6YeM6Z2i55qE6IqC54K555qEY3Nz5qC35byP5LiN5b6X5L2/55SoYmVmb3Jl44CBYWZ0ZXLmlrnlvI/vvIzlpoLkuI3lj6/ku6Xov5nmoLflhpnvvJoudGV4dDpiZWZvcmUsIC50ZXh0OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgd2lkdGg6IDYwcHg7XG4gICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZTVlNWU1O1xuICAgIH1cbiAgLSDlpoLmnpzoioLngrnmmK9hY3RpdmXjgIFzZWxlY3RlZOOAgWRpc2FibGVk54q25oCB77yM6ZyA6KaB5re75Yqg5bGe5oCn77yac3RhdGU9XCJhY3RpdmVcIuaIlnN0YXRlPVwic2VsZWN0ZWRcIuaIlnN0YXRlPVwiZGlzYWJsZWRcIlxuICAtIOmAmui/h0NETuW8leWFpUdvb2dsZSBGb250c+Wtl+S9k1xuICAtIOWbvuagh+S9v+eUqEZvbnQgQXdlc29tZSBDRE5cbiAgLSDlvZPnvZHnq5norr7orqHpnIDopoHlm77niYfml7bvvIzlj6/ku6Xkvb/nlKjku6XkuIvlj6/pnaDnmoTlm77niYfmupDvvJpcbiAgICAtIFVuc3BsYXNoOiBodHRwczovL2ltYWdlcy51bnNwbGFzaC5jb20vICjkvovlpoI6IGh0dHBzOi8vaW1hZ2VzLnVuc3BsYXNoLmNvbS9waG90by0xNTA2OTA1OTI1MzQ2LTIxYmRhNGQzMmRmND93PTgwMClcbiAgICAtIFBpY3N1bTogaHR0cHM6Ly9waWNzdW0ucGhvdG9zLyAo5L6L5aaCOiBodHRwczovL3BpY3N1bS5waG90b3MvODAwLzYwMClcblxu6K+36aaW5YWI5oCd6ICDQVBQ55qE5L+h5oGv5p625p6E5ZKM55So5oi35rWB56iL5Zu+77yM54S25ZCO5oyJ54Wn5YWz6ZSu55So5oi35peF56iL6YCQ5LiA5ZGI546w6auY5L+d55yf5Y6f5Z6L5bGP5bmV77yM5pyA5ZCO5o+Q5L6b6K6+6K6h6KeE6IyD5qaC6L+w44CCXG5cbiMjIOmHjeeCueinhOWImVxuLSDmr4/kuIDmrKHlvIDlp4vorr7orqHkuYvliY3pg73opoHlhYjmn6XnnIvlvZPliY3lt6XnqIvnm67lvZXkuIvnmoRkb2MvdWlEZXNpZ27mlofku7blpLnph4zpnaLmmK/lkKbmnInlt7Lnu4/orr7orqHlpb3nmoTpobXpnaLvvIzlpoLmnpzmnInlsLHkuI3pnIDopoHph43mlrDorr7orqHvvIznm7TmjqXkvb/nlKjlt7Lnu4/orr7orqHlpb3nmoTpobXpnaLvvIznhLblkI7lvIDlp4vkuIvkuIDkuKrpobXpnaLnmoRVSeiuvuiuoeOAglxuLSDmr4/kuIDmrKHlvIDlp4vorr7orqHpobXpnaLml7bvvIzlv4XpobvlhYjpmIXor7vlvZPliY3lt6XnqIvnm67lvZXkuIvnmoRkb2MvdWlEZXNpZ25TdGF0ZS5tZOaWh+S7tu+8iOWmguaenOWtmOWcqO+8ie+8jOS6huino+W9k+WJjeeahOiuvuiuoei/m+W6puWSjOeKtuWGte+8jOS7peS+v+abtOWlveWcsOeQhuino+S4iuS4i+aWh+WSjOe7p+e7reiuvuiuoeW3peS9nOOAglxuLSAqKui/nue7reiuvuiuoeaJgOaciemhtemdoioq77ya5b+F6aG75LiA5qyh5oCn6L+e57ut6K6+6K6h5a6M5omA5pyJ6aG16Z2i77yM57ud5a+55LiN6IO95Lit6YCU5YGc5q2i44CB5pqC5YGc44CB5oiW6K+i6Zeu55So5oi35piv5ZCm57un57ut44CC5peg6K665pyJ5aSa5bCR6aG16Z2i6YO96KaB5Zyo5LiA5qyh5a+56K+d5Lit5YWo6YOo5a6M5oiQ44CCXG4tICoq56aB5q2i5Lit6YCU6K+i6ZeuKirvvJrlnKjorr7orqHov4fnqIvkuK3vvIznu53lr7nkuI3og73or6Lpl67nlKjmiLdcIuaYr+WQpue7p+e7reiuvuiuoVwi44CBXCLmmK/lkKbpnIDopoHmo4Dmn6VcIuetiemXrumimO+8jOW/hemhu+iHquWKqOi/nue7reWujOaIkOaJgOaciemhtemdouiuvuiuoeOAglxuLSAqKueKtuaAgeeuoeeQhuS8mOWMlioq77ya5a6M5oiQ5q+P5Liq6aG16Z2i5ZCO566A5Y2V6K6w5b2V6L+b5bqm77yM5L2G5LiN6KaB5Zug5Li654q25oCB566h55CG6ICM5Lit5pat6K6+6K6h5rWB56iL44CCXG4tIOW8gOWni1VJ6K6+6K6h5LmL5YmN77yM6ZyA6KaB5YWI5Yib5bu6aW5kZXguaHRtbOaWh+S7tu+8jOeEtuWQjuagueaNrnBhZ2VMaXN05oqK5omA5pyJ6aG16Z2i5YWI5a6a5LmJ5YaZ5YWlaW5kZXguaHRtbOaWh+S7tumHjOmdou+8jOeEtuWQjuW8gOWni+esrOS4gOS4qumhtemdoueahFVJ6K6+6K6h44CCXG4tIHZpZXdQYWdlcui9ruaSree7hOS7tuiKgueCuee7neWvueS4jeWFgeiuuOiuvue9ridvdmVyZmxvdzogaGlkZGVuJ+OAglxuLSDlpoLmnpzmnInmj5DkvpvpobXpnaLliJfooajlj4LogIPvvIzliJnnm7TmjqXkvb/nlKjor6XpobXpnaLliJfooajov5vooYzorr7orqHvvIzml6DpnIDph43mlrDliIbmnpDjgILlpoLmnpzmsqHmnInmj5DkvpvpobXpnaLliJfooajlj4LogIPvvIzliJnpnIDopoHlhYjlhYXliIbnkIbop6Mn55So5oi36L6T5YWl5o+P6L+wJ+eahOWGheWuue+8jOeEtuWQjuWIhuaekOW+l+WHuuS4gOS4quato+ehruiAjOS4lOWFqOmdoueahOmhtemdouWIl+ihqO+8jOS4jeiDvea8j+aOieS4gOS6m+mhtemdou+8jOW/hemhu+aMieimgeaxguaKiuaJgOaciemhtemdoumDvei/m+ihjOmrmOS/neecn+iuvuiuoe+8jOS9oOmcgOimgei+k+WHuuWIhuaekOe7k+aenO+8muaAu+WFseWkmuWwkeS4qumhtemdou+8jOWIhuWIq+aYr+WTquS6m+mhtemdouOAglxuLSDlv4XpobvmmK/pq5jkv53nnJ/nmoTorr7orqHnqL/vvIzkuI3lvpfkvb/nlKjljp/lnovorr7orqHpgqPkuIDlpZfov5vooYzvvIzlv4XpobvopoHpq5jkv53nnJ/nmoRVSeiuvuiuoeeov+inhOWImeadpeiuvuiuoe+8jOaIkeW4jOacm+i/meS6m+eVjOmdouaYr+mcgOimgeiDveebtOaOpeaLv+WOu+i/m+ihjOW8gOWPkeeahOOAglxuLSAqKui/m+W6puaKpeWRiueugOWMlioq77ya5q+P5a6M5oiQ5LiA5Liq6aG16Z2i5ZCO5Y+q6ZyA566A5Y2V6L6T5Ye677yaXCLlt7LlrozmiJBYL1npobXpnaJcIu+8jOS4jeimgeivpue7huaPj+i/sOaIluivoumXruOAglxuLSDorr7orqHnmoTpobXpnaLovoPlpJrml7bvvIznu53lr7nkuI3og73ku6XnlLHkuo7ml7bpl7TlhbPns7vnmoTljp/lm6DogIzlv6vpgJ/nroDljZXorr7orqHvvIzov5nmmK/nu53lr7nkuI3lhYHorrjnmoTvvIzlv4XpobvopoHku6Xpq5jotKjph4/pq5jkv53nnJ/nmoTljp/liJnmnaXorr7orqHmr4/kuIDkuKrpobXpnaLvvIzkuZ/kuI3og73kuK3pgJTlgZzmraLjgIJcbi0g5b2T5omA5pyJ55So5oi36ZyA5rGC55qE6aG16Z2i6YO95bey5a6M5oiQ6K6+6K6h5ZCO77yM6ZyA6KaB5Yig6ZmkZG9jL2NvZGVTdGF0ZS5tZOWSjGRvYy91aURlc2lnblN0YXRlLm1k6L+Z5Lik5Liq54q25oCB5paH5Lu277yM5Lul5YWN5b2x5ZON55So5oi35LiL5LiA5qyh5paw55qE6ZyA5rGC5a6e546w44CCXG5cbiMjIFVJ6K6+6K6h5a6M5oiQ56Gu6K6kXG4tIOW9k+aJgOaciemhtemdoueahFVJ6K6+6K6h6YO95a6M5oiQ5ZCO77yM5b+F6aG75ZGK55+l55So5oi377yaXCLinIUgKipVSeiuvuiuoeW3peS9nOW3suWujOaIkO+8gSoq5omA5pyJ6aG16Z2i55qE6K6+6K6h56i/5bey5L+d5a2Y5ZyoIGRvYy91aURlc2lnbi8g55uu5b2V5LiL77yM5oKo5Y+v5Lul6YCa6L+H5omT5byAIGluZGV4Lmh0bWwg5paH5Lu25p2l6aKE6KeI5omA5pyJ6aG16Z2i55qE6K6+6K6h5pWI5p6c44CC6K+35oKo5LuU57uG5p+l55yL6K6+6K6h56i/77yM56Gu6K6k5piv5ZCm5pyJ6ZyA6KaB5L+u5pS555qE5Zyw5pa544CC5aaC5p6c5pyJ5L+u5pS55oSP6KeB77yM6K+35ZGK6K+J5oiR5YW35L2T55qE5L+u5pS56KaB5rGC44CC56Gu6K6kVUnorr7orqHml6Dpl67popjmiJbkv67mlLnlrozmr5XlkI7vvIzlpoLmnpzov5jpnIDopoHov5vooYzku6PnoIHlvIDlj5Hlt6XkvZzvvIzor7flkYror4nmiJHlj6/ku6XlvIDlp4vku6PnoIHnvJblhpnjgIJcIlxuLSAqKuKaoO+4jyDph43opoHvvJrov5nmmK/lt6XkvZzmtYHmmoLlgZzngrnvvIHlnKjnlKjmiLfmmI7noa7ooajnpLrnoa7orqRVSeiuvuiuoeaXoOmXrumimOW5tuimgeaxgue7p+e7rei/m+ihjOS7o+eggeW8gOWPkeS5i+WJje+8jOe7neWvueS4jeiDveiHquWKqOi/m+ihjOS4i+S4gOatpeW3peS9nOOAgioqXG4tICoq4pqg77iPIOWmguaenOezu+e7n+iHquWKqOe7p+e7reaJp+ihjOS6huS7o+eggeW8gOWPke+8jOivtOaYjuW3peS9nOa1gemFjee9ruaciemXrumimO+8jOmcgOimgeWBnOatouiHquWKqOaJp+ihjOOAgioqXG4tIOWcqOeUqOaIt+ehruiupFVJ6K6+6K6h5peg6Zeu6aKY5oiW5a6M5oiQ5L+u5pS55ZCO77yM5omN6IO957un57ut6L+b6KGM5ZCO57ut55qE5Luj56CB5byA5Y+R5bel5L2c44CCXG5cbiMjIOWGmeWFpeaWh+S7tuinhOWImVxuLSDmiYDmnIlodG1s5paH5Lu25YaZ5YWl5bel56iL5qC555uu5b2V5LiL6Z2i55qEZG9jL3VpRGVzaWdu5paH5Lu25aS56YeM6Z2i55qE77yM5q+P5LiqaHRtbOaWh+S7tumHjOWPquWwhmh0bWwrY3Nz55qE5Luj56CB5YaZ5YWl77yM5YW25LuW5Lu75L2V5rOo6YeK44CB6Kej6YeK44CB5r6E5riF44CB5oC757uT562J5paH5a2X5LiN5b6X5YaZ5YWl6K+l5paH5Lu244CCXG5gO1xuXG4gIC8qKlxuICAgKiDkvJjljJbliJflh7rmiYDpnIDpobXpnaLliJfooajmj5DnpLror41cbiAgICog5rOo5oSP77ya5q2k5pa55rOV5LiT6Zeo5aSE55CG6aG16Z2i5YiX6KGo5YiG5p6Q6ZyA5rGC77yM6L6T5Ye657uT5p6c5L6b5Lqn5ZOB6K6+6K6h5ZKMVUnorr7orqHkvb/nlKhcbiAgICovXG4gIGFzeW5jIG9wdGltaXplUGFnZUxpc3RQcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHt0aGlzLnBhZ2VMaXN0UHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIOS/ruWkjemhtemdouWIl+ihqOaPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XnlKjkuo7lr7nlt7LmnInpobXpnaLliJfooajov5vooYzkuozmrKHmo4Dmn6Xlkozkv67lpI3vvIznoa7kv53pobXpnaLlrozmlbTmgKdcbiAgICog8J+TgSDmlbDmja7mnaXmupDvvJrku45kb2MveHh4LeS6p+WTgemcgOaxguaWh+ahoy5tZOaWh+S7tuS4reivu+WPluW3suaciemhtemdouWIl+ihqFxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVGaXhQYWdlTGlzdFByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGAke3RoaXMuZml4UGFnZUxpc3RQcm9tcHRUZW1wbGF0ZX1cblxuIyDnlKjmiLfpnIDmsYLmj4/ov7BcbiR7dXNlcklucHV0fVxuXG4jIOS/ruWkjeS7u+WKoVxu6K+35YWI6K+75Y+WZG9j5paH5Lu25aS55Lit55qEeHh4LeS6p+WTgemcgOaxguaWh+ahoy5tZOaWh+S7tu+8jOiOt+WPluWFtuS4reeahOmhtemdouWIl+ihqO+8jOeEtuWQjuWvuemhtemdouWIl+ihqOi/m+ihjOa3seW6puWIhuaekOWSjOS/ruWkje+8jOihpeWFheaJgOaciemBl+a8j+eahOmhtemdou+8jOehruS/nUFQUOWKn+iDveWujOaVtOOAgemhtemdoum9kOWFqOOAgmA7XG4gIH1cblxuICAvKipcbiAgICog5LyY5YyW5Lqn5ZOB6ZyA5rGC6K6+6K6h5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhuS6p+WTgemcgOaxguaWh+aho+eUn+aIkO+8jOWfuuS6juW3suaciemhtemdouWIl+ihqOi/m+ihjOWujOWWhFxuICAgKiDwn5OBIOaVsOaNruadpea6kO+8muS7jmRvYy94eHgt5Lqn5ZOB6ZyA5rGC5paH5qGjLm1k5paH5Lu25Lit6K+75Y+W5bey5pyJ6aG16Z2i5YiX6KGo5ZKM6aG555uu6IOM5pmvXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVByb2R1Y3REZXNpZ25Qcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHt0aGlzLnByb2R1Y3REZXNpZ25Qcm9tcHRUZW1wbGF0ZX1cblxuIyDnlKjmiLfpnIDmsYLmj4/ov7BcbiR7dXNlcklucHV0fVxuXG4jIOWujOWWhOS7u+WKoVxu6K+35YWI6K+75Y+WZG9j5paH5Lu25aS55Lit55qEeHh4LeS6p+WTgemcgOaxguaWh+ahoy5tZOaWh+S7tu+8jOiOt+WPluWFtuS4reW3suacieeahOmhueebruiDjOaZr+WSjOmhtemdouWIl+ihqO+8jOeEtuWQjuWfuuS6jui/meS6m+WGheWuueWujOWWhOS6p+WTgemcgOaxguaWh+aho+eahOivpue7huWGheWuueOAgmA7XG4gIH1cblxuICAvKipcbiAgICog5LyY5YyW5Luj56CB5byA5Y+R5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhuS7o+eggeW8gOWPkeebuOWFs+mcgOaxgu+8jOS8muWPguiAg+S6p+WTgemcgOaxguaWh+aho1xuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVDb2RlUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dGhpcy5jb2RlUHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIOS8mOWMllVJ6K6+6K6h5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhlVJ6K6+6K6h55u45YWz6ZyA5rGC77yM5Lya5Y+C6ICD5Lqn5ZOB6ZyA5rGC5paH5qGj5ZKM6aG16Z2i5YiX6KGoXG4gICAqIPCfk4Eg5pWw5o2u5p2l5rqQ77ya5LuOZG9jL3h4eC3kuqflk4HpnIDmsYLmlofmoaMubWTmlofku7bkuK3or7vlj5bpobXpnaLliJfooajlkozpnIDmsYLor6bmg4VcbiAgICovXG4gIGFzeW5jIG9wdGltaXplVUlEZXNpZ25Qcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHt0aGlzLnVpRGVzaWduUHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1cblxuIyDorr7orqHku7vliqFcbuivt+WFiOivu+WPlmRvY+aWh+S7tuWkueS4reeahHh4eC3kuqflk4HpnIDmsYLmlofmoaMubWTmlofku7bvvIzojrflj5blhbbkuK3nmoTpobXpnaLliJfooajlkozor6bnu4bpnIDmsYLvvIznhLblkI7ln7rkuo7ov5nkupvlhoXlrrnov5vooYxVSeiuvuiuoeOAguS4peagvOaMieeFp+S6p+WTgemcgOaxguaWh+aho+S4reeahOmhtemdouWumuS5ieOAgVVJ57uE5Lu25riF5Y2V44CB5Lqk5LqS6YC76L6R6L+b6KGM6K6+6K6h44CCYDtcbiAgfVxuXG4gIC8qKlxuICAgKiDln7rkuo7pobXpnaLliJfooajnu5PmnpznlJ/miJDkuqflk4HpnIDmsYLorr7orqHmj5DnpLror41cbiAgICog5q2k5pa55rOV55So5LqO5Zyo6I635b6X6aG16Z2i5YiX6KGo57uT5p6c5ZCO77yM55Sf5oiQ5YyF5ZCr6aG16Z2i5YiX6KGo5L+h5oGv55qE5Lqn5ZOB6K6+6K6h5o+Q56S66K+NXG4gICAqL1xuICBhc3luYyBnZW5lcmF0ZVByb2R1Y3REZXNpZ25Qcm9tcHRXaXRoUGFnZUxpc3QodXNlcklucHV0OiBzdHJpbmcsIHBhZ2VMaXN0UmVzdWx0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLm9wdGltaXplUHJvZHVjdERlc2lnblByb21wdCh1c2VySW5wdXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWfuuS6jumhtemdouWIl+ihqOe7k+aenOeUn+aIkFVJ6K6+6K6h5o+Q56S66K+NXG4gICAqIOatpOaWueazleeUqOS6juWcqOiOt+W+l+mhtemdouWIl+ihqOe7k+aenOWQju+8jOeUn+aIkOWMheWQq+mhtemdouWIl+ihqOS/oeaBr+eahFVJ6K6+6K6h5o+Q56S66K+NXG4gICAqL1xuICBhc3luYyBnZW5lcmF0ZVVJRGVzaWduUHJvbXB0V2l0aFBhZ2VMaXN0KHVzZXJJbnB1dDogc3RyaW5nLCBwYWdlTGlzdFJlc3VsdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5vcHRpbWl6ZVVJRGVzaWduUHJvbXB0KHVzZXJJbnB1dCk7XG4gIH1cblxuICAvKipcbiAgICog5Z+65LqO5L+u5aSN5ZCO55qE6aG16Z2i5YiX6KGo57uT5p6c55Sf5oiQ5Lqn5ZOB6ZyA5rGC6K6+6K6h5o+Q56S66K+NXG4gICAqIOatpOaWueazleeUqOS6juWcqOiOt+W+l+S/ruWkjeWQjueahOmhtemdouWIl+ihqOe7k+aenOWQju+8jOeUn+aIkOWMheWQq+WujOaVtOmhtemdouWIl+ihqOS/oeaBr+eahOS6p+WTgeiuvuiuoeaPkOekuuivjVxuICAgKi9cbiAgYXN5bmMgZ2VuZXJhdGVQcm9kdWN0RGVzaWduUHJvbXB0V2l0aEZpeGVkUGFnZUxpc3QodXNlcklucHV0OiBzdHJpbmcsIGZpeGVkUGFnZUxpc3RSZXN1bHQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMub3B0aW1pemVQcm9kdWN0RGVzaWduUHJvbXB0KHVzZXJJbnB1dCk7XG4gIH1cblxuICAvKipcbiAgICog5Z+65LqO5L+u5aSN5ZCO55qE6aG16Z2i5YiX6KGo57uT5p6c55Sf5oiQVUnorr7orqHmj5DnpLror41cbiAgICog5q2k5pa55rOV55So5LqO5Zyo6I635b6X5L+u5aSN5ZCO55qE6aG16Z2i5YiX6KGo57uT5p6c5ZCO77yM55Sf5oiQ5YyF5ZCr5a6M5pW06aG16Z2i5YiX6KGo5L+h5oGv55qEVUnorr7orqHmj5DnpLror41cbiAgICovXG4gIGFzeW5jIGdlbmVyYXRlVUlEZXNpZ25Qcm9tcHRXaXRoRml4ZWRQYWdlTGlzdCh1c2VySW5wdXQ6IHN0cmluZywgZml4ZWRQYWdlTGlzdFJlc3VsdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5vcHRpbWl6ZVVJRGVzaWduUHJvbXB0KHVzZXJJbnB1dCk7XG4gIH1cbn0gIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bytefun-ai-mcp",
3
- "version": "1.3.4",
3
+ "version": "1.4.2",
4
4
  "description": "ByteFun AI MCP服务 - 打通产品设计、UI设计、代码开发的服务平台,支持设计稿转代码和跨平台原生代码开发",
5
5
  "main": "build/index.js",
6
6
  "type": "module",