bytefun-ai-mcp 1.0.2 → 1.1.0
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.
- package/README.md +27 -29
- package/build/index.js +1 -25
- package/build/prompt-optimizer.d.ts +3 -12
- package/build/prompt-optimizer.d.ts.map +1 -1
- package/build/prompt-optimizer.js +5 -130
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
# ByteFun AI MCP 服务
|
|
2
2
|
|
|
3
|
-
ByteFun AI MCP服务 -
|
|
3
|
+
ByteFun AI MCP服务 - 智能UI设计与代码开发服务平台,支持设计稿转代码和跨平台原生代码开发。
|
|
4
4
|
|
|
5
5
|
## 功能概述
|
|
6
6
|
|
|
7
|
-
ByteFun AI MCP
|
|
7
|
+
ByteFun AI MCP服务提供两大核心功能模块,实现从设计到代码的完整工作流:
|
|
8
8
|
|
|
9
|
-
1.
|
|
10
|
-
2.
|
|
11
|
-
3. **代码开发优化** - 将用户输入的需求转换为带有完整开发规则的TypeScript代码开发提示词,支持跨平台原生开发
|
|
12
|
-
4. **🤖 AI全自动智能分发** - 自动分析用户需求并执行相应的优化工具,一键获得所有结果
|
|
9
|
+
1. **UI设计优化** - 将用户输入的需求转换为带有UI设计规范的静态HTML+CSS设计提示词,实现设计稿到代码的转换
|
|
10
|
+
2. **代码开发优化** - 将用户输入的需求转换为带有完整开发规则的TypeScript代码开发提示词,支持跨平台原生开发
|
|
13
11
|
|
|
14
12
|
## 安装
|
|
15
13
|
|
|
@@ -31,17 +29,17 @@ npm install bytefun-ai-mcp
|
|
|
31
29
|
|
|
32
30
|
### ⚠️ 重要说明
|
|
33
31
|
|
|
34
|
-
|
|
32
|
+
**智能单一选择**:ByteFun AI MCP服务根据用户需求智能判断选择最合适的单一功能,每次只执行一个工具。
|
|
35
33
|
|
|
36
34
|
**使用机制**:
|
|
37
|
-
- 🎯
|
|
38
|
-
-
|
|
39
|
-
-
|
|
35
|
+
- 🎯 **UI设计需求**:当用户关注界面、设计、样式、布局等视觉方面时,自动选择 `optimize_ui_design_prompt`
|
|
36
|
+
- 🔧 **代码开发需求**:当用户关注功能、逻辑、实现、开发等技术方面时,自动选择 `optimize_code_prompt`
|
|
37
|
+
- 🤖 **智能判断**:系统自动分析用户真实意图,选择最合适的功能
|
|
40
38
|
|
|
41
|
-
|
|
42
|
-
1.
|
|
43
|
-
2.
|
|
44
|
-
3.
|
|
39
|
+
**典型使用场景**:
|
|
40
|
+
1. **界面设计**:专注视觉设计和用户体验
|
|
41
|
+
2. **功能开发**:专注业务逻辑和技术实现
|
|
42
|
+
3. **设计转代码**:从设计稿到可执行代码
|
|
45
43
|
|
|
46
44
|
### 在MCP客户端中配置
|
|
47
45
|
|
|
@@ -84,23 +82,11 @@ npm install bytefun-ai-mcp
|
|
|
84
82
|
优化后: 包含UI设计规范 + 设计稿转代码规则 + "# 用户需求描述\n设计一个现代化的电商商品列表页面"
|
|
85
83
|
```
|
|
86
84
|
|
|
87
|
-
#### 3. optimize_prototype_design_prompt
|
|
88
|
-
优化原型设计提示词,打通设计到开发流程
|
|
89
|
-
|
|
90
|
-
**参数:**
|
|
91
|
-
- `user_input` (string): 用户输入的原型设计需求
|
|
92
|
-
|
|
93
|
-
**示例:**
|
|
94
|
-
```
|
|
95
|
-
用户输入: "制作一个社交APP的动态发布原型"
|
|
96
|
-
优化后: 包含原型设计规范 + 交互流程设计 + "# 用户需求描述\n制作一个社交APP的动态发布原型"
|
|
97
|
-
```
|
|
98
|
-
|
|
99
85
|
## 核心价值
|
|
100
86
|
|
|
101
|
-
### 🎨
|
|
102
|
-
-
|
|
103
|
-
-
|
|
87
|
+
### 🎨 智能设计到代码链路
|
|
88
|
+
- **UI设计** → **代码实现**
|
|
89
|
+
- 两个环节无缝衔接,确保产品一致性
|
|
104
90
|
|
|
105
91
|
### 🔧 跨平台原生开发支持
|
|
106
92
|
- TypeScript代码规范
|
|
@@ -117,6 +103,18 @@ npm install bytefun-ai-mcp
|
|
|
117
103
|
- 毫秒级响应速度
|
|
118
104
|
- 内存使用优化
|
|
119
105
|
|
|
106
|
+
## 智能判断原则
|
|
107
|
+
|
|
108
|
+
### 单一功能选择
|
|
109
|
+
根据用户描述,智能判断选择唯一最合适的功能:
|
|
110
|
+
- 如果用户主要关注"界面外观、设计、布局、样式"→ **UI设计优化**
|
|
111
|
+
- 如果用户主要关注"功能实现、逻辑处理、代码开发"→ **代码开发优化**
|
|
112
|
+
|
|
113
|
+
### 判断策略
|
|
114
|
+
- **UI设计优先**:用户明确提到界面、设计、样式、布局、外观等视觉相关词汇
|
|
115
|
+
- **代码开发优先**:用户明确提到功能、逻辑、实现、开发、编程等技术相关词汇
|
|
116
|
+
- **模糊情况**:优先选择代码开发(覆盖范围更广)
|
|
117
|
+
|
|
120
118
|
## 技术架构
|
|
121
119
|
|
|
122
120
|
- **MCP协议**: 基于Model Context Protocol标准
|
package/build/index.js
CHANGED
|
@@ -39,20 +39,6 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
39
39
|
},
|
|
40
40
|
required: ['user_input']
|
|
41
41
|
}
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
name: 'optimize_prototype_design_prompt',
|
|
45
|
-
description: 'Optimize prompt for prototype design by adding prototype design rules and marking user input',
|
|
46
|
-
inputSchema: {
|
|
47
|
-
type: 'object',
|
|
48
|
-
properties: {
|
|
49
|
-
user_input: {
|
|
50
|
-
type: 'string',
|
|
51
|
-
description: 'User input prompt that needs to be optimized for prototype design'
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
required: ['user_input']
|
|
55
|
-
}
|
|
56
42
|
}
|
|
57
43
|
]
|
|
58
44
|
};
|
|
@@ -85,16 +71,6 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
85
71
|
}
|
|
86
72
|
]
|
|
87
73
|
};
|
|
88
|
-
case 'optimize_prototype_design_prompt':
|
|
89
|
-
const optimizedPrototypePrompt = await promptOptimizer.optimizePrototypeDesignPrompt(args.user_input);
|
|
90
|
-
return {
|
|
91
|
-
content: [
|
|
92
|
-
{
|
|
93
|
-
type: 'text',
|
|
94
|
-
text: optimizedPrototypePrompt
|
|
95
|
-
}
|
|
96
|
-
]
|
|
97
|
-
};
|
|
98
74
|
default:
|
|
99
75
|
throw new Error(`Unknown tool: ${name}`);
|
|
100
76
|
}
|
|
@@ -117,4 +93,4 @@ async function main() {
|
|
|
117
93
|
console.error('ByteFun AI Prompt MCP server running on stdio');
|
|
118
94
|
}
|
|
119
95
|
main().catch(console.error);
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUV2QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FDdkI7SUFDRSxJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLENBQ0YsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7QUFFOUMsdUJBQXVCO0FBQ3ZCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLElBQUksRUFBRTtJQUMxRCxPQUFPO1FBQ0wsS0FBSyxFQUFFO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsV0FBVyxFQUFFLHlHQUF5RztnQkFDdEgsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixVQUFVLEVBQUU7NEJBQ1YsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLG1FQUFtRTt5QkFDakY7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN6QjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLDJCQUEyQjtnQkFDakMsV0FBVyxFQUFFLGdGQUFnRjtnQkFDN0YsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixVQUFVLEVBQUU7NEJBQ1YsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLDREQUE0RDt5QkFDMUU7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN6QjthQUNGO1NBQ1E7S0FDWixDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFFSCxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNoRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBRWpELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssc0JBQXNCO2dCQUN6QixNQUFNLG1CQUFtQixHQUFHLE1BQU0sZUFBZSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFvQixDQUFDLENBQUM7Z0JBQ2hHLE9BQU87b0JBQ0wsT0FBTyxFQUFFO3dCQUNQOzRCQUNFLElBQUksRUFBRSxNQUFNOzRCQUNaLElBQUksRUFBRSxtQkFBbUI7eUJBQzFCO3FCQUNGO2lCQUNGLENBQUM7WUFFSixLQUFLLDJCQUEyQjtnQkFDOUIsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsVUFBb0IsQ0FBQyxDQUFDO2dCQUNsRyxPQUFPO29CQUNMLE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxJQUFJLEVBQUUsTUFBTTs0QkFDWixJQUFJLEVBQUUsaUJBQWlCO3lCQUN4QjtxQkFDRjtpQkFDRixDQUFDO1lBRUo7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPO1lBQ0wsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxVQUFVLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtpQkFDekU7YUFDRjtZQUNELE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVILEtBQUssVUFBVSxJQUFJO0lBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztJQUM3QyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEMsT0FBTyxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5pbXBvcnQgeyBTZXJ2ZXIgfSBmcm9tICdAbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NlcnZlci9pbmRleC5qcyc7XG5pbXBvcnQgeyBTdGRpb1NlcnZlclRyYW5zcG9ydCB9IGZyb20gJ0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc2VydmVyL3N0ZGlvLmpzJztcbmltcG9ydCB7XG4gIENhbGxUb29sUmVxdWVzdFNjaGVtYSxcbiAgTGlzdFRvb2xzUmVxdWVzdFNjaGVtYSxcbiAgVG9vbCxcbn0gZnJvbSAnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay90eXBlcy5qcyc7XG5pbXBvcnQgeyBQcm9tcHRPcHRpbWl6ZXIgfSBmcm9tICcuL3Byb21wdC1vcHRpbWl6ZXIuanMnO1xuXG5jb25zdCBzZXJ2ZXIgPSBuZXcgU2VydmVyKFxuICB7XG4gICAgbmFtZTogJ2J5dGVmdW4tYWktcHJvbXB0JyxcbiAgICB2ZXJzaW9uOiAnMS4wLjAnLFxuICB9XG4pO1xuXG5jb25zdCBwcm9tcHRPcHRpbWl6ZXIgPSBuZXcgUHJvbXB0T3B0aW1pemVyKCk7XG5cbi8vIExpc3QgYXZhaWxhYmxlIHRvb2xzXG5zZXJ2ZXIuc2V0UmVxdWVzdEhhbmRsZXIoTGlzdFRvb2xzUmVxdWVzdFNjaGVtYSwgYXN5bmMgKCkgPT4ge1xuICByZXR1cm4ge1xuICAgIHRvb2xzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvcHRpbWl6ZV9jb2RlX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBUeXBlU2NyaXB0IGNvZGUgZGV2ZWxvcG1lbnQgYnkgYWRkaW5nIGNvZGUgZGV2ZWxvcG1lbnQgcnVsZXMgYW5kIG1hcmtpbmcgdXNlciBpbnB1dCcsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgY29kZSBkZXZlbG9wbWVudCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnb3B0aW1pemVfdWlfZGVzaWduX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBVSSBkZXNpZ24gYnkgYWRkaW5nIFVJIGRlc2lnbiBydWxlcyBhbmQgbWFya2luZyB1c2VyIGlucHV0JyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBVSSBkZXNpZ24nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgICAgfVxuICAgICAgfVxuICAgIF0gYXMgVG9vbFtdXG4gIH07XG59KTtcblxuLy8gSGFuZGxlIHRvb2wgY2FsbHNcbnNlcnZlci5zZXRSZXF1ZXN0SGFuZGxlcihDYWxsVG9vbFJlcXVlc3RTY2hlbWEsIGFzeW5jIChyZXF1ZXN0KSA9PiB7XG4gIGNvbnN0IHsgbmFtZSwgYXJndW1lbnRzOiBhcmdzIH0gPSByZXF1ZXN0LnBhcmFtcztcblxuICBpZiAoIWFyZ3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgYXJndW1lbnRzJyk7XG4gIH1cblxuICB0cnkge1xuICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgY2FzZSAnb3B0aW1pemVfY29kZV9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRDb2RlUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplQ29kZVByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkQ29kZVByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnb3B0aW1pemVfdWlfZGVzaWduX3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZFVJUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplVUlEZXNpZ25Qcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZFVJUHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdG9vbDogJHtuYW1lfWApO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgIHRleHQ6IGBFcnJvcjogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgaXNFcnJvcjogdHJ1ZVxuICAgIH07XG4gIH1cbn0pO1xuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICBjb25zdCB0cmFuc3BvcnQgPSBuZXcgU3RkaW9TZXJ2ZXJUcmFuc3BvcnQoKTtcbiAgYXdhaXQgc2VydmVyLmNvbm5lY3QodHJhbnNwb3J0KTtcbiAgY29uc29sZS5lcnJvcignQnl0ZUZ1biBBSSBQcm9tcHQgTUNQIHNlcnZlciBydW5uaW5nIG9uIHN0ZGlvJyk7XG59XG5cbm1haW4oKS5jYXRjaChjb25zb2xlLmVycm9yKTsgIl19
|
|
@@ -2,20 +2,16 @@
|
|
|
2
2
|
* ByteFun AI MCP 提示词优化器
|
|
3
3
|
*
|
|
4
4
|
* 重要说明:
|
|
5
|
-
* -
|
|
5
|
+
* - 本类提供两个独立的优化工具,每个工具处理不同类型的需求
|
|
6
6
|
* - 每次只能调用一个工具方法,不会自动组合或选择
|
|
7
|
-
* - 如果用户需求涉及多个方面,需要分别调用多个工具
|
|
8
7
|
*
|
|
9
8
|
* 使用方式:
|
|
10
|
-
* 1.
|
|
11
|
-
* 2.
|
|
12
|
-
* 3. 代码开发需求 → 调用 optimizeCodePrompt()
|
|
13
|
-
* 4. 复合需求 → 依次调用多个相关工具
|
|
9
|
+
* 1. UI设计需求 → 调用 optimizeUIDesignPrompt()
|
|
10
|
+
* 2. 代码开发需求 → 调用 optimizeCodePrompt()
|
|
14
11
|
*/
|
|
15
12
|
export declare class PromptOptimizer {
|
|
16
13
|
private readonly codePromptTemplate;
|
|
17
14
|
private readonly uiDesignPromptTemplate;
|
|
18
|
-
private readonly prototypeDesignPromptTemplate;
|
|
19
15
|
/**
|
|
20
16
|
* 优化代码开发提示词
|
|
21
17
|
* 注意:此方法专门处理代码开发相关需求,不会自动处理UI设计或原型设计内容
|
|
@@ -26,10 +22,5 @@ export declare class PromptOptimizer {
|
|
|
26
22
|
* 注意:此方法专门处理UI设计相关需求,不会自动处理代码开发或原型设计内容
|
|
27
23
|
*/
|
|
28
24
|
optimizeUIDesignPrompt(userInput: string): Promise<string>;
|
|
29
|
-
/**
|
|
30
|
-
* 优化原型设计提示词
|
|
31
|
-
* 注意:此方法专门处理原型设计相关需求,不会自动处理UI设计或代码开发内容
|
|
32
|
-
*/
|
|
33
|
-
optimizePrototypeDesignPrompt(userInput: string): Promise<string>;
|
|
34
25
|
}
|
|
35
26
|
//# sourceMappingURL=prompt-optimizer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-optimizer.d.ts","sourceRoot":"","sources":["../src/prompt-optimizer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"prompt-optimizer.d.ts","sourceRoot":"","sources":["../src/prompt-optimizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CA0FlC;IAED,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CA6BvC;IAEA;;;OAGG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO5D;;;OAGG;IACG,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAMjE"}
|
|
@@ -2,15 +2,12 @@
|
|
|
2
2
|
* ByteFun AI MCP 提示词优化器
|
|
3
3
|
*
|
|
4
4
|
* 重要说明:
|
|
5
|
-
* -
|
|
5
|
+
* - 本类提供两个独立的优化工具,每个工具处理不同类型的需求
|
|
6
6
|
* - 每次只能调用一个工具方法,不会自动组合或选择
|
|
7
|
-
* - 如果用户需求涉及多个方面,需要分别调用多个工具
|
|
8
7
|
*
|
|
9
8
|
* 使用方式:
|
|
10
|
-
* 1.
|
|
11
|
-
* 2.
|
|
12
|
-
* 3. 代码开发需求 → 调用 optimizeCodePrompt()
|
|
13
|
-
* 4. 复合需求 → 依次调用多个相关工具
|
|
9
|
+
* 1. UI设计需求 → 调用 optimizeUIDesignPrompt()
|
|
10
|
+
* 2. 代码开发需求 → 调用 optimizeCodePrompt()
|
|
14
11
|
*/
|
|
15
12
|
export class PromptOptimizer {
|
|
16
13
|
codePromptTemplate = `# 你是typescript代码专家,根据'规则'、'例子'和用户输入的需求描述,完成代码开发
|
|
@@ -132,119 +129,7 @@ export default class HomePageData {
|
|
|
132
129
|
- css的代码必须内联写出来,绝对不能使用外联,如不能使用:href="style.css"。
|
|
133
130
|
|
|
134
131
|
## 写入文件规则
|
|
135
|
-
- 将生成的html+css代码写入工程根目录下面的.bytefun
|
|
136
|
-
`;
|
|
137
|
-
prototypeDesignPromptTemplate = `# 你是专业的产品原型设计师和用户体验设计师,现在需要根据'需求文档生成规则'、'静态html+css生成规则'、'简单ts交互逻辑规则'和'需求描述'来生成1个产品需求文档、1个或多个产品原型html+css静态页面代码,并按照'写入文件规则'将生成的需求文档和html写到对应文件。
|
|
138
|
-
|
|
139
|
-
## 需求文档生成规则
|
|
140
|
-
### 阅读并理解用户描述
|
|
141
|
-
- 只需要生成业务功能性需求类文档即可
|
|
142
|
-
- 需求文档需要生成维护在根目录的'需求文档.md'文件里面
|
|
143
|
-
- 首先,请仔细阅读用户给出的描述,判断描述是否完整。如果信息不足,应主动提出至少 3 个关键性澄清问题,引导用户补充。
|
|
144
|
-
|
|
145
|
-
### 文档格式与输出规范
|
|
146
|
-
- 文档采用 Markdown 格式,章节层级清晰(一级标题、二级标题、三级标题)。
|
|
147
|
-
- 内容要专业、简洁、条理清晰,适用于团队内分享与后续跟进。
|
|
148
|
-
- 每一章都要有简要前言,点明本章目的。
|
|
149
|
-
- 必要时配备表格、流程图示意(以文字形式描述即可)。
|
|
150
|
-
|
|
151
|
-
### 需求文档结构
|
|
152
|
-
#### 一、项目概述
|
|
153
|
-
> **目的**:说明该文档的编写背景、目标和作用。
|
|
154
|
-
|
|
155
|
-
1. **项目名称**
|
|
156
|
-
2. **项目背景与现状**
|
|
157
|
-
- 行业背景、市场痛点
|
|
158
|
-
- 竞品分析(如果有简要信息可列出)
|
|
159
|
-
- 用户痛点与机会点
|
|
160
|
-
3. **项目目标**(SMART 原则:具体、可量化、可实现、关联性、时限性)
|
|
161
|
-
|
|
162
|
-
#### 二、用户及场景分析
|
|
163
|
-
> **目的**:帮助团队理解目标用户及其使用场景。
|
|
164
|
-
|
|
165
|
-
1. **目标用户画像**
|
|
166
|
-
- 用户群体划分(如年龄、性别、职业、教育程度、地区等)
|
|
167
|
-
- 用户需求与痛点
|
|
168
|
-
- 用户动机分析
|
|
169
|
-
2. **用户使用场景**
|
|
170
|
-
- 核心使用场景描述(场景 A / 场景 B / 场景 C)
|
|
171
|
-
- 使用流程示意(以文字描述关键步骤)
|
|
172
|
-
3. **关键用户旅程(User Journey)**
|
|
173
|
-
- 步骤分解:从「获取到认知」到「使用过程」再到「持续留存/分享」
|
|
174
|
-
- 每个节点的用户心理与系统响应
|
|
175
|
-
|
|
176
|
-
#### 三、功能需求
|
|
177
|
-
> **目的**:详细罗列系统需要实现的所有功能,分主次、分模块。
|
|
178
|
-
|
|
179
|
-
1. **整体功能架构图**(文字描述也可)
|
|
180
|
-
2. **功能模块划分**
|
|
181
|
-
- 模块 A:名称(例如:用户管理、身份认证)
|
|
182
|
-
1. 功能点 1:描述(包括业务逻辑、输入输出)
|
|
183
|
-
2. 功能点 2:描述
|
|
184
|
-
3. …
|
|
185
|
-
- 模块 B:名称(例如:内容展示、搜索、推荐)
|
|
186
|
-
1. 功能点 1:描述
|
|
187
|
-
2. …
|
|
188
|
-
- 模块 C:名称(例如:支付与订单)
|
|
189
|
-
1. 功能点 1:描述
|
|
190
|
-
2. …
|
|
191
|
-
- 模块 D:名称(例如:权限与运维)
|
|
192
|
-
1. 功能点 1:描述
|
|
193
|
-
2. …
|
|
194
|
-
3. **优先级排序**
|
|
195
|
-
- 使用 MoSCoW 方法划分:Must Have / Should Have / Could Have / Won’t Have
|
|
196
|
-
4. **用例示例(Use Case)**
|
|
197
|
-
- 用例标题(例如:用户注册与登录)
|
|
198
|
-
- 参与者:用户、系统、第三方服务
|
|
199
|
-
- 前置条件:用户已经下载并打开 APP…
|
|
200
|
-
- 触发事件:用户点击「注册」
|
|
201
|
-
- 基本流程:步骤 1→步骤 2→步骤 3…
|
|
202
|
-
- 异常流程:手机号已注册、验证码错误(并说明如何处理)
|
|
203
|
-
- 后置条件:用户成功注册并登录系统
|
|
204
|
-
|
|
205
|
-
---
|
|
206
|
-
|
|
207
|
-
**温馨提示:**
|
|
208
|
-
- 保证文档结构完整、逻辑严密,每一处功能需求都有明确的输入输出、边界条件和优先级。
|
|
209
|
-
- 输出时保持专业术语准确、表达简洁明了,注意使用 Markdown 的编号、标题、列表和表格来增强可读性。
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
## 静态html+css生成规则
|
|
213
|
-
- 一个页面对应一个html+css代码文件,如果需要多个页面的,那就创建对应的html+css代码文件。
|
|
214
|
-
- 必须只能使用静态html+css的写法完成产品原型静态html+css网页,该网页代码无js的代码,无js业务与交互逻辑,绝对不能使用vue、React、React Native、javascript等代码实现。
|
|
215
|
-
- 必须要以手机屏幕分辨率:376*700。的规则来设计。
|
|
216
|
-
- 原型设计风格必须遵循'产品原型规范',如果用户没有指定'产品原型规范',那就必须参考业界流行的低保真到中保真原型设计风格,重点展示功能布局、用户流程和交互逻辑,而非视觉美感。
|
|
217
|
-
- html的body节点必须写死width=376, height=700
|
|
218
|
-
- 每一个节点必须添加一个组件类型属性:vtype。比如文字vtype="text"、按钮vtype="button"、文字按钮vtype="textButton"、输入框vtype="input"、图标vtype="icon"、图片vtype="image"、矩形vtype="rect"、圆形vtype="circle"、线条vtype="line"、基础容器vtype="container"、卡片容器vtype="card"、grid容器vtype="grid"、单选vtype="radio"、多选vtype="checkBox"、竖向列表vtype="verticalListView"、横向列表vtype="horizontalListView"、轮播vtype="viewPager"、轮播指示器容器vtype="IndicatorContainer"、Tab选项卡容器vtype="tabContainer"、Tab选项卡菜单栏vtype="tabMenuBar"、底部TAB导航栏vtype="bottomTabNavigateBar"、对话框vtype="dialog"、Toast提示vtype="toast"、下拉菜单vtype="dropDownMenu"、侧滑面板vtype="sideSlidePanel"、占位符vtype="placeholder"、注释说明vtype="annotation"等以此类推。
|
|
219
|
-
- 除了vtype为'text'的所有节点必须添加一个英文id属性和中文名字name属性。你需要根据功能逻辑和组件类型来命名id属性和name属性,描述该元素在产品中的作用,命名使用简洁的风格。
|
|
220
|
-
- 每一个节点必须添加这四个新属性:x1、y1、w1、h1。x1和y1是相对于屏幕左上角的像素绝对值,w1和h1是像素绝对值。这四个属性只起到信息提示作用,不会作用于布局和显示,但信息提示非常重要,因此你必须要给出准确的x1、y1、w1、h1的像素绝对值。
|
|
221
|
-
- 所有关于像素大小的都必须使用px,如:15px。不得使用em、百分比%等等其他的。
|
|
222
|
-
- html的内容除非有要求使用非中文,默认都使用中文
|
|
223
|
-
- 节点的css样式不得使用before、after方式,如不可以这样写:.text:before, .text:after {
|
|
224
|
-
position: absolute;
|
|
225
|
-
top: 50%;
|
|
226
|
-
width: 60px;
|
|
227
|
-
height: 1px;
|
|
228
|
-
background: #e5e5e5;
|
|
229
|
-
}
|
|
230
|
-
- 如果是图片image节点,必须使用img标签,绝对不能使用div标签。
|
|
231
|
-
- 如果是图标icon节点,绝对不能使用div标签,图标使用简单的几何形状或文字表示。
|
|
232
|
-
- 如果节点是active、selected、disabled状态,需要添加属性:state="active"或state="selected"或state="disabled"
|
|
233
|
-
- 原型设计应使用简洁的色彩方案,重点突出关键功能和用户路径
|
|
234
|
-
- css的代码必须内联写出来,绝对不能使用外联,如不能使用:href="style.css"。
|
|
235
|
-
- 优先展示核心功能流程,减少装饰性元素,重点关注信息架构和交互逻辑
|
|
236
|
-
- 使用占位符(vtype="placeholder")来表示内容区域,使用注释说明(vtype="annotation")来解释功能逻辑
|
|
237
|
-
- 原型设计的边框线条可以使用虚线或较粗的实线来表示不同的功能区域
|
|
238
|
-
- 文字内容应该具有实际意义,能够说明功能用途,而不是lorem ipsum等占位文字
|
|
239
|
-
|
|
240
|
-
## 简单ts交互逻辑规则
|
|
241
|
-
- 如果需要交互逻辑,比如跳转页面、弹框、点击事件、输入框等,请先经过optimize_code_prompt的mcp服务处理后的提示词规则,再进行交互逻辑的编写。
|
|
242
|
-
- 绝不涉及具体业务逻辑,因为这只是一个需求评审时用于展示用的界面,不需要具体业务数据和逻辑。
|
|
243
|
-
|
|
244
|
-
## 写入文件规则
|
|
245
|
-
- 将生成的需求文档内容写到工程根目录下面doc文件夹里面的'需求文档.md'文件里面,其他任何注释、解释、澄清、总结等文字不得写入该文件。
|
|
246
|
-
- 将生成的一个或多个html+css静态页面代码写入工程根目录下面doc文件夹里面的'html'文件夹里面,只将html+css的代码写入对应的页面文件,其他任何注释、解释、澄清、总结等文字不得写入该文件。
|
|
247
|
-
- 将生成的一个或多个ts代码写入工程根目录下面doc文件夹里面的'ts'文件夹里面,只将ts的代码写入对应的ts文件,其他任何注释、解释、澄清、总结等文字不得写入该文件。
|
|
132
|
+
- 将生成的html+css代码写入工程根目录下面的.bytefun文件夹里面的'tempUI.html'文件里面,只将html+css的代码写入对应的页面文件,其他任何注释、解释、澄清、总结等文字不得写入该文件。
|
|
248
133
|
`;
|
|
249
134
|
/**
|
|
250
135
|
* 优化代码开发提示词
|
|
@@ -263,18 +148,8 @@ ${userInput}`;
|
|
|
263
148
|
async optimizeUIDesignPrompt(userInput) {
|
|
264
149
|
return `${this.uiDesignPromptTemplate}
|
|
265
150
|
|
|
266
|
-
# 用户需求描述
|
|
267
|
-
${userInput}`;
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* 优化原型设计提示词
|
|
271
|
-
* 注意:此方法专门处理原型设计相关需求,不会自动处理UI设计或代码开发内容
|
|
272
|
-
*/
|
|
273
|
-
async optimizePrototypeDesignPrompt(userInput) {
|
|
274
|
-
return `${this.prototypeDesignPromptTemplate}
|
|
275
|
-
|
|
276
151
|
# 用户需求描述
|
|
277
152
|
${userInput}`;
|
|
278
153
|
}
|
|
279
154
|
}
|
|
280
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LW9wdGltaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9tcHQtb3B0aW1pemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUNULGtCQUFrQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUEwRnRDLENBQUM7SUFFZ0Isc0JBQXNCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNkIzQyxDQUFDO0lBRWlCLDZCQUE2QixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0ErR2xELENBQUM7SUFFQTs7O09BR0c7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQUMsU0FBaUI7UUFDeEMsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0I7OztFQUduQyxTQUFTLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsc0JBQXNCLENBQUMsU0FBaUI7UUFDNUMsT0FBTyxHQUFHLElBQUksQ0FBQyxzQkFBc0I7OztFQUd2QyxTQUFTLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsNkJBQTZCLENBQUMsU0FBaUI7UUFDbkQsT0FBTyxHQUFHLElBQUksQ0FBQyw2QkFBNkI7OztFQUc5QyxTQUFTLEVBQUUsQ0FBQztJQUNaLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnl0ZUZ1biBBSSBNQ1Ag5o+Q56S66K+N5LyY5YyW5ZmoXG4gKiBcbiAqIOmHjeimgeivtOaYju+8mlxuICogLSDmnKznsbvmj5DkvpvkuInkuKrni6znq4vnmoTkvJjljJblt6XlhbfvvIzmr4/kuKrlt6XlhbflpITnkIbkuI3lkIznsbvlnovnmoTpnIDmsYJcbiAqIC0g5q+P5qyh5Y+q6IO96LCD55So5LiA5Liq5bel5YW35pa55rOV77yM5LiN5Lya6Ieq5Yqo57uE5ZCI5oiW6YCJ5oupXG4gKiAtIOWmguaenOeUqOaIt+mcgOaxgua2ieWPiuWkmuS4quaWuemdou+8jOmcgOimgeWIhuWIq+iwg+eUqOWkmuS4quW3peWFt1xuICogXG4gKiDkvb/nlKjmlrnlvI/vvJpcbiAqIDEuIOWOn+Wei+iuvuiuoemcgOaxgiDihpIg6LCD55SoIG9wdGltaXplUHJvdG90eXBlRGVzaWduUHJvbXB0KClcbiAqIDIuIFVJ6K6+6K6h6ZyA5rGCIOKGkiDosIPnlKggb3B0aW1pemVVSURlc2lnblByb21wdCgpICBcbiAqIDMuIOS7o+eggeW8gOWPkemcgOaxgiDihpIg6LCD55SoIG9wdGltaXplQ29kZVByb21wdCgpXG4gKiA0LiDlpI3lkIjpnIDmsYIg4oaSIOS+neasoeiwg+eUqOWkmuS4quebuOWFs+W3peWFt1xuICovXG5leHBvcnQgY2xhc3MgUHJvbXB0T3B0aW1pemVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb2RlUHJvbXB0VGVtcGxhdGUgPSBgIyDkvaDmmK90eXBlc2NyaXB05Luj56CB5LiT5a6277yM5qC55o2uJ+inhOWImSfjgIEn5L6L5a2QJ+WSjOeUqOaIt+i+k+WFpeeahOmcgOaxguaPj+i/sO+8jOWujOaIkOS7o+eggeW8gOWPkVxuXG4jIyDpobnnm67moYbmnrbmj4/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+RXG4z44CB6K+35Lil5qC85oyJ54Wn5ZSv5LiA55qE6IO95Yqb5pa55rOVQWxsRnVuY3Rpb24udHPvvIzkuI3opoHmlrDlop7jgIHliKDpmaTmiJbkv67mlLnku7vkvZVBbGxGdW5jdGlvbuaOpeWPo+WjsOaYju+8m+S5n+S4jeimgeiwg+eUqOWFtuS7luacquWcqEFsbEZ1bmN0aW9u5Lit5Ye6546w55qE5Ye95pWw5oiW5qih5Z2XXG4044CB5omA5pyJ5ZCO56uvQVBJ6LCD55So5b+F6aG75L2/55SoQWxsQmFja0VuZEFwaeexu+S4reWumuS5ieeahOaWueazle+8jOS4jeWFgeiuuOS9v+eUqOacquWcqEFsbEJhY2tFbmRBcGnkuK3lrprkuYnnmoTlkI7nq69BUEnjgIJcbjXjgIFVSeeVjOmdouOAgVVJ6buY6K6k5pWw5o2u44CBVUnmoLflvI/lt7Lnu4/lhajpg6jnlJ/miJDlpb3nmoTkuobvvIzkvaDkuI3og73lnKhpbml0Vmlld+aWueazlemHjOmdouaTheiHqua3u+WKoOS4gOS6m3ZpZXfnmoRVSeagt+W8j+aIluWxnuaAp+etieWIneWni+WMlu+8jOmZpOmdnueUqOaIt+mcgOaxguaPj+i/sOaYjuehruaMh+WHuumcgOimgeabtOaUueWTquS6m+agt+W8j+aIluWxnuaAp+OAglxuNuOAgeWtl+espuS4suimgeS7peWNleW8leWPt+adpeWGme+8jOWmgu+8mifmiJHnmoQn44CCXG4344CB5Lu75L2V5pa55rOV5Ye95pWw5a6a5LmJ77yM5LiN5b6X5L2/55SoYXN5bmPlkoxQcm9taXNl77yM5omA5pyJ5byC5q2l5pON5L2c5b+F6aG75L2/55So566t5aS05Ye95pWw44CCXG4444CB5omA5pyJUGFnZeeahOWtkOexu++8jOmDveWFgeiuuOa3u+WKoOaehOmAoOWHveaVsOWSjOaehOmAoOWHveaVsOeahOWPguaVsO+8jOi/meS6m+WPguaVsOWwseeUqOadpemhtemdoui3s+i9rOaXtumhtemdouS5i+mXtOS8oOmAkuaVsOaNruS9v+eUqO+8jOavlOWmgu+8muWVhuWTgeWIl+ihqOmhtVByb2plY3RMaXN0UGFnZei3s+WIsOWVhuWTgeivpuaDhemhtVByb2plY3REZXRhaWxQYWdl77yM6YKj5LmIUHJvamVjdExpc3RQYWdl5bqU6K+l6KaB5Lyg57uZUHJvamVjdERldGFpbFBhZ2XkuIDkuKrlj4LmlbDvvJpwcm9kdWN0SUTjgILmiYDku6XvvIxQcm9qZWN0RGV0YWlsUGFnZeeahOmhtemdouWPguaVsOWjsOaYjuWSjOaehOmAoOWHveaVsOW6lOivpeaYr+i/meagt+WGme+8mnByaXZhdGUgcHJvZHVjdElEOiBzdHJpbmdcblxuXHRjb25zdHJ1Y3Rvcihwcm9kdWN0SUQ6IHN0cmluZykge1xuXHRcdHN1cGVyKClcblx0XHR0aGlzLnByb2R1Y3RJRCA9IHByb2R1Y3RJRFxuXHR944CCXG4544CBVmlld+ebuOWFs+WPmOmHj+W/hemhu+WcqHh4eFBhZ2XnsbvlvIDlp4vml7blo7DmmI7vvIzlv4Xpobvlo7DmmI7lhbfkvZPnmoRWaWV357G75Z6L5aaC77yaSW5wdXRWaWV377yM6ICM5LiN5piv55u05o6l5aOw5piO57G75Z6L5Li6QmFzZVZpZXfvvIzmiYDmnIlWaWV35b+F6aG7ZmluZFZpZXdCeUlE5Yid5aeL5YyW77yM5aaC77yac2F2ZUJ1dHRvbjogQnV0dG9uVmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCdzYXZlQnV0dG9uJykgYXMgQnV0dG9uVmlld+OAgui/memHjOeahGZpbmRWaWV3QnlJROWFtuS4rWlk5Y+C5pWw5piv5Zyo6K+l6aG16Z2i55qEaHRtbOaWh+S7tumHjOmdouiOt+WPluWIsOeahGlk5YC844CCXG4xMOOAgeWTjeW6lOW8j+W8leeUqHJlZueahOS9v+eUqO+8muexu+Wei3Z1ZTPnmoRyZWbvvIzlj6/ku6XlsIbkuIDkuKrlgLzlj5jmiJDlk43lupTlvI/nmoTvvIzku47ogIzlnKjor6XlgLzlj5HnlJ/lj5jljJbml7bvvIzoh6rliqjop6blj5Hnm7jlhbPnlYzpnaLnmoTmm7TmlrDjgIJcbjEx44CBY29tcHV0ZWTnmoTkvb/nlKjvvJrnsbvlnot2dWUz55qEY29tcHV0ZWTvvIzlvZPkvaDpnIDopoHmoLnmja7kuIDkuKrmiJblpJrkuKrlk43lupTlvI/mupAocmVmKeiuoeeul+WHuuS4gOS4quaWsOeahOWAvOaXtu+8jOWwseeUqCBjb21wdXRlZFxuMTLjgIHlpoLmnpzmmK/lpJrkuKrpobXpnaLlhbHnlKjnmoTmlbDmja7lj5jph4/vvIzlj6/ku6XogIPomZHlo7DmmI7kuLrlhajlsYDpnZnmgIHlj5jph4/jgIJcbjEz44CB5YWo5bGA6Z2Z5oCB5Y+Y6YeP5Zyo5YWz6ZetQVBQ5oiW6ICF572R6aG15ZCO5Lya5riF55CG5o6J55qE77yM5omA5Lul5L2g6KaB5oCd6ICD5riF5qWa5ZOq5Lqb5pWw5o2u5Y+Y6YeP6ZyA6KaB5oyB5LmF5YyW5YKo5a2Y77yM5ZOq5Lqb5piv5YWo5bGA6Z2Z5oCB5Y+Y6YeP77yM5oyB5LmF5YyW5o6l5Y+j77yac2F2ZURhdGFiYXNlWHh45ZKMZ2V0RGF0YWJhc2VEYXRhWHh477yM5q+U5aaC5piv5ZCm5bey57uP5by55Ye66L+H5bm/5ZGK5by55qGG77yM6L+Z5Liq5bqU6K+l5oyB5LmF5YyW5YKo5a2Y44CCXG4xNOOAgeaJgOacieeahOe9kee7nOaLpuaIqueahOWFqOWxgOe7n+S4gOWkhOeQhumcgOimgeWcqEFwcGxpY2F0aW9u5Lit55qEb25HbG9iYWxOZXRTdWNjZXNzSW50ZXJjZXB0KOiBlOe9keaIkOWKn+WQju+8jOWQjuerr+S4muWKoeato+ehruS4jumUmeivr+mDveS8muWbnuiwg+WIsOi/memHjO+8jOaJgOS7peWcqOi/memHjOWPr+e7n+S4gOWkhOeQhuS4muWKoemUmeivr+eggSnmiJZvbkdsb2JhbE5ldEZhaWxJbnRlcmNlcHQo572R57uc5LiN6YCa77yM6L+e5o6l5aSx6LSl5oOF5Ya15Lya5Zue6LCD5Yiw6L+Z6YeMKemHjOmdouWkhOeQhuOAglxuMTXjgIHpobXpnaLot7Povazkvb/nlKhBbGxGdW5jdGlvbi5uYXZpZ2F0ZVRv5a6e546w77yMbmF2aWdhdGVUb+S8oOWFpVBhZ2XnmoTlrZDnsbvlr7nosaHvvIzlpoLvvJpBbGxGdW5jdGlvbi5uYXZpZ2F0ZVRvKG5ldyBQcm9kdWN0UGFnZSh0aGlzLnByb2R1Y3RJRCkp44CCXG4xNuOAgemhtemdouWGheeahOe9kee7nOivt+axguS4muWKoeWkhOeQhuS4jeW+l+WGmeWcqEFwcGxpY2F0aW9u55qEb25HbG9iYWxOZXRTdWNjZXNzSW50ZXJjZXB06YeM6Z2i44CCXG4xN+OAgeWtl+espuS4suS4jeW+l+ebtOaOpei/m+ihjGJvb2xlYW7ov5DnrpfnhLblkI7otYvlgLznu5lib29sZWFu57G75Z6L55qE5Y+Y6YeP77yM6ZyA6KaB5Zyo5a2X56ym5Liy5YmN6Z2i5re75Yqg5Lik5Liq6Z2e6L+Q566X77yaISHjgILmr5TlpoLmraPnoa7nmoTlhpnms5XvvJpjb25zdCBpc0FkZCA9ICEhdGhpcy5pbnB1dFZpZXcudGV4dCAmJiBpc05ld1xuMTjjgIHlpoLnlKjmiLfmj4/ov7DmsqHmnInmmI7noa7or7TmmI7pnIDopoF0b2FzdOaPkOekuu+8jOS9oOS4jeW+l+aTheiHqui/m+ihjFRvYXN044CCXG4xOeOAgeW7tuaXtuaJp+ihjEFsbEZ1bmN0aW9uLnNldFRpbWVvdXTns7vnu5/kvJroh6rliqjmuIXnkIZ0aW1lb3V077yM5Luj56CB5LiK57ud5a+55LiN6IO96L+b6KGMY2xlYVRpbWVvdXTnrYnnsbvkvLzmk43kvZzvvIzlm6DmraRzZXRUaW1lb3V05Lmf5LiN6ZyA6KaB5aOw5piO5Y+Y6YeP5Y675o6l5pS2c2V0VGltZW91dOi/lOWbnueahOW8leeUqOOAglxuMjDjgIHmiYDmnInku6PnoIHkuI3lvpfkvb/nlKhpbnRlcmZhY2XvvIzmlbDmja7lrp7kvZNlbnRpdHnvvIzlv4Xpobvkvb/nlKhjbGFzc+WumuS5ie+8jOS4jeW+l+S9v+eUqGludGVyZmFjZe+8jOS9v+eUqOS5i+WJjemcgOimgW5ld+WunuS+i+WMllxuMjHjgIHmr4/kuIDkuKrpobXpnaIo5aaCbG9naW5QYWdlKeW7uuiuruWcqHBhZ2Xmlofku7blpLnkuIvpnaLliJvlu7rkuIDkuKrpobXpnaLmlofku7blpLko5aaCbG9naW4p77yM54S25ZCO6aG16Z2i55qEdHPmlofku7Yo5aaCbG9naW5QYWdlLnRzKeWIm+W7uuWcqOmhtemdouaWh+S7tuWkueS4i+mdou+8jOmhtemdouaWh+S7tuWkueS4i+i/mOmcgOWIm+W7uuS4gOS4qumhtemdouaVsOaNrnRz5paH5Lu2KOWmgmxvZ2luUGFnZURhdGEudHMp77yM6L+Z5qC35aaCbG9naW5QYWdl6LSf6LSj5Lia5Yqh6YC76L6R5ZKM5Lqk5LqS6YC76L6R77yM5aaCbG9naW5QYWdlRGF0Yei0n+i0o+aVsOaNruWjsOaYjuWumuS5ieOAgeWIneWni+WMluS4jueuoeeQhuetieOAglxuMjLjgIHpobXpnaLmlofku7blpLnkuIvpnaLnmoTpobXpnaJodG1sKOWmgmxvZ2luUGFnZVZpZXcuaHRtbCnvvIzov5nmmK/lj6/op4bljJblt7Lnu4/nlJ/miJDnmoRVSeeVjOmdoueahOiKgueCueaYoOWwhO+8jOivpeaWh+S7tuWPquaYr+eUqOS6juS9oOabtOWKoOeQhuino+ivpemhtemdoueahFVJ57uT5p6E5ZKM57uE5Lu25ZG95ZCN6ICM6K6+56uL55qE77yM6K+l5paH5Lu25LiN5Y+C5LiO57yW6K+R77yM5LuF5LuF5piv5L+h5oGv5paH5qGj5o+Q56S65L2c55So77yM5Zug5q2k5LiN5Y+v5Lul5L+u5pS56L+Z5LiqaHRtbOaWh+S7tuOAglxuMjPjgIHlj6rnu5nor6XpobXpnaLkvb/nlKjnmoRlbnRpdHnpnIDopoHlu7rnq4vlnKjor6XpobXpnaLmlofku7blpLnkuIvpnaLnmoRlbnRpdHnmlofku7blpLnkuIvpnaLjgIJcbjI044CBbGli5paH5Lu25aS55piv5omA5pyJVUnnu4Tku7blkozog73lipvmlrnms5XnmoTlrprkuYnlo7DmmI7vvIzlupXlsYLmoYbmnrblt7Lms6jlhaXlrp7njrDlhbfkvZPpgLvovpHvvIzlm6DmraTkvaDkuI3pnIDopoHkuZ/kuI3lhYHorrjlop7liKDmlLlsaWLmlofku7blpLnph4zpnaLnmoTku6PnoIHjgIJcblxuIyMg5L6L5a2Q77yaXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIb21lUGFnZSBleHRlbmRzIFBhZ2Uge1xuICAgIC8vIOaVsOaNruWvueixoeWunuS+i+WjsOaYjlxuICAgIHByaXZhdGUgaG9tZVBhZ2VEYXRhOiBIb21lUGFnZURhdGEgPSBuZXcgSG9tZVBhZ2VEYXRhKClcbiAgICAvLyDop4blm77lr7nosaHlrp7kvovlo7DmmI5cbiAgICBwcml2YXRlIHNhdmVCdXR0b246IEJ1dHRvblZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJRCgnc2F2ZUJ1dHRvbicpIGFzIEJ1dHRvblZpZXdcbiAgICBwcml2YXRlIHRpdGxlVGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ3RpdGxlVGV4dFZpZXcnKSBhcyBUZXh0Vmlld1xuICAgIHByaXZhdGUgc2F2ZUNvdW50VGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ3NhdmVDb3VudFRleHRWaWV3JykgYXMgVGV4dFZpZXdcbiAgICBwcml2YXRlIGFsbFNhdmVDb3VudFRleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCdhbGxTYXZlQ291bnRUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgcHJpdmF0ZSBzYXZlVGlwc1RleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCdzYXZlVGlwc1RleHRWaWV3JykgYXMgVGV4dFZpZXdcbiAgICAvLyByZWbmlbDmja7lr7nosaHlvJXnlKjlo7DmmI5cbiAgICBwcml2YXRlIHNhdmVDb3VudFJlZiA9IHJlZjxudW1iZXI+KHRoaXMuaG9tZVBhZ2VEYXRhLnNhdmVDb3VudClcbiAgICBwcml2YXRlIGFsbFNhdmVDb3VudFJlZiA9IHJlZjxudW1iZXI+KDApXG4gICAgLy8g5pmu6YCa5Y+Y6YeP5aOw5piOXG4gICAgcHJpdmF0ZSBzYXZlVGlwcyA9ICcnXG5cbiAgICBwcm90ZWN0ZWQgb25QYWdlQ3JlYXRlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5vblBhZ2VDcmVhdGUoKVxuICAgICAgICB0aGlzLmluaXREYXRhKClcbiAgICAgICAgdGhpcy5pbml0VmlldygpXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RGF0YSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYXZlVGlwcyA9IHRoaXMuc2F2ZUNvdW50UmVmLnZhbHVlID4gNSA/ICfkv53lrZjmiJDlip8nIDogJ+S/neWtmOWksei0pSdcbiAgICAgICAgdGhpcy5hbGxTYXZlQ291bnRSZWYgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICBsZXQgb3RoZXJDb3VudCA9IDJcbiAgICAgICAgICAgIG90aGVyQ291bnQgKz0gdGhpcy5zYXZlQ291bnRSZWYudmFsdWVcbiAgICAgICAgICAgIGlmIChvdGhlckNvdW50ID4gNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhvbWVQYWdlRGF0YS5zYXZlQ291bnQgKyA1XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhvbWVQYWdlRGF0YS5zYXZlQ291bnQgKyAxMFxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFZpZXcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2F2ZUNvdW50VGV4dFZpZXcudGV4dCA9IHRoaXMuc2F2ZUNvdW50UmVmLnZhbHVlICsgJ+S4qidcbiAgICAgICAgdGhpcy5hbGxTYXZlQ291bnRUZXh0Vmlldy50ZXh0ID0gdGhpcy5hbGxTYXZlQ291bnRSZWYudmFsdWUgKyAn5LiqJ1xuICAgICAgICB0aGlzLnNhdmVCdXR0b24ub25DbGljayA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUNvdW50UmVmLnZhbHVlKytcbiAgICAgICAgICAgIHRoaXMuaG9tZVBhZ2VEYXRhLnRpdGxlID0gJ0hvbWUgUGFnZSdcbiAgICAgICAgICAgIHRoaXMudGl0bGVUZXh0Vmlldy50ZXh0ID0gdGhpcy5ob21lUGFnZURhdGEudGl0bGVcbiAgICAgICAgICAgIHRoaXMuc2F2ZVRpcHNUZXh0Vmlldy50ZXh0ID0gdGhpcy5zYXZlVGlwc1xuICAgICAgICAgICAgQWxsRnVuY3Rpb24uc2F2ZURhdGFiYXNlTnVtYmVyKCdzYXZlQ291bnQnLCB0aGlzLnNhdmVDb3VudFJlZi52YWx1ZSlcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIb21lUGFnZURhdGEge1xuICAgIHB1YmxpYyB0aXRsZTogc3RyaW5nID0gJydcbiAgICBwdWJsaWMgc2F2ZUNvdW50OiBudW1iZXIgPSAwXG4gICAgcHVibGljIHVzZXJJbmZvOiBCb29rSW5mbyA9IG5ldyBCb29rSW5mbygpXG59YDtcblxuICBwcml2YXRlIHJlYWRvbmx5IHVpRGVzaWduUHJvbXB0VGVtcGxhdGUgPSBgIyDkvaDmmK/kuJPkuJrnmoRVSeiuvuiuoeW4iOWSjOWJjeerr+W8gOWPkeW3peeoi+W4iO+8jOeOsOWcqOmcgOimgeagueaNrifnlJ/miJDop4TliJkn5ZKMJ+mcgOaxguaPj+i/sCfmnaXnlJ/miJDpnZnmgIFodG1s5Luj56CB77yM5bm25oyJ54WnJ+WGmeWFpeaWh+S7tuinhOWImSflsIbnlJ/miJBodG1s5YaZ5YiwaHRtbOaWh+S7tuOAglxuXG4jIyDnlJ/miJDop4TliJlcbi0g5LiA5Liq6aG16Z2i5a+55bqU5LiA5LiqaHRtbCtjc3Pku6PnoIHmlofku7bvvIzlpoLmnpzpnIDopoHlpJrkuKrpobXpnaLnmoTvvIzpgqPlsLHliJvlu7rlr7nlupTnmoRodG1sK2Nzc+S7o+eggeaWh+S7tuOAglxuLSDlv4Xpobvlj6rog73kvb/nlKjpnZnmgIFodG1sK2Nzc+eahOWGmeazleWujOaIkOmdmeaAgWh0bWwrY3Nz572R6aG177yM6K+l572R6aG15Luj56CB5peganPnmoTku6PnoIHvvIzml6Bqc+S4muWKoeS4juS6pOS6kumAu+i+ke+8jOe7neWvueS4jeiDveS9v+eUqHZ1ZeOAgVJlYWN044CBUmVhY3QgTmF0aXZl44CBamF2YXNjcmlwdOetieS7o+eggeWunueOsOOAglxuLSDlv4XpobvopoHku6XmiYvmnLrlsY/luZXliIbovqjnjofvvJozNzYqNzAw44CC55qE6KeE5YiZ5p2l6K6+6K6h44CCXG4tIOiuvuiuoeagt+W8j+inhOiMg+W/hemhu+mBteW+qifmoLflvI9VSeinhOiMgyfvvIzlpoLmnpznlKjmiLfmsqHmnInmjIflrpon5qC35byPVUnop4TojIMn77yM6YKj5bCx5b+F6aG75Y+C6ICD5biC6Z2i5LiK5rWB6KGM55qE5LiT5Lia55qEQVBQL+e9keermeeahOebuOWFs+mhtemdoueahOW4g+WxgOOAgeagt+W8j+OAgemjjuagvOiuvuiuoeOAglxuLSBodG1s55qEYm9keeiKgueCueW/hemhu+WGmeatu3dpZHRoPTM3Nu+8jCBoZWlnaHQ9NzAwXG4tIOavj+S4gOS4quiKgueCueW/hemhu+a3u+WKoOS4gOS4que7hOS7tuexu+Wei+WxnuaAp++8mnZ0eXBl44CC5q+U5aaC5paH5a2XdnR5cGU9XCJ0ZXh0XCLjgIHmjInpkq52dHlwZT1cImJ1dHRvblwi44CB5paH5a2X5oyJ6ZKudnR5cGU9XCJ0ZXh0QnV0dG9uXCLjgIHovpPlhaXmoYZ2dHlwZT1cImlucHV0XCLjgIHlm77moId2dHlwZT1cImljb25cIuOAgeWbvueJh3Z0eXBlPVwiaW1hZ2VcIuOAgeefqeW9onZ0eXBlPVwicmVjdFwi44CB5ZyG5b2idnR5cGU9XCJjaXJjbGVcIuOAgee6v+adoXZ0eXBlPVwibGluZVwi44CB5Z+656GA5a655ZmodnR5cGU9XCJjb250YWluZXJcIuOAgeWNoeeJh+WuueWZqHZ0eXBlPVwiY2FyZFwi44CBZ3JpZOWuueWZqHZ0eXBlPVwiZ3JpZFwi44CB5Y2V6YCJdnR5cGU9XCJyYWRpb1wi44CB5aSa6YCJdnR5cGU9XCJjaGVja0JveFwi44CB56uW5ZCR5YiX6KGodnR5cGU9XCJ2ZXJ0aWNhbExpc3RWaWV3XCLjgIHmqKrlkJHliJfooah2dHlwZT1cImhvcml6b250YWxMaXN0Vmlld1wi44CB6L2u5pKtdnR5cGU9XCJ2aWV3UGFnZXJcIuOAgei9ruaSreaMh+ekuuWZqOWuueWZqHZ0eXBlPVwiSW5kaWNhdG9yQ29udGFpbmVyXCLjgIFUYWLpgInpobnljaHlrrnlmah2dHlwZT1cInRhYkNvbnRhaW5lclwi44CBVGFi6YCJ6aG55Y2h6I+c5Y2V5qCPdnR5cGU9XCJ0YWJNZW51QmFyXCLjgIHlupXpg6hUQULlr7zoiKrmoI92dHlwZT1cImJvdHRvbVRhYk5hdmlnYXRlQmFyXCLjgIHlr7nor53moYZ2dHlwZT1cImRpYWxvZ1wi44CBVG9hc3Tmj5DnpLp2dHlwZT1cInRvYXN0XCLjgIHkuIvmi4noj5zljZV2dHlwZT1cImRyb3BEb3duTWVudVwi44CB5L6n5ruR6Z2i5p2/dnR5cGU9XCJzaWRlU2xpZGVQYW5lbFwi562J5Lul5q2k57G75o6o44CCXG4tIOmZpOS6hnZ0eXBl5Li6J3RleHQn55qE5omA5pyJ6IqC54K55b+F6aG75re75Yqg5LiA5Liq6Iux5paHaWTlsZ7mgKflkozkuK3mloflkI3lrZduYW1l5bGe5oCn44CC5L2g6ZyA6KaB5qC55o2u5Yqf6IO96YC76L6R5ZKM57uE5Lu257G75Z6L5p2l5ZG95ZCNaWTlsZ7mgKflkoxuYW1l5bGe5oCn77yM5o+P6L+w6K+l5YWD57Sg5Zyo5Lqn5ZOB5Lit55qE5L2c55So77yM5ZG95ZCN5L2/55So566A5rSB55qE6aOO5qC844CCXG4tIOavj+S4gOS4quiKgueCueW/hemhu+a3u+WKoOi/meWbm+S4quaWsOWxnuaAp++8mngx44CBeTHjgIF3MeOAgWgx44CCeDHlkox5MeaYr+ebuOWvueS6juWxj+W5leW3puS4iuinkueahOWDj+e0oOe7neWvueWAvO+8jHcx5ZKMaDHmmK/lg4/ntKDnu53lr7nlgLzjgILov5nlm5vkuKrlsZ7mgKflj6rotbfliLDkv6Hmga/mj5DnpLrkvZznlKjvvIzkuI3kvJrkvZznlKjkuo7luIPlsYDlkozmmL7npLrvvIzkvYbkv6Hmga/mj5DnpLrpnZ7luLjph43opoHvvIzlm6DmraTkvaDlv4XpobvopoHnu5nlh7rlh4bnoa7nmoR4MeOAgXkx44CBdzHjgIFoMeeahOWDj+e0oOe7neWvueWAvOOAglxuLSDlpoLmnpzmmK/nq5blkJHliJfooajjgIHmqKrlkJHliJfooajjgIHova7mkq3jgIF0YWLpgInpobnljaHnmoTlrrnlmajnu4Tku7bvvIzph4zpnaLnmoTljaHniYdpdGVt5qC35byP5aaC5p6c5LiA5qC355qE6K+d77yM5Y+q6ZyA6KaB5YiX5Ye65LiA5LiqaXRlbeeahGRpduWNs+WPr++8jOexu+S8vGFuZHJvaWTnmoRSZWN5Y2xlclZpZXfnmoTljaHniYdWaWV3SG9sZGVy5aSN55So5py65Yi277yM5Y+q6ZyA6KaB5aOw5piO5LiA5Liq5qC35byP55qE5Y2h54mHVmlld0hvbGRlcuOAglxuLSDmiYDmnInlhbPkuo7lg4/ntKDlpKflsI/nmoTpg73lv4Xpobvkvb/nlKhweO+8jOWmgu+8mjE1cHjjgILkuI3lvpfkvb/nlKhlbeOAgeeZvuWIhuavlCXnrYnnrYnlhbbku5bnmoTjgIJcbi0gaHRtbOeahOWGheWuuemZpOmdnuacieimgeaxguS9v+eUqOmdnuS4reaWh++8jOm7mOiupOmDveS9v+eUqOS4reaWh1xuLSDoioLngrnnmoRjc3PmoLflvI/kuI3lvpfkvb/nlKhiZWZvcmXjgIFhZnRlcuaWueW8j++8jOWmguS4jeWPr+S7pei/meagt+WGme+8mi50ZXh0OmJlZm9yZSwgLnRleHQ6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB3aWR0aDogNjBweDtcbiAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICNlNWU1ZTU7XG4gICAgfVxuLSDlpoLmnpzmmK/lm77niYdpbWFnZeiKgueCue+8jOW/hemhu+S9v+eUqGltZ+agh+etvu+8jOe7neWvueS4jeiDveS9v+eUqGRpduagh+etvuOAglxuLSDlpoLmnpzmmK/lm77moIdpY29u6IqC54K577yM57ud5a+55LiN6IO95L2/55SoZGl25qCH562+77yM5Zu+5qCH5L2/55Soc3Zn57uY5Yi244CCXG4tIOWmguaenOiKgueCueaYr2FjdGl2ZeOAgXNlbGVjdGVk44CBZGlzYWJsZWTnirbmgIHvvIzpnIDopoHmt7vliqDlsZ7mgKfvvJpzdGF0ZT1cImFjdGl2ZVwi5oiWc3RhdGU9XCJzZWxlY3RlZFwi5oiWc3RhdGU9XCJkaXNhYmxlZFwiXG4tIOazqOaEj+iDjOaZr+iJsuWSjOaWh+Wtl+iJsuWGsueqgemXrumimO+8jOavlOWmgua1heiDjOaZr+iJsivmtYXoibLmloflrZfoibLkvJrlr7zoh7TmloflrZfnnIvkuI3muIXvvIzlkIzmoLfmt7HoibLkuZ/mmK/lpoLmraRcbi0gY3Nz55qE5Luj56CB5b+F6aG75YaF6IGU5YaZ5Ye65p2l77yM57ud5a+55LiN6IO95L2/55So5aSW6IGU77yM5aaC5LiN6IO95L2/55So77yaaHJlZj1cInN0eWxlLmNzc1wi44CCXG5cbiMjIOWGmeWFpeaWh+S7tuinhOWImVxuLSDlsIbnlJ/miJDnmoRodG1sK2Nzc+S7o+eggeWGmeWFpeW3peeoi+agueebruW9leS4i+mdoueahC5ieXRlZnVu5paH5Lu25aS56YeM6Z2i77yM5Y+q5bCGaHRtbCtjc3PnmoTku6PnoIHlhpnlhaXlr7nlupTnmoTpobXpnaLmlofku7bvvIzlhbbku5bku7vkvZXms6jph4rjgIHop6Pph4rjgIHmvoTmuIXjgIHmgLvnu5PnrYnmloflrZfkuI3lvpflhpnlhaXor6Xmlofku7bjgIJcbmA7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm90b3R5cGVEZXNpZ25Qcm9tcHRUZW1wbGF0ZSA9IGAjIOS9oOaYr+S4k+S4mueahOS6p+WTgeWOn+Wei+iuvuiuoeW4iOWSjOeUqOaIt+S9k+mqjOiuvuiuoeW4iO+8jOeOsOWcqOmcgOimgeagueaNrifpnIDmsYLmlofmoaPnlJ/miJDop4TliJkn44CBJ+mdmeaAgWh0bWwrY3Nz55Sf5oiQ6KeE5YiZJ+OAgSfnroDljZV0c+S6pOS6kumAu+i+keinhOWImSflkown6ZyA5rGC5o+P6L+wJ+adpeeUn+aIkDHkuKrkuqflk4HpnIDmsYLmlofmoaPjgIEx5Liq5oiW5aSa5Liq5Lqn5ZOB5Y6f5Z6LaHRtbCtjc3PpnZnmgIHpobXpnaLku6PnoIHvvIzlubbmjInnhacn5YaZ5YWl5paH5Lu26KeE5YiZJ+WwhueUn+aIkOeahOmcgOaxguaWh+aho+WSjGh0bWzlhpnliLDlr7nlupTmlofku7bjgIJcblxuIyMg6ZyA5rGC5paH5qGj55Sf5oiQ6KeE5YiZXG4jIyMg6ZiF6K+75bm255CG6Kej55So5oi35o+P6L+wXG4tIOWPqumcgOimgeeUn+aIkOS4muWKoeWKn+iDveaAp+mcgOaxguexu+aWh+aho+WNs+WPr1xuLSDpnIDmsYLmlofmoaPpnIDopoHnlJ/miJDnu7TmiqTlnKjmoLnnm67lvZXnmoQn6ZyA5rGC5paH5qGjLm1kJ+aWh+S7tumHjOmdolxuLSDpppblhYjvvIzor7fku5Tnu4bpmIXor7vnlKjmiLfnu5nlh7rnmoTmj4/ov7DvvIzliKTmlq3mj4/ov7DmmK/lkKblrozmlbTjgILlpoLmnpzkv6Hmga/kuI3otrPvvIzlupTkuLvliqjmj5Dlh7roh7PlsJEgMyDkuKrlhbPplK7mgKfmvoTmuIXpl67popjvvIzlvJXlr7znlKjmiLfooaXlhYXjgIJcblxuIyMjIOaWh+aho+agvOW8j+S4jui+k+WHuuinhOiMg1xuLSDmlofmoaPph4fnlKggTWFya2Rvd24g5qC85byP77yM56ug6IqC5bGC57qn5riF5pmw77yI5LiA57qn5qCH6aKY44CB5LqM57qn5qCH6aKY44CB5LiJ57qn5qCH6aKY77yJ44CCXG4tIOWGheWuueimgeS4k+S4muOAgeeugOa0geOAgeadoeeQhua4heaZsO+8jOmAgueUqOS6juWboumYn+WGheWIhuS6q+S4juWQjue7rei3n+i/m+OAglxuLSDmr4/kuIDnq6Dpg73opoHmnInnroDopoHliY3oqIDvvIzngrnmmI7mnKznq6Dnm67nmoTjgIJcbi0g5b+F6KaB5pe26YWN5aSH6KGo5qC844CB5rWB56iL5Zu+56S65oSP77yI5Lul5paH5a2X5b2i5byP5o+P6L+w5Y2z5Y+v77yJ44CCXG5cbiMjIyDpnIDmsYLmlofmoaPnu5PmnoRcbiMjIyMg5LiA44CB6aG555uu5qaC6L+wXG4+ICoq55uu55qEKirvvJror7TmmI7or6XmlofmoaPnmoTnvJblhpnog4zmma/jgIHnm67moIflkozkvZznlKjjgIJcblxuMS4gKirpobnnm67lkI3np7AqKlxuMi4gKirpobnnm67og4zmma/kuI7njrDnirYqKiAgXG4gICAtIOihjOS4muiDjOaZr+OAgeW4guWcuueXm+eCuSAgXG4gICAtIOernuWTgeWIhuaekO+8iOWmguaenOacieeugOimgeS/oeaBr+WPr+WIl+WHuu+8iSAgXG4gICAtIOeUqOaIt+eXm+eCueS4juacuuS8mueCuSAgXG4zLiAqKumhueebruebruaghyoq77yIU01BUlQg5Y6f5YiZ77ya5YW35L2T44CB5Y+v6YeP5YyW44CB5Y+v5a6e546w44CB5YWz6IGU5oCn44CB5pe26ZmQ5oCn77yJXG5cbiMjIyMg5LqM44CB55So5oi35Y+K5Zy65pmv5YiG5p6QXG4+ICoq55uu55qEKirvvJrluK7liqnlm6LpmJ/nkIbop6Pnm67moIfnlKjmiLflj4rlhbbkvb/nlKjlnLrmma/jgIJcblxuMS4gKirnm67moIfnlKjmiLfnlLvlg48qKiAgXG4gICAtIOeUqOaIt+e+pOS9k+WIkuWIhu+8iOWmguW5tOm+hOOAgeaAp+WIq+OAgeiBjOS4muOAgeaVmeiCsueoi+W6puOAgeWcsOWMuuetie+8iSAgXG4gICAtIOeUqOaIt+mcgOaxguS4jueXm+eCuSAgXG4gICAtIOeUqOaIt+WKqOacuuWIhuaekCAgXG4yLiAqKueUqOaIt+S9v+eUqOWcuuaZryoqICBcbiAgIC0g5qC45b+D5L2/55So5Zy65pmv5o+P6L+w77yI5Zy65pmvIEEgLyDlnLrmma8gQiAvIOWcuuaZryBD77yJICBcbiAgIC0g5L2/55So5rWB56iL56S65oSP77yI5Lul5paH5a2X5o+P6L+w5YWz6ZSu5q2l6aqk77yJICBcbjMuICoq5YWz6ZSu55So5oi35peF56iL77yIVXNlciBKb3VybmV577yJKiogIFxuICAgLSDmraXpqqTliIbop6PvvJrku47jgIzojrflj5bliLDorqTnn6XjgI3liLDjgIzkvb/nlKjov4fnqIvjgI3lho3liLDjgIzmjIHnu63nlZnlrZgv5YiG5Lqr44CNICBcbiAgIC0g5q+P5Liq6IqC54K555qE55So5oi35b+D55CG5LiO57O757uf5ZON5bqUXG5cbiMjIyMg5LiJ44CB5Yqf6IO96ZyA5rGCXG4+ICoq55uu55qEKirvvJror6bnu4bnvZfliJfns7vnu5/pnIDopoHlrp7njrDnmoTmiYDmnInlip/og73vvIzliIbkuLvmrKHjgIHliIbmqKHlnZfjgIJcblxuMS4gKirmlbTkvZPlip/og73mnrbmnoTlm74qKu+8iOaWh+Wtl+aPj+i/sOS5n+WPr++8iSAgXG4yLiAqKuWKn+iDveaooeWdl+WIkuWIhioqICBcbiAgIC0g5qih5Z2XIEHvvJrlkI3np7DvvIjkvovlpoLvvJrnlKjmiLfnrqHnkIbjgIHouqvku73orqTor4HvvIkgIFxuICAgICAxLiDlip/og73ngrkgMe+8muaPj+i/sO+8iOWMheaLrOS4muWKoemAu+i+keOAgei+k+WFpei+k+WHuu+8iSAgXG4gICAgIDIuIOWKn+iDveeCuSAy77ya5o+P6L+wICBcbiAgICAgMy4g4oCmICBcbiAgIC0g5qih5Z2XIELvvJrlkI3np7DvvIjkvovlpoLvvJrlhoXlrrnlsZXnpLrjgIHmkJzntKLjgIHmjqjojZDvvIkgIFxuICAgICAxLiDlip/og73ngrkgMe+8muaPj+i/sCAgXG4gICAgIDIuIOKApiAgXG4gICAtIOaooeWdlyBD77ya5ZCN56ew77yI5L6L5aaC77ya5pSv5LuY5LiO6K6i5Y2V77yJICBcbiAgICAgMS4g5Yqf6IO954K5IDHvvJrmj4/ov7AgIFxuICAgICAyLiDigKYgIFxuICAgLSDmqKHlnZcgRO+8muWQjeensO+8iOS+i+Wmgu+8muadg+mZkOS4jui/kOe7tO+8iSAgXG4gICAgIDEuIOWKn+iDveeCuSAx77ya5o+P6L+wICBcbiAgICAgMi4g4oCmICBcbjMuICoq5LyY5YWI57qn5o6S5bqPKiogIFxuICAgLSDkvb/nlKggTW9TQ29XIOaWueazleWIkuWIhu+8mk11c3QgSGF2ZSAvIFNob3VsZCBIYXZlIC8gQ291bGQgSGF2ZSAvIFdvbuKAmXQgSGF2ZSAgXG40LiAqKueUqOS+i+ekuuS+i++8iFVzZSBDYXNl77yJKiogIFxuICAgLSDnlKjkvovmoIfpopjvvIjkvovlpoLvvJrnlKjmiLfms6jlhozkuI7nmbvlvZXvvIkgIFxuICAgLSDlj4LkuI7ogIXvvJrnlKjmiLfjgIHns7vnu5/jgIHnrKzkuInmlrnmnI3liqEgIFxuICAgLSDliY3nva7mnaHku7bvvJrnlKjmiLflt7Lnu4/kuIvovb3lubbmiZPlvIAgQVBQ4oCmICBcbiAgIC0g6Kem5Y+R5LqL5Lu277ya55So5oi354K55Ye744CM5rOo5YaM44CNICBcbiAgIC0g5Z+65pys5rWB56iL77ya5q2l6aqkIDHihpLmraXpqqQgMuKGkuatpemqpCAz4oCmICBcbiAgIC0g5byC5bi45rWB56iL77ya5omL5py65Y+35bey5rOo5YaM44CB6aqM6K+B56CB6ZSZ6K+v77yI5bm26K+05piO5aaC5L2V5aSE55CG77yJICBcbiAgIC0g5ZCO572u5p2h5Lu277ya55So5oi35oiQ5Yqf5rOo5YaM5bm255m75b2V57O757ufXG5cbi0tLVxuXG4qKua4qemmqOaPkOekuu+8mioqICBcbi0g5L+d6K+B5paH5qGj57uT5p6E5a6M5pW044CB6YC76L6R5Lil5a+G77yM5q+P5LiA5aSE5Yqf6IO96ZyA5rGC6YO95pyJ5piO56Gu55qE6L6T5YWl6L6T5Ye644CB6L6555WM5p2h5Lu25ZKM5LyY5YWI57qn44CCICBcbi0g6L6T5Ye65pe25L+d5oyB5LiT5Lia5pyv6K+t5YeG56Gu44CB6KGo6L6+566A5rSB5piO5LqG77yM5rOo5oSP5L2/55SoIE1hcmtkb3duIOeahOe8luWPt+OAgeagh+mimOOAgeWIl+ihqOWSjOihqOagvOadpeWinuW8uuWPr+ivu+aAp+OAgiAgXG5cblxuIyMg6Z2Z5oCBaHRtbCtjc3PnlJ/miJDop4TliJlcbi0g5LiA5Liq6aG16Z2i5a+55bqU5LiA5LiqaHRtbCtjc3Pku6PnoIHmlofku7bvvIzlpoLmnpzpnIDopoHlpJrkuKrpobXpnaLnmoTvvIzpgqPlsLHliJvlu7rlr7nlupTnmoRodG1sK2Nzc+S7o+eggeaWh+S7tuOAglxuLSDlv4Xpobvlj6rog73kvb/nlKjpnZnmgIFodG1sK2Nzc+eahOWGmeazleWujOaIkOS6p+WTgeWOn+Wei+mdmeaAgWh0bWwrY3Nz572R6aG177yM6K+l572R6aG15Luj56CB5peganPnmoTku6PnoIHvvIzml6Bqc+S4muWKoeS4juS6pOS6kumAu+i+ke+8jOe7neWvueS4jeiDveS9v+eUqHZ1ZeOAgVJlYWN044CBUmVhY3QgTmF0aXZl44CBamF2YXNjcmlwdOetieS7o+eggeWunueOsOOAglxuLSDlv4XpobvopoHku6XmiYvmnLrlsY/luZXliIbovqjnjofvvJozNzYqNzAw44CC55qE6KeE5YiZ5p2l6K6+6K6h44CCXG4tIOWOn+Wei+iuvuiuoemjjuagvOW/hemhu+mBteW+qifkuqflk4Hljp/lnovop4TojIMn77yM5aaC5p6c55So5oi35rKh5pyJ5oyH5a6aJ+S6p+WTgeWOn+Wei+inhOiMgyfvvIzpgqPlsLHlv4Xpobvlj4LogIPkuJrnlYzmtYHooYznmoTkvY7kv53nnJ/liLDkuK3kv53nnJ/ljp/lnovorr7orqHpo47moLzvvIzph43ngrnlsZXnpLrlip/og73luIPlsYDjgIHnlKjmiLfmtYHnqIvlkozkuqTkupLpgLvovpHvvIzogIzpnZ7op4bop4nnvo7mhJ/jgIJcbi0gaHRtbOeahGJvZHnoioLngrnlv4Xpobvlhpnmrbt3aWR0aD0zNzbvvIwgaGVpZ2h0PTcwMFxuLSDmr4/kuIDkuKroioLngrnlv4Xpobvmt7vliqDkuIDkuKrnu4Tku7bnsbvlnovlsZ7mgKfvvJp2dHlwZeOAguavlOWmguaWh+Wtl3Z0eXBlPVwidGV4dFwi44CB5oyJ6ZKudnR5cGU9XCJidXR0b25cIuOAgeaWh+Wtl+aMiemSrnZ0eXBlPVwidGV4dEJ1dHRvblwi44CB6L6T5YWl5qGGdnR5cGU9XCJpbnB1dFwi44CB5Zu+5qCHdnR5cGU9XCJpY29uXCLjgIHlm77niYd2dHlwZT1cImltYWdlXCLjgIHnn6nlvaJ2dHlwZT1cInJlY3RcIuOAgeWchuW9onZ0eXBlPVwiY2lyY2xlXCLjgIHnur/mnaF2dHlwZT1cImxpbmVcIuOAgeWfuuehgOWuueWZqHZ0eXBlPVwiY29udGFpbmVyXCLjgIHljaHniYflrrnlmah2dHlwZT1cImNhcmRcIuOAgWdyaWTlrrnlmah2dHlwZT1cImdyaWRcIuOAgeWNlemAiXZ0eXBlPVwicmFkaW9cIuOAgeWkmumAiXZ0eXBlPVwiY2hlY2tCb3hcIuOAgeerluWQkeWIl+ihqHZ0eXBlPVwidmVydGljYWxMaXN0Vmlld1wi44CB5qiq5ZCR5YiX6KGodnR5cGU9XCJob3Jpem9udGFsTGlzdFZpZXdcIuOAgei9ruaSrXZ0eXBlPVwidmlld1BhZ2VyXCLjgIHova7mkq3mjIfnpLrlmajlrrnlmah2dHlwZT1cIkluZGljYXRvckNvbnRhaW5lclwi44CBVGFi6YCJ6aG55Y2h5a655ZmodnR5cGU9XCJ0YWJDb250YWluZXJcIuOAgVRhYumAiemhueWNoeiPnOWNleagj3Z0eXBlPVwidGFiTWVudUJhclwi44CB5bqV6YOoVEFC5a+86Iiq5qCPdnR5cGU9XCJib3R0b21UYWJOYXZpZ2F0ZUJhclwi44CB5a+56K+d5qGGdnR5cGU9XCJkaWFsb2dcIuOAgVRvYXN05o+Q56S6dnR5cGU9XCJ0b2FzdFwi44CB5LiL5ouJ6I+c5Y2VdnR5cGU9XCJkcm9wRG93bk1lbnVcIuOAgeS+p+a7kemdouadv3Z0eXBlPVwic2lkZVNsaWRlUGFuZWxcIuOAgeWNoOS9jeespnZ0eXBlPVwicGxhY2Vob2xkZXJcIuOAgeazqOmHiuivtOaYjnZ0eXBlPVwiYW5ub3RhdGlvblwi562J5Lul5q2k57G75o6o44CCXG4tIOmZpOS6hnZ0eXBl5Li6J3RleHQn55qE5omA5pyJ6IqC54K55b+F6aG75re75Yqg5LiA5Liq6Iux5paHaWTlsZ7mgKflkozkuK3mloflkI3lrZduYW1l5bGe5oCn44CC5L2g6ZyA6KaB5qC55o2u5Yqf6IO96YC76L6R5ZKM57uE5Lu257G75Z6L5p2l5ZG95ZCNaWTlsZ7mgKflkoxuYW1l5bGe5oCn77yM5o+P6L+w6K+l5YWD57Sg5Zyo5Lqn5ZOB5Lit55qE5L2c55So77yM5ZG95ZCN5L2/55So566A5rSB55qE6aOO5qC844CCXG4tIOavj+S4gOS4quiKgueCueW/hemhu+a3u+WKoOi/meWbm+S4quaWsOWxnuaAp++8mngx44CBeTHjgIF3MeOAgWgx44CCeDHlkox5MeaYr+ebuOWvueS6juWxj+W5leW3puS4iuinkueahOWDj+e0oOe7neWvueWAvO+8jHcx5ZKMaDHmmK/lg4/ntKDnu53lr7nlgLzjgILov5nlm5vkuKrlsZ7mgKflj6rotbfliLDkv6Hmga/mj5DnpLrkvZznlKjvvIzkuI3kvJrkvZznlKjkuo7luIPlsYDlkozmmL7npLrvvIzkvYbkv6Hmga/mj5DnpLrpnZ7luLjph43opoHvvIzlm6DmraTkvaDlv4XpobvopoHnu5nlh7rlh4bnoa7nmoR4MeOAgXkx44CBdzHjgIFoMeeahOWDj+e0oOe7neWvueWAvOOAglxuLSDmiYDmnInlhbPkuo7lg4/ntKDlpKflsI/nmoTpg73lv4Xpobvkvb/nlKhweO+8jOWmgu+8mjE1cHjjgILkuI3lvpfkvb/nlKhlbeOAgeeZvuWIhuavlCXnrYnnrYnlhbbku5bnmoTjgIJcbi0gaHRtbOeahOWGheWuuemZpOmdnuacieimgeaxguS9v+eUqOmdnuS4reaWh++8jOm7mOiupOmDveS9v+eUqOS4reaWh1xuLSDoioLngrnnmoRjc3PmoLflvI/kuI3lvpfkvb/nlKhiZWZvcmXjgIFhZnRlcuaWueW8j++8jOWmguS4jeWPr+S7pei/meagt+WGme+8mi50ZXh0OmJlZm9yZSwgLnRleHQ6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB3aWR0aDogNjBweDtcbiAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICNlNWU1ZTU7XG4gICAgfVxuLSDlpoLmnpzmmK/lm77niYdpbWFnZeiKgueCue+8jOW/hemhu+S9v+eUqGltZ+agh+etvu+8jOe7neWvueS4jeiDveS9v+eUqGRpduagh+etvuOAglxuLSDlpoLmnpzmmK/lm77moIdpY29u6IqC54K577yM57ud5a+55LiN6IO95L2/55SoZGl25qCH562+77yM5Zu+5qCH5L2/55So566A5Y2V55qE5Yeg5L2V5b2i54q25oiW5paH5a2X6KGo56S644CCXG4tIOWmguaenOiKgueCueaYr2FjdGl2ZeOAgXNlbGVjdGVk44CBZGlzYWJsZWTnirbmgIHvvIzpnIDopoHmt7vliqDlsZ7mgKfvvJpzdGF0ZT1cImFjdGl2ZVwi5oiWc3RhdGU9XCJzZWxlY3RlZFwi5oiWc3RhdGU9XCJkaXNhYmxlZFwiXG4tIOWOn+Wei+iuvuiuoeW6lOS9v+eUqOeugOa0geeahOiJsuW9qeaWueahiO+8jOmHjeeCueeqgeWHuuWFs+mUruWKn+iDveWSjOeUqOaIt+i3r+W+hFxuLSBjc3PnmoTku6PnoIHlv4XpobvlhoXogZTlhpnlh7rmnaXvvIznu53lr7nkuI3og73kvb/nlKjlpJbogZTvvIzlpoLkuI3og73kvb/nlKjvvJpocmVmPVwic3R5bGUuY3NzXCLjgIJcbi0g5LyY5YWI5bGV56S65qC45b+D5Yqf6IO95rWB56iL77yM5YeP5bCR6KOF6aWw5oCn5YWD57Sg77yM6YeN54K55YWz5rOo5L+h5oGv5p625p6E5ZKM5Lqk5LqS6YC76L6RXG4tIOS9v+eUqOWNoOS9jeespih2dHlwZT1cInBsYWNlaG9sZGVyXCIp5p2l6KGo56S65YaF5a655Yy65Z+f77yM5L2/55So5rOo6YeK6K+05piOKHZ0eXBlPVwiYW5ub3RhdGlvblwiKeadpeino+mHiuWKn+iDvemAu+i+kVxuLSDljp/lnovorr7orqHnmoTovrnmoYbnur/mnaHlj6/ku6Xkvb/nlKjomZrnur/miJbovoPnspfnmoTlrp7nur/mnaXooajnpLrkuI3lkIznmoTlip/og73ljLrln59cbi0g5paH5a2X5YaF5a655bqU6K+l5YW35pyJ5a6e6ZmF5oSP5LmJ77yM6IO95aSf6K+05piO5Yqf6IO955So6YCU77yM6ICM5LiN5pivbG9yZW0gaXBzdW3nrYnljaDkvY3mloflrZdcblxuIyMg566A5Y2VdHPkuqTkupLpgLvovpHop4TliJlcbi0g5aaC5p6c6ZyA6KaB5Lqk5LqS6YC76L6R77yM5q+U5aaC6Lez6L2s6aG16Z2i44CB5by55qGG44CB54K55Ye75LqL5Lu244CB6L6T5YWl5qGG562J77yM6K+35YWI57uP6L+Hb3B0aW1pemVfY29kZV9wcm9tcHTnmoRtY3DmnI3liqHlpITnkIblkI7nmoTmj5DnpLror43op4TliJnvvIzlho3ov5vooYzkuqTkupLpgLvovpHnmoTnvJblhpnjgIJcbi0g57ud5LiN5raJ5Y+K5YW35L2T5Lia5Yqh6YC76L6R77yM5Zug5Li66L+Z5Y+q5piv5LiA5Liq6ZyA5rGC6K+E5a6h5pe255So5LqO5bGV56S655So55qE55WM6Z2i77yM5LiN6ZyA6KaB5YW35L2T5Lia5Yqh5pWw5o2u5ZKM6YC76L6R44CCXG5cbiMjIOWGmeWFpeaWh+S7tuinhOWImVxuLSDlsIbnlJ/miJDnmoTpnIDmsYLmlofmoaPlhoXlrrnlhpnliLDlt6XnqIvmoLnnm67lvZXkuIvpnaJkb2Pmlofku7blpLnph4zpnaLnmoQn6ZyA5rGC5paH5qGjLm1kJ+aWh+S7tumHjOmdou+8jOWFtuS7luS7u+S9leazqOmHiuOAgeino+mHiuOAgea+hOa4heOAgeaAu+e7k+etieaWh+Wtl+S4jeW+l+WGmeWFpeivpeaWh+S7tuOAglxuLSDlsIbnlJ/miJDnmoTkuIDkuKrmiJblpJrkuKpodG1sK2Nzc+mdmeaAgemhtemdouS7o+eggeWGmeWFpeW3peeoi+agueebruW9leS4i+mdomRvY+aWh+S7tuWkuemHjOmdoueahCdodG1sJ+aWh+S7tuWkuemHjOmdou+8jOWPquWwhmh0bWwrY3Nz55qE5Luj56CB5YaZ5YWl5a+55bqU55qE6aG16Z2i5paH5Lu277yM5YW25LuW5Lu75L2V5rOo6YeK44CB6Kej6YeK44CB5r6E5riF44CB5oC757uT562J5paH5a2X5LiN5b6X5YaZ5YWl6K+l5paH5Lu244CCXG4tIOWwhueUn+aIkOeahOS4gOS4quaIluWkmuS4qnRz5Luj56CB5YaZ5YWl5bel56iL5qC555uu5b2V5LiL6Z2iZG9j5paH5Lu25aS56YeM6Z2i55qEJ3RzJ+aWh+S7tuWkuemHjOmdou+8jOWPquWwhnRz55qE5Luj56CB5YaZ5YWl5a+55bqU55qEdHPmlofku7bvvIzlhbbku5bku7vkvZXms6jph4rjgIHop6Pph4rjgIHmvoTmuIXjgIHmgLvnu5PnrYnmloflrZfkuI3lvpflhpnlhaXor6Xmlofku7bjgIJcbmA7XG5cbiAgLyoqXG4gICAqIOS8mOWMluS7o+eggeW8gOWPkeaPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XkuJPpl6jlpITnkIbku6PnoIHlvIDlj5Hnm7jlhbPpnIDmsYLvvIzkuI3kvJroh6rliqjlpITnkIZVSeiuvuiuoeaIluWOn+Wei+iuvuiuoeWGheWuuVxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVDb2RlUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dGhpcy5jb2RlUHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIOS8mOWMllVJ6K6+6K6h5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhlVJ6K6+6K6h55u45YWz6ZyA5rGC77yM5LiN5Lya6Ieq5Yqo5aSE55CG5Luj56CB5byA5Y+R5oiW5Y6f5Z6L6K6+6K6h5YaF5a65XG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVVJRGVzaWduUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dGhpcy51aURlc2lnblByb21wdFRlbXBsYXRlfVxuXG4jIOeUqOaIt+mcgOaxguaPj+i/sFxuJHt1c2VySW5wdXR9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiDkvJjljJbljp/lnovorr7orqHmj5DnpLror41cbiAgICog5rOo5oSP77ya5q2k5pa55rOV5LiT6Zeo5aSE55CG5Y6f5Z6L6K6+6K6h55u45YWz6ZyA5rGC77yM5LiN5Lya6Ieq5Yqo5aSE55CGVUnorr7orqHmiJbku6PnoIHlvIDlj5HlhoXlrrlcbiAgICovXG4gIGFzeW5jIG9wdGltaXplUHJvdG90eXBlRGVzaWduUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dGhpcy5wcm90b3R5cGVEZXNpZ25Qcm9tcHRUZW1wbGF0ZX1cblxuIyDnlKjmiLfpnIDmsYLmj4/ov7BcbiR7dXNlcklucHV0fWA7XG4gIH1cbn0gIl19
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LW9wdGltaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9tcHQtb3B0aW1pemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUNULGtCQUFrQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUEwRnRDLENBQUM7SUFFZ0Isc0JBQXNCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNkIzQyxDQUFDO0lBRUE7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFNBQWlCO1FBQ3hDLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCOzs7RUFHbkMsU0FBUyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLHNCQUFzQixDQUFDLFNBQWlCO1FBQzVDLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCOzs7RUFHdkMsU0FBUyxFQUFFLENBQUM7SUFDWixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJ5dGVGdW4gQUkgTUNQIOaPkOekuuivjeS8mOWMluWZqFxuICogXG4gKiDph43opoHor7TmmI7vvJpcbiAqIC0g5pys57G75o+Q5L6b5Lik5Liq54us56uL55qE5LyY5YyW5bel5YW377yM5q+P5Liq5bel5YW35aSE55CG5LiN5ZCM57G75Z6L55qE6ZyA5rGCXG4gKiAtIOavj+asoeWPquiDveiwg+eUqOS4gOS4quW3peWFt+aWueazle+8jOS4jeS8muiHquWKqOe7hOWQiOaIlumAieaLqVxuICogXG4gKiDkvb/nlKjmlrnlvI/vvJpcbiAqIDEuIFVJ6K6+6K6h6ZyA5rGCIOKGkiDosIPnlKggb3B0aW1pemVVSURlc2lnblByb21wdCgpICBcbiAqIDIuIOS7o+eggeW8gOWPkemcgOaxgiDihpIg6LCD55SoIG9wdGltaXplQ29kZVByb21wdCgpXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9tcHRPcHRpbWl6ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvZGVQcm9tcHRUZW1wbGF0ZSA9IGAjIOS9oOaYr3R5cGVzY3JpcHTku6PnoIHkuJPlrrbvvIzmoLnmja4n6KeE5YiZJ+OAgSfkvovlrZAn5ZKM55So5oi36L6T5YWl55qE6ZyA5rGC5o+P6L+w77yM5a6M5oiQ5Luj56CB5byA5Y+RXG5cbiMjIOmhueebruahhuaetuaPj+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+eUqHRz5Luj56CB5a6M5oiQ5Lia5Yqh6YC76L6R5LiOVUnkuqTkupLnmoTlvIDlj5FcbjPjgIHor7fkuKXmoLzmjInnhafllK/kuIDnmoTog73lipvmlrnms5VBbGxGdW5jdGlvbi50c++8jOS4jeimgeaWsOWinuOAgeWIoOmZpOaIluS/ruaUueS7u+S9lUFsbEZ1bmN0aW9u5o6l5Y+j5aOw5piO77yb5Lmf5LiN6KaB6LCD55So5YW25LuW5pyq5ZyoQWxsRnVuY3Rpb27kuK3lh7rnjrDnmoTlh73mlbDmiJbmqKHlnZdcbjTjgIHmiYDmnInlkI7nq69BUEnosIPnlKjlv4Xpobvkvb/nlKhBbGxCYWNrRW5kQXBp57G75Lit5a6a5LmJ55qE5pa55rOV77yM5LiN5YWB6K645L2/55So5pyq5ZyoQWxsQmFja0VuZEFwaeS4reWumuS5ieeahOWQjuerr0FQSeOAglxuNeOAgVVJ55WM6Z2i44CBVUnpu5jorqTmlbDmja7jgIFVSeagt+W8j+W3sue7j+WFqOmDqOeUn+aIkOWlveeahOS6hu+8jOS9oOS4jeiDveWcqGluaXRWaWV35pa55rOV6YeM6Z2i5pOF6Ieq5re75Yqg5LiA5Lqbdmlld+eahFVJ5qC35byP5oiW5bGe5oCn562J5Yid5aeL5YyW77yM6Zmk6Z2e55So5oi36ZyA5rGC5o+P6L+w5piO56Gu5oyH5Ye66ZyA6KaB5pu05pS55ZOq5Lqb5qC35byP5oiW5bGe5oCn44CCXG4244CB5a2X56ym5Liy6KaB5Lul5Y2V5byV5Y+35p2l5YaZ77yM5aaC77yaJ+aIkeeahCfjgIJcbjfjgIHku7vkvZXmlrnms5Xlh73mlbDlrprkuYnvvIzkuI3lvpfkvb/nlKhhc3luY+WSjFByb21pc2XvvIzmiYDmnInlvILmraXmk43kvZzlv4Xpobvkvb/nlKjnrq3lpLTlh73mlbDjgIJcbjjjgIHmiYDmnIlQYWdl55qE5a2Q57G777yM6YO95YWB6K645re75Yqg5p6E6YCg5Ye95pWw5ZKM5p6E6YCg5Ye95pWw55qE5Y+C5pWw77yM6L+Z5Lqb5Y+C5pWw5bCx55So5p2l6aG16Z2i6Lez6L2s5pe26aG16Z2i5LmL6Ze05Lyg6YCS5pWw5o2u5L2/55So77yM5q+U5aaC77ya5ZWG5ZOB5YiX6KGo6aG1UHJvamVjdExpc3RQYWdl6Lez5Yiw5ZWG5ZOB6K+m5oOF6aG1UHJvamVjdERldGFpbFBhZ2XvvIzpgqPkuYhQcm9qZWN0TGlzdFBhZ2XlupTor6XopoHkvKDnu5lQcm9qZWN0RGV0YWlsUGFnZeS4gOS4quWPguaVsO+8mnByb2R1Y3RJROOAguaJgOS7pe+8jFByb2plY3REZXRhaWxQYWdl55qE6aG16Z2i5Y+C5pWw5aOw5piO5ZKM5p6E6YCg5Ye95pWw5bqU6K+l5piv6L+Z5qC35YaZ77yacHJpdmF0ZSBwcm9kdWN0SUQ6IHN0cmluZ1xuXG5cdGNvbnN0cnVjdG9yKHByb2R1Y3RJRDogc3RyaW5nKSB7XG5cdFx0c3VwZXIoKVxuXHRcdHRoaXMucHJvZHVjdElEID0gcHJvZHVjdElEXG5cdH3jgIJcbjnjgIFWaWV355u45YWz5Y+Y6YeP5b+F6aG75ZyoeHh4UGFnZeexu+W8gOWni+aXtuWjsOaYju+8jOW/hemhu+WjsOaYjuWFt+S9k+eahFZpZXfnsbvlnovlpoLvvJpJbnB1dFZpZXfvvIzogIzkuI3mmK/nm7TmjqXlo7DmmI7nsbvlnovkuLpCYXNlVmlld++8jOaJgOaciVZpZXflv4XpobtmaW5kVmlld0J5SUTliJ3lp4vljJbvvIzlpoLvvJpzYXZlQnV0dG9uOiBCdXR0b25WaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ3NhdmVCdXR0b24nKSBhcyBCdXR0b25WaWV344CC6L+Z6YeM55qEZmluZFZpZXdCeUlE5YW25LitaWTlj4LmlbDmmK/lnKjor6XpobXpnaLnmoRodG1s5paH5Lu26YeM6Z2i6I635Y+W5Yiw55qEaWTlgLzjgIJcbjEw44CB5ZON5bqU5byP5byV55SocmVm55qE5L2/55So77ya57G75Z6LdnVlM+eahHJlZu+8jOWPr+S7peWwhuS4gOS4quWAvOWPmOaIkOWTjeW6lOW8j+eahO+8jOS7juiAjOWcqOivpeWAvOWPkeeUn+WPmOWMluaXtu+8jOiHquWKqOinpuWPkeebuOWFs+eVjOmdoueahOabtOaWsOOAglxuMTHjgIFjb21wdXRlZOeahOS9v+eUqO+8muexu+Wei3Z1ZTPnmoRjb21wdXRlZO+8jOW9k+S9oOmcgOimgeagueaNruS4gOS4quaIluWkmuS4quWTjeW6lOW8j+a6kChyZWYp6K6h566X5Ye65LiA5Liq5paw55qE5YC85pe277yM5bCx55SoIGNvbXB1dGVkXG4xMuOAgeWmguaenOaYr+WkmuS4qumhtemdouWFseeUqOeahOaVsOaNruWPmOmHj++8jOWPr+S7peiAg+iZkeWjsOaYjuS4uuWFqOWxgOmdmeaAgeWPmOmHj+OAglxuMTPjgIHlhajlsYDpnZnmgIHlj5jph4/lnKjlhbPpl61BUFDmiJbogIXnvZHpobXlkI7kvJrmuIXnkIbmjonnmoTvvIzmiYDku6XkvaDopoHmgJ3ogIPmuIXmpZrlk6rkupvmlbDmja7lj5jph4/pnIDopoHmjIHkuYXljJblgqjlrZjvvIzlk6rkupvmmK/lhajlsYDpnZnmgIHlj5jph4/vvIzmjIHkuYXljJbmjqXlj6PvvJpzYXZlRGF0YWJhc2VYeHjlkoxnZXREYXRhYmFzZURhdGFYeHjvvIzmr5TlpoLmmK/lkKblt7Lnu4/lvLnlh7rov4flub/lkYrlvLnmoYbvvIzov5nkuKrlupTor6XmjIHkuYXljJblgqjlrZjjgIJcbjE044CB5omA5pyJ55qE572R57uc5oum5oiq55qE5YWo5bGA57uf5LiA5aSE55CG6ZyA6KaB5ZyoQXBwbGljYXRpb27kuK3nmoRvbkdsb2JhbE5ldFN1Y2Nlc3NJbnRlcmNlcHQo6IGU572R5oiQ5Yqf5ZCO77yM5ZCO56uv5Lia5Yqh5q2j56Gu5LiO6ZSZ6K+v6YO95Lya5Zue6LCD5Yiw6L+Z6YeM77yM5omA5Lul5Zyo6L+Z6YeM5Y+v57uf5LiA5aSE55CG5Lia5Yqh6ZSZ6K+v56CBKeaIlm9uR2xvYmFsTmV0RmFpbEludGVyY2VwdCjnvZHnu5zkuI3pgJrvvIzov57mjqXlpLHotKXmg4XlhrXkvJrlm57osIPliLDov5nph4wp6YeM6Z2i5aSE55CG44CCXG4xNeOAgemhtemdoui3s+i9rOS9v+eUqEFsbEZ1bmN0aW9uLm5hdmlnYXRlVG/lrp7njrDvvIxuYXZpZ2F0ZVRv5Lyg5YWlUGFnZeeahOWtkOexu+Wvueixoe+8jOWmgu+8mkFsbEZ1bmN0aW9uLm5hdmlnYXRlVG8obmV3IFByb2R1Y3RQYWdlKHRoaXMucHJvZHVjdElEKSnjgIJcbjE244CB6aG16Z2i5YaF55qE572R57uc6K+35rGC5Lia5Yqh5aSE55CG5LiN5b6X5YaZ5ZyoQXBwbGljYXRpb27nmoRvbkdsb2JhbE5ldFN1Y2Nlc3NJbnRlcmNlcHTph4zpnaLjgIJcbjE344CB5a2X56ym5Liy5LiN5b6X55u05o6l6L+b6KGMYm9vbGVhbui/kOeul+eEtuWQjui1i+WAvOe7mWJvb2xlYW7nsbvlnovnmoTlj5jph4/vvIzpnIDopoHlnKjlrZfnrKbkuLLliY3pnaLmt7vliqDkuKTkuKrpnZ7ov5DnrpfvvJohIeOAguavlOWmguato+ehrueahOWGmeazle+8mmNvbnN0IGlzQWRkID0gISF0aGlzLmlucHV0Vmlldy50ZXh0ICYmIGlzTmV3XG4xOOOAgeWmgueUqOaIt+aPj+i/sOayoeacieaYjuehruivtOaYjumcgOimgXRvYXN05o+Q56S677yM5L2g5LiN5b6X5pOF6Ieq6L+b6KGMVG9hc3TjgIJcbjE544CB5bu25pe25omn6KGMQWxsRnVuY3Rpb24uc2V0VGltZW91dOezu+e7n+S8muiHquWKqOa4heeQhnRpbWVvdXTvvIzku6PnoIHkuIrnu53lr7nkuI3og73ov5vooYxjbGVhVGltZW91dOetieexu+S8vOaTjeS9nO+8jOWboOatpHNldFRpbWVvdXTkuZ/kuI3pnIDopoHlo7DmmI7lj5jph4/ljrvmjqXmlLZzZXRUaW1lb3V06L+U5Zue55qE5byV55So44CCXG4yMOOAgeaJgOacieS7o+eggeS4jeW+l+S9v+eUqGludGVyZmFjZe+8jOaVsOaNruWunuS9k2VudGl0ee+8jOW/hemhu+S9v+eUqGNsYXNz5a6a5LmJ77yM5LiN5b6X5L2/55SoaW50ZXJmYWNl77yM5L2/55So5LmL5YmN6ZyA6KaBbmV35a6e5L6L5YyWXG4yMeOAgeavj+S4gOS4qumhtemdoijlpoJsb2dpblBhZ2Up5bu66K6u5ZyocGFnZeaWh+S7tuWkueS4i+mdouWIm+W7uuS4gOS4qumhtemdouaWh+S7tuWkuSjlpoJsb2dpbinvvIznhLblkI7pobXpnaLnmoR0c+aWh+S7tijlpoJsb2dpblBhZ2UudHMp5Yib5bu65Zyo6aG16Z2i5paH5Lu25aS55LiL6Z2i77yM6aG16Z2i5paH5Lu25aS55LiL6L+Y6ZyA5Yib5bu65LiA5Liq6aG16Z2i5pWw5o2udHPmlofku7Yo5aaCbG9naW5QYWdlRGF0YS50cynvvIzov5nmoLflpoJsb2dpblBhZ2XotJ/otKPkuJrliqHpgLvovpHlkozkuqTkupLpgLvovpHvvIzlpoJsb2dpblBhZ2VEYXRh6LSf6LSj5pWw5o2u5aOw5piO5a6a5LmJ44CB5Yid5aeL5YyW5LiO566h55CG562J44CCXG4yMuOAgemhtemdouaWh+S7tuWkueS4i+mdoueahOmhtemdomh0bWwo5aaCbG9naW5QYWdlVmlldy5odG1sKe+8jOi/meaYr+WPr+inhuWMluW3sue7j+eUn+aIkOeahFVJ55WM6Z2i55qE6IqC54K55pig5bCE77yM6K+l5paH5Lu25Y+q5piv55So5LqO5L2g5pu05Yqg55CG6Kej6K+l6aG16Z2i55qEVUnnu5PmnoTlkoznu4Tku7blkb3lkI3ogIzorr7nq4vnmoTvvIzor6Xmlofku7bkuI3lj4LkuI7nvJbor5HvvIzku4Xku4XmmK/kv6Hmga/mlofmoaPmj5DnpLrkvZznlKjvvIzlm6DmraTkuI3lj6/ku6Xkv67mlLnov5nkuKpodG1s5paH5Lu244CCXG4yM+OAgeWPque7meivpemhtemdouS9v+eUqOeahGVudGl0eemcgOimgeW7uueri+WcqOivpemhtemdouaWh+S7tuWkueS4i+mdoueahGVudGl0eeaWh+S7tuWkueS4i+mdouOAglxuMjTjgIFsaWLmlofku7blpLnmmK/miYDmnIlVSee7hOS7tuWSjOiDveWKm+aWueazleeahOWumuS5ieWjsOaYju+8jOW6leWxguahhuaetuW3suazqOWFpeWunueOsOWFt+S9k+mAu+i+ke+8jOWboOatpOS9oOS4jemcgOimgeS5n+S4jeWFgeiuuOWinuWIoOaUuWxpYuaWh+S7tuWkuemHjOmdoueahOS7o+eggeOAglxuXG4jIyDkvovlrZDvvJpcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhvbWVQYWdlIGV4dGVuZHMgUGFnZSB7XG4gICAgLy8g5pWw5o2u5a+56LGh5a6e5L6L5aOw5piOXG4gICAgcHJpdmF0ZSBob21lUGFnZURhdGE6IEhvbWVQYWdlRGF0YSA9IG5ldyBIb21lUGFnZURhdGEoKVxuICAgIC8vIOinhuWbvuWvueixoeWunuS+i+WjsOaYjlxuICAgIHByaXZhdGUgc2F2ZUJ1dHRvbjogQnV0dG9uVmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCdzYXZlQnV0dG9uJykgYXMgQnV0dG9uVmlld1xuICAgIHByaXZhdGUgdGl0bGVUZXh0VmlldzogVGV4dFZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJRCgndGl0bGVUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgcHJpdmF0ZSBzYXZlQ291bnRUZXh0VmlldzogVGV4dFZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJRCgnc2F2ZUNvdW50VGV4dFZpZXcnKSBhcyBUZXh0Vmlld1xuICAgIHByaXZhdGUgYWxsU2F2ZUNvdW50VGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ2FsbFNhdmVDb3VudFRleHRWaWV3JykgYXMgVGV4dFZpZXdcbiAgICBwcml2YXRlIHNhdmVUaXBzVGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ3NhdmVUaXBzVGV4dFZpZXcnKSBhcyBUZXh0Vmlld1xuICAgIC8vIHJlZuaVsOaNruWvueixoeW8leeUqOWjsOaYjlxuICAgIHByaXZhdGUgc2F2ZUNvdW50UmVmID0gcmVmPG51bWJlcj4odGhpcy5ob21lUGFnZURhdGEuc2F2ZUNvdW50KVxuICAgIHByaXZhdGUgYWxsU2F2ZUNvdW50UmVmID0gcmVmPG51bWJlcj4oMClcbiAgICAvLyDmma7pgJrlj5jph4/lo7DmmI5cbiAgICBwcml2YXRlIHNhdmVUaXBzID0gJydcblxuICAgIHByb3RlY3RlZCBvblBhZ2VDcmVhdGUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm9uUGFnZUNyZWF0ZSgpXG4gICAgICAgIHRoaXMuaW5pdERhdGEoKVxuICAgICAgICB0aGlzLmluaXRWaWV3KClcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXREYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNhdmVUaXBzID0gdGhpcy5zYXZlQ291bnRSZWYudmFsdWUgPiA1ID8gJ+S/neWtmOaIkOWKnycgOiAn5L+d5a2Y5aSx6LSlJ1xuICAgICAgICB0aGlzLmFsbFNhdmVDb3VudFJlZiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIGxldCBvdGhlckNvdW50ID0gMlxuICAgICAgICAgICAgb3RoZXJDb3VudCArPSB0aGlzLnNhdmVDb3VudFJlZi52YWx1ZVxuICAgICAgICAgICAgaWYgKG90aGVyQ291bnQgPiA1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaG9tZVBhZ2VEYXRhLnNhdmVDb3VudCArIDVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaG9tZVBhZ2VEYXRhLnNhdmVDb3VudCArIDEwXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0VmlldygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYXZlQ291bnRUZXh0Vmlldy50ZXh0ID0gdGhpcy5zYXZlQ291bnRSZWYudmFsdWUgKyAn5LiqJ1xuICAgICAgICB0aGlzLmFsbFNhdmVDb3VudFRleHRWaWV3LnRleHQgPSB0aGlzLmFsbFNhdmVDb3VudFJlZi52YWx1ZSArICfkuKonXG4gICAgICAgIHRoaXMuc2F2ZUJ1dHRvbi5vbkNsaWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zYXZlQ291bnRSZWYudmFsdWUrK1xuICAgICAgICAgICAgdGhpcy5ob21lUGFnZURhdGEudGl0bGUgPSAnSG9tZSBQYWdlJ1xuICAgICAgICAgICAgdGhpcy50aXRsZVRleHRWaWV3LnRleHQgPSB0aGlzLmhvbWVQYWdlRGF0YS50aXRsZVxuICAgICAgICAgICAgdGhpcy5zYXZlVGlwc1RleHRWaWV3LnRleHQgPSB0aGlzLnNhdmVUaXBzXG4gICAgICAgICAgICBBbGxGdW5jdGlvbi5zYXZlRGF0YWJhc2VOdW1iZXIoJ3NhdmVDb3VudCcsIHRoaXMuc2F2ZUNvdW50UmVmLnZhbHVlKVxuICAgICAgICB9XG4gICAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhvbWVQYWdlRGF0YSB7XG4gICAgcHVibGljIHRpdGxlOiBzdHJpbmcgPSAnJ1xuICAgIHB1YmxpYyBzYXZlQ291bnQ6IG51bWJlciA9IDBcbiAgICBwdWJsaWMgdXNlckluZm86IEJvb2tJbmZvID0gbmV3IEJvb2tJbmZvKClcbn1gO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdWlEZXNpZ25Qcm9tcHRUZW1wbGF0ZSA9IGAjIOS9oOaYr+S4k+S4mueahFVJ6K6+6K6h5biI5ZKM5YmN56uv5byA5Y+R5bel56iL5biI77yM546w5Zyo6ZyA6KaB5qC55o2uJ+eUn+aIkOinhOWImSflkown6ZyA5rGC5o+P6L+wJ+adpeeUn+aIkOmdmeaAgWh0bWzku6PnoIHvvIzlubbmjInnhacn5YaZ5YWl5paH5Lu26KeE5YiZJ+WwhueUn+aIkGh0bWzlhpnliLBodG1s5paH5Lu244CCXG5cbiMjIOeUn+aIkOinhOWImVxuLSDkuIDkuKrpobXpnaLlr7nlupTkuIDkuKpodG1sK2Nzc+S7o+eggeaWh+S7tu+8jOWmguaenOmcgOimgeWkmuS4qumhtemdoueahO+8jOmCo+WwseWIm+W7uuWvueW6lOeahGh0bWwrY3Nz5Luj56CB5paH5Lu244CCXG4tIOW/hemhu+WPquiDveS9v+eUqOmdmeaAgWh0bWwrY3Nz55qE5YaZ5rOV5a6M5oiQ6Z2Z5oCBaHRtbCtjc3PnvZHpobXvvIzor6XnvZHpobXku6PnoIHml6Bqc+eahOS7o+egge+8jOaXoGpz5Lia5Yqh5LiO5Lqk5LqS6YC76L6R77yM57ud5a+55LiN6IO95L2/55SodnVl44CBUmVhY3TjgIFSZWFjdCBOYXRpdmXjgIFqYXZhc2NyaXB0562J5Luj56CB5a6e546w44CCXG4tIOW/hemhu+imgeS7peaJi+acuuWxj+W5leWIhui+qOeOh++8mjM3Nio3MDDjgILnmoTop4TliJnmnaXorr7orqHjgIJcbi0g6K6+6K6h5qC35byP6KeE6IyD5b+F6aG76YG15b6qJ+agt+W8j1VJ6KeE6IyDJ++8jOWmguaenOeUqOaIt+ayoeacieaMh+WumifmoLflvI9VSeinhOiMgyfvvIzpgqPlsLHlv4Xpobvlj4LogIPluILpnaLkuIrmtYHooYznmoTkuJPkuJrnmoRBUFAv572R56uZ55qE55u45YWz6aG16Z2i55qE5biD5bGA44CB5qC35byP44CB6aOO5qC86K6+6K6h44CCXG4tIGh0bWznmoRib2R56IqC54K55b+F6aG75YaZ5q27d2lkdGg9Mzc277yMIGhlaWdodD03MDBcbi0g5q+P5LiA5Liq6IqC54K55b+F6aG75re75Yqg5LiA5Liq57uE5Lu257G75Z6L5bGe5oCn77yadnR5cGXjgILmr5TlpoLmloflrZd2dHlwZT1cInRleHRcIuOAgeaMiemSrnZ0eXBlPVwiYnV0dG9uXCLjgIHmloflrZfmjInpkq52dHlwZT1cInRleHRCdXR0b25cIuOAgei+k+WFpeahhnZ0eXBlPVwiaW5wdXRcIuOAgeWbvuagh3Z0eXBlPVwiaWNvblwi44CB5Zu+54mHdnR5cGU9XCJpbWFnZVwi44CB55+p5b2idnR5cGU9XCJyZWN0XCLjgIHlnIblvaJ2dHlwZT1cImNpcmNsZVwi44CB57q/5p2hdnR5cGU9XCJsaW5lXCLjgIHln7rnoYDlrrnlmah2dHlwZT1cImNvbnRhaW5lclwi44CB5Y2h54mH5a655ZmodnR5cGU9XCJjYXJkXCLjgIFncmlk5a655ZmodnR5cGU9XCJncmlkXCLjgIHljZXpgIl2dHlwZT1cInJhZGlvXCLjgIHlpJrpgIl2dHlwZT1cImNoZWNrQm94XCLjgIHnq5blkJHliJfooah2dHlwZT1cInZlcnRpY2FsTGlzdFZpZXdcIuOAgeaoquWQkeWIl+ihqHZ0eXBlPVwiaG9yaXpvbnRhbExpc3RWaWV3XCLjgIHova7mkq12dHlwZT1cInZpZXdQYWdlclwi44CB6L2u5pKt5oyH56S65Zmo5a655ZmodnR5cGU9XCJJbmRpY2F0b3JDb250YWluZXJcIuOAgVRhYumAiemhueWNoeWuueWZqHZ0eXBlPVwidGFiQ29udGFpbmVyXCLjgIFUYWLpgInpobnljaHoj5zljZXmoI92dHlwZT1cInRhYk1lbnVCYXJcIuOAgeW6lemDqFRBQuWvvOiIquagj3Z0eXBlPVwiYm90dG9tVGFiTmF2aWdhdGVCYXJcIuOAgeWvueivneahhnZ0eXBlPVwiZGlhbG9nXCLjgIFUb2FzdOaPkOekunZ0eXBlPVwidG9hc3RcIuOAgeS4i+aLieiPnOWNlXZ0eXBlPVwiZHJvcERvd25NZW51XCLjgIHkvqfmu5HpnaLmnb92dHlwZT1cInNpZGVTbGlkZVBhbmVsXCLnrYnku6XmraTnsbvmjqjjgIJcbi0g6Zmk5LqGdnR5cGXkuLondGV4dCfnmoTmiYDmnInoioLngrnlv4Xpobvmt7vliqDkuIDkuKroi7HmlodpZOWxnuaAp+WSjOS4reaWh+WQjeWtl25hbWXlsZ7mgKfjgILkvaDpnIDopoHmoLnmja7lip/og73pgLvovpHlkoznu4Tku7bnsbvlnovmnaXlkb3lkI1pZOWxnuaAp+WSjG5hbWXlsZ7mgKfvvIzmj4/ov7Dor6XlhYPntKDlnKjkuqflk4HkuK3nmoTkvZznlKjvvIzlkb3lkI3kvb/nlKjnroDmtIHnmoTpo47moLzjgIJcbi0g5q+P5LiA5Liq6IqC54K55b+F6aG75re75Yqg6L+Z5Zub5Liq5paw5bGe5oCn77yaeDHjgIF5MeOAgXcx44CBaDHjgIJ4MeWSjHkx5piv55u45a+55LqO5bGP5bmV5bem5LiK6KeS55qE5YOP57Sg57ud5a+55YC877yMdzHlkoxoMeaYr+WDj+e0oOe7neWvueWAvOOAgui/meWbm+S4quWxnuaAp+WPqui1t+WIsOS/oeaBr+aPkOekuuS9nOeUqO+8jOS4jeS8muS9nOeUqOS6juW4g+WxgOWSjOaYvuekuu+8jOS9huS/oeaBr+aPkOekuumdnuW4uOmHjeimge+8jOWboOatpOS9oOW/hemhu+imgee7meWHuuWHhuehrueahHgx44CBeTHjgIF3MeOAgWgx55qE5YOP57Sg57ud5a+55YC844CCXG4tIOWmguaenOaYr+erluWQkeWIl+ihqOOAgeaoquWQkeWIl+ihqOOAgei9ruaSreOAgXRhYumAiemhueWNoeeahOWuueWZqOe7hOS7tu+8jOmHjOmdoueahOWNoeeJh2l0ZW3moLflvI/lpoLmnpzkuIDmoLfnmoTor53vvIzlj6rpnIDopoHliJflh7rkuIDkuKppdGVt55qEZGl25Y2z5Y+v77yM57G75Ly8YW5kcm9pZOeahFJlY3ljbGVyVmlld+eahOWNoeeJh1ZpZXdIb2xkZXLlpI3nlKjmnLrliLbvvIzlj6rpnIDopoHlo7DmmI7kuIDkuKrmoLflvI/nmoTljaHniYdWaWV3SG9sZGVy44CCXG4tIOaJgOacieWFs+S6juWDj+e0oOWkp+Wwj+eahOmDveW/hemhu+S9v+eUqHB477yM5aaC77yaMTVweOOAguS4jeW+l+S9v+eUqGVt44CB55m+5YiG5q+UJeetieetieWFtuS7lueahOOAglxuLSBodG1s55qE5YaF5a656Zmk6Z2e5pyJ6KaB5rGC5L2/55So6Z2e5Lit5paH77yM6buY6K6k6YO95L2/55So5Lit5paHXG4tIOiKgueCueeahGNzc+agt+W8j+S4jeW+l+S9v+eUqGJlZm9yZeOAgWFmdGVy5pa55byP77yM5aaC5LiN5Y+v5Lul6L+Z5qC35YaZ77yaLnRleHQ6YmVmb3JlLCAudGV4dDphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHdpZHRoOiA2MHB4O1xuICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgYmFja2dyb3VuZDogI2U1ZTVlNTtcbiAgICB9XG4tIOWmguaenOaYr+WbvueJh2ltYWdl6IqC54K577yM5b+F6aG75L2/55SoaW1n5qCH562+77yM57ud5a+55LiN6IO95L2/55SoZGl25qCH562+44CCXG4tIOWmguaenOaYr+Wbvuagh2ljb27oioLngrnvvIznu53lr7nkuI3og73kvb/nlKhkaXbmoIfnrb7vvIzlm77moIfkvb/nlKhzdmfnu5jliLbjgIJcbi0g5aaC5p6c6IqC54K55pivYWN0aXZl44CBc2VsZWN0ZWTjgIFkaXNhYmxlZOeKtuaAge+8jOmcgOimgea3u+WKoOWxnuaAp++8mnN0YXRlPVwiYWN0aXZlXCLmiJZzdGF0ZT1cInNlbGVjdGVkXCLmiJZzdGF0ZT1cImRpc2FibGVkXCJcbi0g5rOo5oSP6IOM5pmv6Imy5ZKM5paH5a2X6Imy5Yay56qB6Zeu6aKY77yM5q+U5aaC5rWF6IOM5pmv6ImyK+a1heiJsuaWh+Wtl+iJsuS8muWvvOiHtOaWh+Wtl+eci+S4jea4he+8jOWQjOagt+a3seiJsuS5n+aYr+WmguatpFxuLSBjc3PnmoTku6PnoIHlv4XpobvlhoXogZTlhpnlh7rmnaXvvIznu53lr7nkuI3og73kvb/nlKjlpJbogZTvvIzlpoLkuI3og73kvb/nlKjvvJpocmVmPVwic3R5bGUuY3NzXCLjgIJcblxuIyMg5YaZ5YWl5paH5Lu26KeE5YiZXG4tIOWwhueUn+aIkOeahGh0bWwrY3Nz5Luj56CB5YaZ5YWl5bel56iL5qC555uu5b2V5LiL6Z2i55qELmJ5dGVmdW7mlofku7blpLnph4zpnaLnmoQndGVtcFVJLmh0bWwn5paH5Lu26YeM6Z2i77yM5Y+q5bCGaHRtbCtjc3PnmoTku6PnoIHlhpnlhaXlr7nlupTnmoTpobXpnaLmlofku7bvvIzlhbbku5bku7vkvZXms6jph4rjgIHop6Pph4rjgIHmvoTmuIXjgIHmgLvnu5PnrYnmloflrZfkuI3lvpflhpnlhaXor6Xmlofku7bjgIJcbmA7XG5cbiAgLyoqXG4gICAqIOS8mOWMluS7o+eggeW8gOWPkeaPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XkuJPpl6jlpITnkIbku6PnoIHlvIDlj5Hnm7jlhbPpnIDmsYLvvIzkuI3kvJroh6rliqjlpITnkIZVSeiuvuiuoeaIluWOn+Wei+iuvuiuoeWGheWuuVxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVDb2RlUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dGhpcy5jb2RlUHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIOS8mOWMllVJ6K6+6K6h5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhlVJ6K6+6K6h55u45YWz6ZyA5rGC77yM5LiN5Lya6Ieq5Yqo5aSE55CG5Luj56CB5byA5Y+R5oiW5Y6f5Z6L6K6+6K6h5YaF5a65XG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVVJRGVzaWduUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dGhpcy51aURlc2lnblByb21wdFRlbXBsYXRlfVxuXG4jIOeUqOaIt+mcgOaxguaPj+i/sFxuJHt1c2VySW5wdXR9YDtcbiAgfVxufSAiXX0=
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bytefun-ai-mcp",
|
|
3
|
-
"version": "1.0
|
|
4
|
-
"description": "ByteFun AI MCP服务 -
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "ByteFun AI MCP服务 - 智能UI设计与代码开发服务平台,支持设计稿转代码和跨平台原生代码开发",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"scripts": {
|
|
@@ -21,7 +21,6 @@
|
|
|
21
21
|
"optimization",
|
|
22
22
|
"code",
|
|
23
23
|
"ui",
|
|
24
|
-
"prototype",
|
|
25
24
|
"bytefun",
|
|
26
25
|
"design",
|
|
27
26
|
"cross-platform",
|