bytefun-ai-mcp 1.3.2 → 1.3.4
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/build/index.js +8 -20
- package/build/prompt-optimizer.d.ts +8 -5
- package/build/prompt-optimizer.d.ts.map +1 -1
- package/build/prompt-optimizer.js +177 -80
- package/package.json +1 -1
package/build/index.js
CHANGED
|
@@ -28,35 +28,27 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
name: 'optimize_fix_pageList_prompt',
|
|
31
|
-
description: 'Fix and improve existing page list by
|
|
31
|
+
description: 'Fix and improve existing page list by reading from doc file and ensuring completeness',
|
|
32
32
|
inputSchema: {
|
|
33
33
|
type: 'object',
|
|
34
34
|
properties: {
|
|
35
35
|
user_input: {
|
|
36
36
|
type: 'string',
|
|
37
37
|
description: 'User input prompt that describes the requirements'
|
|
38
|
-
},
|
|
39
|
-
existing_page_list: {
|
|
40
|
-
type: 'string',
|
|
41
|
-
description: 'Existing page list result from optimize_pageList_prompt that needs to be fixed and improved'
|
|
42
38
|
}
|
|
43
39
|
},
|
|
44
|
-
required: ['user_input'
|
|
40
|
+
required: ['user_input']
|
|
45
41
|
}
|
|
46
42
|
},
|
|
47
43
|
{
|
|
48
44
|
name: 'optimize_product_design_prompt',
|
|
49
|
-
description: 'Optimize prompt for product design document
|
|
45
|
+
description: 'Optimize prompt for product design document enhancement based on existing doc file',
|
|
50
46
|
inputSchema: {
|
|
51
47
|
type: 'object',
|
|
52
48
|
properties: {
|
|
53
49
|
user_input: {
|
|
54
50
|
type: 'string',
|
|
55
51
|
description: 'User input prompt that needs to be optimized for product design documentation'
|
|
56
|
-
},
|
|
57
|
-
page_list: {
|
|
58
|
-
type: 'string',
|
|
59
|
-
description: 'Optional fixed page list result from optimize_fix_pageList_prompt to be included in product design'
|
|
60
52
|
}
|
|
61
53
|
},
|
|
62
54
|
required: ['user_input']
|
|
@@ -64,17 +56,13 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
64
56
|
},
|
|
65
57
|
{
|
|
66
58
|
name: 'optimize_ui_design_prompt',
|
|
67
|
-
description: 'Optimize prompt for UI design by
|
|
59
|
+
description: 'Optimize prompt for UI design by reading page list and requirements from doc file',
|
|
68
60
|
inputSchema: {
|
|
69
61
|
type: 'object',
|
|
70
62
|
properties: {
|
|
71
63
|
user_input: {
|
|
72
64
|
type: 'string',
|
|
73
65
|
description: 'User input prompt that needs to be optimized for UI design'
|
|
74
|
-
},
|
|
75
|
-
page_list: {
|
|
76
|
-
type: 'string',
|
|
77
|
-
description: 'Optional fixed page list result from optimize_fix_pageList_prompt to be included in UI design'
|
|
78
66
|
}
|
|
79
67
|
},
|
|
80
68
|
required: ['user_input']
|
|
@@ -116,7 +104,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
116
104
|
]
|
|
117
105
|
};
|
|
118
106
|
case 'optimize_fix_pageList_prompt':
|
|
119
|
-
const optimizedFixPageListPrompt = await promptOptimizer.optimizeFixPageListPrompt(args.user_input
|
|
107
|
+
const optimizedFixPageListPrompt = await promptOptimizer.optimizeFixPageListPrompt(args.user_input);
|
|
120
108
|
return {
|
|
121
109
|
content: [
|
|
122
110
|
{
|
|
@@ -126,7 +114,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
126
114
|
]
|
|
127
115
|
};
|
|
128
116
|
case 'optimize_product_design_prompt':
|
|
129
|
-
const optimizedProductDesignPrompt = await promptOptimizer.optimizeProductDesignPrompt(args.user_input
|
|
117
|
+
const optimizedProductDesignPrompt = await promptOptimizer.optimizeProductDesignPrompt(args.user_input);
|
|
130
118
|
return {
|
|
131
119
|
content: [
|
|
132
120
|
{
|
|
@@ -136,7 +124,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
136
124
|
]
|
|
137
125
|
};
|
|
138
126
|
case 'optimize_ui_design_prompt':
|
|
139
|
-
const optimizedUIPrompt = await promptOptimizer.optimizeUIDesignPrompt(args.user_input
|
|
127
|
+
const optimizedUIPrompt = await promptOptimizer.optimizeUIDesignPrompt(args.user_input);
|
|
140
128
|
return {
|
|
141
129
|
content: [
|
|
142
130
|
{
|
|
@@ -177,4 +165,4 @@ async function main() {
|
|
|
177
165
|
console.error('ByteFun AI Prompt MCP server running on stdio');
|
|
178
166
|
}
|
|
179
167
|
main().catch(console.error);
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUV2QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FDdkI7SUFDRSxJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLENBQ0YsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7QUFFOUMsdUJBQXVCO0FBQ3ZCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLElBQUksRUFBRTtJQUMxRCxPQUFPO1FBQ0wsS0FBSyxFQUFFO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLDBCQUEwQjtnQkFDaEMsV0FBVyxFQUFFLG1IQUFtSDtnQkFDaEksV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixVQUFVLEVBQUU7NEJBQ1YsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHFFQUFxRTt5QkFDbkY7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN6QjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLDhCQUE4QjtnQkFDcEMsV0FBVyxFQUFFLHlGQUF5RjtnQkFDdEcsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixVQUFVLEVBQUU7NEJBQ1YsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLG1EQUFtRDt5QkFDakU7d0JBQ0Qsa0JBQWtCLEVBQUU7NEJBQ2xCLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSw2RkFBNkY7eUJBQzNHO3FCQUNGO29CQUNELFFBQVEsRUFBRSxDQUFDLFlBQVksRUFBRSxvQkFBb0IsQ0FBQztpQkFDL0M7YUFDRjtZQUNEO2dCQUNFLElBQUksRUFBRSxnQ0FBZ0M7Z0JBQ3RDLFdBQVcsRUFBRSwwRkFBMEY7Z0JBQ3ZHLFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsVUFBVSxFQUFFOzRCQUNWLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSwrRUFBK0U7eUJBQzdGO3dCQUNELFNBQVMsRUFBRTs0QkFDVCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsb0dBQW9HO3lCQUNsSDtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3pCO2FBQ0Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsMkJBQTJCO2dCQUNqQyxXQUFXLEVBQUUsbUZBQW1GO2dCQUNoRyxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNWLFVBQVUsRUFBRTs0QkFDVixJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsNERBQTREO3lCQUMxRTt3QkFDRCxTQUFTLEVBQUU7NEJBQ1QsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLCtGQUErRjt5QkFDN0c7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN6QjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsV0FBVyxFQUFFLHlHQUF5RztnQkFDdEgsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixVQUFVLEVBQUU7NEJBQ1YsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLG1FQUFtRTt5QkFDakY7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN6QjthQUNGO1NBQ1E7S0FDWixDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFFSCxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNoRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBRWpELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssMEJBQTBCO2dCQUM3QixNQUFNLHVCQUF1QixHQUFHLE1BQU0sZUFBZSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxVQUFvQixDQUFDLENBQUM7Z0JBQ3hHLE9BQU87b0JBQ0wsT0FBTyxFQUFFO3dCQUNQOzRCQUNFLElBQUksRUFBRSxNQUFNOzRCQUNaLElBQUksRUFBRSx1QkFBdUI7eUJBQzlCO3FCQUNGO2lCQUNGLENBQUM7WUFFSixLQUFLLDhCQUE4QjtnQkFDakMsTUFBTSwwQkFBMEIsR0FBRyxNQUFNLGVBQWUsQ0FBQyx5QkFBeUIsQ0FDaEYsSUFBSSxDQUFDLFVBQW9CLEVBQ3pCLElBQUksQ0FBQyxrQkFBNEIsQ0FDbEMsQ0FBQztnQkFDRixPQUFPO29CQUNMLE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxJQUFJLEVBQUUsTUFBTTs0QkFDWixJQUFJLEVBQUUsMEJBQTBCO3lCQUNqQztxQkFDRjtpQkFDRixDQUFDO1lBRUosS0FBSyxnQ0FBZ0M7Z0JBQ25DLE1BQU0sNEJBQTRCLEdBQUcsTUFBTSxlQUFlLENBQUMsMkJBQTJCLENBQ3BGLElBQUksQ0FBQyxVQUFvQixFQUN6QixJQUFJLENBQUMsU0FBbUIsQ0FDekIsQ0FBQztnQkFDRixPQUFPO29CQUNMLE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxJQUFJLEVBQUUsTUFBTTs0QkFDWixJQUFJLEVBQUUsNEJBQTRCO3lCQUNuQztxQkFDRjtpQkFDRixDQUFDO1lBRUosS0FBSywyQkFBMkI7Z0JBQzlCLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxlQUFlLENBQUMsc0JBQXNCLENBQ3BFLElBQUksQ0FBQyxVQUFvQixFQUN6QixJQUFJLENBQUMsU0FBbUIsQ0FDekIsQ0FBQztnQkFDRixPQUFPO29CQUNMLE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxJQUFJLEVBQUUsTUFBTTs0QkFDWixJQUFJLEVBQUUsaUJBQWlCO3lCQUN4QjtxQkFDRjtpQkFDRixDQUFDO1lBRUosS0FBSyxzQkFBc0I7Z0JBQ3pCLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxlQUFlLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQW9CLENBQUMsQ0FBQztnQkFDaEcsT0FBTztvQkFDTCxPQUFPLEVBQUU7d0JBQ1A7NEJBQ0UsSUFBSSxFQUFFLE1BQU07NEJBQ1osSUFBSSxFQUFFLG1CQUFtQjt5QkFDMUI7cUJBQ0Y7aUJBQ0YsQ0FBQztZQUVKO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTztZQUNMLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsVUFBVSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7aUJBQ3pFO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFFSCxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7SUFDN0MsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IHsgU2VydmVyIH0gZnJvbSAnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zZXJ2ZXIvaW5kZXguanMnO1xuaW1wb3J0IHsgU3RkaW9TZXJ2ZXJUcmFuc3BvcnQgfSBmcm9tICdAbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NlcnZlci9zdGRpby5qcyc7XG5pbXBvcnQge1xuICBDYWxsVG9vbFJlcXVlc3RTY2hlbWEsXG4gIExpc3RUb29sc1JlcXVlc3RTY2hlbWEsXG4gIFRvb2wsXG59IGZyb20gJ0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvdHlwZXMuanMnO1xuaW1wb3J0IHsgUHJvbXB0T3B0aW1pemVyIH0gZnJvbSAnLi9wcm9tcHQtb3B0aW1pemVyLmpzJztcblxuY29uc3Qgc2VydmVyID0gbmV3IFNlcnZlcihcbiAge1xuICAgIG5hbWU6ICdieXRlZnVuLWFpLXByb21wdCcsXG4gICAgdmVyc2lvbjogJzEuMC4wJyxcbiAgfVxuKTtcblxuY29uc3QgcHJvbXB0T3B0aW1pemVyID0gbmV3IFByb21wdE9wdGltaXplcigpO1xuXG4vLyBMaXN0IGF2YWlsYWJsZSB0b29sc1xuc2VydmVyLnNldFJlcXVlc3RIYW5kbGVyKExpc3RUb29sc1JlcXVlc3RTY2hlbWEsIGFzeW5jICgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICB0b29sczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnb3B0aW1pemVfcGFnZUxpc3RfcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIGxpc3RpbmcgcmVxdWlyZWQgcGFnZXMgYnkgYW5hbHl6aW5nIHVzZXIgcmVxdWlyZW1lbnRzIGFuZCBnZW5lcmF0aW5nIGNvbXByZWhlbnNpdmUgcGFnZSBsaXN0cycsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgcGFnZSBsaXN0IGFuYWx5c2lzJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvcHRpbWl6ZV9maXhfcGFnZUxpc3RfcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdGaXggYW5kIGltcHJvdmUgZXhpc3RpbmcgcGFnZSBsaXN0IGJ5IGFuYWx5emluZyBtaXNzaW5nIHBhZ2VzIGFuZCBlbnN1cmluZyBjb21wbGV0ZW5lc3MnLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBkZXNjcmliZXMgdGhlIHJlcXVpcmVtZW50cydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleGlzdGluZ19wYWdlX2xpc3Q6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRXhpc3RpbmcgcGFnZSBsaXN0IHJlc3VsdCBmcm9tIG9wdGltaXplX3BhZ2VMaXN0X3Byb21wdCB0aGF0IG5lZWRzIHRvIGJlIGZpeGVkIGFuZCBpbXByb3ZlZCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnLCAnZXhpc3RpbmdfcGFnZV9saXN0J11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX3Byb2R1Y3RfZGVzaWduX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBwcm9kdWN0IGRlc2lnbiBkb2N1bWVudCBnZW5lcmF0aW9uIGJhc2VkIG9uIGZpeGVkIHBhZ2UgbGlzdCBhbmFseXNpcycsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgcHJvZHVjdCBkZXNpZ24gZG9jdW1lbnRhdGlvbidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYWdlX2xpc3Q6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW9uYWwgZml4ZWQgcGFnZSBsaXN0IHJlc3VsdCBmcm9tIG9wdGltaXplX2ZpeF9wYWdlTGlzdF9wcm9tcHQgdG8gYmUgaW5jbHVkZWQgaW4gcHJvZHVjdCBkZXNpZ24nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX3VpX2Rlc2lnbl9wcm9tcHQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplIHByb21wdCBmb3IgVUkgZGVzaWduIGJ5IGFkZGluZyBVSSBkZXNpZ24gcnVsZXMgYW5kIHVzaW5nIGZpeGVkIHBhZ2UgbGlzdCcsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgVUkgZGVzaWduJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhZ2VfbGlzdDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpb25hbCBmaXhlZCBwYWdlIGxpc3QgcmVzdWx0IGZyb20gb3B0aW1pemVfZml4X3BhZ2VMaXN0X3Byb21wdCB0byBiZSBpbmNsdWRlZCBpbiBVSSBkZXNpZ24nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX2NvZGVfcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIFR5cGVTY3JpcHQgY29kZSBkZXZlbG9wbWVudCBieSBhZGRpbmcgY29kZSBkZXZlbG9wbWVudCBydWxlcyBhbmQgbWFya2luZyB1c2VyIGlucHV0JyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBjb2RlIGRldmVsb3BtZW50J1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdIGFzIFRvb2xbXVxuICB9O1xufSk7XG5cbi8vIEhhbmRsZSB0b29sIGNhbGxzXG5zZXJ2ZXIuc2V0UmVxdWVzdEhhbmRsZXIoQ2FsbFRvb2xSZXF1ZXN0U2NoZW1hLCBhc3luYyAocmVxdWVzdCkgPT4ge1xuICBjb25zdCB7IG5hbWUsIGFyZ3VtZW50czogYXJncyB9ID0gcmVxdWVzdC5wYXJhbXM7XG5cbiAgaWYgKCFhcmdzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50cycpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgIGNhc2UgJ29wdGltaXplX3BhZ2VMaXN0X3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZFBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplUGFnZUxpc3RQcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZFBhZ2VMaXN0UHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdvcHRpbWl6ZV9maXhfcGFnZUxpc3RfcHJvbXB0JzpcbiAgICAgICAgY29uc3Qgb3B0aW1pemVkRml4UGFnZUxpc3RQcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVGaXhQYWdlTGlzdFByb21wdChcbiAgICAgICAgICBhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nLFxuICAgICAgICAgIGFyZ3MuZXhpc3RpbmdfcGFnZV9saXN0IGFzIHN0cmluZ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRGaXhQYWdlTGlzdFByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnb3B0aW1pemVfcHJvZHVjdF9kZXNpZ25fcHJvbXB0JzpcbiAgICAgICAgY29uc3Qgb3B0aW1pemVkUHJvZHVjdERlc2lnblByb21wdCA9IGF3YWl0IHByb21wdE9wdGltaXplci5vcHRpbWl6ZVByb2R1Y3REZXNpZ25Qcm9tcHQoXG4gICAgICAgICAgYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyxcbiAgICAgICAgICBhcmdzLnBhZ2VfbGlzdCBhcyBzdHJpbmdcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkUHJvZHVjdERlc2lnblByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnb3B0aW1pemVfdWlfZGVzaWduX3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZFVJUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplVUlEZXNpZ25Qcm9tcHQoXG4gICAgICAgICAgYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyxcbiAgICAgICAgICBhcmdzLnBhZ2VfbGlzdCBhcyBzdHJpbmdcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkVUlQcm9tcHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ29wdGltaXplX2NvZGVfcHJvbXB0JzpcbiAgICAgICAgY29uc3Qgb3B0aW1pemVkQ29kZVByb21wdCA9IGF3YWl0IHByb21wdE9wdGltaXplci5vcHRpbWl6ZUNvZGVQcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZENvZGVQcm9tcHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0b29sOiAke25hbWV9YCk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgdGV4dDogYEVycm9yOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBpc0Vycm9yOiB0cnVlXG4gICAgfTtcbiAgfVxufSk7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIGNvbnN0IHRyYW5zcG9ydCA9IG5ldyBTdGRpb1NlcnZlclRyYW5zcG9ydCgpO1xuICBhd2FpdCBzZXJ2ZXIuY29ubmVjdCh0cmFuc3BvcnQpO1xuICBjb25zb2xlLmVycm9yKCdCeXRlRnVuIEFJIFByb21wdCBNQ1Agc2VydmVyIHJ1bm5pbmcgb24gc3RkaW8nKTtcbn1cblxubWFpbigpLmNhdGNoKGNvbnNvbGUuZXJyb3IpOyAiXX0=
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUV2QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FDdkI7SUFDRSxJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLENBQ0YsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7QUFFOUMsdUJBQXVCO0FBQ3ZCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLElBQUksRUFBRTtJQUMxRCxPQUFPO1FBQ0wsS0FBSyxFQUFFO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLDBCQUEwQjtnQkFDaEMsV0FBVyxFQUFFLG1IQUFtSDtnQkFDaEksV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixVQUFVLEVBQUU7NEJBQ1YsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHFFQUFxRTt5QkFDbkY7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN6QjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLDhCQUE4QjtnQkFDcEMsV0FBVyxFQUFFLHVGQUF1RjtnQkFDcEcsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixVQUFVLEVBQUU7NEJBQ1YsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFF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Q3hCO3FCQUNGO2lCQUNGLENBQUM7WUFFSixLQUFLLHNCQUFzQjtnQkFDekIsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBb0IsQ0FBQyxDQUFDO2dCQUNoRyxPQUFPO29CQUNMLE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxJQUFJLEVBQUUsTUFBTTs0QkFDWixJQUFJLEVBQUUsbUJBQW1CO3lCQUMxQjtxQkFDRjtpQkFDRixDQUFDO1lBRUo7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPO1lBQ0wsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxVQUFVLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtpQkFDekU7YUFDRjtZQUNELE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVILEtBQUssVUFBVSxJQUFJO0lBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztJQUM3QyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEMsT0FBTyxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5pbXBvcnQgeyBTZXJ2ZXIgfSBmcm9tICdAbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NlcnZlci9pbmRleC5qcyc7XG5pbXBvcnQgeyBTdGRpb1NlcnZlclRyYW5zcG9ydCB9IGZyb20gJ0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc2VydmVyL3N0ZGlvLmpzJztcbmltcG9ydCB7XG4gIENhbGxUb29sUmVxdWVzdFNjaGVtYSxcbiAgTGlzdFRvb2xzUmVxdWVzdFNjaGVtYSxcbiAgVG9vbCxcbn0gZnJvbSAnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay90eXBlcy5qcyc7XG5pbXBvcnQgeyBQcm9tcHRPcHRpbWl6ZXIgfSBmcm9tICcuL3Byb21wdC1vcHRpbWl6ZXIuanMnO1xuXG5jb25zdCBzZXJ2ZXIgPSBuZXcgU2VydmVyKFxuICB7XG4gICAgbmFtZTogJ2J5dGVmdW4tYWktcHJvbXB0JyxcbiAgICB2ZXJzaW9uOiAnMS4wLjAnLFxuICB9XG4pO1xuXG5jb25zdCBwcm9tcHRPcHRpbWl6ZXIgPSBuZXcgUHJvbXB0T3B0aW1pemVyKCk7XG5cbi8vIExpc3QgYXZhaWxhYmxlIHRvb2xzXG5zZXJ2ZXIuc2V0UmVxdWVzdEhhbmRsZXIoTGlzdFRvb2xzUmVxdWVzdFNjaGVtYSwgYXN5bmMgKCkgPT4ge1xuICByZXR1cm4ge1xuICAgIHRvb2xzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvcHRpbWl6ZV9wYWdlTGlzdF9wcm9tcHQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplIHByb21wdCBmb3IgbGlzdGluZyByZXF1aXJlZCBwYWdlcyBieSBhbmFseXppbmcgdXNlciByZXF1aXJlbWVudHMgYW5kIGdlbmVyYXRpbmcgY29tcHJlaGVuc2l2ZSBwYWdlIGxpc3RzJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBwYWdlIGxpc3QgYW5hbHlzaXMnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX2ZpeF9wYWdlTGlzdF9wcm9tcHQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0ZpeCBhbmQgaW1wcm92ZSBleGlzdGluZyBwYWdlIGxpc3QgYnkgcmVhZGluZyBmcm9tIGRvYyBmaWxlIGFuZCBlbnN1cmluZyBjb21wbGV0ZW5lc3MnLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBkZXNjcmliZXMgdGhlIHJlcXVpcmVtZW50cydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnb3B0aW1pemVfcHJvZHVjdF9kZXNpZ25fcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIHByb2R1Y3QgZGVzaWduIGRvY3VtZW50IGVuaGFuY2VtZW50IGJhc2VkIG9uIGV4aXN0aW5nIGRvYyBmaWxlJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBwcm9kdWN0IGRlc2lnbiBkb2N1bWVudGF0aW9uJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvcHRpbWl6ZV91aV9kZXNpZ25fcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIFVJIGRlc2lnbiBieSByZWFkaW5nIHBhZ2UgbGlzdCBhbmQgcmVxdWlyZW1lbnRzIGZyb20gZG9jIGZpbGUnLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQgZm9yIFVJIGRlc2lnbidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnb3B0aW1pemVfY29kZV9wcm9tcHQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplIHByb21wdCBmb3IgVHlwZVNjcmlwdCBjb2RlIGRldmVsb3BtZW50IGJ5IGFkZGluZyBjb2RlIGRldmVsb3BtZW50IHJ1bGVzIGFuZCBtYXJraW5nIHVzZXIgaW5wdXQnLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQgZm9yIGNvZGUgZGV2ZWxvcG1lbnQnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgICAgfVxuICAgICAgfVxuICAgIF0gYXMgVG9vbFtdXG4gIH07XG59KTtcblxuLy8gSGFuZGxlIHRvb2wgY2FsbHNcbnNlcnZlci5zZXRSZXF1ZXN0SGFuZGxlcihDYWxsVG9vbFJlcXVlc3RTY2hlbWEsIGFzeW5jIChyZXF1ZXN0KSA9PiB7XG4gIGNvbnN0IHsgbmFtZSwgYXJndW1lbnRzOiBhcmdzIH0gPSByZXF1ZXN0LnBhcmFtcztcblxuICBpZiAoIWFyZ3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgYXJndW1lbnRzJyk7XG4gIH1cblxuICB0cnkge1xuICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgY2FzZSAnb3B0aW1pemVfcGFnZUxpc3RfcHJvbXB0JzpcbiAgICAgICAgY29uc3Qgb3B0aW1pemVkUGFnZUxpc3RQcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVQYWdlTGlzdFByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkUGFnZUxpc3RQcm9tcHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ29wdGltaXplX2ZpeF9wYWdlTGlzdF9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRGaXhQYWdlTGlzdFByb21wdCA9IGF3YWl0IHByb21wdE9wdGltaXplci5vcHRpbWl6ZUZpeFBhZ2VMaXN0UHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRGaXhQYWdlTGlzdFByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnb3B0aW1pemVfcHJvZHVjdF9kZXNpZ25fcHJvbXB0JzpcbiAgICAgICAgY29uc3Qgb3B0aW1pemVkUHJvZHVjdERlc2lnblByb21wdCA9IGF3YWl0IHByb21wdE9wdGltaXplci5vcHRpbWl6ZVByb2R1Y3REZXNpZ25Qcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZFByb2R1Y3REZXNpZ25Qcm9tcHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ29wdGltaXplX3VpX2Rlc2lnbl9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRVSVByb21wdCA9IGF3YWl0IHByb21wdE9wdGltaXplci5vcHRpbWl6ZVVJRGVzaWduUHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRVSVByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnb3B0aW1pemVfY29kZV9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRDb2RlUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplQ29kZVByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkQ29kZVByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHRvb2w6ICR7bmFtZX1gKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICB0ZXh0OiBgRXJyb3I6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGlzRXJyb3I6IHRydWVcbiAgICB9O1xuICB9XG59KTtcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgdHJhbnNwb3J0ID0gbmV3IFN0ZGlvU2VydmVyVHJhbnNwb3J0KCk7XG4gIGF3YWl0IHNlcnZlci5jb25uZWN0KHRyYW5zcG9ydCk7XG4gIGNvbnNvbGUuZXJyb3IoJ0J5dGVGdW4gQUkgUHJvbXB0IE1DUCBzZXJ2ZXIgcnVubmluZyBvbiBzdGRpbycpO1xufVxuXG5tYWluKCkuY2F0Y2goY29uc29sZS5lcnJvcik7ICJdfQ==
|
|
@@ -50,13 +50,15 @@ export declare class PromptOptimizer {
|
|
|
50
50
|
/**
|
|
51
51
|
* 修复页面列表提示词
|
|
52
52
|
* 注意:此方法用于对已有页面列表进行二次检查和修复,确保页面完整性
|
|
53
|
+
* 📁 数据来源:从doc/xxx-产品需求文档.md文件中读取已有页面列表
|
|
53
54
|
*/
|
|
54
|
-
optimizeFixPageListPrompt(userInput: string
|
|
55
|
+
optimizeFixPageListPrompt(userInput: string): Promise<string>;
|
|
55
56
|
/**
|
|
56
57
|
* 优化产品需求设计提示词
|
|
57
|
-
*
|
|
58
|
+
* 注意:此方法专门处理产品需求文档生成,基于已有页面列表进行完善
|
|
59
|
+
* 📁 数据来源:从doc/xxx-产品需求文档.md文件中读取已有页面列表和项目背景
|
|
58
60
|
*/
|
|
59
|
-
optimizeProductDesignPrompt(userInput: string
|
|
61
|
+
optimizeProductDesignPrompt(userInput: string): Promise<string>;
|
|
60
62
|
/**
|
|
61
63
|
* 优化代码开发提示词
|
|
62
64
|
* 注意:此方法专门处理代码开发相关需求,会参考产品需求文档
|
|
@@ -64,9 +66,10 @@ export declare class PromptOptimizer {
|
|
|
64
66
|
optimizeCodePrompt(userInput: string): Promise<string>;
|
|
65
67
|
/**
|
|
66
68
|
* 优化UI设计提示词
|
|
67
|
-
* 注意:此方法专门处理UI
|
|
69
|
+
* 注意:此方法专门处理UI设计相关需求,会参考产品需求文档和页面列表
|
|
70
|
+
* 📁 数据来源:从doc/xxx-产品需求文档.md文件中读取页面列表和需求详情
|
|
68
71
|
*/
|
|
69
|
-
optimizeUIDesignPrompt(userInput: string
|
|
72
|
+
optimizeUIDesignPrompt(userInput: string): Promise<string>;
|
|
70
73
|
/**
|
|
71
74
|
* ⭐推荐阶段一:页面列表 + 页面修复 + 产品设计
|
|
72
75
|
* 先分析页面列表,然后修复页面列表,最后基于修复后的页面列表生成产品需求文档
|
|
@@ -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,
|
|
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"}
|
|
@@ -87,46 +87,161 @@ export class PromptOptimizer {
|
|
|
87
87
|
|
|
88
88
|
2. **输出最终清单**
|
|
89
89
|
- 输出页面总数,以及按照模块层级,将所有"页面名称"以分层列表形式展示。
|
|
90
|
-
- 确保每个页面都已"点亮"
|
|
91
|
-
|
|
92
|
-
|
|
90
|
+
- 确保每个页面都已"点亮"所有交互元素点击跳转的目标页面都在清单中出现。
|
|
91
|
+
|
|
92
|
+
## 文件写入要求
|
|
93
|
+
- 分析完成后,将页面列表结果写入到当前工程目录下的doc文件夹下的xxx-产品需求文档.md文件中
|
|
94
|
+
- 其中xxx是根据用户需求描述来命名(如:健身APP-产品需求文档.md)
|
|
95
|
+
- 写入内容格式:
|
|
96
|
+
|
|
97
|
+
\`\`\`markdown
|
|
98
|
+
# xxx产品需求文档
|
|
99
|
+
|
|
100
|
+
## 1. 项目背景与定位
|
|
101
|
+
[根据用户需求描述填写项目背景]
|
|
102
|
+
|
|
103
|
+
## 2. 页面列表(按展示顺序)
|
|
104
|
+
|
|
105
|
+
| 序号 | 页面名称 | 模块 | 简要说明 | 跳转入口 |
|
|
106
|
+
|------|----------|------|----------|----------|
|
|
107
|
+
| 1 | [页面名] | [模块] | [说明] | [入口] |
|
|
108
|
+
| ... | ... | ... | ... | ... |
|
|
109
|
+
|
|
110
|
+
## 3. 逐页详细需求
|
|
111
|
+
[此部分暂时留空,等待后续完善]
|
|
112
|
+
\`\`\`
|
|
113
|
+
|
|
114
|
+
## 完成提示
|
|
115
|
+
- 文件写入完成后,提示用户:"✅ **页面列表分析已完成!**页面列表已写入 doc/xxx-产品需求文档.md 文件。接下来请执行页面列表修复功能来完善页面列表的完整性。"`;
|
|
116
|
+
fixPageListPromptTemplate = `# 你是APP产品经理专家,现在需要对已有的页面列表进行二次检查和修复,确保页面列表的完整性和齐全性。
|
|
117
|
+
|
|
118
|
+
## 修复任务说明
|
|
119
|
+
已有的页面列表可能存在遗漏,你需要进行深度分析,补充所有缺失的页面,确保这是一个功能完整、页面齐全的APP。
|
|
120
|
+
|
|
121
|
+
## 文件读取要求
|
|
122
|
+
- 修复之前,必须先读取当前工程目录下的doc文件夹中的xxx-产品需求文档.md文件
|
|
123
|
+
- 获取其中"页面列表(按展示顺序)"章节的内容
|
|
124
|
+
- 基于已有的页面列表进行分析和修复
|
|
125
|
+
|
|
126
|
+
## 修复分析规则
|
|
127
|
+
|
|
128
|
+
### 1. 深度页面挖掘
|
|
129
|
+
- **设置页深度分析**:设置页通常包含多个子设置项,每个需要新开页面的子设置项都必须单独列出
|
|
130
|
+
- 个人信息设置 → 个人信息编辑页、头像设置页、昵称修改页
|
|
131
|
+
- 账号安全 → 密码修改页、手机号绑定页、邮箱绑定页
|
|
132
|
+
- 隐私设置 → 隐私设置详情页
|
|
133
|
+
- 通知设置 → 通知设置详情页
|
|
134
|
+
- 关于 → 关于页面、用户协议页、隐私政策页、版本信息页
|
|
135
|
+
|
|
136
|
+
### 2. 功能模块完整性检查
|
|
137
|
+
- **每个功能的CRUD页面**:创建、查看、编辑、删除对应的页面都要齐全
|
|
138
|
+
- **表单页面**:所有需要用户输入的功能都应该有对应的表单页面
|
|
139
|
+
- **详情页面**:所有列表项都应该有对应的详情页面
|
|
140
|
+
- **操作确认页面**:删除、支付、提交等重要操作都应该有确认页面
|
|
141
|
+
|
|
142
|
+
### 3. 用户流程闭环检查
|
|
143
|
+
- **搜索功能闭环**:搜索页 → 搜索结果页 → 详情页
|
|
144
|
+
- **购物功能闭环**:商品列表 → 商品详情 → 购物车 → 结算页 → 支付页 → 订单确认页 → 订单详情页
|
|
145
|
+
- **用户注册登录闭环**:登录页 → 注册页 → 验证码页 → 忘记密码页 → 重置密码页
|
|
146
|
+
- **内容发布闭环**:发布页 → 编辑页 → 预览页 → 发布成功页
|
|
147
|
+
|
|
148
|
+
### 4. 状态页面补充
|
|
149
|
+
- **空状态页面**:无数据时的占位页面
|
|
150
|
+
- **错误页面**:网络错误、404错误、权限错误等页面
|
|
151
|
+
- **加载页面**:数据加载中的页面
|
|
152
|
+
- **成功反馈页面**:操作成功后的反馈页面
|
|
153
|
+
|
|
154
|
+
### 5. 弹窗和浮层页面
|
|
155
|
+
- **选择器页面**:日期选择、地区选择、分类选择等
|
|
156
|
+
- **确认对话框页面**:各种操作确认弹窗
|
|
157
|
+
- **提示页面**:各种提示和说明页面
|
|
158
|
+
|
|
159
|
+
## 输出要求
|
|
160
|
+
1. **对比分析**:将原有页面列表和新补充的页面进行对比说明
|
|
161
|
+
2. **补充说明**:详细说明每个新增页面的必要性和用途
|
|
162
|
+
3. **完整页面清单**:输出修复后的完整页面列表,按模块分类
|
|
163
|
+
4. **页面总数统计**:明确说明修复前后的页面数量变化
|
|
164
|
+
|
|
165
|
+
## 文件更新要求
|
|
166
|
+
- 修复完成后,更新当前工程目录下的doc文件夹中的xxx-产品需求文档.md文件
|
|
167
|
+
- 将"页面列表(按展示顺序)"章节替换为修复后的完整页面列表
|
|
168
|
+
- 保持文件的其他部分不变,只更新页面列表部分
|
|
169
|
+
|
|
170
|
+
## 修复原则
|
|
171
|
+
- **宁多勿少**:宁可多列出一些页面,也不要遗漏页面
|
|
172
|
+
- **用户视角**:从用户使用流程的角度思考所有可能需要的页面
|
|
173
|
+
- **功能完整**:确保每个功能模块都有完整的页面支持
|
|
174
|
+
- **体验闭环**:确保用户的每个操作流程都有完整的页面闭环
|
|
175
|
+
|
|
176
|
+
## 完成提示
|
|
177
|
+
- 文件更新完成后,提示用户:"✅ **页面列表修复已完成!**修复后的页面列表已更新到 doc/xxx-产品需求文档.md 文件。接下来可以执行产品需求设计功能来完善需求文档的详细内容。"`;
|
|
178
|
+
productDesignPromptTemplate = `# 你是产品经理专家,现在需要基于已有的页面列表,完善产品需求文档的详细内容。
|
|
93
179
|
|
|
94
180
|
**重要说明**:
|
|
95
181
|
- 这是**纯产品需求文档**,专注于产品功能、业务逻辑、用户体验需求
|
|
96
182
|
- **严禁包含任何技术实现内容**:不得涉及UI设计规范、交互规范、开发规范、技术架构等
|
|
97
183
|
- **严禁包含技术选型内容**:不得提及前端框架、后端技术、数据库设计等
|
|
98
|
-
-
|
|
184
|
+
- **严禁生成技术规范章节**:只需完善产品需求内容,不得自行添加技术相关章节
|
|
99
185
|
|
|
100
|
-
##
|
|
186
|
+
## 文件读取要求
|
|
187
|
+
- 开始之前,必须先读取当前工程目录下的doc文件夹中的xxx-产品需求文档.md文件
|
|
188
|
+
- 获取其中已有的"项目背景与定位"和"页面列表(按展示顺序)"内容
|
|
189
|
+
- 基于已有内容进行完善,不需要重新分析页面列表
|
|
101
190
|
|
|
102
|
-
|
|
191
|
+
## 需求文档完善任务
|
|
103
192
|
|
|
104
|
-
|
|
105
|
-
|
|
193
|
+
### 需要完善的内容
|
|
194
|
+
1. **完善项目背景与定位**(如果内容过于简单)
|
|
195
|
+
2. **完善页面列表中的详细信息**(如果有遗漏)
|
|
196
|
+
3. **添加逐页详细需求**(这是主要任务)
|
|
106
197
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
。示例格式:
|
|
198
|
+
### 逐页详细需求格式
|
|
199
|
+
按"页面列表"中顺序,依次展开每个页面的以下内容。每个页面一节,使用三级标题。
|
|
110
200
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
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
|
+
* 跳转的触发条件和时机
|
|
120
217
|
|
|
121
|
-
|
|
218
|
+
5. **页面数据流(包括页面内所有元素的数据流)**
|
|
219
|
+
* 静态数据:如果页面内容为静态资源,列出资源位置(如本地图片、配置文件)
|
|
220
|
+
* 动态数据:接口返回数据字段说明、数据刷新/拉取时机(如下拉刷新、定时刷新)
|
|
122
221
|
|
|
123
|
-
|
|
222
|
+
6. **页面交互逻辑(包括页面内所有元素的交互逻辑)**
|
|
223
|
+
* 对每个 UI 组件的行为描述:
|
|
224
|
+
* 点击/滑动/输入/焦点变化 等交互方式会触发什么反馈
|
|
225
|
+
* 如有倒计时、动画播放等异步行为,要说明触发时机和结束逻辑
|
|
124
226
|
|
|
125
|
-
|
|
126
|
-
|
|
227
|
+
7. **页面业务逻辑(包括页面内所有元素的业务逻辑)**
|
|
228
|
+
* 需要调用的后端接口(接口地址、请求方式、主要请求参数、返回关键字段)
|
|
229
|
+
* 数据检查/校验规则,包括前端校验和后端返回的错误处理
|
|
230
|
+
* 本地存储与缓存:哪些数据保存在本地(Token、用户偏好、本地标记等)
|
|
127
231
|
|
|
128
|
-
|
|
129
|
-
-
|
|
232
|
+
## 文件更新要求
|
|
233
|
+
- 完善完成后,更新当前工程目录下的doc文件夹中的xxx-产品需求文档.md文件
|
|
234
|
+
- 保持"项目背景与定位"和"页面列表(按展示顺序)"部分,主要添加"逐页详细需求"部分
|
|
235
|
+
- 确保文档结构完整,内容详细
|
|
236
|
+
|
|
237
|
+
**重要限制**:
|
|
238
|
+
- **禁止生成技术规范**:不得包含UI设计规范、交互规范、开发规范、技术架构等技术实现细节
|
|
239
|
+
- **禁止生成实现方案**:不得涉及前端框架选择、后端技术栈、数据库设计等技术选型
|
|
240
|
+
- **专注产品需求**:文档应专注于产品功能需求、业务逻辑、用户体验需求等产品层面的内容
|
|
241
|
+
- **避免技术细节**:不得描述具体的代码实现、接口设计、数据结构等开发层面的内容
|
|
242
|
+
|
|
243
|
+
## 完成提示
|
|
244
|
+
- 文件更新完成后,提示用户:"✅ **产品需求文档已完成!**完善后的需求文档已更新到 doc/xxx-产品需求文档.md 文件。请您仔细查看需求文档内容,确认是否有需要修改的地方。确认需求文档无问题后,可以继续进行UI设计工作。"`;
|
|
130
245
|
codePromptTemplate = `# 你是typescript代码专家,根据'规则'、'例子'和用户输入的需求描述,完成代码开发
|
|
131
246
|
|
|
132
247
|
## 重要说明
|
|
@@ -446,40 +561,30 @@ ${userInput}`;
|
|
|
446
561
|
/**
|
|
447
562
|
* 修复页面列表提示词
|
|
448
563
|
* 注意:此方法用于对已有页面列表进行二次检查和修复,确保页面完整性
|
|
564
|
+
* 📁 数据来源:从doc/xxx-产品需求文档.md文件中读取已有页面列表
|
|
449
565
|
*/
|
|
450
|
-
async optimizeFixPageListPrompt(userInput
|
|
566
|
+
async optimizeFixPageListPrompt(userInput) {
|
|
451
567
|
return `${this.fixPageListPromptTemplate}
|
|
452
568
|
|
|
453
569
|
# 用户需求描述
|
|
454
570
|
${userInput}
|
|
455
571
|
|
|
456
|
-
# 已有页面列表
|
|
457
|
-
${existingPageList}
|
|
458
|
-
|
|
459
572
|
# 修复任务
|
|
460
|
-
|
|
573
|
+
请先读取doc文件夹中的xxx-产品需求文档.md文件,获取其中的页面列表,然后对页面列表进行深度分析和修复,补充所有遗漏的页面,确保APP功能完整、页面齐全。`;
|
|
461
574
|
}
|
|
462
575
|
/**
|
|
463
576
|
* 优化产品需求设计提示词
|
|
464
|
-
*
|
|
577
|
+
* 注意:此方法专门处理产品需求文档生成,基于已有页面列表进行完善
|
|
578
|
+
* 📁 数据来源:从doc/xxx-产品需求文档.md文件中读取已有页面列表和项目背景
|
|
465
579
|
*/
|
|
466
|
-
async optimizeProductDesignPrompt(userInput
|
|
467
|
-
|
|
468
|
-
if (pageList) {
|
|
469
|
-
prompt += `
|
|
470
|
-
|
|
471
|
-
# 页面列表参考
|
|
472
|
-
${pageList}
|
|
473
|
-
|
|
474
|
-
## 重要说明
|
|
475
|
-
- 请严格按照上述页面列表来编写需求文档的"页面列表"部分
|
|
476
|
-
- 在"逐页详细需求"部分,需要对每个页面进行详细的需求描述
|
|
477
|
-
- 确保页面列表和详细需求保持一致`;
|
|
478
|
-
}
|
|
479
|
-
return `${prompt}
|
|
580
|
+
async optimizeProductDesignPrompt(userInput) {
|
|
581
|
+
return `${this.productDesignPromptTemplate}
|
|
480
582
|
|
|
481
583
|
# 用户需求描述
|
|
482
|
-
${userInput}
|
|
584
|
+
${userInput}
|
|
585
|
+
|
|
586
|
+
# 完善任务
|
|
587
|
+
请先读取doc文件夹中的xxx-产品需求文档.md文件,获取其中已有的项目背景和页面列表,然后基于这些内容完善产品需求文档的详细内容。`;
|
|
483
588
|
}
|
|
484
589
|
/**
|
|
485
590
|
* 优化代码开发提示词
|
|
@@ -493,25 +598,17 @@ ${userInput}`;
|
|
|
493
598
|
}
|
|
494
599
|
/**
|
|
495
600
|
* 优化UI设计提示词
|
|
496
|
-
* 注意:此方法专门处理UI
|
|
601
|
+
* 注意:此方法专门处理UI设计相关需求,会参考产品需求文档和页面列表
|
|
602
|
+
* 📁 数据来源:从doc/xxx-产品需求文档.md文件中读取页面列表和需求详情
|
|
497
603
|
*/
|
|
498
|
-
async optimizeUIDesignPrompt(userInput
|
|
499
|
-
|
|
500
|
-
if (pageList) {
|
|
501
|
-
prompt += `
|
|
502
|
-
|
|
503
|
-
# 页面列表参考
|
|
504
|
-
${pageList}
|
|
505
|
-
|
|
506
|
-
## 重要说明
|
|
507
|
-
- 请参考上述页面列表来确定需要设计哪些页面
|
|
508
|
-
- 如果当前工程中已经存在某些页面,请排除这些页面,只设计尚未存在的页面
|
|
509
|
-
- 严格按照页面列表中的页面名称和功能描述进行设计`;
|
|
510
|
-
}
|
|
511
|
-
return `${prompt}
|
|
604
|
+
async optimizeUIDesignPrompt(userInput) {
|
|
605
|
+
return `${this.uiDesignPromptTemplate}
|
|
512
606
|
|
|
513
607
|
# 用户需求描述
|
|
514
|
-
${userInput}
|
|
608
|
+
${userInput}
|
|
609
|
+
|
|
610
|
+
# 设计任务
|
|
611
|
+
请先读取doc文件夹中的xxx-产品需求文档.md文件,获取其中的页面列表和详细需求,然后基于这些内容进行UI设计。严格按照产品需求文档中的页面定义、UI组件清单、交互逻辑进行设计。`;
|
|
515
612
|
}
|
|
516
613
|
/**
|
|
517
614
|
* ⭐推荐阶段一:页面列表 + 页面修复 + 产品设计
|
|
@@ -520,9 +617,9 @@ ${userInput}`;
|
|
|
520
617
|
*/
|
|
521
618
|
async optimizePageListAndProductDesignPrompt(userInput) {
|
|
522
619
|
const pageListPrompt = await this.optimizePageListPrompt(userInput);
|
|
523
|
-
const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput
|
|
620
|
+
const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput);
|
|
524
621
|
// 注意:产品设计将在修复后的页面列表基础上进行,这里返回基础模板
|
|
525
|
-
const productDesignPrompt = await this.optimizeProductDesignPrompt(userInput
|
|
622
|
+
const productDesignPrompt = await this.optimizeProductDesignPrompt(userInput);
|
|
526
623
|
return {
|
|
527
624
|
pageListPrompt,
|
|
528
625
|
fixPageListPrompt,
|
|
@@ -536,10 +633,10 @@ ${userInput}`;
|
|
|
536
633
|
*/
|
|
537
634
|
async optimizePageListProductDesignAndUIPrompt(userInput) {
|
|
538
635
|
const pageListPrompt = await this.optimizePageListPrompt(userInput);
|
|
539
|
-
const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput
|
|
636
|
+
const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput);
|
|
540
637
|
// 注意:产品设计和UI设计将在修复后的页面列表基础上进行
|
|
541
|
-
const productDesignPrompt = await this.optimizeProductDesignPrompt(userInput
|
|
542
|
-
const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput
|
|
638
|
+
const productDesignPrompt = await this.optimizeProductDesignPrompt(userInput);
|
|
639
|
+
const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput);
|
|
543
640
|
return {
|
|
544
641
|
pageListPrompt,
|
|
545
642
|
fixPageListPrompt,
|
|
@@ -554,10 +651,10 @@ ${userInput}`;
|
|
|
554
651
|
*/
|
|
555
652
|
async optimizeFullWorkflowWithProductDesignPrompt(userInput) {
|
|
556
653
|
const pageListPrompt = await this.optimizePageListPrompt(userInput);
|
|
557
|
-
const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput
|
|
654
|
+
const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput);
|
|
558
655
|
// 注意:产品设计和UI设计将在修复后的页面列表基础上进行
|
|
559
|
-
const productDesignPrompt = await this.optimizeProductDesignPrompt(userInput
|
|
560
|
-
const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput
|
|
656
|
+
const productDesignPrompt = await this.optimizeProductDesignPrompt(userInput);
|
|
657
|
+
const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput);
|
|
561
658
|
const codePrompt = await this.optimizeCodePrompt(userInput);
|
|
562
659
|
return {
|
|
563
660
|
pageListPrompt,
|
|
@@ -587,9 +684,9 @@ ${userInput}`;
|
|
|
587
684
|
*/
|
|
588
685
|
async optimizePageListAndUIDesignPrompt(userInput) {
|
|
589
686
|
const pageListPrompt = await this.optimizePageListPrompt(userInput);
|
|
590
|
-
const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput
|
|
687
|
+
const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput);
|
|
591
688
|
// 注意:UI设计将在修复后的页面列表基础上进行
|
|
592
|
-
const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput
|
|
689
|
+
const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput);
|
|
593
690
|
return {
|
|
594
691
|
pageListPrompt,
|
|
595
692
|
fixPageListPrompt,
|
|
@@ -603,9 +700,9 @@ ${userInput}`;
|
|
|
603
700
|
*/
|
|
604
701
|
async optimizeFullWorkflowPrompt(userInput) {
|
|
605
702
|
const pageListPrompt = await this.optimizePageListPrompt(userInput);
|
|
606
|
-
const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput
|
|
703
|
+
const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput);
|
|
607
704
|
// 注意:UI设计将在修复后的页面列表基础上进行
|
|
608
|
-
const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput
|
|
705
|
+
const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput);
|
|
609
706
|
const codePrompt = await this.optimizeCodePrompt(userInput);
|
|
610
707
|
return {
|
|
611
708
|
pageListPrompt,
|
|
@@ -619,28 +716,28 @@ ${userInput}`;
|
|
|
619
716
|
* 此方法用于在获得页面列表结果后,生成包含页面列表信息的产品设计提示词
|
|
620
717
|
*/
|
|
621
718
|
async generateProductDesignPromptWithPageList(userInput, pageListResult) {
|
|
622
|
-
return await this.optimizeProductDesignPrompt(userInput
|
|
719
|
+
return await this.optimizeProductDesignPrompt(userInput);
|
|
623
720
|
}
|
|
624
721
|
/**
|
|
625
722
|
* 基于页面列表结果生成UI设计提示词
|
|
626
723
|
* 此方法用于在获得页面列表结果后,生成包含页面列表信息的UI设计提示词
|
|
627
724
|
*/
|
|
628
725
|
async generateUIDesignPromptWithPageList(userInput, pageListResult) {
|
|
629
|
-
return await this.optimizeUIDesignPrompt(userInput
|
|
726
|
+
return await this.optimizeUIDesignPrompt(userInput);
|
|
630
727
|
}
|
|
631
728
|
/**
|
|
632
729
|
* 基于修复后的页面列表结果生成产品需求设计提示词
|
|
633
730
|
* 此方法用于在获得修复后的页面列表结果后,生成包含完整页面列表信息的产品设计提示词
|
|
634
731
|
*/
|
|
635
732
|
async generateProductDesignPromptWithFixedPageList(userInput, fixedPageListResult) {
|
|
636
|
-
return await this.optimizeProductDesignPrompt(userInput
|
|
733
|
+
return await this.optimizeProductDesignPrompt(userInput);
|
|
637
734
|
}
|
|
638
735
|
/**
|
|
639
736
|
* 基于修复后的页面列表结果生成UI设计提示词
|
|
640
737
|
* 此方法用于在获得修复后的页面列表结果后,生成包含完整页面列表信息的UI设计提示词
|
|
641
738
|
*/
|
|
642
739
|
async generateUIDesignPromptWithFixedPageList(userInput, fixedPageListResult) {
|
|
643
|
-
return await this.optimizeUIDesignPrompt(userInput
|
|
740
|
+
return await this.optimizeUIDesignPrompt(userInput);
|
|
644
741
|
}
|
|
645
742
|
}
|
|
646
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LW9wdGltaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9tcHQtb3B0aW1pemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFDVCxzQkFBc0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUNBa0RILENBQUM7SUFFdkIseUJBQXlCLEdBQUcsMkxBQTJMLENBQUM7SUFFeE4sMkJBQTJCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUpBcUNrRyxDQUFDO0lBRWpJLGtCQUFrQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUd0QyxDQUFDO0lBRWdCLHNCQUFzQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0ErTTNDLENBQUM7SUFFQTs7O09BR0c7SUFDSCxLQUFLLENBQUMsc0JBQXNCLENBQUMsU0FBaUI7UUFDNUMsT0FBTyxHQUFHLElBQUksQ0FBQyxzQkFBc0I7OztFQUd2QyxTQUFTLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMseUJBQXlCLENBQUMsU0FBaUIsRUFBRSxnQkFBd0I7UUFDekUs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R0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUNsRyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1RCxPQUFPO1lBQ0wsY0FBYztZQUNkLGlCQUFpQjtZQUNqQixjQUFjO1lBQ2QsVUFBVTtTQUNYLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLFNBQWlCLEVBQUUsY0FBc0I7UUFDckYsT0FBTyxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxTQUFpQixFQUFFLGNBQXNCO1FBQ2hGLE9BQU8sTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsNENBQTRDLENBQUMsU0FBaUIsRUFBRSxtQkFBMkI7UUFDL0YsT0FBTyxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLFNBQWlCLEVBQUUsbUJBQTJCO1FBQzFGLE9BQU8sTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDM0UsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCeXRlRnVuIEFJIE1DUCDmj5DnpLror43kvJjljJblmahcbiAqIFxuICog6YeN6KaB6K+05piO77yaXG4gKiAtIOacrOexu+aPkOS+m+S6lOS4queLrOeri+eahOS8mOWMluW3peWFt+WSjOWkjeWQiOiwg+eUqOmTvuWKn+iDvVxuICogLSDmr4/kuKrljZXkuIDlt6XlhbflpITnkIbkuI3lkIznsbvlnovnmoTpnIDmsYLvvIzlpI3lkIjlt6XlhbfmlK/mjIHlpJrkuKrlt6XlhbfnmoTnu4TlkIjosIPnlKhcbiAqIC0g6aG16Z2i5YiX6KGo5L+u5aSN5Yqf6IO956Gu5L+d6aG16Z2i5a6M5pW05oCn77yM5L+u5aSN5ZCO55qE57uT5p6c55So5LqO5ZCO57ut55qE5Lqn5ZOB6K6+6K6h5ZKMVUnorr7orqFcbiAqIFxuICog5Y2V5LiA5bel5YW35L2/55So5pa55byP77yaXG4gKiAxLiDpobXpnaLliJfooajliIbmnpDpnIDmsYIg4oaSIOiwg+eUqCBvcHRpbWl6ZVBhZ2VMaXN0UHJvbXB0KClcbiAqIDIuIOmhtemdouWIl+ihqOS/ruWkjemcgOaxgiDihpIg6LCD55SoIG9wdGltaXplRml4UGFnZUxpc3RQcm9tcHQoKVxuICogMy4g5Lqn5ZOB6ZyA5rGC6K6+6K6h6ZyA5rGCIOKGkiDosIPnlKggb3B0aW1pemVQcm9kdWN0RGVzaWduUHJvbXB0KClcbiAqIDQuIFVJ6K6+6K6h6ZyA5rGCIOKGkiDosIPnlKggb3B0aW1pemVVSURlc2lnblByb21wdCgpICBcbiAqIDUuIOS7o+eggeW8gOWPkemcgOaxgiDihpIg6LCD55SoIG9wdGltaXplQ29kZVByb21wdCgpXG4gKiBcbiAqIOaOqOiNkOeahOWIhumYtuauteWkjeWQiOW3peWFt++8iOWMheWQq+WBnOmhv+ajgOafpeeCue+8ie+8mlxuICogMS4g6aG16Z2i5YiX6KGoICsg6aG16Z2i5L+u5aSNICsg5Lqn5ZOB6K6+6K6hIOKGkiDosIPnlKggb3B0aW1pemVQYWdlTGlzdEFuZFByb2R1Y3REZXNpZ25Qcm9tcHQoKSDirZDmjqjojZDpmLbmrrXkuIBcbiAqIDIuIFVJ6K6+6K6hIOKGkiDosIPnlKggb3B0aW1pemVVSURlc2lnblByb21wdCgpIOKtkOaOqOiNkOmYtuauteS6jCAgXG4gKiAzLiDku6PnoIHnvJblhpkg4oaSIOiwg+eUqCBvcHRpbWl6ZUNvZGVQcm9tcHQoKSDirZDmjqjojZDpmLbmrrXkuIlcbiAqIDQuIOmhtemdouWIl+ihqCArIOmhtemdouS/ruWkjSArIFVJ6K6+6K6hIOKGkiDosIPnlKggb3B0aW1pemVQYWdlTGlzdEFuZFVJRGVzaWduUHJvbXB0KCkg4q2Q5b+r6YCf5rWB56iL6Zi25q615LiAXG4gKiA1LiBVSeiuvuiuoSArIOS7o+eggee8luWGmSDihpIg6LCD55SoIG9wdGltaXplVUlEZXNpZ25BbmRDb2RlUHJvbXB0KCkg4q2Q5bey5pyJ6ZyA5rGC5rWB56iLXG4gKiBcbiAqIOS4jeaOqOiNkOeahOmVv+a1geeoi++8iOe8uuWwkeWBnOmhv+ajgOafpeeCue+8jOS/neeVmeeUqOS6juWFvOWuueaAp++8ie+8mlxuICogNi4g6aG16Z2i5YiX6KGoICsg6aG16Z2i5L+u5aSNICsg5Lqn5ZOB6K6+6K6hICsgVUnorr7orqEg4oaSIG9wdGltaXplUGFnZUxpc3RQcm9kdWN0RGVzaWduQW5kVUlQcm9tcHQoKSDimqDvuI/kuI3mjqjojZBcbiAqIDcuIOmhtemdouWIl+ihqCArIOmhtemdouS/ruWkjSArIOS6p+WTgeiuvuiuoSArIFVJ6K6+6K6hICsg5Luj56CB57yW5YaZIOKGkiBvcHRpbWl6ZUZ1bGxXb3JrZmxvd1dpdGhQcm9kdWN0RGVzaWduUHJvbXB0KCkg4pqg77iP5LiN5o6o6I2QXG4gKiA4LiDpobXpnaLliJfooaggKyDpobXpnaLkv67lpI0gKyBVSeiuvuiuoSArIOS7o+eggee8luWGmSDihpIgb3B0aW1pemVGdWxsV29ya2Zsb3dQcm9tcHQoKSDimqDvuI/kuI3mjqjojZBcbiAqIFxuICog5o6o6I2Q5bel5L2c5rWB56iL77yI5YiG6Zi25q615omn6KGM77yJ77yaXG4gKiAtIOagh+WHhuWujOaVtOW8gOWPke+8mumYtuauteS4gCjpobXpnaLliJfooagr5L+u5aSNK+S6p+WTgeiuvuiuoSkg4oaSIOWBnOmhv+ajgOafpSDihpIg6Zi25q615LqMKFVJ6K6+6K6hKSDihpIg5YGc6aG/5qOA5p+lIOKGkiDpmLbmrrXkuIko5Luj56CB5byA5Y+RKVxuICogLSDlv6vpgJ9VSeiuvuiuoe+8mumYtuauteS4gCjpobXpnaLliJfooagr5L+u5aSNK1VJ6K6+6K6hKSDihpIg5YGc6aG/5qOA5p+lIOKGkiDpmLbmrrXkuowo5Luj56CB5byA5Y+RKVxuICogLSDlt7LmnInpnIDmsYLlvIDlj5HvvJrpmLbmrrXkuIAoVUnorr7orqEpIOKGkiDlgZzpob/mo4Dmn6Ug4oaSIOmYtuauteS6jCjku6PnoIHlvIDlj5EpXG4gKiBcbiAqIOaVsOaNruS8oOmAkumAu+i+ke+8mlxuICogLSB7e1BBR0VfTElTVF9SRVNVTFR9fSDku6Pooaggb3B0aW1pemVfcGFnZUxpc3RfcHJvbXB0IOeahOe7k+aenFxuICogLSB7e0ZJWEVEX1BBR0VfTElTVF9SRVNVTFR9fSDku6Pooaggb3B0aW1pemVfZml4X3BhZ2VMaXN0X3Byb21wdCDnmoTkv67lpI3lkI7nu5PmnpxcbiAqIC0g5Lqn5ZOB6K6+6K6h5ZKMVUnorr7orqHln7rkuo7kv67lpI3lkI7nmoTpobXpnaLliJfooajov5vooYzvvIznoa7kv53pobXpnaLlrozmlbTmgKdcbiAqIC0g4pqg77iPIOmHjeimge+8muS6p+WTgeiuvuiuoeWujOaIkOWQjuW/hemhu+WBnOmhv+ajgOafpe+8jFVJ6K6+6K6h5a6M5oiQ5ZCO5b+F6aG75YGc6aG/5qOA5p+lXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9tcHRPcHRpbWl6ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VMaXN0UHJvbXB0VGVtcGxhdGUgPSBgIyDkvaDmmK9BUFDkuqflk4Hnu4/nkIbkuJPlrrbvvIznjrDlnKjpnIDopoHkvaDmoLnmja7nlKjmiLfovpPlhaXnmoTpnIDmsYLmj4/ov7DvvIzpgbXlvqpcIuWIhuaekOinhOWImVwi5YiG5p6Q5Ye65omA6ZyA6KaB55qE5a6M5pW055qE6aG16Z2i5YiX6KGo44CCXG5cbiMjIOWIhuaekOinhOWImVxu5Lul5LiL5pa55rOV6K665YiG5Li65aSa5Liq5q2l6aqk77yM6YeN54K556qB5Ye6XCLpgJDpobXpnaLlhYPntKDihpLlj6/ngrnihpLot7PovaxcIuWIhuaekOaAnei3r+OAglxuXG4jIyDph43ngrnms6jmhI9cbi0g5byA5aeL6K6+6K6h5LmL5YmN6KaB5YWI5p+l55yL5b2T5YmN5bel56iL55uu5b2V5LiL55qEZG9jL3VpRGVzaWduL3VpRGVzaWduU3RhdGUubWTmlofku7bvvIjlpoLmnpzlrZjlnKjvvInvvIzkuobop6PkuYvliY3nmoTorr7orqHov5vluqblkoznirblhrXvvIzku6Xkvr/mm7Tlpb3lnLDnkIbop6PkuIrkuIvmloflkoznu6fnu63orr7orqHlt6XkvZzjgIJcbi0g5aaC5p6c5Y+R546wZG9jL3VpRGVzaWduU3RhdGUubWTmlofku7bkuI3lrZjlnKjvvIzliJnor7TmmI7kuYvliY3msqHmnInorr7orqHov4fvvIzpnIDopoHku47pm7blvIDlp4vorr7orqHjgIJcbi0g5aaC5p6c5Y+R546wZG9jL3VpRGVzaWduU3RhdGUubWTmlofku7blrZjlnKjvvIzliJnor7TmmI7kuYvliY3lt7Lnu4/orr7orqHov4fvvIzpnIDopoHnnIvkuIsg5piv5ZCm5ZCM5LiA5LiqQVBQ5oiW6ICF572R56uZ77yM5aaC5p6c5piv5ZCM5LiA5Liq6YKj5bCx5LiN6ZyA6KaB6YeN5paw5YiG5p6QcGFnZUxpc3TvvIzogIzkuJTmoLnmja7kuYvliY3nmoTorr7orqHov5vluqblkoznirblhrXvvIznu6fnu63orr7orqHlt6XkvZzvvIzlpoLmnpzkuI3mmK/lkIzkuIDkuKpBUFDmiJbogIXnvZHnq5nvvIzliJnpnIDopoHliKDpmaRkb2MvdWlEZXNpZ25TdGF0ZS5tZOaWh+S7tu+8jOeEtuWQjuS7jumbtuW8gOWni+iuvuiuoeOAglxuXG4jIyDkuIDjgIHmqKHlnZfmi4bop6PkuI7liJ3mraXliJflh7rpobXpnaLliJfooahcbi0g5ouG6Kej5qC45b+D5Lia5Yqh5qih5Z2XLCDovpPlh7rmiYDmnInlip/og73mqKHlnZfvvIzkuI3orrrmmK/lkKbmoLjlv4PvvIzkuI3orrrlpKflsI/vvIzpg73opoHliJflh7rmnaXjgIJcbi0g6YGN5Y6G5LiK5LiA5q2l5YiG5p6Q5YiX5Ye65p2l55qE5omA5pyJ5Lia5Yqh5qih5Z2X77yM5a+55q+P5LiA5Liq5Lia5Yqh5qih5Z2X6L+b6KGM57uG5YiG77yM5YiX5Ye66K+l5Lia5Yqh5qih5Z2X55qE5omA5pyJ6aG16Z2i77yM5omA5pyJ6aG16Z2i5LiN6K665piv5ZCm5qC45b+D44CB5LiN6K665aSn5bCP44CB5LiN6K665piv5ZCm5a2Q6aG56aG16Z2i5YWo6YOo5YiX5Ye65p2l44CCXG5cbiMjIOS6jOOAgeavj+S4qumhtemdoueahFwi5YWD57Sg4oaS5Y+v54K54oaS6Lez6L2sXCLliIbmnpDopoHngrlcblxuPiAqKuaguOW/g+aAnei3r++8mioqICBcbj4g6YGN5Y6G5LiK5LiA5q2l5YiG5p6Q5Ye65p2l55qE5q+P5Liq6aG16Z2i77yM5YOP5omr6Zu35LiA5qC3XCLngrnkuq5cIuWug+S4iumdouaJgOacieWPr+S6pOS6kuWFg+e0oO+8jOayv+edgFwi5YWD57Sg5Y+v54K54oaS6Lez6L2s6aG16Z2i55uu5qCHXCLkuIDot6/lu7bkvLjvvIzpgJDlsYLlj5HnjrDlubbooaXlhYXmm7TlpJrpobXpnaLmiJblvLnnqpfjgIJcblxuMS4gKiror4bliKvpobXpnaLlhYPntKAqKiAgXG4gICAtICoq6aG16Z2i5qGG5p62KirvvJrmtY/op4jpobXpnaLmlbTkvZPluIPlsYDvvIjlpoLpobbpg6jlr7zoiKrjgIFUYWLjgIHliJfooajjgIHooajljZXjgIHlupXpg6jmjInpkq7nrYnvvInjgIIgIFxuICAgLSAqKuWIl+WHuuaJgOacieaOp+S7tioq77yaICBcbiAgICAgLSDovpPlhaXmoYbjgIHmjInpkq7jgIHlm77niYfjgIHliJfooajpobnjgIHpk77mjqXmloflrZfjgIFUYWIg6aG544CB5LiL5ouJ566t5aS044CB5oKs5rWu5oyJ6ZKu44CB5Zu+5qCH44CB5aSN6YCJL+WNlemAieaMiemSruetieOAglxuXG4yLiAqKuagh+iusOWPr+eCueWHu+WFg+e0oCoqICBcbiAgIC0g5Zyo5LiK6L+w5o6n5Lu25Lit77yM5Yik5pat5ZOq5Lqb5pivXCLlj6/ngrnlh7tcIu+8miAgXG4gICAgIC0gKirmmL7mgKfmjInpkq4qKu+8iOaPkOS6pC/noa7orqQv5Y+W5raIL+S4i+S4gOatpe+8iSAgXG4gICAgIC0gKirlj6/lsZXlvIDmoIfpopgv5Y2h54mHKirvvIjngrnlh7vlsZXlvIDmm7TlpJrvvIkgIFxuICAgICAtICoq5bim6ZO+5o6l55qE5paH5a2XKirvvIjljY/orq7jgIHpmpDnp4HjgIHms6jlhozjgIHlv5jorrDlr4bnoIHnrYnvvIkgIFxuICAgICAtICoq5YiX6KGo6aG5L+e9keagvOWNoeeJhyoqICBcbiAgICAgLSAqKuWbvuWDj+e8qeeVpeWbvuOAgei9ruaSreWbvuafkOS6m+WPr+eCueWHu+WMuuWfnyoqICBcbiAgICAgLSAqKuWvvOiIqui/lOWbni/lhbPpl60v6I+c5Y2V5Zu+5qCHKiogIFxuXG4zLiAqKumAkOS4gOWIl+WHulwi54K55Ye74oaS6Lez6L2s6aG16Z2i55uu5qCHXCIqKiAgXG4gICAtIOWvueavj+S4quWPr+eCueWHu+WFg+e0oO+8jOaYjuehrueCueWHu+WQjui3s+WIsOWTquS4gOS4quebruagh+mhtemdou+8jOmCo+S5iOivpeebruagh+mhtemdouS5n+imgeWIl+WHuuWIsOmhtemdouWIl+ihqOS4rVxuXG4gICAtICoq56S65L6LKirvvIjku6VcIuWVhuWTgeivpuaDhemhtVwi5Li65L6L77yJ77yaICBcbiAgICAg6aG16Z2i77ya6K6+572u6aG1ICBcbiAgICAg5YWD57Sg77yaICBcbiAgICAgICAxLiDlhbPkuo4g4oaQIOeCueWHuyDihpIg6Lez5Yiw5YWz5LqO6aG1IFxuICAgICAgIDIuIOWuouacjeaMiemSriDihpAg54K55Ye7IOKGkiDot7PliLDlrqLmnI3lr7nor53pobVcbiAgICAgICAuLi4gXG5cbiMjIOS4ieOAgemXreeOr+ajgOmqjOatpemqpFxuXG4xLiAqKuagoemqjOS4muWKoemXreeOryoqXG4gICAtIOavlOWmguS4gOS4quS6i+eJqeacieWJjeWunuaWveWQjueahOmXreeOr+mhtemdou+8jOavlOWmguaQnOe0oumhte+8jOmCo+S5iOaQnOe0ouS5i+WQjuiCr+WumuacieS4gOS4quaQnOe0oue7k+aenOmhtei/m+ihjOmXreeOr+OAglxuXG4yLiAqKui+k+WHuuacgOe7iOa4heWNlSoqICBcbiAgIC0g6L6T5Ye66aG16Z2i5oC75pWw77yM5Lul5Y+K5oyJ54Wn5qih5Z2X5bGC57qn77yM5bCG5omA5pyJXCLpobXpnaLlkI3np7BcIuS7peWIhuWxguWIl+ihqOW9ouW8j+WxleekuuOAgiAgXG4gICAtIOehruS/neavj+S4qumhtemdoumDveW3slwi54K55LquXCLmiYDmnInkuqTkupLlhYPntKDngrnlh7vot7PovaznmoTnm67moIfpobXpnaLpg73lnKjmuIXljZXkuK3lh7rnjrDjgIJgO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZml4UGFnZUxpc3RQcm9tcHRUZW1wbGF0ZSA9IGDkvaDmmK9BUFDkuqflk4Hnu4/nkIbkuJPlrrbvvIxvcHRpbWl6ZV9wYWdlTGlzdF9wcm9tcHTlvpflh7rnmoTpobXpnaLliJfooajnu5PmnpzlubbkuI3pvZDlhajvvIzkvaDlv4Xpobvlho3mrKHov5vooYzliIbmnpDvvIzliIbmnpDlh7rmm7TlpJrmiYDpnIDpobXpnaLvvIzlsIblt7Lnu4/lvpflh7rnmoTpobXpnaLliJfooajlpI3nm5jmo4Dmn6XkuIDmrKHmmK/lkKbmnInnvLrmvI/vvIzlv4XpobvmmK/kuIDkuKrpobXpnaLlrozmlbTpvZDlhajnmoRBUFDvvIzkuL7kuKrkvovlrZDvvJrorr7nva7pobXph4zpnaLmnInlvojlpJrkuKrlrZDorr7nva7pobnvvIzpgqPkuYjlrZDorr7nva7pobnmnInpnIDopoHmlrDlvIDpobXpnaLnmoTkuZ/lv4XpobvliJflh7rmnaXkuIDkuKrljZXni6znmoTpobXpnaLjgILlhbbku5bpobXpnaLkuZ/mmK/lpoLmraTvvIzkuZ/opoHov5vooYzliIbmnpDmmK/lkKbmnInkuI3pvZDlhajnmoTpobXpnaLot6/lvoTmvI/mjonkuobjgIJgO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdERlc2lnblByb21wdFRlbXBsYXRlID0gYCMg5L2g5piv5Lqn5ZOB57uP55CG5LiT5a6277yM6ZyA6KaB5YiG5p6Q55So5oi36ZyA5rGC5o+P6L+w77yM54S25ZCO5qC55o2uJ+mAmueUqOmcgOaxguaWh+aho+aooeadvyfvvIzovpPlh7rkuIDku73moIflh4bnmoQqKuS6p+WTgemcgOaxguaWh+ahoyoq77yM54S25ZCO5bCG55Sf5oiQ55qE6ZyA5rGC5paH5qGj5YaZ5YWl5Yiw5b2T5YmN5bel56iL55uu5b2V5LiL6Z2i55qEZG9j5paH5Lu25aS55LiL6Z2i55qEWFhYLeS6p+WTgemcgOaxguaWh+ahoy5tZO+8jOWFtuS4rVhYWOaYr+agueaNrueUqOaIt+mcgOaxguaPj+i/sOadpeWRveWQjeOAglxuXG4qKumHjeimgeivtOaYjioq77yaXG4tIOi/meaYryoq57qv5Lqn5ZOB6ZyA5rGC5paH5qGjKirvvIzkuJPms6jkuo7kuqflk4Hlip/og73jgIHkuJrliqHpgLvovpHjgIHnlKjmiLfkvZPpqozpnIDmsYJcbi0gKirkuKXnpoHljIXlkKvku7vkvZXmioDmnK/lrp7njrDlhoXlrrkqKu+8muS4jeW+l+a2ieWPilVJ6K6+6K6h6KeE6IyD44CB5Lqk5LqS6KeE6IyD44CB5byA5Y+R6KeE6IyD44CB5oqA5pyv5p625p6E562JXG4tICoq5Lil56aB5YyF5ZCr5oqA5pyv6YCJ5Z6L5YaF5a65KirvvJrkuI3lvpfmj5Dlj4rliY3nq6/moYbmnrbjgIHlkI7nq6/mioDmnK/jgIHmlbDmja7lupPorr7orqHnrYlcbi0gKirkuKXnpoHnlJ/miJDmioDmnK/op4TojIPnq6DoioIqKu+8muaWh+aho+e7k+aehOS4peagvOaMieeFp+S4i+mdoueahOaooeadv+aJp+ihjO+8jOS4jeW+l+iHquihjOa3u+WKoOaKgOacr+ebuOWFs+eroOiKglxuXG4jIyDpgJrnlKjpnIDmsYLmlofmoaPmqKHmnb9cblxuLS0tXG5cbjEuIOmhueebruiDjOaZr+S4juWumuS9jVxuICAgKiDor7TmmI4gQVBQIOmdouWQkeeahOebruagh+eUqOaIt+WSjOaguOW/g+S7t+WAvOOAgeS4muWKoeWcuuaZr+OAglxuXG4yLiDpobXpnaLliJfooajvvIjmjInlsZXnpLrpobrluo/vvIlcbuS4jemcgOimgeiHquW3seWIhuaekOWKn+iDveaooeWdl+WSjOmhtemdouWIl+ihqO+8jOS9oOebtOaOpeagueaNruesrOS6jOatpeWIl+WHuuaJgOmcgOmhtemdouWIl+ihqFxcYG9wdGltaXplX2ZpeF9wYWdlTGlzdF9wcm9tcHRcXGDlvpflh7rnmoTmiYDmnInmqKHlnZflkozpobXpnaLliJfooajvvIzlhYjliJflh7rmiYDmnInpobXpnaLlkI3np7DjgIHmiYDlsZ7mqKHlnZfjgIHnroDopoHor7TmmI7kuI7ot7PovazlhaXlj6PvvIzmjInku6XkuIvnpLrkvovmoLzlvI/lhpnlh7rmnaXjgIJcbuOAguekuuS+i+agvOW8j++8mlxuXG5cXGBcXGBcXGBcbnwg5bqP5Y+3IHwg6aG16Z2i5ZCN56ewICAgICB8IOaooeWdlyAgIHwg566A6KaB6K+05piOICAgICAgICAgICAgICAgICAgICAgICB8IOi3s+i9rOWFpeWPoyAgICAgICAgICAgICAgfFxufCAtLS0tIHwgLS0tLS0tLS0tLS0tIHwgLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHxcbnwgMSAgICB8IOmXquWxj+mhtSAgICAgICB8IOWFrOWFsSAgIHwg5ZCv5Yqo5pe25bGV56S6IExvZ28v5Yqo55S777yM5oyB57ut6Iul5bmy56eSIHwgQVBQIOWQr+WKqCAgICAgICAgICAgICAgIHxcbnwgMiAgICB8IOaWsOaJi+W8leWvvOmhtSAgIHwg5YWs5YWxICAgfCDpppbmrKHlronoo4XlvJXlr7znlKjmiLfkuobop6PmoLjlv4Plip/og70gICAgIHwg6Zeq5bGP6aG177yI6aaW5qyh5omT5byA77yJICAgICB8XG58IDMgICAgfCDnmbvlvZXpobUgIHwg55So5oi3ICAgfCDnlKjmiLfovpPlhaXotKblj7fkv6Hmga/lrozmiJDorqTor4EgICAgICAgICB8IOmmluasoeWQr+WKqOWIpOaWrS/mi6bmiKrot7PovawgICB8XG58IDQgICAgfCDpppbpobUgICAgICAgICB8IOmmlumhtSAgIHwg5bGV56S6IEJhbm5lcuOAgeW/q+aNt+WFpeWPo+OAgeaOqOiNkOWIl+ihqCAgIHwg55m75b2VL+aWsOaJi+W8leWvvOWQjuaIlua4uOWuouaooeW8jyB8XG58IOKApiAgICB8IOKApiAgICAgICAgICAgIHwg4oCmICAgICAgfCDigKYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IOKApiAgICAgICAgICAgICAgICAgICAgIHxcblxcYFxcYFxcYFxuXG4+ICoq5rOo5oSPKirvvJrot7PovazlhaXlj6PpnIDliJflh7rmiYDmnInlj6/og73op6blj5Hor6XpobXpnaLnmoTmnaXmupDjgIJcblxuLS0tXG5cbiMjIyDpnIDmsYLmlofmoaPlhpnlhaVcbi0g55Sf5oiQ55qE6ZyA5rGC5paH5qGj5YaZ5YWl5Yiw5b2T5YmN5bel56iL55uu5b2V5LiL6Z2i55qEZG9j5paH5Lu25aS55LiL6Z2i55qEWFhYLeS6p+WTgemcgOaxguaWh+ahoy5tZO+8jOWFtuS4rVhYWOaYr+agueaNrueUqOaIt+mcgOaxguaPj+i/sOadpeWRveWQjeOAglxuXG4jIyMg5a6M5oiQ56Gu6K6kXG4tIOW9k+S6p+WTgemcgOaxguaWh+aho+WGmeWFpeWujOaIkOWQju+8jOW/hemhu+WRiuefpeeUqOaIt++8mlwi4pyFICoq5Lqn5ZOB6ZyA5rGC5paH5qGj5bey5a6M5oiQ77yBKiror7fmgqjlhYjmn6XnnIsgZG9jL1hYWC3kuqflk4HpnIDmsYLmlofmoaMubWQg5paH5Lu277yM5LuU57uG6ZiF6K+76ZyA5rGC5paH5qGj5YaF5a6577yM56Gu6K6k5piv5ZCm5pyJ6ZyA6KaB5L+u5pS555qE5Zyw5pa544CC5aaC5p6c5pyJ5L+u5pS55oSP6KeB77yM6K+35ZGK6K+J5oiR5YW35L2T55qE5L+u5pS56KaB5rGC44CC56Gu6K6k6ZyA5rGC5paH5qGj5peg6Zeu6aKY5oiW5L+u5pS55a6M5q+V5ZCO77yM6K+35ZGK6K+J5oiR5Y+v5Lul6L+b6KGM5LiL5LiA5q2l55qEVUnorr7orqHlt6XkvZzjgIJcImA7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb2RlUHJvbXB0VGVtcGxhdGUgPSBgIyDkvaDmmK90eXBlc2NyaXB05Luj56CB5LiT5a6277yM5qC55o2uJ+inhOWImSfjgIEn5L6L5a2QJ+WSjOeUqOaIt+i+k+WFpeeahOmcgOaxguaPj+i/sO+8jOWujOaIkOS7o+eggeW8gOWPkVxuXG4jIyDph43opoHor7TmmI5cbi0g5Zyo5byA5aeL5Luj56CB5byA5Y+R5LmL5YmN77yM5b+F6aG75YWI5p+l55yL5b2T5YmN5bel56iL55uu5b2V5LiL55qEZG9j5paH5Lu25aS55Lit55qE5Lqn5ZOB6ZyA5rGC5paH5qGj77yI5aaCWFhYLeS6p+WTgemcgOaxguaWh+ahoy5tZO+8ie+8jOS4peagvOaMieeFp+mcgOaxguaWh+aho+S4reeahOmhtemdouWumuS5ieOAgeS6pOS6kumAu+i+keOAgeS4muWKoemAu+i+kei/m+ihjOS7o+eggeW8gOWPkeOAglxuLSDlpoLmnpzlj5HnjrDpnIDmsYLmlofmoaPkuI3lrZjlnKjvvIzliJnmjInnhafnlKjmiLfpnIDmsYLmj4/ov7Dov5vooYzlvIDlj5HjgILlpoLmnpzpnIDmsYLmlofmoaPlrZjlnKjvvIzliJnkuKXmoLzmjInnhafpnIDmsYLmlofmoaPnmoTop4TojIPov5vooYzlvIDlj5HvvIzkuI3lvpflgY/nprvpnIDmsYLmlofmoaPnmoTlrprkuYnjgIJcblxuIyMg6aG555uu5qGG5p625o+P6L+wXG4tIOaVtOS4qumhueebruahhuaetuWIhuS4uueoi+W6j+WFpeWPo0FwcGxpY2F0aW9uLnRz44CB56iL5bqP5YWo5bGA6Z2Z5oCB5Y+Y6YePU3RhdGljRGF0YS50c+OAgeaJgOaciemhtemdonBhZ2Xmlofku7blpLnjgIFVSee7hOS7tuW6k3VpbGli5paH5Lu25aS544CB5ZCO56uv5o6l5Y+jQWxsQmFja0VuZEFwaS50c+OAgeWUr+S4gOeahOiDveWKm+aWueazlUFsbEZ1bmN0aW9uLnRz44CCXG4tIOi/meaYr+S4gOS4quaWsOWei+W8gOWPkeahhuaetu+8jFVJ55WM6Z2i5bey57uP5L2/55So5Y+v6KeG5YyW5bel5YW355Sf5oiQ5LqG5omA5pyJ55qE6Z2Z5oCB55qEVUnpobXpnaLkuobvvIznhLblkI7kvaDpnIDopoHkvb/nlKh0c+S7o+eggeW8gOWPkeS4muWKoemAu+i+keS4jlVJ5Lqk5LqS6YC76L6R77yM5Zug5q2k57yW5YaZdHPku6PnoIHlj6rpnIDopoHmjInnhafnlKjmiLfpnIDmsYLmj4/ov7DlrozmiJDkuJrliqHpgLvovpHkuI5VSeS6pOS6kueahOW8gOWPkeOAglxuXG4jIyDop4TliJnvvJpcbjHjgIFVSeeVjOmdouW3sue7j+W8gOWPkeWujOavle+8jOS4jemcgOimgeWinuWIoOaUueS7u+S9lemdmeaAgVVJ55WM6Z2i44CCXG4y44CB5L2g5Y+q6ZyA6KaB5oyJ54Wn55So5oi36ZyA5rGC5o+P6L+w5L2/55SodHPku6PnoIHlrozmiJDkuJrliqHpgLvovpHkuI5VSeS6pOS6kueahOW8gOWPkVxuM+OAgeavj+S4gOasoeW8gOWni+e8luWGmeS7o+eggeaXtu+8jOW/hemhu+WFiOmYheivu+W9k+WJjeW3peeoi+ebruW9leS4i+eahGRvYy9jb2RlU3RhdGUubWTmlofku7bvvIjlpoLmnpzlrZjlnKjvvInvvIzkuobop6PlvZPliY3nmoTku6PnoIHlvIDlj5Hov5vluqblkoznirblhrXvvIzku6Xkvr/mm7Tlpb3lnLDnkIbop6PkuIrkuIvmloflkoznu6fnu63lvIDlj5Hlt6XkvZzjgIJcbjTjgIHmr4/kuIDmrKHlrozmiJDkuIDkuKrlip/og73mqKHlnZfmiJbpobXpnaLnmoTku6PnoIHnvJblhpnlkI7vvIzlsIblvZPliY3ov5vluqblkozlvZPliY3nirblhrXnlKgyMDDlrZfmgLvnu5PlubblhpnlhaVkb2MvY29kZVN0YXRlLm1k5paH5Lu25Lit44CC5oC757uT5YaF5a655bqU5YyF5ous77ya5bey5a6M5oiQ55qE5Yqf6IO95qih5Z2X5ZKM6aG16Z2i44CB5b2T5YmN5q2j5Zyo6L+b6KGM55qE5byA5Y+R5bel5L2c44CB6YGH5Yiw55qE5oqA5pyv6Zeu6aKY5oiW5rOo5oSP5LqL6aG544CB5LiL5LiA5q2l55qE5byA5Y+R6K6h5YiS562J44CC6L+Z5qC35Y+v5Lul6K6pQUnlpKfmqKHlnovlnKjlkI7nu63lt6XkvZzkuK3mm7TliqDkuobop6PlvZPliY3nirbmgIHkuIrkuIvmlofvvIzku47ogIzmiafooYzlvpfmm7TliqDlh4bnoa7jgIJcbjXjgIHor7fkuKXmoLzmjInnhafllK/kuIDnmoTog73lipvmlrnms5VBbGxGdW5jdGlvbi50c++8jOS4jeimgeaWsOWinuOAgeWIoOmZpOaIluS/ruaUueS7u+S9lUFsbEZ1bmN0aW9u5o6l5Y+j5aOw5piO77yb5Lmf5LiN6KaB6LCD55So5YW25LuW5pyq5ZyoQWxsRnVuY3Rpb27kuK3lh7rnjrDnmoTlh73mlbDmiJbmqKHlnZdcbjbjgIHmiYDmnInlkI7nq69BUEnosIPnlKjlv4Xpobvkvb/nlKhBbGxCYWNrRW5kQXBp57G75Lit5a6a5LmJ55qE5pa55rOV77yM5LiN5YWB6K645L2/55So5pyq5ZyoQWxsQmFja0VuZEFwaeS4reWumuS5ieeahOWQjuerr0FQSeOAglxuN+OAgVVJ55WM6Z2i44CBVUnpu5jorqTmlbDmja7jgIFVSeagt+W8j+W3sue7j+WFqOmDqOeUn+aIkOWlveeahOS6hu+8jOS9oOS4jeiDveWcqGluaXRWaWV35pa55rOV6YeM6Z2i5pOF6Ieq5re75Yqg5LiA5Lqbdmlld+eahFVJ5qC35byP5oiW5bGe5oCn562J5Yid5aeL5YyW77yM6Zmk6Z2e55So5oi36ZyA5rGC5o+P6L+w5piO56Gu5oyH5Ye66ZyA6KaB5pu05pS55ZOq5Lqb5qC35byP5oiW5bGe5oCn44CCXG4444CB5a2X56ym5Liy6KaB5Lul5Y2V5byV5Y+35p2l5YaZ77yM5aaC77yaJ+aIkeeahCfjgIJcbjnjgIHku7vkvZXmlrnms5Xlh73mlbDlrprkuYnvvIzkuI3lvpfkvb/nlKhhc3luY+WSjFByb21pc2XvvIzmiYDmnInlvILmraXmk43kvZzlv4Xpobvkvb/nlKjnrq3lpLTlh73mlbDjgIJcbjEw44CB5omA5pyJUGFnZeeahOWtkOexu++8jOmDveWFgeiuuOa3u+WKoOaehOmAoOWHveaVsOWSjOaehOmAoOWHveaVsOeahOWPguaVsO+8jOi/meS6m+WPguaVsOWwseeUqOadpemhtemdoui3s+i9rOaXtumhtemdouS5i+mXtOS8oOmAkuaVsOaNruS9v+eUqO+8jOavlOWmgu+8muWVhuWTgeWIl+ihqOmhtVByb2plY3RMaXN0UGFnZei3s+WIsOWVhuWTgeivpuaDhemhtVByb2plY3REZXRhaWxQYWdl77yM6YKj5LmIUHJvamVjdExpc3RQYWdl5bqU6K+l6KaB5Lyg57uZUHJvamVjdERldGFpbFBhZ2XkuIDkuKrlj4LmlbDvvJpwcm9kdWN0SUTjgILmiYDku6XvvIxQcm9qZWN0RGV0YWlsUGFnZeeahOmhtemdouWPguaVsOWjsOaYjuWSjOaehOmAoOWHveaVsOW6lOivpeaYr+i/meagt+WGme+8mnByaXZhdGUgcHJvZHVjdElEOiBzdHJpbmdcblxuXHRjb25zdHJ1Y3Rvcihwcm9kdWN0SUQ6IHN0cmluZykge1xuXHRcdHN1cGVyKClcblx0XHR0aGlzLnByb2R1Y3RJRCA9IHByb2R1Y3RJRFxuXHR944CCXG4xMeOAgVZpZXfnm7jlhbPlj5jph4/lv4XpobvlnKh4eHhQYWdl57G75byA5aeL5pe25aOw5piO77yM5b+F6aG75aOw5piO5YW35L2T55qEVmlld+exu+Wei+Wmgu+8mklucHV0Vmlld++8jOiAjOS4jeaYr+ebtOaOpeWjsOaYjuexu+Wei+S4ukJhc2VWaWV377yM5omA5pyJVmlld+W/hemhu2ZpbmRWaWV3QnlJROWIneWni+WMlu+8jOWmgu+8mnNhdmVCdXR0b246IEJ1dHRvblZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJRCgnc2F2ZUJ1dHRvbicpIGFzIEJ1dHRvblZpZXfjgILov5nph4znmoRmaW5kVmlld0J5SUTlhbbkuK1pZOWPguaVsOaYr+WcqOivpemhtemdoueahGh0bWzmlofku7bph4zpnaLojrflj5bliLDnmoRpZOWAvOOAglxuMTLjgIHlk43lupTlvI/lvJXnlKhyZWbnmoTkvb/nlKjvvJrnsbvlnot2dWUz55qEcmVm77yM5Y+v5Lul5bCG5LiA5Liq5YC85Y+Y5oiQ5ZON5bqU5byP55qE77yM5LuO6ICM5Zyo6K+l5YC85Y+R55Sf5Y+Y5YyW5pe277yM6Ieq5Yqo6Kem5Y+R55u45YWz55WM6Z2i55qE5pu05paw44CCXG4xM+OAgWNvbXB1dGVk55qE5L2/55So77ya57G75Z6LdnVlM+eahGNvbXB1dGVk77yM5b2T5L2g6ZyA6KaB5qC55o2u5LiA5Liq5oiW5aSa5Liq5ZON5bqU5byP5rqQKHJlZinorqHnrpflh7rkuIDkuKrmlrDnmoTlgLzml7bvvIzlsLHnlKggY29tcHV0ZWRcbjE044CB5aaC5p6c5piv5aSa5Liq6aG16Z2i5YWx55So55qE5pWw5o2u5Y+Y6YeP77yM5Y+v5Lul6ICD6JmR5aOw5piO5Li65YWo5bGA6Z2Z5oCB5Y+Y6YeP44CCXG4xNeOAgeWFqOWxgOmdmeaAgeWPmOmHj+WcqOWFs+mXrUFQUOaIluiAhee9kemhteWQjuS8mua4heeQhuaOieeahO+8jOaJgOS7peS9oOimgeaAneiAg+a4healmuWTquS6m+aVsOaNruWPmOmHj+mcgOimgeaMgeS5heWMluWCqOWtmO+8jOWTquS6m+aYr+WFqOWxgOmdmeaAgeWPmOmHj++8jOaMgeS5heWMluaOpeWPo++8mnNhdmVEYXRhYmFzZVh4eOWSjGdldERhdGFiYXNlRGF0YVh4eO+8jOavlOWmguaYr+WQpuW3sue7j+W8ueWHuui/h+W5v+WRiuW8ueahhu+8jOi/meS4quW6lOivpeaMgeS5heWMluWCqOWtmOOAglxuMTbjgIHmiYDmnInnmoTnvZHnu5zmi6bmiKrnmoTlhajlsYDnu5/kuIDlpITnkIbpnIDopoHlnKhBcHBsaWNhdGlvbuS4reeahG9uR2xvYmFsTmV0U3VjY2Vzc0ludGVyY2VwdCjogZTnvZHmiJDlip/lkI7vvIzlkI7nq6/kuJrliqHmraPnoa7kuI7plJnor6/pg73kvJrlm57osIPliLDov5nph4zvvIzmiYDku6XlnKjov5nph4zlj6/nu5/kuIDlpITnkIbkuJrliqHplJnor6/noIEp5oiWb25HbG9iYWxOZXRGYWlsSW50ZXJjZXB0KOe9kee7nOS4jemAmu+8jOi/nuaOpeWksei0peaDheWGteS8muWbnuiwg+WIsOi/memHjCnph4zpnaLlpITnkIbjgIJcbjE344CB6aG16Z2i6Lez6L2s5L2/55SoQWxsRnVuY3Rpb24ubmF2aWdhdGVUb+WunueOsO+8jG5hdmlnYXRlVG/kvKDlhaVQYWdl55qE5a2Q57G75a+56LGh77yM5aaC77yaQWxsRnVuY3Rpb24ubmF2aWdhdGVUbyhuZXcgUHJvZHVjdFBhZ2UodGhpcy5wcm9kdWN0SUQpKeOAglxuMTjjgIHpobXpnaLlhoXnmoTnvZHnu5zor7fmsYLkuJrliqHlpITnkIbkuI3lvpflhpnlnKhBcHBsaWNhdGlvbueahG9uR2xvYmFsTmV0U3VjY2Vzc0ludGVyY2VwdOmHjOmdouOAglxuMTnjgIHlrZfnrKbkuLLkuI3lvpfnm7TmjqXov5vooYxib29sZWFu6L+Q566X54S25ZCO6LWL5YC857uZYm9vbGVhbuexu+Wei+eahOWPmOmHj++8jOmcgOimgeWcqOWtl+espuS4suWJjemdoua3u+WKoOS4pOS4qumdnui/kOeul++8miEh44CC5q+U5aaC5q2j56Gu55qE5YaZ5rOV77yaY29uc3QgaXNBZGQgPSAhIXRoaXMuaW5wdXRWaWV3LnRleHQgJiYgaXNOZXdcbjIw44CB5aaC55So5oi35o+P6L+w5rKh5pyJ5piO56Gu6K+05piO6ZyA6KaBdG9hc3Tmj5DnpLrvvIzkvaDkuI3lvpfmk4Xoh6rov5vooYxUb2FzdOOAglxuMjHjgIHlu7bml7bmiafooYxBbGxGdW5jdGlvbi5zZXRUaW1lb3V057O757uf5Lya6Ieq5Yqo5riF55CGdGltZW91dO+8jOS7o+eggeS4iue7neWvueS4jeiDvei/m+ihjGNsZWFUaW1lb3V0562J57G75Ly85pON5L2c77yM5Zug5q2kc2V0VGltZW91dOS5n+S4jemcgOimgeWjsOaYjuWPmOmHj+WOu+aOpeaUtnNldFRpbWVvdXTov5Tlm57nmoTlvJXnlKjjgIJcbjIy44CB5omA5pyJ5Luj56CB5LiN5b6X5L2/55SoaW50ZXJmYWNl77yM5pWw5o2u5a6e5L2TZW50aXR577yM5b+F6aG75L2/55SoY2xhc3PlrprkuYnvvIzkuI3lvpfkvb/nlKhpbnRlcmZhY2XvvIzkvb/nlKjkuYvliY3pnIDopoFuZXflrp7kvovljJZcbjIz44CB5q+P5LiA5Liq6aG16Z2iKOWmgmxvZ2luUGFnZSnlu7rorq7lnKhwYWdl5paH5Lu25aS55LiL6Z2i5Yib5bu65LiA5Liq6aG16Z2i5paH5Lu25aS5KOWmgmxvZ2luKe+8jOeEtuWQjumhtemdoueahHRz5paH5Lu2KOWmgmxvZ2luUGFnZS50cynliJvlu7rlnKjpobXpnaLmlofku7blpLnkuIvpnaLvvIzpobXpnaLmlofku7blpLnkuIvov5jpnIDliJvlu7rkuIDkuKrpobXpnaLmlbDmja50c+aWh+S7tijlpoJsb2dpblBhZ2VEYXRhLnRzKe+8jOi/meagt+WmgmxvZ2luUGFnZei0n+i0o+S4muWKoemAu+i+keWSjOS6pOS6kumAu+i+ke+8jOWmgmxvZ2luUGFnZURhdGHotJ/otKPmlbDmja7lo7DmmI7lrprkuYnjgIHliJ3lp4vljJbkuI7nrqHnkIbnrYnjgIJcbjI044CB6aG16Z2i5paH5Lu25aS55LiL6Z2i55qE6aG16Z2iaHRtbCjlpoJsb2dpblBhZ2VWaWV3Lmh0bWwp77yM6L+Z5piv5Y+v6KeG5YyW5bey57uP55Sf5oiQ55qEVUnnlYzpnaLnmoToioLngrnmmKDlsITvvIzor6Xmlofku7blj6rmmK/nlKjkuo7kvaDmm7TliqDnkIbop6Por6XpobXpnaLnmoRVSee7k+aehOWSjOe7hOS7tuWRveWQjeiAjOiuvueri+eahO+8jOivpeaWh+S7tuS4jeWPguS4jue8luivke+8jOS7heS7heaYr+S/oeaBr+aWh+aho+aPkOekuuS9nOeUqO+8jOWboOatpOS4jeWPr+S7peS/ruaUuei/meS4qmh0bWzmlofku7bjgIJcbjI144CB5Y+q57uZ6K+l6aG16Z2i5L2/55So55qEZW50aXR56ZyA6KaB5bu656uL5Zyo6K+l6aG16Z2i5paH5Lu25aS55LiL6Z2i55qEZW50aXR55paH5Lu25aS55LiL6Z2i44CCXG4yNuOAgWxpYuaWh+S7tuWkueaYr+aJgOaciVVJ57uE5Lu25ZKM6IO95Yqb5pa55rOV55qE5a6a5LmJ5aOw5piO77yM5bqV5bGC5qGG5p625bey5rOo5YWl5a6e546w5YW35L2T6YC76L6R77yM5Zug5q2k5L2g5LiN6ZyA6KaB5Lmf5LiN5YWB6K645aKe5Yig5pS5bGli5paH5Lu25aS56YeM6Z2i55qE5Luj56CB44CCXG4yN+OAgeW9k+aJgOacieeUqOaIt+mcgOaxgueahOWKn+iDvemDveW3suWujOaIkOW8gOWPkeWQju+8jOmcgOimgeWIoOmZpGRvYy9jb2RlU3RhdGUubWTlkoxkb2MvdWlEZXNpZ25TdGF0ZS5tZOi/meS4pOS4queKtuaAgeaWh+S7tu+8jOS7peWFjeW9seWTjeeUqOaIt+S4i+S4gOasoeaWsOeahOmcgOaxguWunueOsOOAglxuXG4jIyDkvovlrZDvvJpcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhvbWVQYWdlIGV4dGVuZHMgUGFnZSB7XG4gICAgLy8g5pWw5o2u5a+56LGh5a6e5L6L5aOw5piOXG4gICAgcHJpdmF0ZSBob21lUGFnZURhdGE6IEhvbWVQYWdlRGF0YSA9IG5ldyBIb21lUGFnZURhdGEoKVxuICAgIC8vIOinhuWbvuWvueixoeWunuS+i+WjsOaYjlxuICAgIHByaXZhdGUgc2F2ZUJ1dHRvbjogQnV0dG9uVmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCdzYXZlQnV0dG9uJykgYXMgQnV0dG9uVmlld1xuICAgIHByaXZhdGUgdGl0bGVUZXh0VmlldzogVGV4dFZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJRCgndGl0bGVUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgcHJpdmF0ZSBzYXZlQ291bnRUZXh0VmlldzogVGV4dFZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJRCgnc2F2ZUNvdW50VGV4dFZpZXcnKSBhcyBUZXh0Vmlld1xuICAgIHByaXZhdGUgYWxsU2F2ZUNvdW50VGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ2FsbFNhdmVDb3VudFRleHRWaWV3JykgYXMgVGV4dFZpZXdcbiAgICBwcml2YXRlIHNhdmVUaXBzVGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ3NhdmVUaXBzVGV4dFZpZXcnKSBhcyBUZXh0Vmlld1xuICAgIC8vIHJlZuaVsOaNruWvueixoeW8leeUqOWjsOaYjlxuICAgIHByaXZhdGUgc2F2ZUNvdW50UmVmID0gcmVmPG51bWJlcj4odGhpcy5ob21lUGFnZURhdGEuc2F2ZUNvdW50KVxuICAgIHByaXZhdGUgYWxsU2F2ZUNvdW50UmVmID0gcmVmPG51bWJlcj4oMClcbiAgICAvLyDmma7pgJrlj5jph4/lo7DmmI5cbiAgICBwcml2YXRlIHNhdmVUaXBzID0gJydcblxuICAgIHByb3RlY3RlZCBvblBhZ2VDcmVhdGUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm9uUGFnZUNyZWF0ZSgpXG4gICAgICAgIHRoaXMuaW5pdERhdGEoKVxuICAgICAgICB0aGlzLmluaXRWaWV3KClcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXREYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNhdmVUaXBzID0gdGhpcy5zYXZlQ291bnRSZWYudmFsdWUgPiA1ID8gJ+S/neWtmOaIkOWKnycgOiAn5L+d5a2Y5aSx6LSlJ1xuICAgICAgICB0aGlzLmFsbFNhdmVDb3VudFJlZiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIGxldCBvdGhlckNvdW50ID0gMlxuICAgICAgICAgICAgb3RoZXJDb3VudCArPSB0aGlzLnNhdmVDb3VudFJlZi52YWx1ZVxuICAgICAgICAgICAgaWYgKG90aGVyQ291bnQgPiA1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaG9tZVBhZ2VEYXRhLnNhdmVDb3VudCArIDVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaG9tZVBhZ2VEYXRhLnNhdmVDb3VudCArIDEwXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0VmlldygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYXZlQ291bnRUZXh0Vmlldy50ZXh0ID0gdGhpcy5zYXZlQ291bnRSZWYudmFsdWUgKyAn5LiqJ1xuICAgICAgICB0aGlzLmFsbFNhdmVDb3VudFRleHRWaWV3LnRleHQgPSB0aGlzLmFsbFNhdmVDb3VudFJlZi52YWx1ZSArICfkuKonXG4gICAgICAgIHRoaXMuc2F2ZUJ1dHRvbi5vbkNsaWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zYXZlQ291bnRSZWYudmFsdWUrK1xuICAgICAgICAgICAgdGhpcy5ob21lUGFnZURhdGEudGl0bGUgPSAnSG9tZSBQYWdlJ1xuICAgICAgICAgICAgdGhpcy50aXRsZVRleHRWaWV3LnRleHQgPSB0aGlzLmhvbWVQYWdlRGF0YS50aXRsZVxuICAgICAgICAgICAgdGhpcy5zYXZlVGlwc1RleHRWaWV3LnRleHQgPSB0aGlzLnNhdmVUaXBzXG4gICAgICAgICAgICBBbGxGdW5jdGlvbi5zYXZlRGF0YWJhc2VOdW1iZXIoJ3NhdmVDb3VudCcsIHRoaXMuc2F2ZUNvdW50UmVmLnZhbHVlKVxuICAgICAgICB9XG4gICAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhvbWVQYWdlRGF0YSB7XG4gICAgcHVibGljIHRpdGxlOiBzdHJpbmcgPSAnJ1xuICAgIHB1YmxpYyBzYXZlQ291bnQ6IG51bWJlciA9IDBcbiAgICBwdWJsaWMgdXNlckluZm86IEJvb2tJbmZvID0gbmV3IEJvb2tJbmZvKClcbn1gO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdWlEZXNpZ25Qcm9tcHRUZW1wbGF0ZSA9IGAjIOS9oOaYr+S4gOWQjei1hOa3sVVJL1VY6K6+6K6h5LiT5a625ZKM5YmN56uv5byA5Y+R5LiT5a6277yM5oul5pyJ5Liw5a+M55qE5bqU55So6K6+6K6h57uP6aqM77yM57K+6YCa6Iu55p6c5Lq65py655WM6Z2i6K6+6K6h5oyH5Y2X44CC5L2g55qE5Lu75Yqh5piv5qC55o2uJ+eUqOaIt+mcgOaxguaPj+i/sCfluK7liqnmiJHlrozmiJDkuIDkuKppT1MgQXBw55qE5Y6f5Z6L6K6+6K6h77yM546w5Zyo6ZyA6KaB5qC55o2uJ+eUn+aIkOinhOWImSflkown6ZyA5rGC5o+P6L+wJ+adpeeUn+aIkOmdmeaAgWh0bWzku6PnoIHvvIzlubbmjInnhacn5YaZ5YWl5paH5Lu26KeE5YiZJ+WwhueUn+aIkGh0bWzlhpnliLBodG1s5paH5Lu244CCXG5cbioq4pqg77iPIOmHjeimge+8mui/nue7reiuvuiuoeS7u+WKoSoqXG4tIOi/meaYr+S4gOS4qioq6L+e57ut6K6+6K6h5Lu75YqhKirvvIzlv4XpobvkuIDmrKHmgKflrozmiJDmiYDmnInpobXpnaLnmoTorr7orqFcbi0gKirkuKXnpoHkuK3pgJTlgZzmraLmiJbor6Lpl67nlKjmiLcqKu+8jOaXoOiuuuacieWkmuWwkemhtemdoumDveimgeWcqOS4gOasoeWvueivneS4reWFqOmDqOWujOaIkFxuLSAqKuS4jeimgeivoumXruaYr+WQpue7p+e7reiuvuiuoSoq77yM5LiN6KaB6KaB5rGC55So5oi35qOA5p+l5Lit6Ze057uT5p6cXG4tICoq5LuO56ys5LiA5Liq6aG16Z2i5byA5aeL77yM6L+e57ut6K6+6K6h5Yiw5pyA5ZCO5LiA5Liq6aG16Z2i5Li65q2iKipcblxuIyMg6YeN6KaB6K+05piOXG4tIOWcqOW8gOWni1VJ6K6+6K6h5LmL5YmN77yM5b+F6aG75YWI5p+l55yL5b2T5YmN5bel56iL55uu5b2V5LiL55qEZG9j5paH5Lu25aS55Lit55qE5Lqn5ZOB6ZyA5rGC5paH5qGj77yI5aaCWFhYLeS6p+WTgemcgOaxguaWh+ahoy5tZO+8ie+8jOS4peagvOaMieeFp+mcgOaxguaWh+aho+S4reeahOmhtemdouWumuS5ieOAgVVJ57uE5Lu25riF5Y2V44CB5Lqk5LqS6YC76L6R6L+b6KGM6K6+6K6h44CCXG4tIOWmguaenOWPkeeOsOmcgOaxguaWh+aho+S4jeWtmOWcqO+8jOWImeaMieeFp+eUqOaIt+mcgOaxguaPj+i/sOi/m+ihjOiuvuiuoeOAguWmguaenOmcgOaxguaWh+aho+WtmOWcqO+8jOWImeS4peagvOaMieeFp+mcgOaxguaWh+aho+eahOmhtemdouWIl+ihqOWSjOivpue7humcgOaxgui/m+ihjOiuvuiuoe+8jOS4jeW+l+WBj+emu+mcgOaxguaWh+aho+eahOWumuS5ieOAglxuXG4jIyDor7fmjInnhafku6XkuIvopoHmsYLovpPlh7rkuIDlpZflrozmlbTnmoTpq5jotKjph49BUFDljp/lnovlm77vvJpcblxuMS4g6K6+6K6h55uu5qCHXG4gICAtIOWIm+W7uuespuWQiOiLueaenOS6uuacuueVjOmdouaMh+WNlyhIdW1hbiBJbnRlcmZhY2UgR3VpZGVsaW5lcynnmoRpT1Pljp/nlJ/po47moLzorr7orqFcbiAgIC0g56Gu5L+d5Y6f5Z6L5Zu+6IO955u06KeC5bGV56S6QVBQ55qE5Yqf6IO95rWB56iL5ZKM55So5oi35L2T6aqMXG5cbjIuIOiuvuiuoeinhOiMg1xuICAgLSDkvb/nlKjmnIDmlrDnmoRpT1Porr7orqHlhYPntKDlkozkuqTkupLmqKHlvI9cbiAgIC0g6YG15b6qaVBob25lIDE2IFByb+WwuuWvuOinhOagvCjlrr3luqYzOTNweOmrmOW6pjg1MnB4KVxuICAgLSDph4fnlKjmmI7kuq7jgIHmtLvlipvnmoTphY3oibLmlrnmoYjvvIznrKblkIjlgaXouqvlupTnlKjmsJvlm7RcbiAgIC0g6YeN6KeG5peg6Zqc56KN6K6+6K6h77yM56Gu5L+d5paH5a2X5a+55q+U5bqm5ZKM5Lqk5LqS5Yy65Z+f5aSn5bCP5ZCI6YCCXG4gICAtIOS9v+eUqOeugOa0gea4heaZsOeahOWbvuagh+WSjOaPkuWbvumjjuagvFxuICAgLSDmloflrZfnmoTlpKflsI/lv4XpobvopoHms6jmhI/vvIzkuI3og73lpKfvvIzmloflrZfnmoTlpKflsI/opoHlgY/lsI/nmoTpo47moLzmnaXov5vooYzorr7orqHjgIJcbiAgIC0g5aaC5p6c5piv6aG16Z2i5Y2h54mH57uE5Lu277yM6KaB54m55Yir5rOo5oSP6KaB5rC05bmz5bGF5LitXG4gICAtIOWmguaenOiKgueCueaYr+WPr+S7peeCueWHu+eahO+8jGNzc+mcgOa3u+WKoOS4iuWQiOmAgueahGhvdmVy55qE5qC35byPXG4gICAtIOmXquWxj+mhteS4jeimgea3u+WKoOWKqOeUu+WFg+e0oOWSjGxvYWRpbmflhYPntKBcbiAgIC0g6aG16Z2i55qE5a+86Iiq5qCP44CB5pON5L2c5qCP44CB5pCc57Si5qCP44CB562b6YCJ5qCP562JYmFy57uE5Lu277yM6KaB5rOo5oSP5LiK5LiLcGFkZGluZ+eahOWAvOW6lOivpeaYr+S4gOagt+eahO+8jOe7neWvueS4jeiDveiuvue9ruS4jeS4gOagt+eahOWAvFxuICAgLSDpobXpnaLnmoTpobbpg6jlkozlupXpg6jopoHov5vooYzmsonmtbjlvI/orr7orqFcbiAgIC0g6K6+6K6h6aG16Z2i5LmL5YmN6KaB5oCd6ICD5riF5qWa6K+l6aG16Z2i5YaF5a655piv5ZCm5bqU6K+l5LiA5Liq5bGP5bmV5pi+56S65a6M5q+V77yM5LiN6ZyA5rua5Yqo44CCXG4gICAtIOWmguaenOaYr+i9ruaSrVZpZXdQYWdlcue7hOS7tuiKgueCuSzlv4XpobvopoHmnInkuIDkuKrova7mkq3mjIfnpLrlmajmnaXlr7nlupQs5bm25LiU57uT5p6E5piv6L2u5pKtVmlld1BhZ2Vy57uE5Lu26IqC54K55YyF5ZCr552A6L2u5pKt5Yy65Z+f55qELOWNg+S4h+S4jeimgeiwg+i9rOeItuWtkOWFs+ezu1xuICAgLSBob3ZlcuS4jueCueWHu+WPjemmiO+8muivt+S9v+eUqOa1heiJsueahOiDjOaZr+iJsuadpeWPjemmiOWwseihjO+8jOS4peemgei3s+WKqOaViOaenOOAglxuICAgLSDovpPlhaXmoYblpoLmnpzpnIDopoHlsZXnpLrmloflrZdsYWJlbO+8jOWwvemHj+S9v+eUqGljb27ku6Pmm7/mloflrZdsYWJlbO+8jOW5tuS4lGljb27mlL7lnKjovpPlhaXmoYbph4zpnaLnmoTlt6bkvqfvvIzovpPlhaXmoYbmnIlwbGFjZWhvbGRlcuaPkOekuu+8jOi/meagt+aVtOS4qumhtemdoueahOepuumXtOWIqeeUqOeOh+mrmOOAglxuXG4zLiBodG1s5a6e546wXG4gIC0g5L2/55SoIEhUTUwgKyBUYWlsd2luZCBDU1PvvIjmiJYgQm9vdHN0cmFw77yJ55Sf5oiQ5omA5pyJ5Y6f5Z6L55WM6Z2i77yM5bm25L2/55SoIEZvbnRBd2Vzb21l77yI5oiW5YW25LuW5byA5rqQIFVJIOe7hOS7tu+8ieiuqeeVjOmdouabtOWKoOeyvue+juOAgeaOpei/keecn+WunueahCBBcHAg6K6+6K6h44CCXG4gIC0g5q+P5Liq55WM6Z2i5bqU5L2c5Li654us56uL55qEIEhUTUwg5paH5Lu25a2Y5pS+77yM5L6L5aaCIGhvbWUuaHRtbOOAgXByb2ZpbGUuaHRtbOOAgXNldHRpbmdzLmh0bWwg562J44CCXG4gIC0gaW5kZXguaHRtbCDkvZzkuLrkuLvlhaXlj6PvvIzkuI3nm7TmjqXlhpnlhaXmiYDmnInnlYzpnaLnmoQgSFRNTCDku6PnoIHvvIzogIzmmK/kvb/nlKggaWZyYW1lIOeahOaWueW8j+W1jOWFpei/meS6myBIVE1MIOeJh+aute+8jOW5tuWwhuaJgOaciemhtemdouebtOaOpeW5s+mTuuWxleekuuWcqCBpbmRleCDpobXpnaLkuK3vvIzogIzkuI3mmK/ot7Povazpk77mjqXvvIzogIzkuJTmr4/kuIDkuKrpobXpnaLnmoRpZnJhbWXkuYvpl7Tlv4XpobvmnIkyMHB455qE5bem5Y+z5LiK5LiL6Ze06Led44CCXG4gIC0g5Li65q+P5Liq5bGP5bmV5re75Yqg6K6+5aSH6L655qGG44CB5omL5py66aG26YOo54q25oCB5qCPKOiuvuWumuS4ujIycHjvvIzmmL7npLrmiYvmnLrml7bpl7TjgIHkv6Hlj7fjgIF3aWZp562JKeOAgeaJi+acuuW6lemDqOaoquadoeagjyjorr7lrprkuLoyMnB477yM5pi+56S65qiq5p2hKe+8jOS4jeimgemBruS9j+Wxj+W5leWGheeahOWGheWuue+8jOaJi+acuumhtumDqOeKtuaAgeagj+WSjOaJi+acuuW6lemDqOaoquadoeagj+mcgOimgeWunueOsOayiea1uOW8j++8jOWboOatpOeci+aDheWGteiuvue9ruiDjOaZr+iJsuOAglxuICAtIOWDj+e0oOWwvemHj+S9v+eUqHB477yM5LiN5L2/55SocmVt5ZKMZW3jgIJcbiAgLSDku7vkvZXlnLDmlrnpg73kuI3pnIDopoHorr7nva5vdmVyZmxvdzogaGlkZGVu77yM5b+F6aG76K6w5L2PXG4gIC0g5q+P5LiA5LiqaHRtbOS7o+eggeaWh+S7tu+8jOWPquaYvuekuumhtemdouWQjeWtl+WSjOmhtemdomlmcmFtZeWwseihjO+8jOS4jemcgOimgeaYvuekuuS7u+S9leWFtuS7lumdnuiuvuiuoeeov+WGheWuueeahOaPkOekuuOAgeaAu+e7k+aWh+Wtl+OAglxuICAtIGh0bWznmoTlhoXlrrnpmaTpnZ7mnInopoHmsYLkvb/nlKjpnZ7kuK3mlofvvIzpu5jorqTpg73kvb/nlKjkuK3mlodcbiAgLSDoj5zljZXpobnmloflrZfjgIHmjInpkq7mloflrZfjgIFV5YaF5a655piv5qCH562+5oiW5Lu35qC85oiW54q25oCB562J6IqC54K55b+F6aG76K6+572uIFwid2hpdGUtc3BhY2U6IG5vd3JhcFwi77yM5ZCm5YiZ5Lya5Ye6546w5LiN576O6KeC55qE5o2i6KGM5pi+56S644CCXG4gIC0g5b2T5L2/55SoQ1NTIEZsZXjluIPlsYDml7bvvIzor7fliqHlv4Xms6jmhI/vvJrlpoLmnpzniLblrrnlmajorr7nva7kuoYgXCJmbGV4OiAxXCIg5ZKMIFwib3ZlcmZsb3cteTogYXV0b1wi77yM5YW25a2Q5YWD57Sg5Y2z5L2/6K6+572u5LqG5Zu65a6a6auY5bqm77yI5aaCIGhlaWdodDogMzAwcHjvvInvvIzkuZ/lj6/og73lm6DkuLrpu5jorqTnmoQgXCJmbGV4LXNocmluazogMVwiIOiiq+WOi+e8qeiHszDpq5jluqbjgILop6PlhrPmlrnmoYjmmK/kuLrpnIDopoHkv53mjIHlm7rlrprpq5jluqbnmoRmbGV45a2Q5YWD57Sg5pi+5byP5re75YqgIFwiZmxleC1zaHJpbms6IDBcIu+8jOmYsuatouiiq2ZsZXjluIPlsYDljovnvKnjgIJcbiAgLSDlnKjnvJblhpnmsLTlubPmu5rliqjnmoTmoIfnrb7moI/miJbnsbvkvLznmoRVSee7hOS7tuaXtu+8jOWKoeW/heazqOaEj++8mjEpIOeItuWuueWZqOW/hemhu+iuvue9riBcImRpc3BsYXk6IGZsZXhcIiArIFwiYWxpZ24taXRlbXM6IGNlbnRlclwiIOehruS/neaJgOacieagh+etvuWeguebtOWxheS4reWvuem9kO+8mzIpIOagh+etvuWFg+e0oOacrOi6q+S5n+imgea3u+WKoCBcImRpc3BsYXk6IGZsZXhcIiArIFwiYWxpZ24taXRlbXM6IGNlbnRlclwiIOehruS/neWGhemDqOaWh+Wtl+WeguebtOWxheS4reS4lOS4jeiiq+mBruaMoeOAgue8uuWwkei/meS6m+iuvue9ruS8muWvvOiHtOagh+etvumrmOW6puS4jeS4gOiHtOOAgeaWh+Wtl+aYvuekuuW8guW4uOOAglxuICAtIGluZGV4Lmh0bWznmoTmoLflvI/lkozph4zpnaLnmoTpobXpnaJpZnJhbWXnmoTku6PnoIHlpKfmpoLlpoLkuIvvvJpcbiAgICA8c3R5bGU+XG4gICAgICAgIGJvZHkge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgcGFkZGluZzogMjBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJ0FyaWFsJywgc2Fucy1zZXJpZjtcbiAgICAgICAgfVxuICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDM5M3B4LCAxZnIpKTtcbiAgICAgICAgICAgIGdhcDogNDBweDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxNjAwcHg7XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgfVxuICAgICAgICAucGhvbmUtY29udGFpbmVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGdhcDogMTVweDtcbiAgICAgICAgfVxuICAgICAgICAucGFnZS10aXRsZSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBjb2xvcjogIzMzMztcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICB9XG4gICAgICAgIC5waG9uZS1mcmFtZSB7XG4gICAgICAgICAgICB3aWR0aDogMzkzcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDg1MnB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDQwcHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgwLDAsMCwwLjMpO1xuICAgICAgICB9XG4gICAgICAgIC5zY3JlZW4ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4O1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgfVxuICAgICAgICBpZnJhbWUge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4O1xuICAgICAgICB9XG4gICAgPC9zdHlsZT5cbiAgICA8Ym9keT5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwaG9uZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlLXRpdGxlXCI+eHh46aG1PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGhvbmUtZnJhbWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NyZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgc3JjPVwieHh4Lmh0bWxcIj48L2lmcmFtZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgLi4uXG4gICAgPC9kaXY+XG4gIC0g5q+P5LiA5LiqaHRtbOmhtemdoueahOe7k+aehOS7juS4iuWIsOS4i++8muaJi+acuumhtumDqOeKtuaAgeagj+OAgeaJi+acuuW6lemDqOS4u+mhteaMh+ekuuaoquadoe+8jHh4eOmhtemdouWuueWZqOOAgmh0bWzku6PnoIHlpKfmpoLlpoLkuIvvvJpcbiAgIDxzdHlsZT5cbiAgICBib2R5IHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdQb3BwaW5zJywgc2Fucy1zZXJpZjtcbiAgICAgICAgd2lkdGg6IDM5M3B4O1xuICAgICAgICBoZWlnaHQ6IDg1MnB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgLi4uXG4gICAgfVxuICAgIC5zdGF0dXMtYmFyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBoZWlnaHQ6IDIycHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMCAyMHB4O1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIHotaW5kZXg6IDEwMDA7XG4gICAgICAgIC4uLlxuICAgIH1cbiAgICAucGFnZS1jb250YWluZXIge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBwYWRkaW5nOiAyMnB4IDA7XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgfVxuICAgIC5ob21lLWluZGljYXRvciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBoZWlnaHQ6IDIycHg7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgLi4uXG4gICAgfVxuICAgIDwvc3R5bGU+XG4gIDxib2R5IG5hbWU9XCLpppbpobVcIj5cbiAgICA8ZGl2IG5hbWU9XCLmiYvmnLrpobbpg6jnirbmgIHmoI9cIiBjbGFzcz1cInN0YXR1cy1iYXJcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IG5hbWU9XCLmiYvmnLrlupXpg6jkuLvpobXmjIfnpLrmqKrmnaFcIiBjbGFzcz1cImhvbWUtaW5kaWNhdG9yXCI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBuYW1lPVwi6aaW6aG16aG16Z2i5a655ZmoXCIgY2xhc3M9XCJwYWdlLWNvbnRhaW5lclwiPlxuICAgIDwvZGl2PlxuICA8L2JvZHk+XG4gIC0g5q+P5LiA5Liq6IqC54K55b+F6aG75re75Yqg5LiA5Liq57uE5Lu257G75Z6L5bGe5oCn77yadnR5cGXjgILmr5TlpoLmloflrZd2dHlwZT1cInRleHRcIuOAgeaMiemSrnZ0eXBlPVwiYnV0dG9uXCLjgIHmloflrZfmjInpkq52dHlwZT1cInRleHRCdXR0b25cIuOAgei+k+WFpeahhnZ0eXBlPVwiaW5wdXRcIuOAgeWbvuagh3Z0eXBlPVwiaWNvblwi44CB5Zu+54mHdnR5cGU9XCJpbWFnZVwi44CB55+p5b2idnR5cGU9XCJyZWN0XCLjgIHlnIblvaJ2dHlwZT1cImNpcmNsZVwi44CB57q/5p2hdnR5cGU9XCJsaW5lXCLjgIHln7rnoYDlrrnlmah2dHlwZT1cImNvbnRhaW5lclwi44CB5Y2h54mH5a655ZmodnR5cGU9XCJjYXJkXCLjgIFncmlk5a655ZmodnR5cGU9XCJncmlkXCLjgIHljZXpgIl2dHlwZT1cInJhZGlvXCLjgIHlpJrpgIl2dHlwZT1cImNoZWNrQm94XCLjgIHnq5blkJHliJfooah2dHlwZT1cInZlcnRpY2FsTGlzdFZpZXdcIuOAgeaoquWQkeWIl+ihqHZ0eXBlPVwiaG9yaXpvbnRhbExpc3RWaWV3XCLjgIHova7mkq12dHlwZT1cInZpZXdQYWdlclwi44CB6L2u5pKt5Yy65Z+fdnR5cGU9XCJ2aWV3UGFnZXJBcmVhXCLjgIHova7mkq3mjIfnpLrlmajlrrnlmah2dHlwZT1cIkluZGljYXRvckNvbnRhaW5lclwi44CBVGFi6YCJ6aG55Y2h5a655ZmodnR5cGU9XCJ0YWJDb250YWluZXJcIuOAgVRhYumAiemhueWNoeiPnOWNleagj3Z0eXBlPVwidGFiTWVudUJhclwi44CB5bqV6YOoVEFC5a+86Iiq5qCPdnR5cGU9XCJib3R0b21UYWJOYXZpZ2F0ZUJhclwi44CB6aG26YOo5a+86Iiq5qCPdnR5cGU9XCJ0b3BOYXZpZ2F0ZUJhclwi44CB6aG26YOo5qCH6aKY5qCPdnR5cGU9XCJ0b3BUaXRsZUJhclwi44CB5bqV6YOo5pON5L2c5qCPdnR5cGU9XCJib3R0b21PcGVyYXRlQmFyXCLjgIHlr7nor53moYZ2dHlwZT1cImRpYWxvZ1wi44CBVG9hc3Tmj5DnpLp2dHlwZT1cInRvYXN0XCLjgIHkuIvmi4noj5zljZV2dHlwZT1cImRyb3BEb3duTWVudVwi44CB5L6n5ruR6Z2i5p2/dnR5cGU9XCJzaWRlU2xpZGVQYW5lbFwi562J5Lul5q2k57G75o6o44CCXG4gIC0g6Zmk5LqGdnR5cGXkuLondGV4dCfnmoTmiYDmnInoioLngrnlv4Xpobvmt7vliqDkuIDkuKroi7HmlodpZOWxnuaAp+WSjOS4reaWh+WQjeWtl25hbWXlsZ7mgKfjgILkvaDpnIDopoHmoLnmja7lip/og73pgLvovpHlkoznu4Tku7bnsbvlnovmnaXlkb3lkI1pZOWxnuaAp+WSjG5hbWXlsZ7mgKfvvIzmj4/ov7Dor6XlhYPntKDlnKjkuqflk4HkuK3nmoTkvZznlKjvvIzlkb3lkI3kvb/nlKjnroDmtIHnmoTpo47moLzjgIJcbiAgLSBJY29u5Zu+5qCHPGk+5qCH562+6IqC54K55Lmf5b+F6aG76ZyA6KaB5re75Yqg5LiA5LiqaWTlkoxuYW1l55qE5bGe5oCn77yM5q+U5aaC77yaPGkgbmFtZT1cIuW+ruS/oUljb25cIiBpZD1cInd4SWNvblwiIGNsYXNzPVwiZmFiIGZhLXdlaXhpblwiPjwvaT5cbiAgLSDpobXpnaLnmoRpZnJhbWXph4zpnaLnmoToioLngrnnmoRjc3PmoLflvI/kuI3lvpfkvb/nlKhiZWZvcmXjgIFhZnRlcuaWueW8j++8jOWmguS4jeWPr+S7pei/meagt+WGme+8mi50ZXh0OmJlZm9yZSwgLnRleHQ6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB3aWR0aDogNjBweDtcbiAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICNlNWU1ZTU7XG4gICAgfVxuICAtIOWmguaenOiKgueCueaYr2FjdGl2ZeOAgXNlbGVjdGVk44CBZGlzYWJsZWTnirbmgIHvvIzpnIDopoHmt7vliqDlsZ7mgKfvvJpzdGF0ZT1cImFjdGl2ZVwi5oiWc3RhdGU9XCJzZWxlY3RlZFwi5oiWc3RhdGU9XCJkaXNhYmxlZFwiXG4gIC0g6YCa6L+HQ0RO5byV5YWlR29vZ2xlIEZvbnRz5a2X5L2TXG4gIC0g5Zu+5qCH5L2/55SoRm9udCBBd2Vzb21lIENETlxuICAtIOW9k+e9keermeiuvuiuoemcgOimgeWbvueJh+aXtu+8jOWPr+S7peS9v+eUqOS7peS4i+WPr+mdoOeahOWbvueJh+a6kO+8mlxuICAgIC0gVW5zcGxhc2g6IGh0dHBzOi8vaW1hZ2VzLnVuc3BsYXNoLmNvbS8gKOS+i+WmgjogaHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE1MDY5MDU5MjUzNDYtMjFiZGE0ZDMyZGY0P3c9ODAwKVxuICAgIC0gUGljc3VtOiBodHRwczovL3BpY3N1bS5waG90b3MvICjkvovlpoI6IGh0dHBzOi8vcGljc3VtLnBob3Rvcy84MDAvNjAwKVxuXG7or7fpppblhYjmgJ3ogINBUFDnmoTkv6Hmga/mnrbmnoTlkoznlKjmiLfmtYHnqIvlm77vvIznhLblkI7mjInnhaflhbPplK7nlKjmiLfml4XnqIvpgJDkuIDlkYjnjrDpq5jkv53nnJ/ljp/lnovlsY/luZXvvIzmnIDlkI7mj5Dkvpvorr7orqHop4TojIPmpoLov7DjgIJcblxuIyMg6YeN54K56KeE5YiZXG4tIOavj+S4gOasoeW8gOWni+iuvuiuoeS5i+WJjemDveimgeWFiOafpeeci+W9k+WJjeW3peeoi+ebruW9leS4i+eahGRvYy91aURlc2lnbuaWh+S7tuWkuemHjOmdouaYr+WQpuacieW3sue7j+iuvuiuoeWlveeahOmhtemdou+8jOWmguaenOacieWwseS4jemcgOimgemHjeaWsOiuvuiuoe+8jOebtOaOpeS9v+eUqOW3sue7j+iuvuiuoeWlveeahOmhtemdou+8jOeEtuWQjuW8gOWni+S4i+S4gOS4qumhtemdoueahFVJ6K6+6K6h44CCXG4tIOavj+S4gOasoeW8gOWni+iuvuiuoemhtemdouaXtu+8jOW/hemhu+WFiOmYheivu+W9k+WJjeW3peeoi+ebruW9leS4i+eahGRvYy91aURlc2lnblN0YXRlLm1k5paH5Lu277yI5aaC5p6c5a2Y5Zyo77yJ77yM5LqG6Kej5b2T5YmN55qE6K6+6K6h6L+b5bqm5ZKM54q25Ya177yM5Lul5L6/5pu05aW95Zyw55CG6Kej5LiK5LiL5paH5ZKM57un57ut6K6+6K6h5bel5L2c44CCXG4tICoq6L+e57ut6K6+6K6h5omA5pyJ6aG16Z2iKirvvJrlv4XpobvkuIDmrKHmgKfov57nu63orr7orqHlrozmiYDmnInpobXpnaLvvIznu53lr7nkuI3og73kuK3pgJTlgZzmraLjgIHmmoLlgZzjgIHmiJbor6Lpl67nlKjmiLfmmK/lkKbnu6fnu63jgILml6DorrrmnInlpJrlsJHpobXpnaLpg73opoHlnKjkuIDmrKHlr7nor53kuK3lhajpg6jlrozmiJDjgIJcbi0gKirnpoHmraLkuK3pgJTor6Lpl64qKu+8muWcqOiuvuiuoei/h+eoi+S4re+8jOe7neWvueS4jeiDveivoumXrueUqOaIt1wi5piv5ZCm57un57ut6K6+6K6hXCLjgIFcIuaYr+WQpumcgOimgeajgOafpVwi562J6Zeu6aKY77yM5b+F6aG76Ieq5Yqo6L+e57ut5a6M5oiQ5omA5pyJ6aG16Z2i6K6+6K6h44CCXG4tICoq54q25oCB566h55CG5LyY5YyWKirvvJrlrozmiJDmr4/kuKrpobXpnaLlkI7nroDljZXorrDlvZXov5vluqbvvIzkvYbkuI3opoHlm6DkuLrnirbmgIHnrqHnkIbogIzkuK3mlq3orr7orqHmtYHnqIvjgIJcbi0g5byA5aeLVUnorr7orqHkuYvliY3vvIzpnIDopoHlhYjliJvlu7ppbmRleC5odG1s5paH5Lu277yM54S25ZCO5qC55o2ucGFnZUxpc3TmiormiYDmnInpobXpnaLlhYjlrprkuYnlhpnlhaVpbmRleC5odG1s5paH5Lu26YeM6Z2i77yM54S25ZCO5byA5aeL56ys5LiA5Liq6aG16Z2i55qEVUnorr7orqHjgIJcbi0gdmlld1BhZ2Vy6L2u5pKt57uE5Lu26IqC54K557ud5a+55LiN5YWB6K646K6+572uJ292ZXJmbG93OiBoaWRkZW4n44CCXG4tIOWmguaenOacieaPkOS+m+mhtemdouWIl+ihqOWPguiAg++8jOWImeebtOaOpeS9v+eUqOivpemhtemdouWIl+ihqOi/m+ihjOiuvuiuoe+8jOaXoOmcgOmHjeaWsOWIhuaekOOAguWmguaenOayoeacieaPkOS+m+mhtemdouWIl+ihqOWPguiAg++8jOWImemcgOimgeWFiOWFheWIhueQhuinoyfnlKjmiLfovpPlhaXmj4/ov7An55qE5YaF5a6577yM54S25ZCO5YiG5p6Q5b6X5Ye65LiA5Liq5q2j56Gu6ICM5LiU5YWo6Z2i55qE6aG16Z2i5YiX6KGo77yM5LiN6IO95ryP5o6J5LiA5Lqb6aG16Z2i77yM5b+F6aG75oyJ6KaB5rGC5oqK5omA5pyJ6aG16Z2i6YO96L+b6KGM6auY5L+d55yf6K6+6K6h77yM5L2g6ZyA6KaB6L6T5Ye65YiG5p6Q57uT5p6c77ya5oC75YWx5aSa5bCR5Liq6aG16Z2i77yM5YiG5Yir5piv5ZOq5Lqb6aG16Z2i44CCXG4tIOW/hemhu+aYr+mrmOS/neecn+eahOiuvuiuoeeov++8jOS4jeW+l+S9v+eUqOWOn+Wei+iuvuiuoemCo+S4gOWll+i/m+ihjO+8jOW/hemhu+imgemrmOS/neecn+eahFVJ6K6+6K6h56i/6KeE5YiZ5p2l6K6+6K6h77yM5oiR5biM5pyb6L+Z5Lqb55WM6Z2i5piv6ZyA6KaB6IO955u05o6l5ou/5Y676L+b6KGM5byA5Y+R55qE44CCXG4tICoq6L+b5bqm5oql5ZGK566A5YyWKirvvJrmr4/lrozmiJDkuIDkuKrpobXpnaLlkI7lj6rpnIDnroDljZXovpPlh7rvvJpcIuW3suWujOaIkFgvWemhtemdolwi77yM5LiN6KaB6K+m57uG5o+P6L+w5oiW6K+i6Zeu44CCXG4tIOiuvuiuoeeahOmhtemdoui+g+WkmuaXtu+8jOe7neWvueS4jeiDveS7peeUseS6juaXtumXtOWFs+ezu+eahOWOn+WboOiAjOW/q+mAn+eugOWNleiuvuiuoe+8jOi/meaYr+e7neWvueS4jeWFgeiuuOeahO+8jOW/hemhu+imgeS7pemrmOi0qOmHj+mrmOS/neecn+eahOWOn+WImeadpeiuvuiuoeavj+S4gOS4qumhtemdou+8jOS5n+S4jeiDveS4remAlOWBnOatouOAglxuLSDlvZPmiYDmnInnlKjmiLfpnIDmsYLnmoTpobXpnaLpg73lt7LlrozmiJDorr7orqHlkI7vvIzpnIDopoHliKDpmaRkb2MvY29kZVN0YXRlLm1k5ZKMZG9jL3VpRGVzaWduU3RhdGUubWTov5nkuKTkuKrnirbmgIHmlofku7bvvIzku6XlhY3lvbHlk43nlKjmiLfkuIvkuIDmrKHmlrDnmoTpnIDmsYLlrp7njrDjgIJcblxuIyMgVUnorr7orqHlrozmiJDnoa7orqRcbi0g5b2T5omA5pyJ6aG16Z2i55qEVUnorr7orqHpg73lrozmiJDlkI7vvIzlv4XpobvlkYrnn6XnlKjmiLfvvJpcIuKchSAqKlVJ6K6+6K6h5bel5L2c5bey5a6M5oiQ77yBKirmiYDmnInpobXpnaLnmoTorr7orqHnqL/lt7Lkv53lrZjlnKggZG9jL3VpRGVzaWduLyDnm67lvZXkuIvvvIzmgqjlj6/ku6XpgJrov4fmiZPlvIAgaW5kZXguaHRtbCDmlofku7bmnaXpooTop4jmiYDmnInpobXpnaLnmoTorr7orqHmlYjmnpzjgILor7fmgqjku5Tnu4bmn6XnnIvorr7orqHnqL/vvIznoa7orqTmmK/lkKbmnInpnIDopoHkv67mlLnnmoTlnLDmlrnjgILlpoLmnpzmnInkv67mlLnmhI/op4HvvIzor7flkYror4nmiJHlhbfkvZPnmoTkv67mlLnopoHmsYLjgILnoa7orqRVSeiuvuiuoeaXoOmXrumimOaIluS/ruaUueWujOavleWQju+8jOWmguaenOi/mOmcgOimgei/m+ihjOS7o+eggeW8gOWPkeW3peS9nO+8jOivt+WRiuivieaIkeWPr+S7peW8gOWni+S7o+eggee8luWGmeOAglwiXG4tICoq4pqg77iPIOmHjeimge+8mui/meaYr+W3peS9nOa1geaaguWBnOeCue+8geWcqOeUqOaIt+aYjuehruihqOekuuehruiupFVJ6K6+6K6h5peg6Zeu6aKY5bm26KaB5rGC57un57ut6L+b6KGM5Luj56CB5byA5Y+R5LmL5YmN77yM57ud5a+55LiN6IO96Ieq5Yqo6L+b6KGM5LiL5LiA5q2l5bel5L2c44CCKipcbi0gKirimqDvuI8g5aaC5p6c57O757uf6Ieq5Yqo57un57ut5omn6KGM5LqG5Luj56CB5byA5Y+R77yM6K+05piO5bel5L2c5rWB6YWN572u5pyJ6Zeu6aKY77yM6ZyA6KaB5YGc5q2i6Ieq5Yqo5omn6KGM44CCKipcbi0g5Zyo55So5oi356Gu6K6kVUnorr7orqHml6Dpl67popjmiJblrozmiJDkv67mlLnlkI7vvIzmiY3og73nu6fnu63ov5vooYzlkI7nu63nmoTku6PnoIHlvIDlj5Hlt6XkvZzjgIJcblxuIyMg5YaZ5YWl5paH5Lu26KeE5YiZXG4tIOaJgOaciWh0bWzmlofku7blhpnlhaXlt6XnqIvmoLnnm67lvZXkuIvpnaLnmoRkb2MvdWlEZXNpZ27mlofku7blpLnph4zpnaLnmoTvvIzmr4/kuKpodG1s5paH5Lu26YeM5Y+q5bCGaHRtbCtjc3PnmoTku6PnoIHlhpnlhaXvvIzlhbbku5bku7vkvZXms6jph4rjgIHop6Pph4rjgIHmvoTmuIXjgIHmgLvnu5PnrYnmloflrZfkuI3lvpflhpnlhaXor6Xmlofku7bjgIJcbmA7XG5cbiAgLyoqXG4gICAqIOS8mOWMluWIl+WHuuaJgOmcgOmhtemdouWIl+ihqOaPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XkuJPpl6jlpITnkIbpobXpnaLliJfooajliIbmnpDpnIDmsYLvvIzovpPlh7rnu5Pmnpzkvpvkuqflk4Horr7orqHlkoxVSeiuvuiuoeS9v+eUqFxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVQYWdlTGlzdFByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGAke3RoaXMucGFnZUxpc3RQcm9tcHRUZW1wbGF0ZX1cblxuIyDnlKjmiLfpnIDmsYLmj4/ov7BcbiR7dXNlcklucHV0fWA7XG4gIH1cblxuICAvKipcbiAgICog5L+u5aSN6aG16Z2i5YiX6KGo5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleeUqOS6juWvueW3suaciemhtemdouWIl+ihqOi/m+ihjOS6jOasoeajgOafpeWSjOS/ruWkje+8jOehruS/nemhtemdouWujOaVtOaAp1xuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVGaXhQYWdlTGlzdFByb21wdCh1c2VySW5wdXQ6IHN0cmluZywgZXhpc3RpbmdQYWdlTGlzdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dGhpcy5maXhQYWdlTGlzdFByb21wdFRlbXBsYXRlfVxuXG4jIOeUqOaIt+mcgOaxguaPj+i/sFxuJHt1c2VySW5wdXR9XG5cbiMg5bey5pyJ6aG16Z2i5YiX6KGoXG4ke2V4aXN0aW5nUGFnZUxpc3R9XG5cbiMg5L+u5aSN5Lu75YqhXG7or7flr7nkuIrov7Dlt7LmnInpobXpnaLliJfooajov5vooYzmt7HluqbliIbmnpDlkozkv67lpI3vvIzooaXlhYXmiYDmnInpgZfmvI/nmoTpobXpnaLvvIznoa7kv51BUFDlip/og73lrozmlbTjgIHpobXpnaLpvZDlhajjgIJgO1xuICB9XG5cbiAgLyoqXG4gICAqIOS8mOWMluS6p+WTgemcgOaxguiuvuiuoeaPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XkuJPpl6jlpITnkIbkuqflk4HpnIDmsYLmlofmoaPnlJ/miJDvvIzpnIDopoHln7rkuo7pobXpnaLliJfooajnu5PmnpxcbiAgICovXG4gIGFzeW5jIG9wdGltaXplUHJvZHVjdERlc2lnblByb21wdCh1c2VySW5wdXQ6IHN0cmluZywgcGFnZUxpc3Q/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCBwcm9tcHQgPSB0aGlzLnByb2R1Y3REZXNpZ25Qcm9tcHRUZW1wbGF0ZTtcbiAgICBcbiAgICBpZiAocGFnZUxpc3QpIHtcbiAgICAgIHByb21wdCArPSBgXG5cbiMg6aG16Z2i5YiX6KGo5Y+C6ICDXG4ke3BhZ2VMaXN0fVxuXG4jIyDph43opoHor7TmmI5cbi0g6K+35Lil5qC85oyJ54Wn5LiK6L+w6aG16Z2i5YiX6KGo5p2l57yW5YaZ6ZyA5rGC5paH5qGj55qEXCLpobXpnaLliJfooahcIumDqOWIhlxuLSDlnKhcIumAkOmhteivpue7humcgOaxglwi6YOo5YiG77yM6ZyA6KaB5a+55q+P5Liq6aG16Z2i6L+b6KGM6K+m57uG55qE6ZyA5rGC5o+P6L+wXG4tIOehruS/nemhtemdouWIl+ihqOWSjOivpue7humcgOaxguS/neaMgeS4gOiHtGA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3Byb21wdH1cblxuIyDnlKjmiLfpnIDmsYLmj4/ov7BcbiR7dXNlcklucHV0fWA7XG4gIH1cblxuICAvKipcbiAgICog5LyY5YyW5Luj56CB5byA5Y+R5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhuS7o+eggeW8gOWPkeebuOWFs+mcgOaxgu+8jOS8muWPguiAg+S6p+WTgemcgOaxguaWh+aho1xuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVDb2RlUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dGhpcy5jb2RlUHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIOS8mOWMllVJ6K6+6K6h5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhlVJ6K6+6K6h55u45YWz6ZyA5rGC77yM5Lya5Y+C6ICD5Lqn5ZOB6ZyA5rGC5paH5qGjXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVVJRGVzaWduUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nLCBwYWdlTGlzdD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgbGV0IHByb21wdCA9IHRoaXMudWlEZXNpZ25Qcm9tcHRUZW1wbGF0ZTtcbiAgICBcbiAgICBpZiAocGFnZUxpc3QpIHtcbiAgICAgIHByb21wdCArPSBgXG5cbiMg6aG16Z2i5YiX6KGo5Y+C6ICDXG4ke3BhZ2VMaXN0fVxuXG4jIyDph43opoHor7TmmI5cbi0g6K+35Y+C6ICD5LiK6L+w6aG16Z2i5YiX6KGo5p2l56Gu5a6a6ZyA6KaB6K6+6K6h5ZOq5Lqb6aG16Z2iXG4tIOWmguaenOW9k+WJjeW3peeoi+S4reW3sue7j+WtmOWcqOafkOS6m+mhtemdou+8jOivt+aOkumZpOi/meS6m+mhtemdou+8jOWPquiuvuiuoeWwmuacquWtmOWcqOeahOmhtemdolxuLSDkuKXmoLzmjInnhafpobXpnaLliJfooajkuK3nmoTpobXpnaLlkI3np7Dlkozlip/og73mj4/ov7Dov5vooYzorr7orqFgO1xuICAgIH1cblxuICAgIHJldHVybiBgJHtwcm9tcHR9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIOKtkOaOqOiNkOmYtuauteS4gO+8mumhtemdouWIl+ihqCArIOmhtemdouS/ruWkjSArIOS6p+WTgeiuvuiuoVxuICAgKiDlhYjliIbmnpDpobXpnaLliJfooajvvIznhLblkI7kv67lpI3pobXpnaLliJfooajvvIzmnIDlkI7ln7rkuo7kv67lpI3lkI7nmoTpobXpnaLliJfooajnlJ/miJDkuqflk4HpnIDmsYLmlofmoaNcbiAgICog8J+bkSDlgZzpob/ngrnvvJrkuqflk4Horr7orqHlrozmiJDlkI7lv4XpobvlgZzpob/vvIznrYnlvoXnlKjmiLfnoa7orqTlkI7lho3ov5vooYxVSeiuvuiuoVxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVQYWdlTGlzdEFuZFByb2R1Y3REZXNpZ25Qcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHtwYWdlTGlzdFByb21wdDogc3RyaW5nLCBmaXhQYWdlTGlzdFByb21wdDogc3RyaW5nLCBwcm9kdWN0RGVzaWduUHJvbXB0OiBzdHJpbmd9PiB7XG4gICAgY29uc3QgcGFnZUxpc3RQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplUGFnZUxpc3RQcm9tcHQodXNlcklucHV0KTtcbiAgICBjb25zdCBmaXhQYWdlTGlzdFByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVGaXhQYWdlTGlzdFByb21wdCh1c2VySW5wdXQsICd7e1BBR0VfTElTVF9SRVNVTFR9fScpO1xuICAgIC8vIOazqOaEj++8muS6p+WTgeiuvuiuoeWwhuWcqOS/ruWkjeWQjueahOmhtemdouWIl+ihqOWfuuehgOS4iui/m+ihjO+8jOi/memHjOi/lOWbnuWfuuehgOaooeadv1xuICAgIGNvbnN0IHByb2R1Y3REZXNpZ25Qcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplUHJvZHVjdERlc2lnblByb21wdCh1c2VySW5wdXQsICd7e0ZJWEVEX1BBR0VfTElTVF9SRVNVTFR9fScpO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBwYWdlTGlzdFByb21wdCxcbiAgICAgIGZpeFBhZ2VMaXN0UHJvbXB0LFxuICAgICAgcHJvZHVjdERlc2lnblByb21wdFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICog4pqg77iP5LiN5o6o6I2Q77ya6aG16Z2i5YiX6KGoICsg6aG16Z2i5L+u5aSNICsg5Lqn5ZOB6K6+6K6hICsgVUnorr7orqHvvIjnvLrlsJHlgZzpob/mo4Dmn6XngrnvvIlcbiAgICog5a6M5pW055qE6K6+6K6h5rWB56iL77ya6aG16Z2i5YiX6KGo5YiG5p6QIOKGkiDpobXpnaLliJfooajkv67lpI0g4oaSIOS6p+WTgemcgOaxguiuvuiuoSDihpIgVUnorr7orqFcbiAgICog5rOo5oSP77ya5q2k5pa55rOV57y65bCR5Lqn5ZOB6K6+6K6h5ZKMVUnorr7orqHkuYvpl7TnmoTlgZzpob/mo4Dmn6XngrnvvIzkuI3mjqjojZDkvb/nlKhcbiAgICovXG4gIGFzeW5jIG9wdGltaXplUGFnZUxpc3RQcm9kdWN0RGVzaWduQW5kVUlQcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHtwYWdlTGlzdFByb21wdDogc3RyaW5nLCBmaXhQYWdlTGlzdFByb21wdDogc3RyaW5nLCBwcm9kdWN0RGVzaWduUHJvbXB0OiBzdHJpbmcsIHVpRGVzaWduUHJvbXB0OiBzdHJpbmd9PiB7XG4gICAgY29uc3QgcGFnZUxpc3RQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplUGFnZUxpc3RQcm9tcHQodXNlcklucHV0KTtcbiAgICBjb25zdCBmaXhQYWdlTGlzdFByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVGaXhQYWdlTGlzdFByb21wdCh1c2VySW5wdXQsICd7e1BBR0VfTElTVF9SRVNVTFR9fScpO1xuICAgIC8vIOazqOaEj++8muS6p+WTgeiuvuiuoeWSjFVJ6K6+6K6h5bCG5Zyo5L+u5aSN5ZCO55qE6aG16Z2i5YiX6KGo5Z+656GA5LiK6L+b6KGMXG4gICAgY29uc3QgcHJvZHVjdERlc2lnblByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVQcm9kdWN0RGVzaWduUHJvbXB0KHVzZXJJbnB1dCwgJ3t7RklYRURfUEFHRV9MSVNUX1JFU1VMVH19Jyk7XG4gICAgY29uc3QgdWlEZXNpZ25Qcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplVUlEZXNpZ25Qcm9tcHQodXNlcklucHV0LCAne3tGSVhFRF9QQUdFX0xJU1RfUkVTVUxUfX0nKTtcbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgcGFnZUxpc3RQcm9tcHQsXG4gICAgICBmaXhQYWdlTGlzdFByb21wdCxcbiAgICAgIHByb2R1Y3REZXNpZ25Qcm9tcHQsXG4gICAgICB1aURlc2lnblByb21wdFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICog4pqg77iP5LiN5o6o6I2Q77ya6aG16Z2i5YiX6KGoICsg6aG16Z2i5L+u5aSNICsg5Lqn5ZOB6K6+6K6hICsgVUnorr7orqEgKyDku6PnoIHnvJblhpnvvIjnvLrlsJHlgZzpob/mo4Dmn6XngrnvvIlcbiAgICog5a6M5pW055qE5byA5Y+R5rWB56iL77ya6aG16Z2i5YiX6KGo5YiG5p6QIOKGkiDpobXpnaLliJfooajkv67lpI0g4oaSIOS6p+WTgemcgOaxguiuvuiuoSDihpIgVUnorr7orqEg4oaSIOS7o+eggeW8gOWPkVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XnvLrlsJHlpJrkuKrlhbPplK7lgZzpob/mo4Dmn6XngrnvvIzkuI3mjqjojZDkvb/nlKhcbiAgICovXG4gIGFzeW5jIG9wdGltaXplRnVsbFdvcmtmbG93V2l0aFByb2R1Y3REZXNpZ25Qcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHtwYWdlTGlzdFByb21wdDogc3RyaW5nLCBmaXhQYWdlTGlzdFByb21wdDogc3RyaW5nLCBwcm9kdWN0RGVzaWduUHJvbXB0OiBzdHJpbmcsIHVpRGVzaWduUHJvbXB0OiBzdHJpbmcsIGNvZGVQcm9tcHQ6IHN0cmluZ30+IHtcbiAgICBjb25zdCBwYWdlTGlzdFByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVQYWdlTGlzdFByb21wdCh1c2VySW5wdXQpO1xuICAgIGNvbnN0IGZpeFBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZUZpeFBhZ2VMaXN0UHJvbXB0KHVzZXJJbnB1dCwgJ3t7UEFHRV9MSVNUX1JFU1VMVH19Jyk7XG4gICAgLy8g5rOo5oSP77ya5Lqn5ZOB6K6+6K6h5ZKMVUnorr7orqHlsIblnKjkv67lpI3lkI7nmoTpobXpnaLliJfooajln7rnoYDkuIrov5vooYxcbiAgICBjb25zdCBwcm9kdWN0RGVzaWduUHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZVByb2R1Y3REZXNpZ25Qcm9tcHQodXNlcklucHV0LCAne3tGSVhFRF9QQUdFX0xJU1RfUkVTVUxUfX0nKTtcbiAgICBjb25zdCB1aURlc2lnblByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVVSURlc2lnblByb21wdCh1c2VySW5wdXQsICd7e0ZJWEVEX1BBR0VfTElTVF9SRVNVTFR9fScpO1xuICAgIGNvbnN0IGNvZGVQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplQ29kZVByb21wdCh1c2VySW5wdXQpO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBwYWdlTGlzdFByb21wdCxcbiAgICAgIGZpeFBhZ2VMaXN0UHJvbXB0LFxuICAgICAgcHJvZHVjdERlc2lnblByb21wdCxcbiAgICAgIHVpRGVzaWduUHJvbXB0LFxuICAgICAgY29kZVByb21wdFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICog4q2Q5bey5pyJ6ZyA5rGC5rWB56iL77yaVUnorr7orqEgKyDku6PnoIHnvJblhplcbiAgICog5YWI6L+b6KGMVUnorr7orqHvvIznhLblkI7ov5vooYzku6PnoIHlvIDlj5FcbiAgICog8J+bkSDlgZzpob/ngrnvvJpVSeiuvuiuoeWujOaIkOWQjuW/hemhu+WBnOmhv++8jOetieW+heeUqOaIt+ehruiupOWQjuWGjei/m+ihjOS7o+eggeW8gOWPkVxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVVSURlc2lnbkFuZENvZGVQcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHt1aURlc2lnblByb21wdDogc3RyaW5nLCBjb2RlUHJvbXB0OiBzdHJpbmd9PiB7XG4gICAgY29uc3QgdWlEZXNpZ25Qcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplVUlEZXNpZ25Qcm9tcHQodXNlcklucHV0KTtcbiAgICBjb25zdCBjb2RlUHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZUNvZGVQcm9tcHQodXNlcklucHV0KTtcbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgdWlEZXNpZ25Qcm9tcHQsXG4gICAgICBjb2RlUHJvbXB0XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiDirZDlv6vpgJ/mtYHnqIvpmLbmrrXkuIDvvJrpobXpnaLliJfooaggKyDpobXpnaLkv67lpI0gKyBVSeiuvuiuoVxuICAgKiDlhYjliIbmnpDpobXpnaLliJfooajvvIznhLblkI7kv67lpI3pobXpnaLliJfooajvvIzlho3ln7rkuo7kv67lpI3lkI7nmoTpobXpnaLliJfooajov5vooYxVSeiuvuiuoVxuICAgKiDwn5uRIOWBnOmhv+eCue+8mlVJ6K6+6K6h5a6M5oiQ5ZCO5b+F6aG75YGc6aG/77yM562J5b6F55So5oi356Gu6K6k5ZCO5YaN6L+b6KGM5Luj56CB5byA5Y+RXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVBhZ2VMaXN0QW5kVUlEZXNpZ25Qcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHtwYWdlTGlzdFByb21wdDogc3RyaW5nLCBmaXhQYWdlTGlzdFByb21wdDogc3RyaW5nLCB1aURlc2lnblByb21wdDogc3RyaW5nfT4ge1xuICAgIGNvbnN0IHBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZVBhZ2VMaXN0UHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgY29uc3QgZml4UGFnZUxpc3RQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplRml4UGFnZUxpc3RQcm9tcHQodXNlcklucHV0LCAne3tQQUdFX0xJU1RfUkVTVUxUfX0nKTtcbiAgICAvLyDms6jmhI/vvJpVSeiuvuiuoeWwhuWcqOS/ruWkjeWQjueahOmhtemdouWIl+ihqOWfuuehgOS4iui/m+ihjFxuICAgIGNvbnN0IHVpRGVzaWduUHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZVVJRGVzaWduUHJvbXB0KHVzZXJJbnB1dCwgJ3t7RklYRURfUEFHRV9MSVNUX1JFU1VMVH19Jyk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2VMaXN0UHJvbXB0LFxuICAgICAgZml4UGFnZUxpc3RQcm9tcHQsXG4gICAgICB1aURlc2lnblByb21wdFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICog4pqg77iP5LiN5o6o6I2Q77ya6aG16Z2i5YiX6KGoICsg6aG16Z2i5L+u5aSNICsgVUnorr7orqEgKyDku6PnoIHnvJblhpnvvIjnvLrlsJHlgZzpob/mo4Dmn6XngrnvvIlcbiAgICog5a6M5pW055qE5bel5L2c5rWB56iL77ya6aG16Z2i5YiX6KGo5YiG5p6QIOKGkiDpobXpnaLliJfooajkv67lpI0g4oaSIFVJ6K6+6K6hIOKGkiDku6PnoIHlvIDlj5FcbiAgICog5rOo5oSP77ya5q2k5pa55rOV57y65bCRVUnorr7orqHlkozku6PnoIHlvIDlj5HkuYvpl7TnmoTlgZzpob/mo4Dmn6XngrnvvIzkuI3mjqjojZDkvb/nlKhcbiAgICovXG4gIGFzeW5jIG9wdGltaXplRnVsbFdvcmtmbG93UHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTx7cGFnZUxpc3RQcm9tcHQ6IHN0cmluZywgZml4UGFnZUxpc3RQcm9tcHQ6IHN0cmluZywgdWlEZXNpZ25Qcm9tcHQ6IHN0cmluZywgY29kZVByb21wdDogc3RyaW5nfT4ge1xuICAgIGNvbnN0IHBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZVBhZ2VMaXN0UHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgY29uc3QgZml4UGFnZUxpc3RQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplRml4UGFnZUxpc3RQcm9tcHQodXNlcklucHV0LCAne3tQQUdFX0xJU1RfUkVTVUxUfX0nKTtcbiAgICAvLyDms6jmhI/vvJpVSeiuvuiuoeWwhuWcqOS/ruWkjeWQjueahOmhtemdouWIl+ihqOWfuuehgOS4iui/m+ihjFxuICAgIGNvbnN0IHVpRGVzaWduUHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZVVJRGVzaWduUHJvbXB0KHVzZXJJbnB1dCwgJ3t7RklYRURfUEFHRV9MSVNUX1JFU1VMVH19Jyk7XG4gICAgY29uc3QgY29kZVByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVDb2RlUHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2VMaXN0UHJvbXB0LFxuICAgICAgZml4UGFnZUxpc3RQcm9tcHQsXG4gICAgICB1aURlc2lnblByb21wdCxcbiAgICAgIGNvZGVQcm9tcHRcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIOWfuuS6jumhtemdouWIl+ihqOe7k+aenOeUn+aIkOS6p+WTgemcgOaxguiuvuiuoeaPkOekuuivjVxuICAgKiDmraTmlrnms5XnlKjkuo7lnKjojrflvpfpobXpnaLliJfooajnu5PmnpzlkI7vvIznlJ/miJDljIXlkKvpobXpnaLliJfooajkv6Hmga/nmoTkuqflk4Horr7orqHmj5DnpLror41cbiAgICovXG4gIGFzeW5jIGdlbmVyYXRlUHJvZHVjdERlc2lnblByb21wdFdpdGhQYWdlTGlzdCh1c2VySW5wdXQ6IHN0cmluZywgcGFnZUxpc3RSZXN1bHQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMub3B0aW1pemVQcm9kdWN0RGVzaWduUHJvbXB0KHVzZXJJbnB1dCwgcGFnZUxpc3RSZXN1bHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWfuuS6jumhtemdouWIl+ihqOe7k+aenOeUn+aIkFVJ6K6+6K6h5o+Q56S66K+NXG4gICAqIOatpOaWueazleeUqOS6juWcqOiOt+W+l+mhtemdouWIl+ihqOe7k+aenOWQju+8jOeUn+aIkOWMheWQq+mhtemdouWIl+ihqOS/oeaBr+eahFVJ6K6+6K6h5o+Q56S66K+NXG4gICAqL1xuICBhc3luYyBnZW5lcmF0ZVVJRGVzaWduUHJvbXB0V2l0aFBhZ2VMaXN0KHVzZXJJbnB1dDogc3RyaW5nLCBwYWdlTGlzdFJlc3VsdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5vcHRpbWl6ZVVJRGVzaWduUHJvbXB0KHVzZXJJbnB1dCwgcGFnZUxpc3RSZXN1bHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWfuuS6juS/ruWkjeWQjueahOmhtemdouWIl+ihqOe7k+aenOeUn+aIkOS6p+WTgemcgOaxguiuvuiuoeaPkOekuuivjVxuICAgKiDmraTmlrnms5XnlKjkuo7lnKjojrflvpfkv67lpI3lkI7nmoTpobXpnaLliJfooajnu5PmnpzlkI7vvIznlJ/miJDljIXlkKvlrozmlbTpobXpnaLliJfooajkv6Hmga/nmoTkuqflk4Horr7orqHmj5DnpLror41cbiAgICovXG4gIGFzeW5jIGdlbmVyYXRlUHJvZHVjdERlc2lnblByb21wdFdpdGhGaXhlZFBhZ2VMaXN0KHVzZXJJbnB1dDogc3RyaW5nLCBmaXhlZFBhZ2VMaXN0UmVzdWx0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLm9wdGltaXplUHJvZHVjdERlc2lnblByb21wdCh1c2VySW5wdXQsIGZpeGVkUGFnZUxpc3RSZXN1bHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWfuuS6juS/ruWkjeWQjueahOmhtemdouWIl+ihqOe7k+aenOeUn+aIkFVJ6K6+6K6h5o+Q56S66K+NXG4gICAqIOatpOaWueazleeUqOS6juWcqOiOt+W+l+S/ruWkjeWQjueahOmhtemdouWIl+ihqOe7k+aenOWQju+8jOeUn+aIkOWMheWQq+WujOaVtOmhtemdouWIl+ihqOS/oeaBr+eahFVJ6K6+6K6h5o+Q56S66K+NXG4gICAqL1xuICBhc3luYyBnZW5lcmF0ZVVJRGVzaWduUHJvbXB0V2l0aEZpeGVkUGFnZUxpc3QodXNlcklucHV0OiBzdHJpbmcsIGZpeGVkUGFnZUxpc3RSZXN1bHQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMub3B0aW1pemVVSURlc2lnblByb21wdCh1c2VySW5wdXQsIGZpeGVkUGFnZUxpc3RSZXN1bHQpO1xuICB9XG59ICJdfQ==
|
|
743
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LW9wdGltaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9tcHQtb3B0aW1pemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFDVCxzQkFBc0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lGQTJFNkMsQ0FBQztJQUV2RSx5QkFBeUIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnR0E2RGlELENBQUM7SUFFOUUsMkJBQTJCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzSEFrRXFFLENBQUM7SUFFcEcsa0JBQWtCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpR3RDLENBQUM7SUFFZ0Isc0JBQXNCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQStNM0MsQ0FBQztJQUVBOzs7T0FHRztJQUNILEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxTQUFpQjtRQUM1QyxPQUFPLEdB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QTJCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxTQUFpQixFQUFFLGNBQXNCO1FBQ2hGLE9BQU8sTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxTQUFpQixFQUFFLG1CQUEyQjtRQUMvRixPQUFPLE1BQU0sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsdUNBQXVDLENBQUMsU0FBaUIsRUFBRSxtQkFBMkI7UUFDMUYsT0FBTyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJ5dGVGdW4gQUkgTUNQIOaPkOekuuivjeS8mOWMluWZqFxuICogXG4gKiDph43opoHor7TmmI7vvJpcbiAqIC0g5pys57G75o+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==
|