bytefun-ai-mcp 1.2.7 → 1.2.9

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 CHANGED
@@ -26,6 +26,24 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
26
26
  required: ['user_input']
27
27
  }
28
28
  },
29
+ {
30
+ name: 'optimize_fix_pageList_prompt',
31
+ description: 'Fix and improve existing page list by analyzing missing pages and ensuring completeness',
32
+ inputSchema: {
33
+ type: 'object',
34
+ properties: {
35
+ user_input: {
36
+ type: 'string',
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
+ }
43
+ },
44
+ required: ['user_input', 'existing_page_list']
45
+ }
46
+ },
29
47
  {
30
48
  name: 'optimize_product_design_prompt',
31
49
  description: 'Optimize prompt for product design document generation based on page list analysis',
@@ -97,6 +115,16 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
97
115
  }
98
116
  ]
99
117
  };
118
+ case 'optimize_fix_pageList_prompt':
119
+ const optimizedFixPageListPrompt = await promptOptimizer.optimizeFixPageListPrompt(args.user_input, args.existing_page_list);
120
+ return {
121
+ content: [
122
+ {
123
+ type: 'text',
124
+ text: optimizedFixPageListPrompt
125
+ }
126
+ ]
127
+ };
100
128
  case 'optimize_product_design_prompt':
101
129
  const optimizedProductDesignPrompt = await promptOptimizer.optimizeProductDesignPrompt(args.user_input, args.page_list);
102
130
  return {
@@ -149,4 +177,4 @@ async function main() {
149
177
  console.error('ByteFun AI Prompt MCP server running on stdio');
150
178
  }
151
179
  main().catch(console.error);
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUV2QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FDdkI7SUFDRSxJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLENBQ0YsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7QUFFOUMsdUJBQXVCO0FBQ3ZCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLElBQUksRUFBRTtJQUMxRCxPQUFPO1FBQ0wsS0FBSyxFQUFFO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLDBCQUEwQjtnQkFDaEMsV0FBVyxFQUFFLG1IQUFtSDtnQkFDaEksV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixVQUFVLEVBQUU7NEJBQ1YsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHFFQUFxRTt5QkFDbkY7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN6QjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGdDQUFnQztnQkFDdEMsV0FBVyxFQUFFLG9GQUFvRjtnQkFDakcsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixVQUFVLEVBQUU7NEJBQ1YsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFF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S0FBSyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU87WUFDTCxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSSxFQUFFLFVBQVUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO2lCQUN6RTthQUNGO1lBQ0QsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDO0FBRUgsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO0lBQzdDLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoQyxPQUFPLENBQUMsS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbmltcG9ydCB7IFNlcnZlciB9IGZyb20gJ0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc2VydmVyL2luZGV4LmpzJztcbmltcG9ydCB7IFN0ZGlvU2VydmVyVHJhbnNwb3J0IH0gZnJvbSAnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zZXJ2ZXIvc3RkaW8uanMnO1xuaW1wb3J0IHtcbiAgQ2FsbFRvb2xSZXF1ZXN0U2NoZW1hLFxuICBMaXN0VG9vbHNSZXF1ZXN0U2NoZW1hLFxuICBUb29sLFxufSBmcm9tICdAbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3R5cGVzLmpzJztcbmltcG9ydCB7IFByb21wdE9wdGltaXplciB9IGZyb20gJy4vcHJvbXB0LW9wdGltaXplci5qcyc7XG5cbmNvbnN0IHNlcnZlciA9IG5ldyBTZXJ2ZXIoXG4gIHtcbiAgICBuYW1lOiAnYnl0ZWZ1bi1haS1wcm9tcHQnLFxuICAgIHZlcnNpb246ICcxLjAuMCcsXG4gIH1cbik7XG5cbmNvbnN0IHByb21wdE9wdGltaXplciA9IG5ldyBQcm9tcHRPcHRpbWl6ZXIoKTtcblxuLy8gTGlzdCBhdmFpbGFibGUgdG9vbHNcbnNlcnZlci5zZXRSZXF1ZXN0SGFuZGxlcihMaXN0VG9vbHNSZXF1ZXN0U2NoZW1hLCBhc3luYyAoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgdG9vbHM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX3BhZ2VMaXN0X3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBsaXN0aW5nIHJlcXVpcmVkIHBhZ2VzIGJ5IGFuYWx5emluZyB1c2VyIHJlcXVpcmVtZW50cyBhbmQgZ2VuZXJhdGluZyBjb21wcmVoZW5zaXZlIHBhZ2UgbGlzdHMnLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQgZm9yIHBhZ2UgbGlzdCBhbmFseXNpcydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnb3B0aW1pemVfcHJvZHVjdF9kZXNpZ25fcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIHByb2R1Y3QgZGVzaWduIGRvY3VtZW50IGdlbmVyYXRpb24gYmFzZWQgb24gcGFnZSBsaXN0IGFuYWx5c2lzJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBwcm9kdWN0IGRlc2lnbiBkb2N1bWVudGF0aW9uJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhZ2VfbGlzdDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpb25hbCBwYWdlIGxpc3QgcmVzdWx0IGZyb20gb3B0aW1pemVfcGFnZUxpc3RfcHJvbXB0IHRvIGJlIGluY2x1ZGVkIGluIHByb2R1Y3QgZGVzaWduJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvcHRpbWl6ZV91aV9kZXNpZ25fcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIFVJIGRlc2lnbiBieSBhZGRpbmcgVUkgZGVzaWduIHJ1bGVzIGFuZCBtYXJraW5nIHVzZXIgaW5wdXQnLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQgZm9yIFVJIGRlc2lnbidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYWdlX2xpc3Q6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW9uYWwgcGFnZSBsaXN0IHJlc3VsdCB0byBiZSBpbmNsdWRlZCBpbiBVSSBkZXNpZ24nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX2NvZGVfcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIFR5cGVTY3JpcHQgY29kZSBkZXZlbG9wbWVudCBieSBhZGRpbmcgY29kZSBkZXZlbG9wbWVudCBydWxlcyBhbmQgbWFya2luZyB1c2VyIGlucHV0JyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBjb2RlIGRldmVsb3BtZW50J1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdIGFzIFRvb2xbXVxuICB9O1xufSk7XG5cbi8vIEhhbmRsZSB0b29sIGNhbGxzXG5zZXJ2ZXIuc2V0UmVxdWVzdEhhbmRsZXIoQ2FsbFRvb2xSZXF1ZXN0U2NoZW1hLCBhc3luYyAocmVxdWVzdCkgPT4ge1xuICBjb25zdCB7IG5hbWUsIGFyZ3VtZW50czogYXJncyB9ID0gcmVxdWVzdC5wYXJhbXM7XG5cbiAgaWYgKCFhcmdzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50cycpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgIGNhc2UgJ29wdGltaXplX3BhZ2VMaXN0X3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZFBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplUGFnZUxpc3RQcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZFBhZ2VMaXN0UHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdvcHRpbWl6ZV9wcm9kdWN0X2Rlc2lnbl9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRQcm9kdWN0RGVzaWduUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplUHJvZHVjdERlc2lnblByb21wdChcbiAgICAgICAgICBhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nLFxuICAgICAgICAgIGFyZ3MucGFnZV9saXN0IGFzIHN0cmluZ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRQcm9kdWN0RGVzaWduUHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdvcHRpbWl6ZV91aV9kZXNpZ25fcHJvbXB0JzpcbiAgICAgICAgY29uc3Qgb3B0aW1pemVkVUlQcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVVSURlc2lnblByb21wdChcbiAgICAgICAgICBhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nLFxuICAgICAgICAgIGFyZ3MucGFnZV9saXN0IGFzIHN0cmluZ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRVSVByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnb3B0aW1pemVfY29kZV9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRDb2RlUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplQ29kZVByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkQ29kZVByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHRvb2w6ICR7bmFtZX1gKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICB0ZXh0OiBgRXJyb3I6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGlzRXJyb3I6IHRydWVcbiAgICB9O1xuICB9XG59KTtcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgdHJhbnNwb3J0ID0gbmV3IFN0ZGlvU2VydmVyVHJhbnNwb3J0KCk7XG4gIGF3YWl0IHNlcnZlci5jb25uZWN0KHRyYW5zcG9ydCk7XG4gIGNvbnNvbGUuZXJyb3IoJ0J5dGVGdW4gQUkgUHJvbXB0IE1DUCBzZXJ2ZXIgcnVubmluZyBvbiBzdGRpbycpO1xufVxuXG5tYWluKCkuY2F0Y2goY29uc29sZS5lcnJvcik7ICJdfQ==
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUV2QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FDdkI7SUFDRSxJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLENBQ0YsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7QUFFOUMsdUJBQXVCO0FBQ3ZCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLElBQUksRUFBRTtJQUMxRCxPQUFPO1FBQ0wsS0FBSyxFQUFFO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLDBCQUEwQjtnQkFDaEMsV0FBVyxFQUFFLG1IQUFtSDtnQkFDaEksV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixVQUFVLEVBQUU7NEJBQ1YsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHFFQUFxRTt5QkFDbkY7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN6QjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLDhCQUE4QjtnQkFDcEMsV0FBVyxFQUFFLHlGQUF5RjtnQkFDdEcsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixVQUFVLEVBQUU7NEJBQ1YsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFF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SUFDN0MsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IHsgU2VydmVyIH0gZnJvbSAnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zZXJ2ZXIvaW5kZXguanMnO1xuaW1wb3J0IHsgU3RkaW9TZXJ2ZXJUcmFuc3BvcnQgfSBmcm9tICdAbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NlcnZlci9zdGRpby5qcyc7XG5pbXBvcnQge1xuICBDYWxsVG9vbFJlcXVlc3RTY2hlbWEsXG4gIExpc3RUb29sc1JlcXVlc3RTY2hlbWEsXG4gIFRvb2wsXG59IGZyb20gJ0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvdHlwZXMuanMnO1xuaW1wb3J0IHsgUHJvbXB0T3B0aW1pemVyIH0gZnJvbSAnLi9wcm9tcHQtb3B0aW1pemVyLmpzJztcblxuY29uc3Qgc2VydmVyID0gbmV3IFNlcnZlcihcbiAge1xuICAgIG5hbWU6ICdieXRlZnVuLWFpLXByb21wdCcsXG4gICAgdmVyc2lvbjogJzEuMC4wJyxcbiAgfVxuKTtcblxuY29uc3QgcHJvbXB0T3B0aW1pemVyID0gbmV3IFByb21wdE9wdGltaXplcigpO1xuXG4vLyBMaXN0IGF2YWlsYWJsZSB0b29sc1xuc2VydmVyLnNldFJlcXVlc3RIYW5kbGVyKExpc3RUb29sc1JlcXVlc3RTY2hlbWEsIGFzeW5jICgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICB0b29sczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnb3B0aW1pemVfcGFnZUxpc3RfcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIGxpc3RpbmcgcmVxdWlyZWQgcGFnZXMgYnkgYW5hbHl6aW5nIHVzZXIgcmVxdWlyZW1lbnRzIGFuZCBnZW5lcmF0aW5nIGNvbXByZWhlbnNpdmUgcGFnZSBsaXN0cycsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgcGFnZSBsaXN0IGFuYWx5c2lzJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvcHRpbWl6ZV9maXhfcGFnZUxpc3RfcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdGaXggYW5kIGltcHJvdmUgZXhpc3RpbmcgcGFnZSBsaXN0IGJ5IGFuYWx5emluZyBtaXNzaW5nIHBhZ2VzIGFuZCBlbnN1cmluZyBjb21wbGV0ZW5lc3MnLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBkZXNjcmliZXMgdGhlIHJlcXVpcmVtZW50cydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleGlzdGluZ19wYWdlX2xpc3Q6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRXhpc3RpbmcgcGFnZSBsaXN0IHJlc3VsdCBmcm9tIG9wdGltaXplX3BhZ2VMaXN0X3Byb21wdCB0aGF0IG5lZWRzIHRvIGJlIGZpeGVkIGFuZCBpbXByb3ZlZCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnLCAnZXhpc3RpbmdfcGFnZV9saXN0J11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX3Byb2R1Y3RfZGVzaWduX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBwcm9kdWN0IGRlc2lnbiBkb2N1bWVudCBnZW5lcmF0aW9uIGJhc2VkIG9uIHBhZ2UgbGlzdCBhbmFseXNpcycsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgcHJvZHVjdCBkZXNpZ24gZG9jdW1lbnRhdGlvbidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYWdlX2xpc3Q6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW9uYWwgcGFnZSBsaXN0IHJlc3VsdCBmcm9tIG9wdGltaXplX3BhZ2VMaXN0X3Byb21wdCB0byBiZSBpbmNsdWRlZCBpbiBwcm9kdWN0IGRlc2lnbidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnb3B0aW1pemVfdWlfZGVzaWduX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBVSSBkZXNpZ24gYnkgYWRkaW5nIFVJIGRlc2lnbiBydWxlcyBhbmQgbWFya2luZyB1c2VyIGlucHV0JyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBVSSBkZXNpZ24nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFnZV9saXN0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGlvbmFsIHBhZ2UgbGlzdCByZXN1bHQgdG8gYmUgaW5jbHVkZWQgaW4gVUkgZGVzaWduJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvcHRpbWl6ZV9jb2RlX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBUeXBlU2NyaXB0IGNvZGUgZGV2ZWxvcG1lbnQgYnkgYWRkaW5nIGNvZGUgZGV2ZWxvcG1lbnQgcnVsZXMgYW5kIG1hcmtpbmcgdXNlciBpbnB1dCcsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgY29kZSBkZXZlbG9wbWVudCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXSBhcyBUb29sW11cbiAgfTtcbn0pO1xuXG4vLyBIYW5kbGUgdG9vbCBjYWxsc1xuc2VydmVyLnNldFJlcXVlc3RIYW5kbGVyKENhbGxUb29sUmVxdWVzdFNjaGVtYSwgYXN5bmMgKHJlcXVlc3QpID0+IHtcbiAgY29uc3QgeyBuYW1lLCBhcmd1bWVudHM6IGFyZ3MgfSA9IHJlcXVlc3QucGFyYW1zO1xuXG4gIGlmICghYXJncykge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBhcmd1bWVudHMnKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICBjYXNlICdvcHRpbWl6ZV9wYWdlTGlzdF9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRQYWdlTGlzdFByb21wdCA9IGF3YWl0IHByb21wdE9wdGltaXplci5vcHRpbWl6ZVBhZ2VMaXN0UHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRQYWdlTGlzdFByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnb3B0aW1pemVfZml4X3BhZ2VMaXN0X3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZEZpeFBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplRml4UGFnZUxpc3RQcm9tcHQoXG4gICAgICAgICAgYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyxcbiAgICAgICAgICBhcmdzLmV4aXN0aW5nX3BhZ2VfbGlzdCBhcyBzdHJpbmdcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkRml4UGFnZUxpc3RQcm9tcHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ29wdGltaXplX3Byb2R1Y3RfZGVzaWduX3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZFByb2R1Y3REZXNpZ25Qcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVQcm9kdWN0RGVzaWduUHJvbXB0KFxuICAgICAgICAgIGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcsXG4gICAgICAgICAgYXJncy5wYWdlX2xpc3QgYXMgc3RyaW5nXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZFByb2R1Y3REZXNpZ25Qcm9tcHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ29wdGltaXplX3VpX2Rlc2lnbl9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRVSVByb21wdCA9IGF3YWl0IHByb21wdE9wdGltaXplci5vcHRpbWl6ZVVJRGVzaWduUHJvbXB0KFxuICAgICAgICAgIGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcsXG4gICAgICAgICAgYXJncy5wYWdlX2xpc3QgYXMgc3RyaW5nXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZFVJUHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdvcHRpbWl6ZV9jb2RlX3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZENvZGVQcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVDb2RlUHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRDb2RlUHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdG9vbDogJHtuYW1lfWApO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgIHRleHQ6IGBFcnJvcjogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgaXNFcnJvcjogdHJ1ZVxuICAgIH07XG4gIH1cbn0pO1xuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICBjb25zdCB0cmFuc3BvcnQgPSBuZXcgU3RkaW9TZXJ2ZXJUcmFuc3BvcnQoKTtcbiAgYXdhaXQgc2VydmVyLmNvbm5lY3QodHJhbnNwb3J0KTtcbiAgY29uc29sZS5lcnJvcignQnl0ZUZ1biBBSSBQcm9tcHQgTUNQIHNlcnZlciBydW5uaW5nIG9uIHN0ZGlvJyk7XG59XG5cbm1haW4oKS5jYXRjaChjb25zb2xlLmVycm9yKTsgIl19
@@ -2,25 +2,33 @@
2
2
  * ByteFun AI MCP 提示词优化器
3
3
  *
4
4
  * 重要说明:
5
- * - 本类提供四个独立的优化工具和复合调用链功能
5
+ * - 本类提供五个独立的优化工具和复合调用链功能
6
6
  * - 每个单一工具处理不同类型的需求,复合工具支持多个工具的组合调用
7
+ * - 页面列表修复功能确保页面完整性,修复后的结果用于后续的产品设计和UI设计
7
8
  *
8
9
  * 单一工具使用方式:
9
10
  * 1. 页面列表分析需求 → 调用 optimizePageListPrompt()
10
- * 2. 产品需求设计需求 → 调用 optimizeProductDesignPrompt()
11
- * 3. UI设计需求 → 调用 optimizeUIDesignPrompt()
12
- * 4. 代码开发需求 → 调用 optimizeCodePrompt()
11
+ * 2. 页面列表修复需求 → 调用 optimizeFixPageListPrompt()
12
+ * 3. 产品需求设计需求 → 调用 optimizeProductDesignPrompt()
13
+ * 4. UI设计需求 → 调用 optimizeUIDesignPrompt()
14
+ * 5. 代码开发需求 → 调用 optimizeCodePrompt()
13
15
  *
14
- * 复合工具使用方式:
15
- * 1. 页面列表 + 产品设计 → 调用 optimizePageListAndProductDesignPrompt()
16
- * 2. 页面列表 + 产品设计 + UI设计 → 调用 optimizePageListProductDesignAndUIPrompt()
17
- * 3. 页面列表 + 产品设计 + UI设计 + 代码编写 → 调用 optimizeFullWorkflowWithProductDesignPrompt()
16
+ * 复合工具使用方式(包含页面列表修复):
17
+ * 1. 页面列表 + 页面修复 + 产品设计 → 调用 optimizePageListAndProductDesignPrompt()
18
+ * 2. 页面列表 + 页面修复 + 产品设计 + UI设计 → 调用 optimizePageListProductDesignAndUIPrompt()
19
+ * 3. 页面列表 + 页面修复 + 产品设计 + UI设计 + 代码编写 → 调用 optimizeFullWorkflowWithProductDesignPrompt()
18
20
  * 4. UI设计 + 代码编写 → 调用 optimizeUIDesignAndCodePrompt()
19
- * 5. 列出所需页面列表 + UI设计 → 调用 optimizePageListAndUIDesignPrompt()
20
- * 6. 列出所需页面列表 + UI设计 + 代码编写 → 调用 optimizeFullWorkflowPrompt()
21
+ * 5. 页面列表 + 页面修复 + UI设计 → 调用 optimizePageListAndUIDesignPrompt()
22
+ * 6. 页面列表 + 页面修复 + UI设计 + 代码编写 → 调用 optimizeFullWorkflowPrompt()
23
+ *
24
+ * 数据传递逻辑:
25
+ * - {{PAGE_LIST_RESULT}} 代表 optimize_pageList_prompt 的结果
26
+ * - {{FIXED_PAGE_LIST_RESULT}} 代表 optimize_fix_pageList_prompt 的修复后结果
27
+ * - 产品设计和UI设计基于修复后的页面列表进行,确保页面完整性
21
28
  */
22
29
  export declare class PromptOptimizer {
23
30
  private readonly pageListPromptTemplate;
31
+ private readonly fixPageListPromptTemplate;
24
32
  private readonly productDesignPromptTemplate;
25
33
  private readonly codePromptTemplate;
26
34
  private readonly uiDesignPromptTemplate;
@@ -29,6 +37,11 @@ export declare class PromptOptimizer {
29
37
  * 注意:此方法专门处理页面列表分析需求,输出结果供产品设计和UI设计使用
30
38
  */
31
39
  optimizePageListPrompt(userInput: string): Promise<string>;
40
+ /**
41
+ * 修复页面列表提示词
42
+ * 注意:此方法用于对已有页面列表进行二次检查和修复,确保页面完整性
43
+ */
44
+ optimizeFixPageListPrompt(userInput: string, existingPageList: string): Promise<string>;
32
45
  /**
33
46
  * 优化产品需求设计提示词
34
47
  * 注意:此方法专门处理产品需求文档生成,需要基于页面列表结果
@@ -45,28 +58,31 @@ export declare class PromptOptimizer {
45
58
  */
46
59
  optimizeUIDesignPrompt(userInput: string, pageList?: string): Promise<string>;
47
60
  /**
48
- * 复合工具:页面列表 + 产品设计
49
- * 先分析页面列表,然后基于页面列表生成产品需求文档
61
+ * 复合工具:页面列表 + 页面修复 + 产品设计
62
+ * 先分析页面列表,然后修复页面列表,最后基于修复后的页面列表生成产品需求文档
50
63
  */
51
64
  optimizePageListAndProductDesignPrompt(userInput: string): Promise<{
52
65
  pageListPrompt: string;
66
+ fixPageListPrompt: string;
53
67
  productDesignPrompt: string;
54
68
  }>;
55
69
  /**
56
- * 复合工具:页面列表 + 产品设计 + UI设计
57
- * 完整的设计流程:页面列表分析 → 产品需求设计 → UI设计
70
+ * 复合工具:页面列表 + 页面修复 + 产品设计 + UI设计
71
+ * 完整的设计流程:页面列表分析 → 页面列表修复 → 产品需求设计 → UI设计
58
72
  */
59
73
  optimizePageListProductDesignAndUIPrompt(userInput: string): Promise<{
60
74
  pageListPrompt: string;
75
+ fixPageListPrompt: string;
61
76
  productDesignPrompt: string;
62
77
  uiDesignPrompt: string;
63
78
  }>;
64
79
  /**
65
- * 复合工具:页面列表 + 产品设计 + UI设计 + 代码编写
66
- * 完整的开发流程:页面列表分析 → 产品需求设计 → UI设计 → 代码开发
80
+ * 复合工具:页面列表 + 页面修复 + 产品设计 + UI设计 + 代码编写
81
+ * 完整的开发流程:页面列表分析 → 页面列表修复 → 产品需求设计 → UI设计 → 代码开发
67
82
  */
68
83
  optimizeFullWorkflowWithProductDesignPrompt(userInput: string): Promise<{
69
84
  pageListPrompt: string;
85
+ fixPageListPrompt: string;
70
86
  productDesignPrompt: string;
71
87
  uiDesignPrompt: string;
72
88
  codePrompt: string;
@@ -80,19 +96,21 @@ export declare class PromptOptimizer {
80
96
  codePrompt: string;
81
97
  }>;
82
98
  /**
83
- * 复合工具:列出所需页面列表 + UI设计
84
- * 先分析页面列表,然后基于页面列表进行UI设计
99
+ * 复合工具:页面列表 + 页面修复 + UI设计
100
+ * 先分析页面列表,然后修复页面列表,再基于修复后的页面列表进行UI设计
85
101
  */
86
102
  optimizePageListAndUIDesignPrompt(userInput: string): Promise<{
87
103
  pageListPrompt: string;
104
+ fixPageListPrompt: string;
88
105
  uiDesignPrompt: string;
89
106
  }>;
90
107
  /**
91
- * 复合工具:列出所需页面列表 + UI设计 + 代码编写
92
- * 完整的工作流程:页面列表分析 → UI设计 → 代码开发
108
+ * 复合工具:页面列表 + 页面修复 + UI设计 + 代码编写
109
+ * 完整的工作流程:页面列表分析 → 页面列表修复 → UI设计 → 代码开发
93
110
  */
94
111
  optimizeFullWorkflowPrompt(userInput: string): Promise<{
95
112
  pageListPrompt: string;
113
+ fixPageListPrompt: string;
96
114
  uiDesignPrompt: string;
97
115
  codePrompt: string;
98
116
  }>;
@@ -106,5 +124,15 @@ export declare class PromptOptimizer {
106
124
  * 此方法用于在获得页面列表结果后,生成包含页面列表信息的UI设计提示词
107
125
  */
108
126
  generateUIDesignPromptWithPageList(userInput: string, pageListResult: string): Promise<string>;
127
+ /**
128
+ * 基于修复后的页面列表结果生成产品需求设计提示词
129
+ * 此方法用于在获得修复后的页面列表结果后,生成包含完整页面列表信息的产品设计提示词
130
+ */
131
+ generateProductDesignPromptWithFixedPageList(userInput: string, fixedPageListResult: string): Promise<string>;
132
+ /**
133
+ * 基于修复后的页面列表结果生成UI设计提示词
134
+ * 此方法用于在获得修复后的页面列表结果后,生成包含完整页面列表信息的UI设计提示词
135
+ */
136
+ generateUIDesignPromptWithFixedPageList(userInput: string, fixedPageListResult: string): Promise<string>;
109
137
  }
110
138
  //# sourceMappingURL=prompt-optimizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-optimizer.d.ts","sourceRoot":"","sources":["../src/prompt-optimizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAkHQ;IAE/C,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CA2IF;IAE1C,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;;;OAGG;IACG,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBxF;;;OAGG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO5D;;;OAGG;IACG,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBnF;;;OAGG;IACG,sCAAsC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAC,CAAC;IAU/H;;;OAGG;IACG,wCAAwC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAC,CAAC;IAYzJ;;;OAGG;IACG,2CAA2C,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAC;IAchL;;;OAGG;IACG,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAC;IAU7G;;;OAGG;IACG,iCAAiC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAC,CAAC;IAWrH;;;OAGG;IACG,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAC;IAalI;;;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;CAGrG"}
1
+ {"version":3,"file":"prompt-optimizer.d.ts","sourceRoot":"","sources":["../src/prompt-optimizer.ts"],"names":[],"mappings":"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"}
@@ -2,22 +2,29 @@
2
2
  * ByteFun AI MCP 提示词优化器
3
3
  *
4
4
  * 重要说明:
5
- * - 本类提供四个独立的优化工具和复合调用链功能
5
+ * - 本类提供五个独立的优化工具和复合调用链功能
6
6
  * - 每个单一工具处理不同类型的需求,复合工具支持多个工具的组合调用
7
+ * - 页面列表修复功能确保页面完整性,修复后的结果用于后续的产品设计和UI设计
7
8
  *
8
9
  * 单一工具使用方式:
9
10
  * 1. 页面列表分析需求 → 调用 optimizePageListPrompt()
10
- * 2. 产品需求设计需求 → 调用 optimizeProductDesignPrompt()
11
- * 3. UI设计需求 → 调用 optimizeUIDesignPrompt()
12
- * 4. 代码开发需求 → 调用 optimizeCodePrompt()
11
+ * 2. 页面列表修复需求 → 调用 optimizeFixPageListPrompt()
12
+ * 3. 产品需求设计需求 → 调用 optimizeProductDesignPrompt()
13
+ * 4. UI设计需求 → 调用 optimizeUIDesignPrompt()
14
+ * 5. 代码开发需求 → 调用 optimizeCodePrompt()
13
15
  *
14
- * 复合工具使用方式:
15
- * 1. 页面列表 + 产品设计 → 调用 optimizePageListAndProductDesignPrompt()
16
- * 2. 页面列表 + 产品设计 + UI设计 → 调用 optimizePageListProductDesignAndUIPrompt()
17
- * 3. 页面列表 + 产品设计 + UI设计 + 代码编写 → 调用 optimizeFullWorkflowWithProductDesignPrompt()
16
+ * 复合工具使用方式(包含页面列表修复):
17
+ * 1. 页面列表 + 页面修复 + 产品设计 → 调用 optimizePageListAndProductDesignPrompt()
18
+ * 2. 页面列表 + 页面修复 + 产品设计 + UI设计 → 调用 optimizePageListProductDesignAndUIPrompt()
19
+ * 3. 页面列表 + 页面修复 + 产品设计 + UI设计 + 代码编写 → 调用 optimizeFullWorkflowWithProductDesignPrompt()
18
20
  * 4. UI设计 + 代码编写 → 调用 optimizeUIDesignAndCodePrompt()
19
- * 5. 列出所需页面列表 + UI设计 → 调用 optimizePageListAndUIDesignPrompt()
20
- * 6. 列出所需页面列表 + UI设计 + 代码编写 → 调用 optimizeFullWorkflowPrompt()
21
+ * 5. 页面列表 + 页面修复 + UI设计 → 调用 optimizePageListAndUIDesignPrompt()
22
+ * 6. 页面列表 + 页面修复 + UI设计 + 代码编写 → 调用 optimizeFullWorkflowPrompt()
23
+ *
24
+ * 数据传递逻辑:
25
+ * - {{PAGE_LIST_RESULT}} 代表 optimize_pageList_prompt 的结果
26
+ * - {{FIXED_PAGE_LIST_RESULT}} 代表 optimize_fix_pageList_prompt 的修复后结果
27
+ * - 产品设计和UI设计基于修复后的页面列表进行,确保页面完整性
21
28
  */
22
29
  export class PromptOptimizer {
23
30
  pageListPromptTemplate = `# 你是APP产品经理专家,现在需要你根据用户输入的需求描述,遵循"分析规则"分析出所需要的完整的页面列表。
@@ -31,18 +38,13 @@ export class PromptOptimizer {
31
38
  - 如果发现doc/uiDesignState.md文件存在,则说明之前已经设计过,需要看下 是否同一个APP或者网站,如果是同一个那就不需要重新分析pageList,而且根据之前的设计进度和状况,继续设计工作,如果不是同一个APP或者网站,则需要删除doc/uiDesignState.md文件,然后从零开始设计。
32
39
 
33
40
  ## 一、模块拆解与初步列出页面列表
34
-
35
- 1. **拆解核心业务模块**
36
- - 将整个 APP 分成完整完善的若干大模块,你需要选取一个市面上典型的用户量大的类似APP来分析它的所有功能模块,然后全部列出来,绝度不允许漏掉。
37
- - 输出所有功能模块,不论是否核心,不论大小,都要列出来。
38
-
39
- 2、**初步列出页面列表**
40
- - 遍历上一步分析列出来的所有业务模块,对每一个业务模块进行细分,列出该业务模块的所有页面。
41
+ - 拆解核心业务模块, 输出所有功能模块,不论是否核心,不论大小,都要列出来。
42
+ - 遍历上一步分析列出来的所有业务模块,对每一个业务模块进行细分,列出该业务模块的所有页面,所有页面不论是否核心、不论大小、不论是否子项页面全部列出来。
41
43
 
42
44
  ## 二、每个页面的"元素→可点→跳转"分析要点
43
45
 
44
46
  > **核心思路:**
45
- > 遍历上一步分析出来的每个页面,像扫雷一样"点亮"它上面所有可交互元素,沿着"元素可点→跳转目标"一路延伸,逐层发现并补充更多页面或弹窗。
47
+ > 遍历上一步分析出来的每个页面,像扫雷一样"点亮"它上面所有可交互元素,沿着"元素可点→跳转页面目标"一路延伸,逐层发现并补充更多页面或弹窗。
46
48
 
47
49
  1. **识别页面元素**
48
50
  - **页面框架**:浏览页面整体布局(如顶部导航、Tab、列表、表单、底部按钮等)。
@@ -58,83 +60,25 @@ export class PromptOptimizer {
58
60
  - **图像缩略图、轮播图某些可点击区域**
59
61
  - **导航返回/关闭/菜单图标**
60
62
 
61
- 3. **逐一列出"点击→跳转目标"**
62
- - 对每个可点击元素,明确点击后:
63
- 1. 跳转到哪个页面或弹窗?
64
- 2. 所需上下文/参数?
65
- 3. 如果触发的是"本页面内行为"(如折叠、刷新),也要标明。
63
+ 3. **逐一列出"点击→跳转页面目标"**
64
+ - 对每个可点击元素,明确点击后跳到哪一个目标页面,那么该目标页面也要列出到页面列表中
66
65
 
67
66
  - **示例**(以"商品详情页"为例):
68
- 页面:商品详情页
67
+ 页面:设置页
69
68
  元素:
70
- 1. 返回按钮 ← 点击 → 返回来源页(分类/搜索/深度链接)
71
- 2. 收藏图标 ← 点击 →
72
- 已登录:标记已收藏并提示"已收藏"
73
- • 未登录:跳转至【登录页面】
74
- 3. 分享按钮 ← 点击 → 唤起系统分享弹窗(无新页面)
75
- 4. 规格选择区(每种规格标签)
76
- ← 点击 → 本页面内刷新价格/库存
77
- 5. 数量选择器 ← 点击 → 弹出数量调整控件(本页面内)
78
- 6. "加入购物车"按钮 ← 点击 →
79
- • 已登录 & 有库存:购物车数量+1,弹浮层"已加入购物车,去查看?"
80
- • 未登录:跳转至【登录页面】
81
- • 库存不足:弹窗提示"库存不足"
82
- 7. "立即购买"按钮 ← 点击 →
83
- • 已登录 & 有库存:跳转至【确认订单页】,携带该商品信息
84
- • 未登录:跳转至【登录页面】
85
- • 库存不足:弹窗提示"库存不足"
86
- 8. 详情区 Tab:"商品详情"、"评价"、"常见问答"
87
- ← 点击 → 切换本页面对应区域
88
- 9. 客服按钮(底部) ← 点击 → 跳转至【客服对话页】
89
-
90
- 异常/边界:
91
- - 后端数据加载失败:展示"加载失败,点击重试"占位;
92
- 点击"重试" → 重新发请求;
93
- - 商品已下架:全页提示"该商品已下架",所有购物按钮置灰;
94
- - Session 过期:弹窗提示"请重新登录" → 跳转【登录页面】
95
-
96
- 4. **以此"点亮"下一层页面**
97
- - 继续对每个目标页面做同样的"元素→可点→跳转"分析:
98
- - **登录页面**:列出账号/密码输入框、登录/切换登录方式按钮、注册/忘记密码/协议链接,并标注各自去向。
99
- - **确认订单页**:列出"选择地址""选择优惠券/积分""选择配送方式""提交订单"按钮,及对应跳转。
100
- - …如此循环,直到所有页面的可交互元素都被分析完毕。
101
-
102
- 5. **不断发现并补充遗漏页面**
103
- - 在分析过程中,如果出现"弹窗""深度链接承接""权限弹窗"等隐藏入口,须将其当作独立"页面/组件"补充:
104
- - 网络异常弹窗、会话过期弹窗、库存不足提示、优惠券失效提示等。
105
-
106
- 6. **所有页面都同等重要**
107
- - 在设计APP时,务必将所有页面视为同等重要,不分核心页面和次要页面。每个页面都应被清晰地列出,并详细描述其功能和交互方式。例如,在地址管理功能中,"地址管理页"是主要页面用于展示地址列表,"添加地址页"用于输入新地址,"编辑地址页"用于修改现有地址,这三个页面都应被视为同等重要。设计文档中需详细记录每个页面的具体功能和跳转逻辑,以确保设计的完整性和一致性。"
108
-
109
- ## 三、其余步骤
69
+ 1. 关于 ← 点击 → 跳到关于页
70
+ 2. 客服按钮 ← 点击 → 跳到客服对话页
71
+ ...
110
72
 
111
- 1. **校验业务闭环**
112
- - 把典型用户流程完整走一遍,确保每一步的"可点击元素→跳转目标"都已列出。
113
- - 如果缺少中间页,则回到上一层补充分析。
73
+ ## 三、闭环检验步骤
114
74
 
115
- 2. **补充通用 & 全局页面**
116
- - **启动/闪屏页**:分析"跳过"按钮或倒计时结束自动跳转。
117
- - **引导/新手教学页**:分析"下一步""跳过"按钮目标。
118
- - **404/全局错误页**:分析"重试""返回首页"按钮目标。
119
- - **深度链接承接页**:分析"先登录→再跳转目标"或"目标失效→404"逻辑。
75
+ 1. **校验业务闭环**
76
+ - 比如一个事物有前实施后的闭环页面,比如搜索页,那么搜索之后肯定有一个搜索结果页进行闭环。
120
77
 
121
- 3. **输出最终清单**
78
+ 2. **输出最终清单**
122
79
  - 输出页面总数,以及按照模块层级,将所有"页面名称"以分层列表形式展示。
123
- - 确保每个页面都已"点亮"所有交互元素,目标页面都在清单中出现。
124
-
125
- ## 四、再复盘检查一次所有页面是否有漏掉的页面
126
- - 将已经得出的页面列表复盘检查一次是否有缺漏
127
- - 比如进行思考是否完整齐全的APP,比如设置页里面有很多个子设置项,那么子设置项有需要新开页面的也必须列出来一个单独的页面
128
-
129
- > **方法论核心强调:**
130
- > **"逐页面元素扫描 → 标记可点 → 清晰列出跳转目标"** 是自顶向下、从宏到微的思路:
131
- > 1. 先列出大模块;
132
- > 2. 拆解出各模块的页面;
133
- > 3. 对每个页面做"元素→可点→跳转"逐项梳理;
134
- > 4. 通过多轮闭环校验,确保没有遗漏。
135
- > 5. 最后再复盘检查一次所有页面是否有漏掉的页面。
136
-
137
- 这样,每次绘制一个页面原型,都能生成一份完整的"元素交互跳转表",为UI设计环节提供明确参考。`;
80
+ - 确保每个页面都已"点亮"所有交互元素点击跳转的目标页面都在清单中出现。`;
81
+ fixPageListPromptTemplate = `你是APP产品经理专家,optimize_pageList_prompt得出的页面列表结果并不齐全,你必须再次进行分析,分析出更多所需页面,将已经得出的页面列表复盘检查一次是否有缺漏,必须是一个页面完整齐全的APP,举个例子:设置页里面有很多个子设置项,那么子设置项有需要新开页面的也必须列出来一个单独的页面。其他页面也是如此,也要进行分析是否有不齐全的页面路径漏掉了。`;
138
82
  productDesignPromptTemplate = `# 你是产品经理专家,需要分析用户需求描述,然后根据'通用需求文档模板',输出一份标准的**产品需求文档**,然后将生成的需求文档写入到当前工程目录下面的doc文件夹下面的XXXProductDesign.md,其中XXX是根据用户需求描述来命名。
139
83
 
140
84
  **重要说明**:
@@ -172,7 +116,7 @@ export class PromptOptimizer {
172
116
 
173
117
  ### 3. 页面列表(按展示顺序)
174
118
 
175
- 不需要自己分析功能模块和页面列表,你直接根据第一步列出所需页面列表\`optimize_pageList_prompt\`得出的所有模块和页面列表,先列出所有页面名称、所属模块、简要说明与跳转入口,按以下示例格式写出来。
119
+ 不需要自己分析功能模块和页面列表,你直接根据第二步列出所需页面列表\`optimize_fix_pageList_prompt\`得出的所有模块和页面列表,先列出所有页面名称、所属模块、简要说明与跳转入口,按以下示例格式写出来。
176
120
  。示例格式:
177
121
 
178
122
  \`\`\`
@@ -590,6 +534,22 @@ export default class HomePageData {
590
534
 
591
535
  # 用户需求描述
592
536
  ${userInput}`;
537
+ }
538
+ /**
539
+ * 修复页面列表提示词
540
+ * 注意:此方法用于对已有页面列表进行二次检查和修复,确保页面完整性
541
+ */
542
+ async optimizeFixPageListPrompt(userInput, existingPageList) {
543
+ return `${this.fixPageListPromptTemplate}
544
+
545
+ # 用户需求描述
546
+ ${userInput}
547
+
548
+ # 已有页面列表
549
+ ${existingPageList}
550
+
551
+ # 修复任务
552
+ 请对上述已有页面列表进行深度分析和修复,补充所有遗漏的页面,确保APP功能完整、页面齐全。`;
593
553
  }
594
554
  /**
595
555
  * 优化产品需求设计提示词
@@ -646,42 +606,51 @@ ${pageList}
646
606
  ${userInput}`;
647
607
  }
648
608
  /**
649
- * 复合工具:页面列表 + 产品设计
650
- * 先分析页面列表,然后基于页面列表生成产品需求文档
609
+ * 复合工具:页面列表 + 页面修复 + 产品设计
610
+ * 先分析页面列表,然后修复页面列表,最后基于修复后的页面列表生成产品需求文档
651
611
  */
652
612
  async optimizePageListAndProductDesignPrompt(userInput) {
653
613
  const pageListPrompt = await this.optimizePageListPrompt(userInput);
654
- const productDesignPrompt = await this.optimizeProductDesignPrompt(userInput);
614
+ const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput, '{{PAGE_LIST_RESULT}}');
615
+ // 注意:产品设计将在修复后的页面列表基础上进行,这里返回基础模板
616
+ const productDesignPrompt = await this.optimizeProductDesignPrompt(userInput, '{{FIXED_PAGE_LIST_RESULT}}');
655
617
  return {
656
618
  pageListPrompt,
619
+ fixPageListPrompt,
657
620
  productDesignPrompt
658
621
  };
659
622
  }
660
623
  /**
661
- * 复合工具:页面列表 + 产品设计 + UI设计
662
- * 完整的设计流程:页面列表分析 → 产品需求设计 → UI设计
624
+ * 复合工具:页面列表 + 页面修复 + 产品设计 + UI设计
625
+ * 完整的设计流程:页面列表分析 → 页面列表修复 → 产品需求设计 → UI设计
663
626
  */
664
627
  async optimizePageListProductDesignAndUIPrompt(userInput) {
665
628
  const pageListPrompt = await this.optimizePageListPrompt(userInput);
666
- const productDesignPrompt = await this.optimizeProductDesignPrompt(userInput);
667
- const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput);
629
+ const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput, '{{PAGE_LIST_RESULT}}');
630
+ // 注意:产品设计和UI设计将在修复后的页面列表基础上进行
631
+ const productDesignPrompt = await this.optimizeProductDesignPrompt(userInput, '{{FIXED_PAGE_LIST_RESULT}}');
632
+ const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput, '{{FIXED_PAGE_LIST_RESULT}}');
668
633
  return {
669
634
  pageListPrompt,
635
+ fixPageListPrompt,
670
636
  productDesignPrompt,
671
637
  uiDesignPrompt
672
638
  };
673
639
  }
674
640
  /**
675
- * 复合工具:页面列表 + 产品设计 + UI设计 + 代码编写
676
- * 完整的开发流程:页面列表分析 → 产品需求设计 → UI设计 → 代码开发
641
+ * 复合工具:页面列表 + 页面修复 + 产品设计 + UI设计 + 代码编写
642
+ * 完整的开发流程:页面列表分析 → 页面列表修复 → 产品需求设计 → UI设计 → 代码开发
677
643
  */
678
644
  async optimizeFullWorkflowWithProductDesignPrompt(userInput) {
679
645
  const pageListPrompt = await this.optimizePageListPrompt(userInput);
680
- const productDesignPrompt = await this.optimizeProductDesignPrompt(userInput);
681
- const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput);
646
+ const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput, '{{PAGE_LIST_RESULT}}');
647
+ // 注意:产品设计和UI设计将在修复后的页面列表基础上进行
648
+ const productDesignPrompt = await this.optimizeProductDesignPrompt(userInput, '{{FIXED_PAGE_LIST_RESULT}}');
649
+ const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput, '{{FIXED_PAGE_LIST_RESULT}}');
682
650
  const codePrompt = await this.optimizeCodePrompt(userInput);
683
651
  return {
684
652
  pageListPrompt,
653
+ fixPageListPrompt,
685
654
  productDesignPrompt,
686
655
  uiDesignPrompt,
687
656
  codePrompt
@@ -700,29 +669,33 @@ ${userInput}`;
700
669
  };
701
670
  }
702
671
  /**
703
- * 复合工具:列出所需页面列表 + UI设计
704
- * 先分析页面列表,然后基于页面列表进行UI设计
672
+ * 复合工具:页面列表 + 页面修复 + UI设计
673
+ * 先分析页面列表,然后修复页面列表,再基于修复后的页面列表进行UI设计
705
674
  */
706
675
  async optimizePageListAndUIDesignPrompt(userInput) {
707
676
  const pageListPrompt = await this.optimizePageListPrompt(userInput);
708
- // UI设计提示词需要等页面列表结果后再生成,这里先生成基础版本
709
- const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput);
677
+ const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput, '{{PAGE_LIST_RESULT}}');
678
+ // 注意:UI设计将在修复后的页面列表基础上进行
679
+ const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput, '{{FIXED_PAGE_LIST_RESULT}}');
710
680
  return {
711
681
  pageListPrompt,
682
+ fixPageListPrompt,
712
683
  uiDesignPrompt
713
684
  };
714
685
  }
715
686
  /**
716
- * 复合工具:列出所需页面列表 + UI设计 + 代码编写
717
- * 完整的工作流程:页面列表分析 → UI设计 → 代码开发
687
+ * 复合工具:页面列表 + 页面修复 + UI设计 + 代码编写
688
+ * 完整的工作流程:页面列表分析 → 页面列表修复 → UI设计 → 代码开发
718
689
  */
719
690
  async optimizeFullWorkflowPrompt(userInput) {
720
691
  const pageListPrompt = await this.optimizePageListPrompt(userInput);
721
- // UI设计提示词需要等页面列表结果后再生成,这里先生成基础版本
722
- const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput);
692
+ const fixPageListPrompt = await this.optimizeFixPageListPrompt(userInput, '{{PAGE_LIST_RESULT}}');
693
+ // 注意:UI设计将在修复后的页面列表基础上进行
694
+ const uiDesignPrompt = await this.optimizeUIDesignPrompt(userInput, '{{FIXED_PAGE_LIST_RESULT}}');
723
695
  const codePrompt = await this.optimizeCodePrompt(userInput);
724
696
  return {
725
697
  pageListPrompt,
698
+ fixPageListPrompt,
726
699
  uiDesignPrompt,
727
700
  codePrompt
728
701
  };
@@ -741,5 +714,19 @@ ${userInput}`;
741
714
  async generateUIDesignPromptWithPageList(userInput, pageListResult) {
742
715
  return await this.optimizeUIDesignPrompt(userInput, pageListResult);
743
716
  }
717
+ /**
718
+ * 基于修复后的页面列表结果生成产品需求设计提示词
719
+ * 此方法用于在获得修复后的页面列表结果后,生成包含完整页面列表信息的产品设计提示词
720
+ */
721
+ async generateProductDesignPromptWithFixedPageList(userInput, fixedPageListResult) {
722
+ return await this.optimizeProductDesignPrompt(userInput, fixedPageListResult);
723
+ }
724
+ /**
725
+ * 基于修复后的页面列表结果生成UI设计提示词
726
+ * 此方法用于在获得修复后的页面列表结果后,生成包含完整页面列表信息的UI设计提示词
727
+ */
728
+ async generateUIDesignPromptWithFixedPageList(userInput, fixedPageListResult) {
729
+ return await this.optimizeUIDesignPrompt(userInput, fixedPageListResult);
730
+ }
744
731
  }
745
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LW9wdGltaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9tcHQtb3B0aW1pemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQ1Qsc0JBQXNCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnREFrSEksQ0FBQztJQUU5QiwyQkFBMkIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQ0EySU4sQ0FBQztJQUV6QixrQkFBa0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWlHdEMsQ0FBQztJQUVnQixzQkFBc0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBK00zQyxDQUFDO0lBRUE7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLHNCQUFzQixDQUFDLFNBQWlCO1FBQzVDLE9BQU8s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LE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLGlDQUFpQztRQUNqQyxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwRSxPQUFPO1lBQ0wsY0FBYztZQUNkLGNBQWM7U0FDZixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxTQUFpQjtRQUNoRCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRSxpQ0FBaUM7UUFDakMsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFNUQsT0FBTztZQUNMLGNBQWM7WUFDZCxjQUFjO1lBQ2QsVUFBVTtTQUNYLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLFNBQWlCLEVBQUUsY0FBc0I7UUFDckYsT0FBTyxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxTQUFpQixFQUFFLGNBQXNCO1FBQ2hGLE9BQU8sTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnl0ZUZ1biBBSSBNQ1Ag5o+Q56S66K+N5LyY5YyW5ZmoXG4gKiBcbiAqIOmHjeimgeivtOaYju+8mlxuICogLSDmnKznsbvmj5Dkvpvlm5vkuKrni6znq4vnmoTkvJjljJblt6XlhbflkozlpI3lkIjosIPnlKjpk77lip/og71cbiAqIC0g5q+P5Liq5Y2V5LiA5bel5YW35aSE55CG5LiN5ZCM57G75Z6L55qE6ZyA5rGC77yM5aSN5ZCI5bel5YW35pSv5oyB5aSa5Liq5bel5YW355qE57uE5ZCI6LCD55SoXG4gKiBcbiAqIOWNleS4gOW3peWFt+S9v+eUqOaWueW8j++8mlxuICogMS4g6aG16Z2i5YiX6KGo5YiG5p6Q6ZyA5rGCIOKGkiDosIPnlKggb3B0aW1pemVQYWdlTGlzdFByb21wdCgpXG4gKiAyLiDkuqflk4HpnIDmsYLorr7orqHpnIDmsYIg4oaSIOiwg+eUqCBvcHRpbWl6ZVByb2R1Y3REZXNpZ25Qcm9tcHQoKVxuICogMy4gVUnorr7orqHpnIDmsYIg4oaSIOiwg+eUqCBvcHRpbWl6ZVVJRGVzaWduUHJvbXB0KCkgIFxuICogNC4g5Luj56CB5byA5Y+R6ZyA5rGCIOKGkiDosIPnlKggb3B0aW1pemVDb2RlUHJvbXB0KClcbiAqIFxuICog5aSN5ZCI5bel5YW35L2/55So5pa55byP77yaXG4gKiAxLiDpobXpnaLliJfooaggKyDkuqflk4Horr7orqEg4oaSIOiwg+eUqCBvcHRpbWl6ZVBhZ2VMaXN0QW5kUHJvZHVjdERlc2lnblByb21wdCgpXG4gKiAyLiDpobXpnaLliJfooaggKyDkuqflk4Horr7orqEgKyBVSeiuvuiuoSDihpIg6LCD55SoIG9wdGltaXplUGFnZUxpc3RQcm9kdWN0RGVzaWduQW5kVUlQcm9tcHQoKVxuICogMy4g6aG16Z2i5YiX6KGoICsg5Lqn5ZOB6K6+6K6hICsgVUnorr7orqEgKyDku6PnoIHnvJblhpkg4oaSIOiwg+eUqCBvcHRpbWl6ZUZ1bGxXb3JrZmxvd1dpdGhQcm9kdWN0RGVzaWduUHJvbXB0KClcbiAqIDQuIFVJ6K6+6K6hICsg5Luj56CB57yW5YaZIOKGkiDosIPnlKggb3B0aW1pemVVSURlc2lnbkFuZENvZGVQcm9tcHQoKVxuICogNS4g5YiX5Ye65omA6ZyA6aG16Z2i5YiX6KGoICsgVUnorr7orqEg4oaSIOiwg+eUqCBvcHRpbWl6ZVBhZ2VMaXN0QW5kVUlEZXNpZ25Qcm9tcHQoKVxuICogNi4g5YiX5Ye65omA6ZyA6aG16Z2i5YiX6KGoICsgVUnorr7orqEgKyDku6PnoIHnvJblhpkg4oaSIOiwg+eUqCBvcHRpbWl6ZUZ1bGxXb3JrZmxvd1Byb21wdCgpXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9tcHRPcHRpbWl6ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VMaXN0UHJvbXB0VGVtcGxhdGUgPSBgIyDkvaDmmK9BUFDkuqflk4Hnu4/nkIbkuJPlrrbvvIznjrDlnKjpnIDopoHkvaDmoLnmja7nlKjmiLfovpPlhaXnmoTpnIDmsYLmj4/ov7DvvIzpgbXlvqpcIuWIhuaekOinhOWImVwi5YiG5p6Q5Ye65omA6ZyA6KaB55qE5a6M5pW055qE6aG16Z2i5YiX6KGo44CCXG5cbiMjIOWIhuaekOinhOWImVxu5Lul5LiL5pa55rOV6K665YiG5Li65aSa5Liq5q2l6aqk77yM6YeN54K556qB5Ye6XCLpgJDpobXpnaLlhYPntKDihpLlj6/ngrnihpLot7PovaxcIuWIhuaekOaAnei3r+OAglxuXG4jIyDph43ngrnms6jmhI9cbi0g5byA5aeL6K6+6K6h5LmL5YmN6KaB5YWI5p+l55yL5b2T5YmN5bel56iL55uu5b2V5LiL55qEZG9jL3VpRGVzaWduL3VpRGVzaWduU3RhdGUubWTmlofku7bvvIjlpoLmnpzlrZjlnKjvvInvvIzkuobop6PkuYvliY3nmoTorr7orqHov5vluqblkoznirblhrXvvIzku6Xkvr/mm7Tlpb3lnLDnkIbop6PkuIrkuIvmloflkoznu6fnu63orr7orqHlt6XkvZzjgIJcbi0g5aaC5p6c5Y+R546wZG9jL3VpRGVzaWduU3RhdGUubWTmlofku7bkuI3lrZjlnKjvvIzliJnor7TmmI7kuYvliY3msqHmnInorr7orqHov4fvvIzpnIDopoHku47pm7blvIDlp4vorr7orqHjgIJcbi0g5aaC5p6c5Y+R546wZG9jL3VpRGVzaWduU3RhdGUubWTmlofku7blrZjlnKjvvIzliJnor7TmmI7kuYvliY3lt7Lnu4/orr7orqHov4fvvIzpnIDopoHnnIvkuIsg5piv5ZCm5ZCM5LiA5LiqQVBQ5oiW6ICF572R56uZ77yM5aaC5p6c5piv5ZCM5LiA5Liq6YKj5bCx5LiN6ZyA6KaB6YeN5paw5YiG5p6QcGFnZUxpc3TvvIzogIzkuJTmoLnmja7kuYvliY3nmoTorr7orqHov5vluqblkoznirblhrXvvIznu6fnu63orr7orqHlt6XkvZzvvIzlpoLmnpzkuI3mmK/lkIzkuIDkuKpBUFDmiJbogIXnvZHnq5nvvIzliJnpnIDopoHliKDpmaRkb2MvdWlEZXNpZ25TdGF0ZS5tZOaWh+S7tu+8jOeEtuWQjuS7jumbtuW8gOWni+iuvuiuoeOAglxuXG4jIyDkuIDjgIHmqKHlnZfmi4bop6PkuI7liJ3mraXliJflh7rpobXpnaLliJfooahcblxuMS4gKirmi4bop6PmoLjlv4PkuJrliqHmqKHlnZcqKiAgXG4gICAtIOWwhuaVtOS4qiBBUFAg5YiG5oiQ5a6M5pW05a6M5ZaE55qE6Iul5bmy5aSn5qih5Z2X77yM5L2g6ZyA6KaB6YCJ5Y+W5LiA5Liq5biC6Z2i5LiK5YW45Z6L55qE55So5oi36YeP5aSn55qE57G75Ly8QVBQ5p2l5YiG5p6Q5a6D55qE5omA5pyJ5Yqf6IO95qih5Z2X77yM54S25ZCO5YWo6YOo5YiX5Ye65p2l77yM57ud5bqm5LiN5YWB6K645ryP5o6J44CCIFxuICAgLSDovpPlh7rmiYDmnInlip/og73mqKHlnZfvvIzkuI3orrrmmK/lkKbmoLjlv4PvvIzkuI3orrrlpKflsI/vvIzpg73opoHliJflh7rmnaXjgIJcblxuMuOAgSoq5Yid5q2l5YiX5Ye66aG16Z2i5YiX6KGoKiogIFxuICAgLSDpgY3ljobkuIrkuIDmraXliIbmnpDliJflh7rmnaXnmoTmiYDmnInkuJrliqHmqKHlnZfvvIzlr7nmr4/kuIDkuKrkuJrliqHmqKHlnZfov5vooYznu4bliIbvvIzliJflh7ror6XkuJrliqHmqKHlnZfnmoTmiYDmnInpobXpnaLjgIJcblxuIyMg5LqM44CB5q+P5Liq6aG16Z2i55qEXCLlhYPntKDihpLlj6/ngrnihpLot7PovaxcIuWIhuaekOimgeeCuVxuXG4+ICoq5qC45b+D5oCd6Lev77yaKiogIFxuPiDpgY3ljobkuIrkuIDmraXliIbmnpDlh7rmnaXnmoTmr4/kuKrpobXpnaLvvIzlg4/miavpm7fkuIDmoLdcIueCueS6rlwi5a6D5LiK6Z2i5omA5pyJ5Y+v5Lqk5LqS5YWD57Sg77yM5rK/552AXCLlhYPntKDlj6/ngrnihpLot7Povaznm67moIdcIuS4gOi3r+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/oj5zljZXlm77moIcqKiAgXG5cbjMuICoq6YCQ5LiA5YiX5Ye6XCLngrnlh7vihpLot7Povaznm67moIdcIioqICBcbiAgIC0g5a+55q+P5Liq5Y+v54K55Ye75YWD57Sg77yM5piO56Gu54K55Ye75ZCO77yaICBcbiAgICAgMS4g6Lez6L2s5Yiw5ZOq5Liq6aG16Z2i5oiW5by556qX77yfICBcbiAgICAgMi4g5omA6ZyA5LiK5LiL5paHL+WPguaVsO+8nyAgXG4gICAgIDMuIOWmguaenOinpuWPkeeahOaYr1wi5pys6aG16Z2i5YaF6KGM5Li6XCLvvIjlpoLmipjlj6DjgIHliLfmlrDvvInvvIzkuZ/opoHmoIfmmI7jgIIgIFxuXG4gICAtICoq56S65L6LKirvvIjku6VcIuWVhuWTgeivpuaDhemhtVwi5Li65L6L77yJ77yaICBcbiAgICAg6aG16Z2i77ya5ZWG5ZOB6K+m5oOF6aG1ICBcbiAgICAg5YWD57Sg77yaICBcbiAgICAgICAxLiDov5Tlm57mjInpkq4g4oaQIOeCueWHuyDihpIg6L+U5Zue5p2l5rqQ6aG177yI5YiG57G7L+aQnOe0oi/mt7Hluqbpk77mjqXvvIkgIFxuICAgICAgIDIuIOaUtuiXj+WbvuaghyDihpAg54K55Ye7IOKGkiAgXG4gICAgICAgICAgICDigKIg5bey55m75b2V77ya5qCH6K6w5bey5pS26JeP5bm25o+Q56S6XCLlt7LmlLbol49cIiAgXG4gICAgICAgICAgICDigKIg5pyq55m75b2V77ya6Lez6L2s6Iez44CQ55m75b2V6aG16Z2i44CRICBcbiAgICAgICAzLiDliIbkuqvmjInpkq4g4oaQIOeCueWHuyDihpIg5ZSk6LW357O757uf5YiG5Lqr5by556qX77yI5peg5paw6aG16Z2i77yJICBcbiAgICAgICA0LiDop4TmoLzpgInmi6nljLrvvIjmr4/np43op4TmoLzmoIfnrb7vvIkgIFxuICAgICAgICAgICAg4oaQIOeCueWHuyDihpIg5pys6aG16Z2i5YaF5Yi35paw5Lu35qC8L+W6k+WtmCAgXG4gICAgICAgNS4g5pWw6YeP6YCJ5oup5ZmoIOKGkCDngrnlh7sg4oaSIOW8ueWHuuaVsOmHj+iwg+aVtOaOp+S7tu+8iOacrOmhtemdouWGhe+8iSAgXG4gICAgICAgNi4gXCLliqDlhaXotK3nianovaZcIuaMiemSriDihpAg54K55Ye7IOKGkiAgXG4gICAgICAgICAgICDigKIg5bey55m75b2VICYg5pyJ5bqT5a2Y77ya6LSt54mp6L2m5pWw6YePKzHvvIzlvLnmta7lsYJcIuW3suWKoOWFpei0reeJqei9pu+8jOWOu+afpeeci++8n1wiICBcbiAgICAgICAgICAgIOKAoiDmnKrnmbvlvZXvvJrot7Povazoh7PjgJDnmbvlvZXpobXpnaLjgJEgIFxuICAgICAgICAgICAg4oCiIOW6k+WtmOS4jei2s++8muW8ueeql+aPkOekulwi5bqT5a2Y5LiN6LazXCIgIFxuICAgICAgIDcuIFwi56uL5Y2z6LSt5LmwXCLmjInpkq4g4oaQIOeCueWHuyDihpIgIFxuICAgICAgICAgICAg4oCiIOW3sueZu+W9lSAmIOacieW6k+WtmO+8mui3s+i9rOiHs+OAkOehruiupOiuouWNlemhteOAke+8jOaQuuW4puivpeWVhuWTgeS/oeaBryAgXG4gICAgICAgICAgICDigKIg5pyq55m75b2V77ya6Lez6L2s6Iez44CQ55m75b2V6aG16Z2i44CRICBcbiAgICAgICAgICAgIOKAoiDlupPlrZjkuI3otrPvvJrlvLnnqpfmj5DnpLpcIuW6k+WtmOS4jei2s1wiICBcbiAgICAgICA4LiDor6bmg4XljLogVGFi77yaXCLllYblk4Hor6bmg4VcIuOAgVwi6K+E5Lu3XCLjgIFcIuW4uOingemXruetlFwiICBcbiAgICAgICAgICAgIOKGkCDngrnlh7sg4oaSIOWIh+aNouacrOmhtemdouWvueW6lOWMuuWfnyAgXG4gICAgICAgOS4g5a6i5pyN5oyJ6ZKu77yI5bqV6YOo77yJIOKGkCDngrnlh7sg4oaSIOi3s+i9rOiHs+OAkOWuouacjeWvueivnemhteOAkSAgXG5cbiAgICAg5byC5bi4L+i+ueeVjO+8miAgXG4gICAgICAgLSDlkI7nq6/mlbDmja7liqDovb3lpLHotKXvvJrlsZXnpLpcIuWKoOi9veWksei0pe+8jOeCueWHu+mHjeivlVwi5Y2g5L2N77ybICBcbiAgICAgICAgIOeCueWHu1wi6YeN6K+VXCIg4oaSIOmHjeaWsOWPkeivt+axgu+8myAgXG4gICAgICAgLSDllYblk4Hlt7LkuIvmnrbvvJrlhajpobXmj5DnpLpcIuivpeWVhuWTgeW3suS4i+aetlwi77yM5omA5pyJ6LSt54mp5oyJ6ZKu572u54Gw77ybICBcbiAgICAgICAtIFNlc3Npb24g6L+H5pyf77ya5by556qX5o+Q56S6XCLor7fph43mlrDnmbvlvZVcIiDihpIg6Lez6L2s44CQ55m75b2V6aG16Z2i44CRICBcblxuNC4gKirku6XmraRcIueCueS6rlwi5LiL5LiA5bGC6aG16Z2iKiogIFxuICAgLSDnu6fnu63lr7nmr4/kuKrnm67moIfpobXpnaLlgZrlkIzmoLfnmoRcIuWFg+e0oOKGkuWPr+eCueKGkui3s+i9rFwi5YiG5p6Q77yaICBcbiAgICAgLSAqKueZu+W9lemhtemdoioq77ya5YiX5Ye66LSm5Y+3L+Wvhueggei+k+WFpeahhuOAgeeZu+W9lS/liIfmjaLnmbvlvZXmlrnlvI/mjInpkq7jgIHms6jlhowv5b+Y6K6w5a+G56CBL+WNj+iurumTvuaOpe+8jOW5tuagh+azqOWQhOiHquWOu+WQkeOAgiAgXG4gICAgIC0gKirnoa7orqTorqLljZXpobUqKu+8muWIl+WHulwi6YCJ5oup5Zyw5Z2AXCJcIumAieaLqeS8mOaDoOWIuC/np6/liIZcIlwi6YCJ5oup6YWN6YCB5pa55byPXCJcIuaPkOS6pOiuouWNlVwi5oyJ6ZKu77yM5Y+K5a+55bqU6Lez6L2s44CCICBcbiAgICAgLSDigKblpoLmraTlvqrnjq/vvIznm7TliLDmiYDmnInpobXpnaLnmoTlj6/kuqTkupLlhYPntKDpg73ooqvliIbmnpDlrozmr5XjgIJcblxuNS4gKirkuI3mlq3lj5HnjrDlubbooaXlhYXpgZfmvI/pobXpnaIqKiAgXG4gICAtIOWcqOWIhuaekOi/h+eoi+S4re+8jOWmguaenOWHuueOsFwi5by556qXXCJcIua3seW6pumTvuaOpeaJv+aOpVwiXCLmnYPpmZDlvLnnqpdcIuetiemakOiXj+WFpeWPo++8jOmhu+WwhuWFtuW9k+S9nOeLrOeri1wi6aG16Z2iL+e7hOS7tlwi6KGl5YWF77yaICBcbiAgICAgLSDnvZHnu5zlvILluLjlvLnnqpfjgIHkvJror53ov4fmnJ/lvLnnqpfjgIHlupPlrZjkuI3otrPmj5DnpLrjgIHkvJjmg6DliLjlpLHmlYjmj5DnpLrnrYnjgIIgIFxuXG42LiAqKuaJgOaciemhtemdoumDveWQjOetiemHjeimgSoqICBcbiAgIC0g5Zyo6K6+6K6hQVBQ5pe277yM5Yqh5b+F5bCG5omA5pyJ6aG16Z2i6KeG5Li65ZCM562J6YeN6KaB77yM5LiN5YiG5qC45b+D6aG16Z2i5ZKM5qyh6KaB6aG16Z2i44CC5q+P5Liq6aG16Z2i6YO95bqU6KKr5riF5pmw5Zyw5YiX5Ye677yM5bm26K+m57uG5o+P6L+w5YW25Yqf6IO95ZKM5Lqk5LqS5pa55byP44CC5L6L5aaC77yM5Zyo5Zyw5Z2A566h55CG5Yqf6IO95Lit77yMXCLlnLDlnYDnrqHnkIbpobVcIuaYr+S4u+imgemhtemdoueUqOS6juWxleekuuWcsOWdgOWIl+ihqO+8jFwi5re75Yqg5Zyw5Z2A6aG1XCLnlKjkuo7ovpPlhaXmlrDlnLDlnYDvvIxcIue8lui+keWcsOWdgOmhtVwi55So5LqO5L+u5pS5546w5pyJ5Zyw5Z2A77yM6L+Z5LiJ5Liq6aG16Z2i6YO95bqU6KKr6KeG5Li65ZCM562J6YeN6KaB44CC6K6+6K6h5paH5qGj5Lit6ZyA6K+m57uG6K6w5b2V5q+P5Liq6aG16Z2i55qE5YW35L2T5Yqf6IO95ZKM6Lez6L2s6YC76L6R77yM5Lul56Gu5L+d6K6+6K6h55qE5a6M5pW05oCn5ZKM5LiA6Ie05oCn44CCXCJcblxuIyMg5LiJ44CB5YW25L2Z5q2l6aqkXG5cbjEuICoq5qCh6aqM5Lia5Yqh6Zet546vKipcbiAgIC0g5oqK5YW45Z6L55So5oi35rWB56iL5a6M5pW06LWw5LiA6YGN77yM56Gu5L+d5q+P5LiA5q2l55qEXCLlj6/ngrnlh7vlhYPntKDihpLot7Povaznm67moIdcIumDveW3suWIl+WHuuOAgiAgXG4gICAtIOWmguaenOe8uuWwkeS4remXtOmhte+8jOWImeWbnuWIsOS4iuS4gOWxguihpeWFheWIhuaekOOAglxuXG4yLiAqKuihpeWFhemAmueUqCAmIOWFqOWxgOmhtemdoioqICBcbiAgIC0gKirlkK/liqgv6Zeq5bGP6aG1KirvvJrliIbmnpBcIui3s+i/h1wi5oyJ6ZKu5oiW5YCS6K6h5pe257uT5p2f6Ieq5Yqo6Lez6L2s44CCICBcbiAgIC0gKirlvJXlr7wv5paw5omL5pWZ5a2m6aG1KirvvJrliIbmnpBcIuS4i+S4gOatpVwiXCLot7Pov4dcIuaMiemSruebruagh+OAgiAgXG4gICAtICoqNDA0L+WFqOWxgOmUmeivr+mhtSoq77ya5YiG5p6QXCLph43or5VcIlwi6L+U5Zue6aaW6aG1XCLmjInpkq7nm67moIfjgIIgIFxuICAgLSAqKua3seW6pumTvuaOpeaJv+aOpemhtSoq77ya5YiG5p6QXCLlhYjnmbvlvZXihpLlho3ot7Povaznm67moIdcIuaIllwi55uu5qCH5aSx5pWI4oaSNDA0XCLpgLvovpHjgIIgIFxuXG4zLiAqKui+k+WHuuacgOe7iOa4heWNlSoqICBcbiAgIC0g6L6T5Ye66aG16Z2i5oC75pWw77yM5Lul5Y+K5oyJ54Wn5qih5Z2X5bGC57qn77yM5bCG5omA5pyJXCLpobXpnaLlkI3np7BcIuS7peWIhuWxguWIl+ihqOW9ouW8j+WxleekuuOAgiAgXG4gICAtIOehruS/neavj+S4qumhtemdoumDveW3slwi54K55LquXCLmiYDmnInkuqTkupLlhYPntKDvvIznm67moIfpobXpnaLpg73lnKjmuIXljZXkuK3lh7rnjrDjgIIgIFxuICBcbiMjIOWbm+OAgeWGjeWkjeebmOajgOafpeS4gOasoeaJgOaciemhtemdouaYr+WQpuaciea8j+aOieeahOmhtemdolxuLSDlsIblt7Lnu4/lvpflh7rnmoTpobXpnaLliJfooajlpI3nm5jmo4Dmn6XkuIDmrKHmmK/lkKbmnInnvLrmvI9cbi0g5q+U5aaC6L+b6KGM5oCd6ICD5piv5ZCm5a6M5pW06b2Q5YWo55qEQVBQ77yM5q+U5aaC6K6+572u6aG16YeM6Z2i5pyJ5b6I5aSa5Liq5a2Q6K6+572u6aG577yM6YKj5LmI5a2Q6K6+572u6aG55pyJ6ZyA6KaB5paw5byA6aG16Z2i55qE5Lmf5b+F6aG75YiX5Ye65p2l5LiA5Liq5Y2V54us55qE6aG16Z2iXG5cbj4gKirmlrnms5XorrrmoLjlv4PlvLrosIPvvJoqKiAgXG4+ICoqXCLpgJDpobXpnaLlhYPntKDmiavmj48g4oaSIOagh+iusOWPr+eCuSDihpIg5riF5pmw5YiX5Ye66Lez6L2s55uu5qCHXCIqKiDmmK/oh6rpobblkJHkuIvjgIHku47lro/liLDlvq7nmoTmgJ3ot6/vvJogIFxuPiAxLiDlhYjliJflh7rlpKfmqKHlnZfvvJsgIFxuPiAyLiDmi4bop6Plh7rlkITmqKHlnZfnmoTpobXpnaLvvJsgIFxuPiAzLiDlr7nmr4/kuKrpobXpnaLlgZpcIuWFg+e0oOKGkuWPr+eCueKGkui3s+i9rFwi6YCQ6aG55qKz55CG77ybICBcbj4gNC4g6YCa6L+H5aSa6L2u6Zet546v5qCh6aqM77yM56Gu5L+d5rKh5pyJ6YGX5ryP44CCICBcbj4gNS4g5pyA5ZCO5YaN5aSN55uY5qOA5p+l5LiA5qyh5omA5pyJ6aG16Z2i5piv5ZCm5pyJ5ryP5o6J55qE6aG16Z2i44CCICBcblxu6L+Z5qC377yM5q+P5qyh57uY5Yi25LiA5Liq6aG16Z2i5Y6f5Z6L77yM6YO96IO955Sf5oiQ5LiA5Lu95a6M5pW055qEXCLlhYPntKDkuqTkupLot7PovazooahcIu+8jOS4ulVJ6K6+6K6h546v6IqC5o+Q5L6b5piO56Gu5Y+C6ICD44CCYDtcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3REZXNpZ25Qcm9tcHRUZW1wbGF0ZSA9IGAjIOS9oOaYr+S6p+WTgee7j+eQhuS4k+Wutu+8jOmcgOimgeWIhuaekOeUqOaIt+mcgOaxguaPj+i/sO+8jOeEtuWQjuagueaNrifpgJrnlKjpnIDmsYLmlofmoaPmqKHmnb8n77yM6L6T5Ye65LiA5Lu95qCH5YeG55qEKirkuqflk4HpnIDmsYLmlofmoaMqKu+8jOeEtuWQjuWwhueUn+aIkOeahOmcgOaxguaWh+aho+WGmeWFpeWIsOW9k+WJjeW3peeoi+ebruW9leS4i+mdoueahGRvY+aWh+S7tuWkueS4i+mdoueahFhYWFByb2R1Y3REZXNpZ24ubWTvvIzlhbbkuK1YWFjmmK/moLnmja7nlKjmiLfpnIDmsYLmj4/ov7DmnaXlkb3lkI3jgIJcblxuKirph43opoHor7TmmI4qKu+8mlxuLSDov5nmmK8qKue6r+S6p+WTgemcgOaxguaWh+ahoyoq77yM5LiT5rOo5LqO5Lqn5ZOB5Yqf6IO944CB5Lia5Yqh6YC76L6R44CB55So5oi35L2T6aqM6ZyA5rGCXG4tICoq5Lil56aB5YyF5ZCr5Lu75L2V5oqA5pyv5a6e546w5YaF5a65KirvvJrkuI3lvpfmtonlj4pVSeiuvuiuoeinhOiMg+OAgeS6pOS6kuinhOiMg+OAgeW8gOWPkeinhOiMg+OAgeaKgOacr+aetuaehOetiVxuLSAqKuS4peemgeWMheWQq+aKgOacr+mAieWei+WGheWuuSoq77ya5LiN5b6X5o+Q5Y+K5YmN56uv5qGG5p6244CB5ZCO56uv5oqA5pyv44CB5pWw5o2u5bqT6K6+6K6h562JXG4tICoq5Lil56aB55Sf5oiQ5oqA5pyv6KeE6IyD56ug6IqCKirvvJrmlofmoaPnu5PmnoTkuKXmoLzmjInnhafkuIvpnaLnmoTmqKHmnb/miafooYzvvIzkuI3lvpfoh6rooYzmt7vliqDmioDmnK/nm7jlhbPnq6DoioJcblxuIyMg6YCa55So6ZyA5rGC5paH5qGj5qih5p2/XG5cbi0tLVxuXG4jIyMgMS4g5paH5qGj6K+05piOXG5cbiogKirmlofmoaPnm67nmoQqKu+8mueugOimgeivtOaYjuacrOmcgOaxguaWh+aho+eahOeUqOmAlOWSjOmAgueUqOiMg+WbtOOAglxuKiAqKueJiOacrOiusOW9lSoq77yaXG5cbiAgXFxgXFxgXFxgXG4gIHwg54mI5pys5Y+3IHwg5pel5pyfICAgICAgIHwg5L2c6ICFIHwg5L+u5pS55YaF5a65IHxcbiAgfCAtLS0tLS0gfCAtLS0tLS0tLS0tIHwgLS0tLSB8IC0tLS0tLS0tIHxcbiAgfCAxLjAgICAgfCBZWVlZLU1NLUREIHwgWFggICB8IOWIneWni+eJiOacrCB8XG4gIFxcYFxcYFxcYFxuKiAqKuivu+iAheWvueixoSoq77ya5Lqn5ZOB57uP55CG44CB56CU5Y+R44CB5rWL6K+V44CB6K6+6K6h562J55u45YWz6KeS6Imy44CCXG4qICoq5pyv6K+t6K+05piOKirvvJrliJflh7rmlofmoaPkuK3lh7rnjrDnmoTkuJPkuJrmnK/or63miJbnvKnlhpnvvIzlubblgZrnroDopoHop6Pph4rjgIJcblxuLS0tXG5cbiMjIyAyLiDmlbTkvZPmpoLop4hcblxuMS4gKirpobnnm67og4zmma/kuI7lrprkvY0qKlxuXG4gICAqIOivtOaYjiBBUFAg6Z2i5ZCR55qE55uu5qCH55So5oi35ZKM5qC45b+D5Lu35YC844CB5Lia5Yqh5Zy65pmv44CCXG5cbi0tLVxuXG4jIyMgMy4g6aG16Z2i5YiX6KGo77yI5oyJ5bGV56S66aG65bqP77yJXG5cbuS4jemcgOimgeiHquW3seWIhuaekOWKn+iDveaooeWdl+WSjOmhtemdouWIl+ihqO+8jOS9oOebtOaOpeagueaNruesrOS4gOatpeWIl+WHuuaJgOmcgOmhtemdouWIl+ihqFxcYG9wdGltaXplX3BhZ2VMaXN0X3Byb21wdFxcYOW+l+WHuueahOaJgOacieaooeWdl+WSjOmhtemdouWIl+ihqO+8jOWFiOWIl+WHuuaJgOaciemhtemdouWQjeensOOAgeaJgOWxnuaooeWdl+OAgeeugOimgeivtOaYjuS4jui3s+i9rOWFpeWPo++8jOaMieS7peS4i+ekuuS+i+agvOW8j+WGmeWHuuadpeOAglxu44CC56S65L6L5qC85byP77yaXG5cblxcYFxcYFxcYFxufCDluo/lj7cgfCDpobXpnaLlkI3np7AgICAgIHwg5qih5Z2XICAgfCDnroDopoHor7TmmI4gICAgICAgICAgICAgICAgICAgICAgIHwg6Lez6L2s5YWl5Y+jICAgICAgICAgICAgICB8XG58IC0tLS0gfCAtLS0tLS0tLS0tLS0gfCAtLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gfFxufCAxICAgIHwg6Zeq5bGP6aG1ICAgICAgIHwg5YWs5YWxICAgfCDlkK/liqjml7blsZXnpLogTG9nby/liqjnlLvvvIzmjIHnu63oi6XlubLnp5IgfCBBUFAg5ZCv5YqoICAgICAgICAgICAgICAgfFxufCAyICAgIHwg5paw5omL5byV5a+86aG1ICAgfCDlhazlhbEgICB8IOmmluasoeWuieijheW8leWvvOeUqOaIt+S6huino+aguOW/g+WKn+iDvSAgICAgfCDpl6rlsY/pobXvvIjpppbmrKHmiZPlvIDvvIkgICAgIHxcbnwgMyAgICB8IOeZu+W9lemhtSAgfCDnlKjmiLcgICB8IOeUqOaIt+i+k+WFpei0puWPt+S/oeaBr+WujOaIkOiupOivgSAgICAgICAgIHwg6aaW5qyh5ZCv5Yqo5Yik5patL+aLpuaIqui3s+i9rCAgIHxcbnwgNCAgICB8IOmmlumhtSAgICAgICAgIHwg6aaW6aG1ICAgfCDlsZXnpLogQmFubmVy44CB5b+r5o235YWl5Y+j44CB5o6o6I2Q5YiX6KGoICAgfCDnmbvlvZUv5paw5omL5byV5a+85ZCO5oiW5ri45a6i5qih5byPIHxcbnwg4oCmICAgIHwg4oCmICAgICAgICAgICAgfCDigKYgICAgICB8IOKApiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg4oCmICAgICAgICAgICAgICAgICAgICAgfFxuXFxgXFxgXFxgXG5cbj4gKirms6jmhI8qKu+8mui3s+i9rOWFpeWPo+mcgOWIl+WHuuaJgOacieWPr+iDveinpuWPkeivpemhtemdoueahOadpea6kOOAglxuXG4tLS1cblxuIyMjIDQuIOmAkOmhteivpue7humcgOaxglxuXG7mjIlcIumhtemdouWIl+ihqFwi5Lit6aG65bqP77yM5L6d5qyh5bGV5byA5q+P5Liq6aG16Z2i55qE5Lul5LiL5YaF5a6544CC5q+P5Liq6aG16Z2i5LiA6IqC77yM5bu66K6u5L2/55So5LqM57qn5oiW5LiJ57qn5qCH6aKY44CCXG5cbiMjIyMgNC5YIOmhtemdouWQjeensO+8iOekuuS+i++8mumXquWxj+mhte+8iVxuXG4xLiAqKumhtemdouamgui/sCoqXG5cbiAgICog5Yqf6IO95a6a5L2N44CB5L2V5pe25bGV56S644CB54m55q6K6K+05piO44CCXG5cbjIuICoq6Lez6L2s5YWz57O7KipcblxuICAgKiAqKuadpea6kCoq77ya5YiX5Ye65omA5pyJ5Y+v6IO96Lez6L2s5Yiw5pys6aG155qE5YWl5Y+j5Zy65pmv44CCXG4gICAqICoq55uu5qCHKirvvJrmnKzpobXlrozmiJDlkI7ot7PovazliLDlk6rkupvpobXpnaLjgIHlnKjkvZXnp43mnaHku7bkuIvot7PovazjgIJcblxuMy4gKipVSSDnu4Tku7bmuIXljZUqKlxuXG4gICAqIOWIl+WHuuacrOmhteaJgOacieWPr+inhue7hOS7tuWPiuWFtuWxgue6p++8iOWmgu+8muiDjOaZr+OAgUxvZ2/jgIHmjInpkq7jgIHmlofmnKzjgIHliqjnlLvmjqfku7bnrYnvvInjgIJcbiAgICog5aaC5p6c5pyJ5aSa5Liq5Lqk5LqS5Yy65Z+f77yM5Y+v55So5a2Q5YiX6KGo5qCH5piO44CCXG5cbjQuICoq5Lqk5LqS6YC76L6RKipcblxuICAgKiDlr7nmr4/kuKogVUkg57uE5Lu255qE6KGM5Li65o+P6L+w77yaXG5cbiAgICAgKiDngrnlh7sv5ruR5YqoL+i+k+WFpS/nhKbngrnlj5jljJYg562J5Lqk5LqS5pa55byP5Lya6Kem5Y+R5LuA5LmI5Y+N6aaI44CCXG4gICAgICog5aaC5pyJ5YCS6K6h5pe244CB5Yqo55S75pKt5pS+562J5byC5q2l6KGM5Li677yM6KaB6K+05piO6Kem5Y+R5pe25py65ZKM57uT5p2f6YC76L6R44CCXG5cbjUuICoq5Lia5Yqh6YC76L6RKipcblxuICAgKiDpnIDopoHosIPnlKjnmoTlkI7nq6/mjqXlj6PvvIjmjqXlj6PlnLDlnYDjgIHor7fmsYLmlrnlvI/jgIHkuLvopoHor7fmsYLlj4LmlbDjgIHov5Tlm57lhbPplK7lrZfmrrXvvInjgIJcbiAgICog5pWw5o2u5qOA5p+lL+agoemqjOinhOWIme+8jOWMheaLrOWJjeerr+agoemqjOWSjOWQjuerr+i/lOWbnueahOmUmeivr+WkhOeQhuOAglxuICAgKiDmnKzlnLDlrZjlgqjkuI7nvJPlrZjvvJrlk6rkupvmlbDmja7kv53lrZjlnKjmnKzlnLDvvIhUb2tlbuOAgeeUqOaIt+WBj+WlveOAgeacrOWcsOagh+iusOetie+8ieOAglxuXG42LiAqKuaVsOaNruadpea6kOS4juabtOaWsCoqXG5cbiAgICog6Z2Z5oCB5pWw5o2u77ya5aaC5p6c6aG16Z2i5YaF5a655Li66Z2Z5oCB6LWE5rqQ77yM5YiX5Ye66LWE5rqQ5L2N572u77yI5aaC5pys5Zyw5Zu+54mH44CB6YWN572u5paH5Lu277yJ44CCXG4gICAqIOWKqOaAgeaVsOaNru+8muaOpeWPo+i/lOWbnuaVsOaNruWtl+auteivtOaYjuOAgeaVsOaNruWIt+aWsC/mi4nlj5bml7bmnLrvvIjlpoLkuIvmi4nliLfmlrDjgIHlrprml7bliLfmlrDvvInjgIJcblxuNy4gKirnibnmrornirbmgIEgJiDlvILluLjlpITnkIYqKlxuXG4gICAqICoq5Yqg6L295Lit5oCBKirvvJrlvZPor7fmsYLmnKrov5Tlm57ml7bnmoTlsZXnpLrmlYjmnpzvvIjovazlnIjliqjnlLvjgIHpqqjmnrblsY/nrYnvvInjgIJcbiAgICogKirnqbrnirbmgIEqKu+8muaXoOaVsOaNruaXtueahOWNoOS9jeWbvi/mlofmoYjjgIJcbiAgICogKirplJnor6/nirbmgIEqKu+8mue9kee7nOW8guW4uOOAgeaOpeWPo+Wksei0peOAgeaVsOaNruino+aekOW8guW4uOaXtueahOW8ueeql+aIluaPkOekuuaWh+ahiOOAglxuXG44LiAqKuS4juWFtuS7lumhtemdoueahOaVsOaNri/pgLvovpHlhbPns7sqKlxuXG4gICAqIOacrOmhteWmguS9leaOpeaUtuadpeiHquS4iuS4gOS4qumhtemdoueahOWPguaVsO+8iOWmgumAmui/h+i3r+eUseOAgUludGVudOOAgeWbnuiwg++8ieOAglxuICAgKiDmnKzpobXmk43kvZzmiJDlip/lkI7lpoLkvZXkvKDpgJLmlbDmja7nu5nkuIvkuIDkuKrpobXpnaLmiJblr7nlhajlsYDnirbmgIHov5vooYzmm7TmlrDjgIJcblxuOS4gKirln4vngrkqKlxuXG4gICAqIOWIl+WHuuacrOmhtemcgOWfi+eCueeahOS6i+S7tuWQjeensOWPiuinpuWPkeaXtuacuu+8iOWmglwi6aG16Z2i5bGV56S6XCLjgIFcIuaMiemSrueCueWHu1wi44CBXCLooajljZXmj5DkuqTmiJDlip8v5aSx6LSlXCLnrYnvvInjgIJcbiAgICog5Y+C5pWw6K+05piO77ya5LiK5oql5ZOq5Lqb5oyH5qCH77yI5oyJ6ZKuIElE44CB6aG16Z2i5YGc55WZ5pe26ZW/44CB6ZSZ6K+v56CB562J77yJ44CCXG5cbi0tLVxuXG4jIyMgNS4g5YWo5bGA6Lez6L2s5rWB56iLICYg5pWw5o2u5rWBXG5cbiogKirmloflrZfor7TmmI4qKu+8muWPr+WcqOacrOeroOeUqOaWh+Wtl+aWueW8j++8jOamguaLrOS4u+imgemhtemdoumXtOeahOi3s+i9rOmhuuW6j+S4juaVsOaNruS8oOmAkumAu+i+keOAguS+i+Wmgu+8mlxuXG4gIDEuIOmXquWxj+mhtSDihpLvvIjpppbmrKHmiZPlvIDvvInmlrDmiYvlvJXlr7zpobUg4oaSIOeZu+W9lS/pppbpobVcbiAgMi4g6aaW6aG1IOKGkiDmkJzntKLpobUg4oaSIOivpuaDhemhtSDihpIg6LSt54mp6L2mL+aUr+S7mOmhtVxuICAzLiDku7vmhI/pnIDopoHmjojmnYPpobXpnaIg4oaSIOiLpeacqueZu+W9leKGkiDnmbvlvZXpobUg4oaSIOi/lOWbnuWOn+mhtemdolxuXG4qICoq5YWo5bGA5YWx5Lqr5pWw5o2u6K+05piOKirvvJpcblxuICAqIOeUqOaIt+eZu+W9leaAge+8iGFjY2Vzc1Rva2Vu44CBcmVmcmVzaFRva2Vu77yJXG4gICog55So5oi35L+h5oGv77yIdXNlcklk44CB5pi156ew44CB5aS05YOP44CB5pys5Zyw5YGP5aW9562J77yJXG4gICog6LSt54mp6L2m54q25oCB44CB5pyq6K+75raI5oGv5pWw44CBQVBQIOmFjee9ruW8gOWFs+etiVxuXG4jIyMgNi4g6ZyA5rGC5paH5qGj5YaZ5YWlXG4tIOeUn+aIkOeahOmcgOaxguaWh+aho+WGmeWFpeWIsOW9k+WJjeW3peeoi+ebruW9leS4i+mdoueahGRvY+aWh+S7tuWkueS4i+mdoueahFhYWFByb2R1Y3REZXNpZ24ubWTvvIzlhbbkuK1YWFjmmK/moLnmja7nlKjmiLfpnIDmsYLmj4/ov7DmnaXlkb3lkI3jgIJcblxuKirph43opoHpmZDliLYqKu+8mlxuLSAqKuemgeatoueUn+aIkOaKgOacr+inhOiMgyoq77ya5LiN5b6X5YyF5ZCrVUnorr7orqHop4TojIPjgIHkuqTkupLop4TojIPjgIHlvIDlj5Hop4TojIPjgIHmioDmnK/mnrbmnoTnrYnmioDmnK/lrp7njrDnu4boioJcbi0gKirnpoHmraLnlJ/miJDlrp7njrDmlrnmoYgqKu+8muS4jeW+l+a2ieWPiuWJjeerr+ahhuaetumAieaLqeOAgeWQjuerr+aKgOacr+agiOOAgeaVsOaNruW6k+iuvuiuoeetieaKgOacr+mAieWei1xuLSAqKuS4k+azqOS6p+WTgemcgOaxgioq77ya5paH5qGj5bqU5LiT5rOo5LqO5Lqn5ZOB5Yqf6IO96ZyA5rGC44CB5Lia5Yqh6YC76L6R44CB55So5oi35L2T6aqM6ZyA5rGC562J5Lqn5ZOB5bGC6Z2i55qE5YaF5a65XG4tICoq6YG/5YWN5oqA5pyv57uG6IqCKirvvJrkuI3lvpfmj4/ov7DlhbfkvZPnmoTku6PnoIHlrp7njrDjgIHmjqXlj6Porr7orqHjgIHmlbDmja7nu5PmnoTnrYnlvIDlj5HlsYLpnaLnmoTlhoXlrrlcbi0gKirkuKXmoLzmjInnhafmqKHmnb/nu5PmnoQqKu+8muaWh+aho+W/hemhu+S4peagvOaMieeFp+S4iui/sDXkuKrnq6DoioLnu5PmnoTnvJblhpnvvIzkuI3lvpfoh6rooYzmt7vliqDlhbbku5bnq6DoioJcbi0gKirnq6DoioLlhoXlrrnpmZDliLYqKu+8muavj+S4queroOiKguWPquiDveWMheWQq+aooeadv+S4reaMh+WumueahOWGheWuue+8jOS4jeW+l+aJqeWxleWIsOaKgOacr+WunueOsOmihuWfn1xuXG4jIyMgNy4g5a6M5oiQ56Gu6K6kXG4tIOW9k+S6p+WTgemcgOaxguaWh+aho+WGmeWFpeWujOaIkOWQju+8jOW/hemhu+WRiuefpeeUqOaIt++8mlwi4pyFICoq5Lqn5ZOB6ZyA5rGC5paH5qGj5bey5a6M5oiQ77yBKiror7fmgqjlhYjmn6XnnIsgZG9jL1hYWFByb2R1Y3REZXNpZ24ubWQg5paH5Lu277yM5LuU57uG6ZiF6K+76ZyA5rGC5paH5qGj5YaF5a6577yM56Gu6K6k5piv5ZCm5pyJ6ZyA6KaB5L+u5pS555qE5Zyw5pa544CC5aaC5p6c5pyJ5L+u5pS55oSP6KeB77yM6K+35ZGK6K+J5oiR5YW35L2T55qE5L+u5pS56KaB5rGC44CC56Gu6K6k6ZyA5rGC5paH5qGj5peg6Zeu6aKY5oiW5L+u5pS55a6M5q+V5ZCO77yM6K+35ZGK6K+J5oiR5Y+v5Lul6L+b6KGM5LiL5LiA5q2l55qEVUnorr7orqHlt6XkvZzjgIJcIlxuLSAqKuKaoO+4jyDph43opoHvvJrov5nmmK/lt6XkvZzmtYHmmoLlgZzngrnvvIHlnKjnlKjmiLfmmI7noa7ooajnpLrnoa7orqTpnIDmsYLmlofmoaPml6Dpl67popjlubbopoHmsYLnu6fnu63ov5vooYxVSeiuvuiuoeS5i+WJje+8jOe7neWvueS4jeiDveiHquWKqOi/m+ihjOS4i+S4gOatpeW3peS9nOOAgioqXG4tICoq4pqg77iPIOWmguaenOezu+e7n+iHquWKqOe7p+e7reaJp+ihjOS6hlVJ6K6+6K6h77yM6K+05piO5bel5L2c5rWB6YWN572u5pyJ6Zeu6aKY77yM6ZyA6KaB5YGc5q2i6Ieq5Yqo5omn6KGM44CCKipcbi0g5Zyo55So5oi356Gu6K6k6ZyA5rGC5paH5qGj5peg6Zeu6aKY5oiW5a6M5oiQ5L+u5pS55ZCO77yM5omN6IO957un57ut6L+b6KGM5ZCO57ut55qEVUnorr7orqHmiJbku6PnoIHlvIDlj5Hlt6XkvZzjgIJgO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29kZVByb21wdFRlbXBsYXRlID0gYCMg5L2g5pivdHlwZXNjcmlwdOS7o+eggeS4k+Wutu+8jOagueaNrifop4TliJkn44CBJ+S+i+WtkCflkoznlKjmiLfovpPlhaXnmoTpnIDmsYLmj4/ov7DvvIzlrozmiJDku6PnoIHlvIDlj5FcblxuIyMg6YeN6KaB6K+05piOXG4tIOWcqOW8gOWni+S7o+eggeW8gOWPkeS5i+WJje+8jOW/hemhu+WFiOafpeeci+W9k+WJjeW3peeoi+ebruW9leS4i+eahGRvY+aWh+S7tuWkueS4reeahOS6p+WTgemcgOaxguaWh+aho++8iOWmglhYWFByb2R1Y3REZXNpZ24ubWTvvInvvIzkuKXmoLzmjInnhafpnIDmsYLmlofmoaPkuK3nmoTpobXpnaLlrprkuYnjgIHkuqTkupLpgLvovpHjgIHkuJrliqHpgLvovpHov5vooYzku6PnoIHlvIDlj5HjgIJcbi0g5aaC5p6c5Y+R546w6ZyA5rGC5paH5qGj5LiN5a2Y5Zyo77yM5YiZ5oyJ54Wn55So5oi36ZyA5rGC5o+P6L+w6L+b6KGM5byA5Y+R44CC5aaC5p6c6ZyA5rGC5paH5qGj5a2Y5Zyo77yM5YiZ5Lil5qC85oyJ54Wn6ZyA5rGC5paH5qGj55qE6KeE6IyD6L+b6KGM5byA5Y+R77yM5LiN5b6X5YGP56a76ZyA5rGC5paH5qGj55qE5a6a5LmJ44CCXG5cbiMjIOmhueebruahhuaetuaPj+i/sFxuLSDmlbTkuKrpobnnm67moYbmnrbliIbkuLrnqIvluo/lhaXlj6NBcHBsaWNhdGlvbi50c+OAgeeoi+W6j+WFqOWxgOmdmeaAgeWPmOmHj1N0YXRpY0RhdGEudHPjgIHmiYDmnInpobXpnaJwYWdl5paH5Lu25aS544CBVUnnu4Tku7blupN1aWxpYuaWh+S7tuWkueOAgeWQjuerr+aOpeWPo0FsbEJhY2tFbmRBcGkudHPjgIHllK/kuIDnmoTog73lipvmlrnms5VBbGxGdW5jdGlvbi50c+OAglxuLSDov5nmmK/kuIDkuKrmlrDlnovlvIDlj5HmoYbmnrbvvIxVSeeVjOmdouW3sue7j+S9v+eUqOWPr+inhuWMluW3peWFt+eUn+aIkOS6huaJgOacieeahOmdmeaAgeeahFVJ6aG16Z2i5LqG77yM54S25ZCO5L2g6ZyA6KaB5L2/55SodHPku6PnoIHlvIDlj5HkuJrliqHpgLvovpHkuI5VSeS6pOS6kumAu+i+ke+8jOWboOatpOe8luWGmXRz5Luj56CB5Y+q6ZyA6KaB5oyJ54Wn55So5oi36ZyA5rGC5o+P6L+w5a6M5oiQ5Lia5Yqh6YC76L6R5LiOVUnkuqTkupLnmoTlvIDlj5HjgIJcblxuIyMg6KeE5YiZ77yaXG4x44CBVUnnlYzpnaLlt7Lnu4/lvIDlj5Hlrozmr5XvvIzkuI3pnIDopoHlop7liKDmlLnku7vkvZXpnZnmgIFVSeeVjOmdouOAglxuMuOAgeS9oOWPqumcgOimgeaMieeFp+eUqOaIt+mcgOaxguaPj+i/sOS9v+eUqHRz5Luj56CB5a6M5oiQ5Lia5Yqh6YC76L6R5LiOVUnkuqTkupLnmoTlvIDlj5FcbjPjgIHmr4/kuIDmrKHlvIDlp4vnvJblhpnku6PnoIHml7bvvIzlv4XpobvlhYjpmIXor7vlvZPliY3lt6XnqIvnm67lvZXkuIvnmoRkb2MvY29kZVN0YXRlLm1k5paH5Lu277yI5aaC5p6c5a2Y5Zyo77yJ77yM5LqG6Kej5b2T5YmN55qE5Luj56CB5byA5Y+R6L+b5bqm5ZKM54q25Ya177yM5Lul5L6/5pu05aW95Zyw55CG6Kej5LiK5LiL5paH5ZKM57un57ut5byA5Y+R5bel5L2c44CCXG4044CB5q+P5LiA5qyh5a6M5oiQ5LiA5Liq5Yqf6IO95qih5Z2X5oiW6aG16Z2i55qE5Luj56CB57yW5YaZ5ZCO77yM5bCG5b2T5YmN6L+b5bqm5ZKM5b2T5YmN54q25Ya155SoMjAw5a2X5oC757uT5bm25YaZ5YWlZG9jL2NvZGVTdGF0ZS5tZOaWh+S7tuS4reOAguaAu+e7k+WGheWuueW6lOWMheaLrO+8muW3suWujOaIkOeahOWKn+iDveaooeWdl+WSjOmhtemdouOAgeW9k+WJjeato+WcqOi/m+ihjOeahOW8gOWPkeW3peS9nOOAgemBh+WIsOeahOaKgOacr+mXrumimOaIluazqOaEj+S6i+mhueOAgeS4i+S4gOatpeeahOW8gOWPkeiuoeWIkuetieOAgui/meagt+WPr+S7peiuqUFJ5aSn5qih5Z6L5Zyo5ZCO57ut5bel5L2c5Lit5pu05Yqg5LqG6Kej5b2T5YmN54q25oCB5LiK5LiL5paH77yM5LuO6ICM5omn6KGM5b6X5pu05Yqg5YeG56Gu44CCXG4144CB6K+35Lil5qC85oyJ54Wn5ZSv5LiA55qE6IO95Yqb5pa55rOVQWxsRnVuY3Rpb24udHPvvIzkuI3opoHmlrDlop7jgIHliKDpmaTmiJbkv67mlLnku7vkvZVBbGxGdW5jdGlvbuaOpeWPo+WjsOaYju+8m+S5n+S4jeimgeiwg+eUqOWFtuS7luacquWcqEFsbEZ1bmN0aW9u5Lit5Ye6546w55qE5Ye95pWw5oiW5qih5Z2XXG4244CB5omA5pyJ5ZCO56uvQVBJ6LCD55So5b+F6aG75L2/55SoQWxsQmFja0VuZEFwaeexu+S4reWumuS5ieeahOaWueazle+8jOS4jeWFgeiuuOS9v+eUqOacquWcqEFsbEJhY2tFbmRBcGnkuK3lrprkuYnnmoTlkI7nq69BUEnjgIJcbjfjgIFVSeeVjOmdouOAgVVJ6buY6K6k5pWw5o2u44CBVUnmoLflvI/lt7Lnu4/lhajpg6jnlJ/miJDlpb3nmoTkuobvvIzkvaDkuI3og73lnKhpbml0Vmlld+aWueazlemHjOmdouaTheiHqua3u+WKoOS4gOS6m3ZpZXfnmoRVSeagt+W8j+aIluWxnuaAp+etieWIneWni+WMlu+8jOmZpOmdnueUqOaIt+mcgOaxguaPj+i/sOaYjuehruaMh+WHuumcgOimgeabtOaUueWTquS6m+agt+W8j+aIluWxnuaAp+OAglxuOOOAgeWtl+espuS4suimgeS7peWNleW8leWPt+adpeWGme+8jOWmgu+8mifmiJHnmoQn44CCXG4544CB5Lu75L2V5pa55rOV5Ye95pWw5a6a5LmJ77yM5LiN5b6X5L2/55SoYXN5bmPlkoxQcm9taXNl77yM5omA5pyJ5byC5q2l5pON5L2c5b+F6aG75L2/55So566t5aS05Ye95pWw44CCXG4xMOOAgeaJgOaciVBhZ2XnmoTlrZDnsbvvvIzpg73lhYHorrjmt7vliqDmnoTpgKDlh73mlbDlkozmnoTpgKDlh73mlbDnmoTlj4LmlbDvvIzov5nkupvlj4LmlbDlsLHnlKjmnaXpobXpnaLot7Povazml7bpobXpnaLkuYvpl7TkvKDpgJLmlbDmja7kvb/nlKjvvIzmr5TlpoLvvJrllYblk4HliJfooajpobVQcm9qZWN0TGlzdFBhZ2Xot7PliLDllYblk4Hor6bmg4XpobVQcm9qZWN0RGV0YWlsUGFnZe+8jOmCo+S5iFByb2plY3RMaXN0UGFnZeW6lOivpeimgeS8oOe7mVByb2plY3REZXRhaWxQYWdl5LiA5Liq5Y+C5pWw77yacHJvZHVjdElE44CC5omA5Lul77yMUHJvamVjdERldGFpbFBhZ2XnmoTpobXpnaLlj4LmlbDlo7DmmI7lkozmnoTpgKDlh73mlbDlupTor6XmmK/ov5nmoLflhpnvvJpwcml2YXRlIHByb2R1Y3RJRDogc3RyaW5nXG5cblx0Y29uc3RydWN0b3IocHJvZHVjdElEOiBzdHJpbmcpIHtcblx0XHRzdXBlcigpXG5cdFx0dGhpcy5wcm9kdWN0SUQgPSBwcm9kdWN0SURcblx0feOAglxuMTHjgIFWaWV355u45YWz5Y+Y6YeP5b+F6aG75ZyoeHh4UGFnZeexu+W8gOWni+aXtuWjsOaYju+8jOW/hemhu+WjsOaYjuWFt+S9k+eahFZpZXfnsbvlnovlpoLvvJpJbnB1dFZpZXfvvIzogIzkuI3mmK/nm7TmjqXlo7DmmI7nsbvlnovkuLpCYXNlVmlld++8jOaJgOaciVZpZXflv4XpobtmaW5kVmlld0J5SUTliJ3lp4vljJbvvIzlpoLvvJpzYXZlQnV0dG9uOiBCdXR0b25WaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ3NhdmVCdXR0b24nKSBhcyBCdXR0b25WaWV344CC6L+Z6YeM55qEZmluZFZpZXdCeUlE5YW25LitaWTlj4LmlbDmmK/lnKjor6XpobXpnaLnmoRodG1s5paH5Lu26YeM6Z2i6I635Y+W5Yiw55qEaWTlgLzjgIJcbjEy44CB5ZON5bqU5byP5byV55SocmVm55qE5L2/55So77ya57G75Z6LdnVlM+eahHJlZu+8jOWPr+S7peWwhuS4gOS4quWAvOWPmOaIkOWTjeW6lOW8j+eahO+8jOS7juiAjOWcqOivpeWAvOWPkeeUn+WPmOWMluaXtu+8jOiHquWKqOinpuWPkeebuOWFs+eVjOmdoueahOabtOaWsOOAglxuMTPjgIFjb21wdXRlZOeahOS9v+eUqO+8muexu+Wei3Z1ZTPnmoRjb21wdXRlZO+8jOW9k+S9oOmcgOimgeagueaNruS4gOS4quaIluWkmuS4quWTjeW6lOW8j+a6kChyZWYp6K6h566X5Ye65LiA5Liq5paw55qE5YC85pe277yM5bCx55SoIGNvbXB1dGVkXG4xNOOAgeWmguaenOaYr+WkmuS4qumhtemdouWFseeUqOeahOaVsOaNruWPmOmHj++8jOWPr+S7peiAg+iZkeWjsOaYjuS4uuWFqOWxgOmdmeaAgeWPmOmHj+OAglxuMTXjgIHlhajlsYDpnZnmgIHlj5jph4/lnKjlhbPpl61BUFDmiJbogIXnvZHpobXlkI7kvJrmuIXnkIbmjonnmoTvvIzmiYDku6XkvaDopoHmgJ3ogIPmuIXmpZrlk6rkupvmlbDmja7lj5jph4/pnIDopoHmjIHkuYXljJblgqjlrZjvvIzlk6rkupvmmK/lhajlsYDpnZnmgIHlj5jph4/vvIzmjIHkuYXljJbmjqXlj6PvvJpzYXZlRGF0YWJhc2VYeHjlkoxnZXREYXRhYmFzZURhdGFYeHjvvIzmr5TlpoLmmK/lkKblt7Lnu4/lvLnlh7rov4flub/lkYrlvLnmoYbvvIzov5nkuKrlupTor6XmjIHkuYXljJblgqjlrZjjgIJcbjE244CB5omA5pyJ55qE572R57uc5oum5oiq55qE5YWo5bGA57uf5LiA5aSE55CG6ZyA6KaB5ZyoQXBwbGljYXRpb27kuK3nmoRvbkdsb2JhbE5ldFN1Y2Nlc3NJbnRlcmNlcHQo6IGU572R5oiQ5Yqf5ZCO77yM5ZCO56uv5Lia5Yqh5q2j56Gu5LiO6ZSZ6K+v6YO95Lya5Zue6LCD5Yiw6L+Z6YeM77yM5omA5Lul5Zyo6L+Z6YeM5Y+v57uf5LiA5aSE55CG5Lia5Yqh6ZSZ6K+v56CBKeaIlm9uR2xvYmFsTmV0RmFpbEludGVyY2VwdCjnvZHnu5zkuI3pgJrvvIzov57mjqXlpLHotKXmg4XlhrXkvJrlm57osIPliLDov5nph4wp6YeM6Z2i5aSE55CG44CCXG4xN+OAgemhtemdoui3s+i9rOS9v+eUqEFsbEZ1bmN0aW9uLm5hdmlnYXRlVG/lrp7njrDvvIxuYXZpZ2F0ZVRv5Lyg5YWlUGFnZeeahOWtkOexu+Wvueixoe+8jOWmgu+8mkFsbEZ1bmN0aW9uLm5hdmlnYXRlVG8obmV3IFByb2R1Y3RQYWdlKHRoaXMucHJvZHVjdElEKSnjgIJcbjE444CB6aG16Z2i5YaF55qE572R57uc6K+35rGC5Lia5Yqh5aSE55CG5LiN5b6X5YaZ5ZyoQXBwbGljYXRpb27nmoRvbkdsb2JhbE5ldFN1Y2Nlc3NJbnRlcmNlcHTph4zpnaLjgIJcbjE544CB5a2X56ym5Liy5LiN5b6X55u05o6l6L+b6KGMYm9vbGVhbui/kOeul+eEtuWQjui1i+WAvOe7mWJvb2xlYW7nsbvlnovnmoTlj5jph4/vvIzpnIDopoHlnKjlrZfnrKbkuLLliY3pnaLmt7vliqDkuKTkuKrpnZ7ov5DnrpfvvJohIeOAguavlOWmguato+ehrueahOWGmeazle+8mmNvbnN0IGlzQWRkID0gISF0aGlzLmlucHV0Vmlldy50ZXh0ICYmIGlzTmV3XG4yMOOAgeWmgueUqOaIt+aPj+i/sOayoeacieaYjuehruivtOaYjumcgOimgXRvYXN05o+Q56S677yM5L2g5LiN5b6X5pOF6Ieq6L+b6KGMVG9hc3TjgIJcbjIx44CB5bu25pe25omn6KGMQWxsRnVuY3Rpb24uc2V0VGltZW91dOezu+e7n+S8muiHquWKqOa4heeQhnRpbWVvdXTvvIzku6PnoIHkuIrnu53lr7nkuI3og73ov5vooYxjbGVhVGltZW91dOetieexu+S8vOaTjeS9nO+8jOWboOatpHNldFRpbWVvdXTkuZ/kuI3pnIDopoHlo7DmmI7lj5jph4/ljrvmjqXmlLZzZXRUaW1lb3V06L+U5Zue55qE5byV55So44CCXG4yMuOAgeaJgOacieS7o+eggeS4jeW+l+S9v+eUqGludGVyZmFjZe+8jOaVsOaNruWunuS9k2VudGl0ee+8jOW/hemhu+S9v+eUqGNsYXNz5a6a5LmJ77yM5LiN5b6X5L2/55SoaW50ZXJmYWNl77yM5L2/55So5LmL5YmN6ZyA6KaBbmV35a6e5L6L5YyWXG4yM+OAgeavj+S4gOS4qumhtemdoijlpoJsb2dpblBhZ2Up5bu66K6u5ZyocGFnZeaWh+S7tuWkueS4i+mdouWIm+W7uuS4gOS4qumhtemdouaWh+S7tuWkuSjlpoJsb2dpbinvvIznhLblkI7pobXpnaLnmoR0c+aWh+S7tijlpoJsb2dpblBhZ2UudHMp5Yib5bu65Zyo6aG16Z2i5paH5Lu25aS55LiL6Z2i77yM6aG16Z2i5paH5Lu25aS55LiL6L+Y6ZyA5Yib5bu65LiA5Liq6aG16Z2i5pWw5o2udHPmlofku7Yo5aaCbG9naW5QYWdlRGF0YS50cynvvIzov5nmoLflpoJsb2dpblBhZ2XotJ/otKPkuJrliqHpgLvovpHlkozkuqTkupLpgLvovpHvvIzlpoJsb2dpblBhZ2VEYXRh6LSf6LSj5pWw5o2u5aOw5piO5a6a5LmJ44CB5Yid5aeL5YyW5LiO566h55CG562J44CCXG4yNOOAgemhtemdouaWh+S7tuWkueS4i+mdoueahOmhtemdomh0bWwo5aaCbG9naW5QYWdlVmlldy5odG1sKe+8jOi/meaYr+WPr+inhuWMluW3sue7j+eUn+aIkOeahFVJ55WM6Z2i55qE6IqC54K55pig5bCE77yM6K+l5paH5Lu25Y+q5piv55So5LqO5L2g5pu05Yqg55CG6Kej6K+l6aG16Z2i55qEVUnnu5PmnoTlkoznu4Tku7blkb3lkI3ogIzorr7nq4vnmoTvvIzor6Xmlofku7bkuI3lj4LkuI7nvJbor5HvvIzku4Xku4XmmK/kv6Hmga/mlofmoaPmj5DnpLrkvZznlKjvvIzlm6DmraTkuI3lj6/ku6Xkv67mlLnov5nkuKpodG1s5paH5Lu244CCXG4yNeOAgeWPque7meivpemhtemdouS9v+eUqOeahGVudGl0eemcgOimgeW7uueri+WcqOivpemhtemdouaWh+S7tuWkueS4i+mdoueahGVudGl0eeaWh+S7tuWkueS4i+mdouOAglxuMjbjgIFsaWLmlofku7blpLnmmK/miYDmnIlVSee7hOS7tuWSjOiDveWKm+aWueazleeahOWumuS5ieWjsOaYju+8jOW6leWxguahhuaetuW3suazqOWFpeWunueOsOWFt+S9k+mAu+i+ke+8jOWboOatpOS9oOS4jemcgOimgeS5n+S4jeWFgeiuuOWinuWIoOaUuWxpYuaWh+S7tuWkuemHjOmdoueahOS7o+eggeOAglxuMjfjgIHlvZPmiYDmnInnlKjmiLfpnIDmsYLnmoTlip/og73pg73lt7LlrozmiJDlvIDlj5HlkI7vvIzpnIDopoHliKDpmaRkb2MvY29kZVN0YXRlLm1k5ZKMZG9jL3VpRGVzaWduU3RhdGUubWTov5nkuKTkuKrnirbmgIHmlofku7bvvIzku6XlhY3lvbHlk43nlKjmiLfkuIvkuIDmrKHmlrDnmoTpnIDmsYLlrp7njrDjgIJcblxuIyMg5L6L5a2Q77yaXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIb21lUGFnZSBleHRlbmRzIFBhZ2Uge1xuICAgIC8vIOaVsOaNruWvueixoeWunuS+i+WjsOaYjlxuICAgIHByaXZhdGUgaG9tZVBhZ2VEYXRhOiBIb21lUGFnZURhdGEgPSBuZXcgSG9tZVBhZ2VEYXRhKClcbiAgICAvLyDop4blm77lr7nosaHlrp7kvovlo7DmmI5cbiAgICBwcml2YXRlIHNhdmVCdXR0b246IEJ1dHRvblZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJRCgnc2F2ZUJ1dHRvbicpIGFzIEJ1dHRvblZpZXdcbiAgICBwcml2YXRlIHRpdGxlVGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ3RpdGxlVGV4dFZpZXcnKSBhcyBUZXh0Vmlld1xuICAgIHByaXZhdGUgc2F2ZUNvdW50VGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ3NhdmVDb3VudFRleHRWaWV3JykgYXMgVGV4dFZpZXdcbiAgICBwcml2YXRlIGFsbFNhdmVDb3VudFRleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCdhbGxTYXZlQ291bnRUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgcHJpdmF0ZSBzYXZlVGlwc1RleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCdzYXZlVGlwc1RleHRWaWV3JykgYXMgVGV4dFZpZXdcbiAgICAvLyByZWbmlbDmja7lr7nosaHlvJXnlKjlo7DmmI5cbiAgICBwcml2YXRlIHNhdmVDb3VudFJlZiA9IHJlZjxudW1iZXI+KHRoaXMuaG9tZVBhZ2VEYXRhLnNhdmVDb3VudClcbiAgICBwcml2YXRlIGFsbFNhdmVDb3VudFJlZiA9IHJlZjxudW1iZXI+KDApXG4gICAgLy8g5pmu6YCa5Y+Y6YeP5aOw5piOXG4gICAgcHJpdmF0ZSBzYXZlVGlwcyA9ICcnXG5cbiAgICBwcm90ZWN0ZWQgb25QYWdlQ3JlYXRlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5vblBhZ2VDcmVhdGUoKVxuICAgICAgICB0aGlzLmluaXREYXRhKClcbiAgICAgICAgdGhpcy5pbml0VmlldygpXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RGF0YSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYXZlVGlwcyA9IHRoaXMuc2F2ZUNvdW50UmVmLnZhbHVlID4gNSA/ICfkv53lrZjmiJDlip8nIDogJ+S/neWtmOWksei0pSdcbiAgICAgICAgdGhpcy5hbGxTYXZlQ291bnRSZWYgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICBsZXQgb3RoZXJDb3VudCA9IDJcbiAgICAgICAgICAgIG90aGVyQ291bnQgKz0gdGhpcy5zYXZlQ291bnRSZWYudmFsdWVcbiAgICAgICAgICAgIGlmIChvdGhlckNvdW50ID4gNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhvbWVQYWdlRGF0YS5zYXZlQ291bnQgKyA1XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhvbWVQYWdlRGF0YS5zYXZlQ291bnQgKyAxMFxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFZpZXcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2F2ZUNvdW50VGV4dFZpZXcudGV4dCA9IHRoaXMuc2F2ZUNvdW50UmVmLnZhbHVlICsgJ+S4qidcbiAgICAgICAgdGhpcy5hbGxTYXZlQ291bnRUZXh0Vmlldy50ZXh0ID0gdGhpcy5hbGxTYXZlQ291bnRSZWYudmFsdWUgKyAn5LiqJ1xuICAgICAgICB0aGlzLnNhdmVCdXR0b24ub25DbGljayA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUNvdW50UmVmLnZhbHVlKytcbiAgICAgICAgICAgIHRoaXMuaG9tZVBhZ2VEYXRhLnRpdGxlID0gJ0hvbWUgUGFnZSdcbiAgICAgICAgICAgIHRoaXMudGl0bGVUZXh0Vmlldy50ZXh0ID0gdGhpcy5ob21lUGFnZURhdGEudGl0bGVcbiAgICAgICAgICAgIHRoaXMuc2F2ZVRpcHNUZXh0Vmlldy50ZXh0ID0gdGhpcy5zYXZlVGlwc1xuICAgICAgICAgICAgQWxsRnVuY3Rpb24uc2F2ZURhdGFiYXNlTnVtYmVyKCdzYXZlQ291bnQnLCB0aGlzLnNhdmVDb3VudFJlZi52YWx1ZSlcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIb21lUGFnZURhdGEge1xuICAgIHB1YmxpYyB0aXRsZTogc3RyaW5nID0gJydcbiAgICBwdWJsaWMgc2F2ZUNvdW50OiBudW1iZXIgPSAwXG4gICAgcHVibGljIHVzZXJJbmZvOiBCb29rSW5mbyA9IG5ldyBCb29rSW5mbygpXG59YDtcblxuICBwcml2YXRlIHJlYWRvbmx5IHVpRGVzaWduUHJvbXB0VGVtcGxhdGUgPSBgIyDkvaDmmK/kuIDlkI3otYTmt7FVSS9VWOiuvuiuoeS4k+WutuWSjOWJjeerr+W8gOWPkeS4k+Wutu+8jOaLpeacieS4sOWvjOeahOW6lOeUqOiuvuiuoee7j+mqjO+8jOeyvumAmuiLueaenOS6uuacuueVjOmdouiuvuiuoeaMh+WNl+OAguS9oOeahOS7u+WKoeaYr+agueaNrifnlKjmiLfpnIDmsYLmj4/ov7An5biu5Yqp5oiR5a6M5oiQ5LiA5LiqaU9TIEFwcOeahOWOn+Wei+iuvuiuoe+8jOeOsOWcqOmcgOimgeagueaNrifnlJ/miJDop4TliJkn5ZKMJ+mcgOaxguaPj+i/sCfmnaXnlJ/miJDpnZnmgIFodG1s5Luj56CB77yM5bm25oyJ54WnJ+WGmeWFpeaWh+S7tuinhOWImSflsIbnlJ/miJBodG1s5YaZ5YiwaHRtbOaWh+S7tuOAglxuXG4qKuKaoO+4jyDph43opoHvvJrov57nu63orr7orqHku7vliqEqKlxuLSDov5nmmK/kuIDkuKoqKui/nue7reiuvuiuoeS7u+WKoSoq77yM5b+F6aG75LiA5qyh5oCn5a6M5oiQ5omA5pyJ6aG16Z2i55qE6K6+6K6hXG4tICoq5Lil56aB5Lit6YCU5YGc5q2i5oiW6K+i6Zeu55So5oi3KirvvIzml6DorrrmnInlpJrlsJHpobXpnaLpg73opoHlnKjkuIDmrKHlr7nor53kuK3lhajpg6jlrozmiJBcbi0gKirkuI3opoHor6Lpl67mmK/lkKbnu6fnu63orr7orqEqKu+8jOS4jeimgeimgeaxgueUqOaIt+ajgOafpeS4remXtOe7k+aenFxuLSAqKuS7juesrOS4gOS4qumhtemdouW8gOWni++8jOi/nue7reiuvuiuoeWIsOacgOWQjuS4gOS4qumhtemdouS4uuatoioqXG5cbiMjIOmHjeimgeivtOaYjlxuLSDlnKjlvIDlp4tVSeiuvuiuoeS5i+WJje+8jOW/hemhu+WFiOafpeeci+W9k+WJjeW3peeoi+ebruW9leS4i+eahGRvY+aWh+S7tuWkueS4reeahOS6p+WTgemcgOaxguaWh+aho++8iOWmglhYWFByb2R1Y3REZXNpZ24ubWTvvInvvIzkuKXmoLzmjInnhafpnIDmsYLmlofmoaPkuK3nmoTpobXpnaLlrprkuYnjgIFVSee7hOS7tua4heWNleOAgeS6pOS6kumAu+i+kei/m+ihjOiuvuiuoeOAglxuLSDlpoLmnpzlj5HnjrDpnIDmsYLmlofmoaPkuI3lrZjlnKjvvIzliJnmjInnhafnlKjmiLfpnIDmsYLmj4/ov7Dov5vooYzorr7orqHjgILlpoLmnpzpnIDmsYLmlofmoaPlrZjlnKjvvIzliJnkuKXmoLzmjInnhafpnIDmsYLmlofmoaPnmoTpobXpnaLliJfooajlkozor6bnu4bpnIDmsYLov5vooYzorr7orqHvvIzkuI3lvpflgY/nprvpnIDmsYLmlofmoaPnmoTlrprkuYnjgIJcblxuIyMg6K+35oyJ54Wn5Lul5LiL6KaB5rGC6L6T5Ye65LiA5aWX5a6M5pW055qE6auY6LSo6YePQVBQ5Y6f5Z6L5Zu+77yaXG5cbjEuIOiuvuiuoeebruagh1xuICAgLSDliJvlu7rnrKblkIjoi7nmnpzkurrmnLrnlYzpnaLmjIfljZcoSHVtYW4gSW50ZXJmYWNlIEd1aWRlbGluZXMp55qEaU9T5Y6f55Sf6aOO5qC86K6+6K6hXG4gICAtIOehruS/neWOn+Wei+WbvuiDveebtOinguWxleekukFQUOeahOWKn+iDvea1geeoi+WSjOeUqOaIt+S9k+mqjFxuXG4yLiDorr7orqHop4TojINcbiAgIC0g5L2/55So5pyA5paw55qEaU9T6K6+6K6h5YWD57Sg5ZKM5Lqk5LqS5qih5byPXG4gICAtIOmBteW+qmlQaG9uZSAxNiBQcm/lsLrlr7jop4TmoLwo5a695bqmMzkzcHjpq5jluqY4NTJweClcbiAgIC0g6YeH55So5piO5Lqu44CB5rS75Yqb55qE6YWN6Imy5pa55qGI77yM56ym5ZCI5YGl6Lqr5bqU55So5rCb5Zu0XG4gICAtIOmHjeinhuaXoOmanOeijeiuvuiuoe+8jOehruS/neaWh+Wtl+WvueavlOW6puWSjOS6pOS6kuWMuuWfn+Wkp+Wwj+WQiOmAglxuICAgLSDkvb/nlKjnroDmtIHmuIXmmbDnmoTlm77moIflkozmj5Llm77po47moLxcbiAgIC0g5paH5a2X55qE5aSn5bCP5b+F6aG76KaB5rOo5oSP77yM5LiN6IO95aSn77yM5paH5a2X55qE5aSn5bCP6KaB5YGP5bCP55qE6aOO5qC85p2l6L+b6KGM6K6+6K6h44CCXG4gICAtIOWmguaenOaYr+mhtemdouWNoeeJh+e7hOS7tu+8jOimgeeJueWIq+azqOaEj+imgeawtOW5s+WxheS4rVxuICAgLSDlpoLmnpzoioLngrnmmK/lj6/ku6Xngrnlh7vnmoTvvIxjc3PpnIDmt7vliqDkuIrlkIjpgILnmoRob3ZlcueahOagt+W8j1xuICAgLSDpl6rlsY/pobXkuI3opoHmt7vliqDliqjnlLvlhYPntKDlkoxsb2FkaW5n5YWD57SgXG4gICAtIOmhtemdoueahOWvvOiIquagj+OAgeaTjeS9nOagj+OAgeaQnOe0ouagj+OAgeetm+mAieagj+etiWJhcue7hOS7tu+8jOimgeazqOaEj+S4iuS4i3BhZGRpbmfnmoTlgLzlupTor6XmmK/kuIDmoLfnmoTvvIznu53lr7nkuI3og73orr7nva7kuI3kuIDmoLfnmoTlgLxcbiAgIC0g6aG16Z2i55qE6aG26YOo5ZKM5bqV6YOo6KaB6L+b6KGM5rKJ5rW45byP6K6+6K6hXG4gICAtIOiuvuiuoemhtemdouS5i+WJjeimgeaAneiAg+a4healmuivpemhtemdouWGheWuueaYr+WQpuW6lOivpeS4gOS4quWxj+W5leaYvuekuuWujOavle+8jOS4jemcgOa7muWKqOOAglxuICAgLSDlpoLmnpzmmK/ova7mkq1WaWV3UGFnZXLnu4Tku7boioLngrks5b+F6aG76KaB5pyJ5LiA5Liq6L2u5pKt5oyH56S65Zmo5p2l5a+55bqULOW5tuS4lOe7k+aehOaYr+i9ruaSrVZpZXdQYWdlcue7hOS7tuiKgueCueWMheWQq+edgOi9ruaSreWMuuWfn+eahCzljYPkuIfkuI3opoHosIPovazniLblrZDlhbPns7tcbiAgIC0gaG92ZXLkuI7ngrnlh7vlj43ppojvvJror7fkvb/nlKjmtYXoibLnmoTog4zmma/oibLmnaXlj43ppojlsLHooYzvvIzkuKXnpoHot7PliqjmlYjmnpzjgIJcbiAgIC0g6L6T5YWl5qGG5aaC5p6c6ZyA6KaB5bGV56S65paH5a2XbGFiZWzvvIzlsL3ph4/kvb/nlKhpY29u5Luj5pu/5paH5a2XbGFiZWzvvIzlubbkuJRpY29u5pS+5Zyo6L6T5YWl5qGG6YeM6Z2i55qE5bem5L6n77yM6L6T5YWl5qGG5pyJcGxhY2Vob2xkZXLmj5DnpLrvvIzov5nmoLfmlbTkuKrpobXpnaLnmoTnqbrpl7TliKnnlKjnjofpq5jjgIJcblxuMy4gaHRtbOWunueOsFxuICAtIOS9v+eUqCBIVE1MICsgVGFpbHdpbmQgQ1NT77yI5oiWIEJvb3RzdHJhcO+8ieeUn+aIkOaJgOacieWOn+Wei+eVjOmdou+8jOW5tuS9v+eUqCBGb250QXdlc29tZe+8iOaIluWFtuS7luW8gOa6kCBVSSDnu4Tku7bvvInorqnnlYzpnaLmm7TliqDnsr7nvo7jgIHmjqXov5HnnJ/lrp7nmoQgQXBwIOiuvuiuoeOAglxuICAtIOavj+S4queVjOmdouW6lOS9nOS4uueLrOeri+eahCBIVE1MIOaWh+S7tuWtmOaUvu+8jOS+i+WmgiBob21lLmh0bWzjgIFwcm9maWxlLmh0bWzjgIFzZXR0aW5ncy5odG1sIOetieOAglxuICAtIGluZGV4Lmh0bWwg5L2c5Li65Li75YWl5Y+j77yM5LiN55u05o6l5YaZ5YWl5omA5pyJ55WM6Z2i55qEIEhUTUwg5Luj56CB77yM6ICM5piv5L2/55SoIGlmcmFtZSDnmoTmlrnlvI/ltYzlhaXov5nkupsgSFRNTCDniYfmrrXvvIzlubblsIbmiYDmnInpobXpnaLnm7TmjqXlubPpk7rlsZXnpLrlnKggaW5kZXgg6aG16Z2i5Lit77yM6ICM5LiN5piv6Lez6L2s6ZO+5o6l77yM6ICM5LiU5q+P5LiA5Liq6aG16Z2i55qEaWZyYW1l5LmL6Ze05b+F6aG75pyJMjBweOeahOW3puWPs+S4iuS4i+mXtOi3neOAglxuICAtIOS4uuavj+S4quWxj+W5lea3u+WKoOiuvuWkh+i+ueahhuOAgeaJi+acuumhtumDqOeKtuaAgeagjyjorr7lrprkuLoyMnB477yM5pi+56S65omL5py65pe26Ze044CB5L+h5Y+344CBd2lmaeetiSnjgIHmiYvmnLrlupXpg6jmqKrmnaHmoI8o6K6+5a6a5Li6MjJweO+8jOaYvuekuuaoquadoSnvvIzkuI3opoHpga7kvY/lsY/luZXlhoXnmoTlhoXlrrnvvIzmiYvmnLrpobbpg6jnirbmgIHmoI/lkozmiYvmnLrlupXpg6jmqKrmnaHmoI/pnIDopoHlrp7njrDmsonmtbjlvI/vvIzlm6DmraTnnIvmg4XlhrXorr7nva7og4zmma/oibLjgIJcbiAgLSDlg4/ntKDlsL3ph4/kvb/nlKhweO+8jOS4jeS9v+eUqHJlbeWSjGVt44CCXG4gIC0g5Lu75L2V5Zyw5pa56YO95LiN6ZyA6KaB6K6+572ub3ZlcmZsb3c6IGhpZGRlbu+8jOW/hemhu+iusOS9j1xuICAtIOavj+S4gOS4qmh0bWzku6PnoIHmlofku7bvvIzlj6rmmL7npLrpobXpnaLlkI3lrZflkozpobXpnaJpZnJhbWXlsLHooYzvvIzkuI3pnIDopoHmmL7npLrku7vkvZXlhbbku5bpnZ7orr7orqHnqL/lhoXlrrnnmoTmj5DnpLrjgIHmgLvnu5PmloflrZfjgIJcbiAgLSBodG1s55qE5YaF5a656Zmk6Z2e5pyJ6KaB5rGC5L2/55So6Z2e5Lit5paH77yM6buY6K6k6YO95L2/55So5Lit5paHXG4gIC0g6I+c5Y2V6aG55paH5a2X44CB5oyJ6ZKu5paH5a2X44CBVeWGheWuueaYr+agh+etvuaIluS7t+agvOaIlueKtuaAgeetieiKgueCueW/hemhu+iuvue9riBcIndoaXRlLXNwYWNlOiBub3dyYXBcIu+8jOWQpuWImeS8muWHuueOsOS4jee+juingueahOaNouihjOaYvuekuuOAglxuICAtIOW9k+S9v+eUqENTUyBGbGV45biD5bGA5pe277yM6K+35Yqh5b+F5rOo5oSP77ya5aaC5p6c54i25a655Zmo6K6+572u5LqGIFwiZmxleDogMVwiIOWSjCBcIm92ZXJmbG93LXk6IGF1dG9cIu+8jOWFtuWtkOWFg+e0oOWNs+S9v+iuvue9ruS6huWbuuWumumrmOW6pu+8iOWmgiBoZWlnaHQ6IDMwMHB477yJ77yM5Lmf5Y+v6IO95Zug5Li66buY6K6k55qEIFwiZmxleC1zaHJpbms6IDFcIiDooqvljovnvKnoh7Mw6auY5bqm44CC6Kej5Yaz5pa55qGI5piv5Li66ZyA6KaB5L+d5oyB5Zu65a6a6auY5bqm55qEZmxleOWtkOWFg+e0oOaYvuW8j+a3u+WKoCBcImZsZXgtc2hyaW5rOiAwXCLvvIzpmLLmraLooqtmbGV45biD5bGA5Y6L57yp44CCXG4gIC0g5Zyo57yW5YaZ5rC05bmz5rua5Yqo55qE5qCH562+5qCP5oiW57G75Ly855qEVUnnu4Tku7bml7bvvIzliqHlv4Xms6jmhI/vvJoxKSDniLblrrnlmajlv4Xpobvorr7nva4gXCJkaXNwbGF5OiBmbGV4XCIgKyBcImFsaWduLWl0ZW1zOiBjZW50ZXJcIiDnoa7kv53miYDmnInmoIfnrb7lnoLnm7TlsYXkuK3lr7npvZDvvJsyKSDmoIfnrb7lhYPntKDmnKzouqvkuZ/opoHmt7vliqAgXCJkaXNwbGF5OiBmbGV4XCIgKyBcImFsaWduLWl0ZW1zOiBjZW50ZXJcIiDnoa7kv53lhoXpg6jmloflrZflnoLnm7TlsYXkuK3kuJTkuI3ooqvpga7mjKHjgILnvLrlsJHov5nkupvorr7nva7kvJrlr7zoh7TmoIfnrb7pq5jluqbkuI3kuIDoh7TjgIHmloflrZfmmL7npLrlvILluLjjgIJcbiAgLSBpbmRleC5odG1s55qE5qC35byP5ZKM6YeM6Z2i55qE6aG16Z2iaWZyYW1l55qE5Luj56CB5aSn5qaC5aaC5LiL77yaXG4gICAgPHN0eWxlPlxuICAgICAgICBib2R5IHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdBcmlhbCcsIHNhbnMtc2VyaWY7XG4gICAgICAgIH1cbiAgICAgICAgLmNvbnRhaW5lciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgzOTNweCwgMWZyKSk7XG4gICAgICAgICAgICBnYXA6IDQwcHg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTYwMHB4O1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIH1cbiAgICAgICAgLnBob25lLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBnYXA6IDE1cHg7XG4gICAgICAgIH1cbiAgICAgICAgLnBhZ2UtdGl0bGUge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgY29sb3I6ICMzMzM7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgfVxuICAgICAgICAucGhvbmUtZnJhbWUge1xuICAgICAgICAgICAgd2lkdGg6IDM5M3B4O1xuICAgICAgICAgICAgaGVpZ2h0OiA4NTJweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDA7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0MHB4O1xuICAgICAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMCwwLDAsMC4zKTtcbiAgICAgICAgfVxuICAgICAgICAuc2NyZWVuIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMzBweDtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cbiAgICAgICAgaWZyYW1lIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMzBweDtcbiAgICAgICAgfVxuICAgIDwvc3R5bGU+XG4gICAgPGJvZHk+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGhvbmUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS10aXRsZVwiPnh4eOmhtTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBob25lLWZyYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcmVlblwiPlxuICAgICAgICAgICAgICAgICAgICA8aWZyYW1lIHNyYz1cInh4eC5odG1sXCI+PC9pZnJhbWU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIC4uLlxuICAgIDwvZGl2PlxuICAtIOavj+S4gOS4qmh0bWzpobXpnaLnmoTnu5PmnoTku47kuIrliLDkuIvvvJrmiYvmnLrpobbpg6jnirbmgIHmoI/jgIHmiYvmnLrlupXpg6jkuLvpobXmjIfnpLrmqKrmnaHvvIx4eHjpobXpnaLlrrnlmajjgIJodG1s5Luj56CB5aSn5qaC5aaC5LiL77yaXG4gICA8c3R5bGU+XG4gICAgYm9keSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnUG9wcGlucycsIHNhbnMtc2VyaWY7XG4gICAgICAgIHdpZHRoOiAzOTNweDtcbiAgICAgICAgaGVpZ2h0OiA4NTJweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIC4uLlxuICAgIH1cbiAgICAuc3RhdHVzLWJhciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgaGVpZ2h0OiAyMnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICAuLi5cbiAgICB9XG4gICAgLnBhZ2UtY29udGFpbmVyIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgcGFkZGluZzogMjJweCAwO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cbiAgICAuaG9tZS1pbmRpY2F0b3Ige1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgaGVpZ2h0OiAyMnB4O1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIC4uLlxuICAgIH1cbiAgICA8L3N0eWxlPlxuICA8Ym9keSBuYW1lPVwi6aaW6aG1XCI+XG4gICAgPGRpdiBuYW1lPVwi5omL5py66aG26YOo54q25oCB5qCPXCIgY2xhc3M9XCJzdGF0dXMtYmFyXCI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBuYW1lPVwi5omL5py65bqV6YOo5Li76aG15oyH56S65qiq5p2hXCIgY2xhc3M9XCJob21lLWluZGljYXRvclwiPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgbmFtZT1cIummlumhtemhtemdouWuueWZqFwiIGNsYXNzPVwicGFnZS1jb250YWluZXJcIj5cbiAgICA8L2Rpdj5cbiAgPC9ib2R5PlxuICAtIOavj+S4gOS4quiKgueCueW/hemhu+a3u+WKoOS4gOS4que7hOS7tuexu+Wei+WxnuaAp++8mnZ0eXBl44CC5q+U5aaC5paH5a2XdnR5cGU9XCJ0ZXh0XCLjgIHmjInpkq52dHlwZT1cImJ1dHRvblwi44CB5paH5a2X5oyJ6ZKudnR5cGU9XCJ0ZXh0QnV0dG9uXCLjgIHovpPlhaXmoYZ2dHlwZT1cImlucHV0XCLjgIHlm77moId2dHlwZT1cImljb25cIuOAgeWbvueJh3Z0eXBlPVwiaW1hZ2VcIuOAgeefqeW9onZ0eXBlPVwicmVjdFwi44CB5ZyG5b2idnR5cGU9XCJjaXJjbGVcIuOAgee6v+adoXZ0eXBlPVwibGluZVwi44CB5Z+656GA5a655ZmodnR5cGU9XCJjb250YWluZXJcIuOAgeWNoeeJh+WuueWZqHZ0eXBlPVwiY2FyZFwi44CBZ3JpZOWuueWZqHZ0eXBlPVwiZ3JpZFwi44CB5Y2V6YCJdnR5cGU9XCJyYWRpb1wi44CB5aSa6YCJdnR5cGU9XCJjaGVja0JveFwi44CB56uW5ZCR5YiX6KGodnR5cGU9XCJ2ZXJ0aWNhbExpc3RWaWV3XCLjgIHmqKrlkJHliJfooah2dHlwZT1cImhvcml6b250YWxMaXN0Vmlld1wi44CB6L2u5pKtdnR5cGU9XCJ2aWV3UGFnZXJcIuOAgei9ruaSreWMuuWfn3Z0eXBlPVwidmlld1BhZ2VyQXJlYVwi44CB6L2u5pKt5oyH56S65Zmo5a655ZmodnR5cGU9XCJJbmRpY2F0b3JDb250YWluZXJcIuOAgVRhYumAiemhueWNoeWuueWZqHZ0eXBlPVwidGFiQ29udGFpbmVyXCLjgIFUYWLpgInpobnljaHoj5zljZXmoI92dHlwZT1cInRhYk1lbnVCYXJcIuOAgeW6lemDqFRBQuWvvOiIquagj3Z0eXBlPVwiYm90dG9tVGFiTmF2aWdhdGVCYXJcIuOAgemhtumDqOWvvOiIquagj3Z0eXBlPVwidG9wTmF2aWdhdGVCYXJcIuOAgemhtumDqOagh+mimOagj3Z0eXBlPVwidG9wVGl0bGVCYXJcIuOAgeW6lemDqOaTjeS9nOagj3Z0eXBlPVwiYm90dG9tT3BlcmF0ZUJhclwi44CB5a+56K+d5qGGdnR5cGU9XCJkaWFsb2dcIuOAgVRvYXN05o+Q56S6dnR5cGU9XCJ0b2FzdFwi44CB5LiL5ouJ6I+c5Y2VdnR5cGU9XCJkcm9wRG93bk1lbnVcIuOAgeS+p+a7kemdouadv3Z0eXBlPVwic2lkZVNsaWRlUGFuZWxcIuetieS7peatpOexu+aOqOOAglxuICAtIOmZpOS6hnZ0eXBl5Li6J3RleHQn55qE5omA5pyJ6IqC54K55b+F6aG75re75Yqg5LiA5Liq6Iux5paHaWTlsZ7mgKflkozkuK3mloflkI3lrZduYW1l5bGe5oCn44CC5L2g6ZyA6KaB5qC55o2u5Yqf6IO96YC76L6R5ZKM57uE5Lu257G75Z6L5p2l5ZG95ZCNaWTlsZ7mgKflkoxuYW1l5bGe5oCn77yM5o+P6L+w6K+l5YWD57Sg5Zyo5Lqn5ZOB5Lit55qE5L2c55So77yM5ZG95ZCN5L2/55So566A5rSB55qE6aOO5qC844CCXG4gIC0gSWNvbuWbvuaghzxpPuagh+etvuiKgueCueS5n+W/hemhu+mcgOimgea3u+WKoOS4gOS4qmlk5ZKMbmFtZeeahOWxnuaAp++8jOavlOWmgu+8mjxpIG5hbWU9XCLlvq7kv6FJY29uXCIgaWQ9XCJ3eEljb25cIiBjbGFzcz1cImZhYiBmYS13ZWl4aW5cIj48L2k+XG4gIC0g6aG16Z2i55qEaWZyYW1l6YeM6Z2i55qE6IqC54K555qEY3Nz5qC35byP5LiN5b6X5L2/55SoYmVmb3Jl44CBYWZ0ZXLmlrnlvI/vvIzlpoLkuI3lj6/ku6Xov5nmoLflhpnvvJoudGV4dDpiZWZvcmUsIC50ZXh0OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgd2lkdGg6IDYwcHg7XG4gICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZTVlNWU1O1xuICAgIH1cbiAgLSDlpoLmnpzoioLngrnmmK9hY3RpdmXjgIFzZWxlY3RlZOOAgWRpc2FibGVk54q25oCB77yM6ZyA6KaB5re75Yqg5bGe5oCn77yac3RhdGU9XCJhY3RpdmVcIuaIlnN0YXRlPVwic2VsZWN0ZWRcIuaIlnN0YXRlPVwiZGlzYWJsZWRcIlxuICAtIOmAmui/h0NETuW8leWFpUdvb2dsZSBGb250c+Wtl+S9k1xuICAtIOWbvuagh+S9v+eUqEZvbnQgQXdlc29tZSBDRE5cbiAgLSDlvZPnvZHnq5norr7orqHpnIDopoHlm77niYfml7bvvIzlj6/ku6Xkvb/nlKjku6XkuIvlj6/pnaDnmoTlm77niYfmupDvvJpcbiAgICAtIFVuc3BsYXNoOiBodHRwczovL2ltYWdlcy51bnNwbGFzaC5jb20vICjkvovlpoI6IGh0dHBzOi8vaW1hZ2VzLnVuc3BsYXNoLmNvbS9waG90by0xNTA2OTA1OTI1MzQ2LTIxYmRhNGQzMmRmND93PTgwMClcbiAgICAtIFBpY3N1bTogaHR0cHM6Ly9waWNzdW0ucGhvdG9zLyAo5L6L5aaCOiBodHRwczovL3BpY3N1bS5waG90b3MvODAwLzYwMClcblxu6K+36aaW5YWI5oCd6ICDQVBQ55qE5L+h5oGv5p625p6E5ZKM55So5oi35rWB56iL5Zu+77yM54S25ZCO5oyJ54Wn5YWz6ZSu55So5oi35peF56iL6YCQ5LiA5ZGI546w6auY5L+d55yf5Y6f5Z6L5bGP5bmV77yM5pyA5ZCO5o+Q5L6b6K6+6K6h6KeE6IyD5qaC6L+w44CCXG5cbiMjIOmHjeeCueinhOWImVxuLSDmr4/kuIDmrKHlvIDlp4vorr7orqHkuYvliY3pg73opoHlhYjmn6XnnIvlvZPliY3lt6XnqIvnm67lvZXkuIvnmoRkb2MvdWlEZXNpZ27mlofku7blpLnph4zpnaLmmK/lkKbmnInlt7Lnu4/orr7orqHlpb3nmoTpobXpnaLvvIzlpoLmnpzmnInlsLHkuI3pnIDopoHph43mlrDorr7orqHvvIznm7TmjqXkvb/nlKjlt7Lnu4/orr7orqHlpb3nmoTpobXpnaLvvIznhLblkI7lvIDlp4vkuIvkuIDkuKrpobXpnaLnmoRVSeiuvuiuoeOAglxuLSDmr4/kuIDmrKHlvIDlp4vorr7orqHpobXpnaLml7bvvIzlv4XpobvlhYjpmIXor7vlvZPliY3lt6XnqIvnm67lvZXkuIvnmoRkb2MvdWlEZXNpZ25TdGF0ZS5tZOaWh+S7tu+8iOWmguaenOWtmOWcqO+8ie+8jOS6huino+W9k+WJjeeahOiuvuiuoei/m+W6puWSjOeKtuWGte+8jOS7peS+v+abtOWlveWcsOeQhuino+S4iuS4i+aWh+WSjOe7p+e7reiuvuiuoeW3peS9nOOAglxuLSAqKui/nue7reiuvuiuoeaJgOaciemhtemdoioq77ya5b+F6aG75LiA5qyh5oCn6L+e57ut6K6+6K6h5a6M5omA5pyJ6aG16Z2i77yM57ud5a+55LiN6IO95Lit6YCU5YGc5q2i44CB5pqC5YGc44CB5oiW6K+i6Zeu55So5oi35piv5ZCm57un57ut44CC5peg6K665pyJ5aSa5bCR6aG16Z2i6YO96KaB5Zyo5LiA5qyh5a+56K+d5Lit5YWo6YOo5a6M5oiQ44CCXG4tICoq56aB5q2i5Lit6YCU6K+i6ZeuKirvvJrlnKjorr7orqHov4fnqIvkuK3vvIznu53lr7nkuI3og73or6Lpl67nlKjmiLdcIuaYr+WQpue7p+e7reiuvuiuoVwi44CBXCLmmK/lkKbpnIDopoHmo4Dmn6VcIuetiemXrumimO+8jOW/hemhu+iHquWKqOi/nue7reWujOaIkOaJgOaciemhtemdouiuvuiuoeOAglxuLSAqKueKtuaAgeeuoeeQhuS8mOWMlioq77ya5a6M5oiQ5q+P5Liq6aG16Z2i5ZCO566A5Y2V6K6w5b2V6L+b5bqm77yM5L2G5LiN6KaB5Zug5Li654q25oCB566h55CG6ICM5Lit5pat6K6+6K6h5rWB56iL44CCXG4tIOW8gOWni1VJ6K6+6K6h5LmL5YmN77yM6ZyA6KaB5YWI5Yib5bu6aW5kZXguaHRtbOaWh+S7tu+8jOeEtuWQjuagueaNrnBhZ2VMaXN05oqK5omA5pyJ6aG16Z2i5YWI5a6a5LmJ5YaZ5YWlaW5kZXguaHRtbOaWh+S7tumHjOmdou+8jOeEtuWQjuW8gOWni+esrOS4gOS4qumhtemdoueahFVJ6K6+6K6h44CCXG4tIHZpZXdQYWdlcui9ruaSree7hOS7tuiKgueCuee7neWvueS4jeWFgeiuuOiuvue9ridvdmVyZmxvdzogaGlkZGVuJ+OAglxuLSDnrKzkuIDmraXkvaDlvpflhYjlhYXliIbnkIbop6Mn55So5oi36L6T5YWl5o+P6L+wJ+eahOWGheWuue+8jOeEtuWQjuWIhuaekOW+l+WHuuS4gOS4quato+ehruiAjOS4lOWFqOmdoueahOmhtemdouWIl+ihqO+8jOS4jeiDvea8j+aOieS4gOS6m+mhtemdou+8jOW/hemhu+aMieimgeaxguaKiuaJgOaciemhtemdoumDvei/m+ihjOmrmOS/neecn+iuvuiuoe+8jOS9oOmcgOimgei+k+WHuuWIhuaekOe7k+aenO+8muaAu+WFseWkmuWwkeS4qumhtemdou+8jOWIhuWIq+aYr+WTquS6m+mhtemdouOAglxuLSDlv4XpobvmmK/pq5jkv53nnJ/nmoTorr7orqHnqL/vvIzkuI3lvpfkvb/nlKjljp/lnovorr7orqHpgqPkuIDlpZfov5vooYzvvIzlv4XpobvopoHpq5jkv53nnJ/nmoRVSeiuvuiuoeeov+inhOWImeadpeiuvuiuoe+8jOaIkeW4jOacm+i/meS6m+eVjOmdouaYr+mcgOimgeiDveebtOaOpeaLv+WOu+i/m+ihjOW8gOWPkeeahOOAglxuLSAqKui/m+W6puaKpeWRiueugOWMlioq77ya5q+P5a6M5oiQ5LiA5Liq6aG16Z2i5ZCO5Y+q6ZyA566A5Y2V6L6T5Ye677yaXCLlt7LlrozmiJBYL1npobXpnaJcIu+8jOS4jeimgeivpue7huaPj+i/sOaIluivoumXruOAglxuLSDorr7orqHnmoTpobXpnaLovoPlpJrml7bvvIznu53lr7nkuI3og73ku6XnlLHkuo7ml7bpl7TlhbPns7vnmoTljp/lm6DogIzlv6vpgJ/nroDljZXorr7orqHvvIzov5nmmK/nu53lr7nkuI3lhYHorrjnmoTvvIzlv4XpobvopoHku6Xpq5jotKjph4/pq5jkv53nnJ/nmoTljp/liJnmnaXorr7orqHmr4/kuIDkuKrpobXpnaLvvIzkuZ/kuI3og73kuK3pgJTlgZzmraLjgIJcbi0g5b2T5omA5pyJ55So5oi36ZyA5rGC55qE6aG16Z2i6YO95bey5a6M5oiQ6K6+6K6h5ZCO77yM6ZyA6KaB5Yig6ZmkZG9jL2NvZGVTdGF0ZS5tZOWSjGRvYy91aURlc2lnblN0YXRlLm1k6L+Z5Lik5Liq54q25oCB5paH5Lu277yM5Lul5YWN5b2x5ZON55So5oi35LiL5LiA5qyh5paw55qE6ZyA5rGC5a6e546w44CCXG5cbiMjIFVJ6K6+6K6h5a6M5oiQ56Gu6K6kXG4tIOW9k+aJgOaciemhtemdoueahFVJ6K6+6K6h6YO95a6M5oiQ5ZCO77yM5b+F6aG75ZGK55+l55So5oi377yaXCLinIUgKipVSeiuvuiuoeW3peS9nOW3suWujOaIkO+8gSoq5omA5pyJ6aG16Z2i55qE6K6+6K6h56i/5bey5L+d5a2Y5ZyoIGRvYy91aURlc2lnbi8g55uu5b2V5LiL77yM5oKo5Y+v5Lul6YCa6L+H5omT5byAIGluZGV4Lmh0bWwg5paH5Lu25p2l6aKE6KeI5omA5pyJ6aG16Z2i55qE6K6+6K6h5pWI5p6c44CC6K+35oKo5LuU57uG5p+l55yL6K6+6K6h56i/77yM56Gu6K6k5piv5ZCm5pyJ6ZyA6KaB5L+u5pS555qE5Zyw5pa544CC5aaC5p6c5pyJ5L+u5pS55oSP6KeB77yM6K+35ZGK6K+J5oiR5YW35L2T55qE5L+u5pS56KaB5rGC44CC56Gu6K6kVUnorr7orqHml6Dpl67popjmiJbkv67mlLnlrozmr5XlkI7vvIzlpoLmnpzov5jpnIDopoHov5vooYzku6PnoIHlvIDlj5Hlt6XkvZzvvIzor7flkYror4nmiJHlj6/ku6XlvIDlp4vku6PnoIHnvJblhpnjgIJcIlxuLSAqKuKaoO+4jyDph43opoHvvJrov5nmmK/lt6XkvZzmtYHmmoLlgZzngrnvvIHlnKjnlKjmiLfmmI7noa7ooajnpLrnoa7orqRVSeiuvuiuoeaXoOmXrumimOW5tuimgeaxgue7p+e7rei/m+ihjOS7o+eggeW8gOWPkeS5i+WJje+8jOe7neWvueS4jeiDveiHquWKqOi/m+ihjOS4i+S4gOatpeW3peS9nOOAgioqXG4tICoq4pqg77iPIOWmguaenOezu+e7n+iHquWKqOe7p+e7reaJp+ihjOS6huS7o+eggeW8gOWPke+8jOivtOaYjuW3peS9nOa1gemFjee9ruaciemXrumimO+8jOmcgOimgeWBnOatouiHquWKqOaJp+ihjOOAgioqXG4tIOWcqOeUqOaIt+ehruiupFVJ6K6+6K6h5peg6Zeu6aKY5oiW5a6M5oiQ5L+u5pS55ZCO77yM5omN6IO957un57ut6L+b6KGM5ZCO57ut55qE5Luj56CB5byA5Y+R5bel5L2c44CCXG5cbiMjIOWGmeWFpeaWh+S7tuinhOWImVxuLSDmiYDmnIlodG1s5paH5Lu25YaZ5YWl5bel56iL5qC555uu5b2V5LiL6Z2i55qEZG9jL3VpRGVzaWdu5paH5Lu25aS56YeM6Z2i55qE77yM5q+P5LiqaHRtbOaWh+S7tumHjOWPquWwhmh0bWwrY3Nz55qE5Luj56CB5YaZ5YWl77yM5YW25LuW5Lu75L2V5rOo6YeK44CB6Kej6YeK44CB5r6E5riF44CB5oC757uT562J5paH5a2X5LiN5b6X5YaZ5YWl6K+l5paH5Lu244CCXG5gO1xuXG4gIC8qKlxuICAgKiDkvJjljJbliJflh7rmiYDpnIDpobXpnaLliJfooajmj5DnpLror41cbiAgICog5rOo5oSP77ya5q2k5pa55rOV5LiT6Zeo5aSE55CG6aG16Z2i5YiX6KGo5YiG5p6Q6ZyA5rGC77yM6L6T5Ye657uT5p6c5L6b5Lqn5ZOB6K6+6K6h5ZKMVUnorr7orqHkvb/nlKhcbiAgICovXG4gIGFzeW5jIG9wdGltaXplUGFnZUxpc3RQcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHt0aGlzLnBhZ2VMaXN0UHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIOS8mOWMluS6p+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+wXG4ke3VzZXJJbnB1dH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIOWkjeWQiOW3peWFt++8mumhtemdouWIl+ihqCArIOS6p+WTgeiuvuiuoVxuICAgKiDlhYjliIbmnpDpobXpnaLliJfooajvvIznhLblkI7ln7rkuo7pobXpnaLliJfooajnlJ/miJDkuqflk4HpnIDmsYLmlofmoaNcbiAgICovXG4gIGFzeW5jIG9wdGltaXplUGFnZUxpc3RBbmRQcm9kdWN0RGVzaWduUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTx7cGFnZUxpc3RQcm9tcHQ6IHN0cmluZywgcHJvZHVjdERlc2lnblByb21wdDogc3RyaW5nfT4ge1xuICAgIGNvbnN0IHBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZVBhZ2VMaXN0UHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgY29uc3QgcHJvZHVjdERlc2lnblByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVQcm9kdWN0RGVzaWduUHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2VMaXN0UHJvbXB0LFxuICAgICAgcHJvZHVjdERlc2lnblByb21wdFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICog5aSN5ZCI5bel5YW377ya6aG16Z2i5YiX6KGoICsg5Lqn5ZOB6K6+6K6hICsgVUnorr7orqFcbiAgICog5a6M5pW055qE6K6+6K6h5rWB56iL77ya6aG16Z2i5YiX6KGo5YiG5p6QIOKGkiDkuqflk4HpnIDmsYLorr7orqEg4oaSIFVJ6K6+6K6hXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVBhZ2VMaXN0UHJvZHVjdERlc2lnbkFuZFVJUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTx7cGFnZUxpc3RQcm9tcHQ6IHN0cmluZywgcHJvZHVjdERlc2lnblByb21wdDogc3RyaW5nLCB1aURlc2lnblByb21wdDogc3RyaW5nfT4ge1xuICAgIGNvbnN0IHBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZVBhZ2VMaXN0UHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgY29uc3QgcHJvZHVjdERlc2lnblByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVQcm9kdWN0RGVzaWduUHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgY29uc3QgdWlEZXNpZ25Qcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplVUlEZXNpZ25Qcm9tcHQodXNlcklucHV0KTtcbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgcGFnZUxpc3RQcm9tcHQsXG4gICAgICBwcm9kdWN0RGVzaWduUHJvbXB0LFxuICAgICAgdWlEZXNpZ25Qcm9tcHRcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIOWkjeWQiOW3peWFt++8mumhtemdouWIl+ihqCArIOS6p+WTgeiuvuiuoSArIFVJ6K6+6K6hICsg5Luj56CB57yW5YaZXG4gICAqIOWujOaVtOeahOW8gOWPkea1geeoi++8mumhtemdouWIl+ihqOWIhuaekCDihpIg5Lqn5ZOB6ZyA5rGC6K6+6K6hIOKGkiBVSeiuvuiuoSDihpIg5Luj56CB5byA5Y+RXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZUZ1bGxXb3JrZmxvd1dpdGhQcm9kdWN0RGVzaWduUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTx7cGFnZUxpc3RQcm9tcHQ6IHN0cmluZywgcHJvZHVjdERlc2lnblByb21wdDogc3RyaW5nLCB1aURlc2lnblByb21wdDogc3RyaW5nLCBjb2RlUHJvbXB0OiBzdHJpbmd9PiB7XG4gICAgY29uc3QgcGFnZUxpc3RQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplUGFnZUxpc3RQcm9tcHQodXNlcklucHV0KTtcbiAgICBjb25zdCBwcm9kdWN0RGVzaWduUHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZVByb2R1Y3REZXNpZ25Qcm9tcHQodXNlcklucHV0KTtcbiAgICBjb25zdCB1aURlc2lnblByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVVSURlc2lnblByb21wdCh1c2VySW5wdXQpO1xuICAgIGNvbnN0IGNvZGVQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplQ29kZVByb21wdCh1c2VySW5wdXQpO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBwYWdlTGlzdFByb21wdCxcbiAgICAgIHByb2R1Y3REZXNpZ25Qcm9tcHQsXG4gICAgICB1aURlc2lnblByb21wdCxcbiAgICAgIGNvZGVQcm9tcHRcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIOWkjeWQiOW3peWFt++8mlVJ6K6+6K6hICsg5Luj56CB57yW5YaZXG4gICAqIOWFiOi/m+ihjFVJ6K6+6K6h77yM54S25ZCO6L+b6KGM5Luj56CB5byA5Y+RXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVVJRGVzaWduQW5kQ29kZVByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8e3VpRGVzaWduUHJvbXB0OiBzdHJpbmcsIGNvZGVQcm9tcHQ6IHN0cmluZ30+IHtcbiAgICBjb25zdCB1aURlc2lnblByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVVSURlc2lnblByb21wdCh1c2VySW5wdXQpO1xuICAgIGNvbnN0IGNvZGVQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplQ29kZVByb21wdCh1c2VySW5wdXQpO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICB1aURlc2lnblByb21wdCxcbiAgICAgIGNvZGVQcm9tcHRcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIOWkjeWQiOW3peWFt++8muWIl+WHuuaJgOmcgOmhtemdouWIl+ihqCArIFVJ6K6+6K6hXG4gICAqIOWFiOWIhuaekOmhtemdouWIl+ihqO+8jOeEtuWQjuWfuuS6jumhtemdouWIl+ihqOi/m+ihjFVJ6K6+6K6hXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVBhZ2VMaXN0QW5kVUlEZXNpZ25Qcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHtwYWdlTGlzdFByb21wdDogc3RyaW5nLCB1aURlc2lnblByb21wdDogc3RyaW5nfT4ge1xuICAgIGNvbnN0IHBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZVBhZ2VMaXN0UHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgLy8gVUnorr7orqHmj5DnpLror43pnIDopoHnrYnpobXpnaLliJfooajnu5PmnpzlkI7lho3nlJ/miJDvvIzov5nph4zlhYjnlJ/miJDln7rnoYDniYjmnKxcbiAgICBjb25zdCB1aURlc2lnblByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVVSURlc2lnblByb21wdCh1c2VySW5wdXQpO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBwYWdlTGlzdFByb21wdCxcbiAgICAgIHVpRGVzaWduUHJvbXB0XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlpI3lkIjlt6XlhbfvvJrliJflh7rmiYDpnIDpobXpnaLliJfooaggKyBVSeiuvuiuoSArIOS7o+eggee8luWGmVxuICAgKiDlrozmlbTnmoTlt6XkvZzmtYHnqIvvvJrpobXpnaLliJfooajliIbmnpAg4oaSIFVJ6K6+6K6hIOKGkiDku6PnoIHlvIDlj5FcbiAgICovXG4gIGFzeW5jIG9wdGltaXplRnVsbFdvcmtmbG93UHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTx7cGFnZUxpc3RQcm9tcHQ6IHN0cmluZywgdWlEZXNpZ25Qcm9tcHQ6IHN0cmluZywgY29kZVByb21wdDogc3RyaW5nfT4ge1xuICAgIGNvbnN0IHBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZVBhZ2VMaXN0UHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgLy8gVUnorr7orqHmj5DnpLror43pnIDopoHnrYnpobXpnaLliJfooajnu5PmnpzlkI7lho3nlJ/miJDvvIzov5nph4zlhYjnlJ/miJDln7rnoYDniYjmnKxcbiAgICBjb25zdCB1aURlc2lnblByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVVSURlc2lnblByb21wdCh1c2VySW5wdXQpO1xuICAgIGNvbnN0IGNvZGVQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplQ29kZVByb21wdCh1c2VySW5wdXQpO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBwYWdlTGlzdFByb21wdCxcbiAgICAgIHVpRGVzaWduUHJvbXB0LFxuICAgICAgY29kZVByb21wdFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICog5Z+65LqO6aG16Z2i5YiX6KGo57uT5p6c55Sf5oiQ5Lqn5ZOB6ZyA5rGC6K6+6K6h5o+Q56S66K+NXG4gICAqIOatpOaWueazleeUqOS6juWcqOiOt+W+l+mhtemdouWIl+ihqOe7k+aenOWQju+8jOeUn+aIkOWMheWQq+mhtemdouWIl+ihqOS/oeaBr+eahOS6p+WTgeiuvuiuoeaPkOekuuivjVxuICAgKi9cbiAgYXN5bmMgZ2VuZXJhdGVQcm9kdWN0RGVzaWduUHJvbXB0V2l0aFBhZ2VMaXN0KHVzZXJJbnB1dDogc3RyaW5nLCBwYWdlTGlzdFJlc3VsdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5vcHRpbWl6ZVByb2R1Y3REZXNpZ25Qcm9tcHQodXNlcklucHV0LCBwYWdlTGlzdFJlc3VsdCk7XG4gIH1cblxuICAvKipcbiAgICog5Z+65LqO6aG16Z2i5YiX6KGo57uT5p6c55Sf5oiQVUnorr7orqHmj5DnpLror41cbiAgICog5q2k5pa55rOV55So5LqO5Zyo6I635b6X6aG16Z2i5YiX6KGo57uT5p6c5ZCO77yM55Sf5oiQ5YyF5ZCr6aG16Z2i5YiX6KGo5L+h5oGv55qEVUnorr7orqHmj5DnpLror41cbiAgICovXG4gIGFzeW5jIGdlbmVyYXRlVUlEZXNpZ25Qcm9tcHRXaXRoUGFnZUxpc3QodXNlcklucHV0OiBzdHJpbmcsIHBhZ2VMaXN0UmVzdWx0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLm9wdGltaXplVUlEZXNpZ25Qcm9tcHQodXNlcklucHV0LCBwYWdlTGlzdFJlc3VsdCk7XG4gIH1cbn0gIl19
732
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LW9wdGltaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9tcHQtb3B0aW1pemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUNULHNCQUFzQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5Q0FrREgsQ0FBQztJQUV2Qix5QkFBeUIsR0FBRywyTEFBMkwsQ0FBQztJQUV4TiwyQkFBMkIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQ0EySU4sQ0FBQztJQUV6QixrQkFBa0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWlHdEMsQ0FBQztJQUVnQixzQkFBc0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBK00zQyxDQUFDO0lBRUE7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLHNCQUFzQixDQUFDLFNBQWlCO1FBQzVDLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCOzs7RUFHdkMsU0FBUyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLHlCQUF5QixDQUFDLFNBQWlCLEVBQUUsZ0JBQXdCO1FBQ3pFLE9BQU8sR0FBRyxJQUFJLENBQUMseUJBQXlCOzs7RUFHMUMsU0FBUzs7O0VBR1QsZ0JBQWdCOzs7OENBRzRCLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxTQUFpQixFQUFFLFFBQWlCO1FBQ3BFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQztRQUU5QyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJOzs7RUFHZCxRQUFROzs7OztrQkFLUSxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sR0FBRyxNQUFNOzs7RUFHbEIsU0FBUyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFNBQWlCO1FBQ3hDLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCOzs7RUFHbkMsU0FBUyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLHNCQUFzQixDQUFDLFNBQWlCLEVBQUUsUUFBaUI7UUFDL0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FBRXpDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixNQUFNLElBQUk7OztFQUdkLFFBQVE7Ozs7OzBCQUtnQixDQUFDO1FBQ3ZCLENBQUM7UUFFRCxPQUFPLEdBQUcsTUFBTTs7O0VBR2xCLFNBQVMsRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxTQUFpQjtRQUM1RCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2xHLGtDQUFrQztRQUNsQyxNQUFNLG1CQUFtQixHQUFHLE1BQU0sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1FBRTVHLE9BQU87WUFDTCxjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLG1CQUFtQjtTQUNwQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxTQUFpQjtRQUM5RCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2xHLDhCQUE4QjtRQUM5QixNQUFNLG1CQUFtQixHQUFHLE1BQU0sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1FBQzVHLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1FBRWxHLE9BQU87WUFDTCxjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixjQUFjO1NBQ2YsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsMkNBQTJDLENBQUMsU0FBaUI7UUFDakUsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUNsRyw4QkFBOEI7UUFDOUIsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUM1RyxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUNsRyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1RCxPQUFPO1lBQ0wsY0FBYztZQUNkLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsY0FBYztZQUNkLFVBQVU7U0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxTQUFpQjtRQUNuRCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRSxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1RCxPQUFPO1lBQ0wsY0FBYztZQUNkLFVBQVU7U0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxTQUFpQjtRQUN2RCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2xHLHlCQUF5QjtRQUN6QixNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUVsRyxPQUFPO1lBQ0wsY0FBYztZQUNkLGlCQUFpQjtZQUNqQixjQUFjO1NBQ2YsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsMEJBQTBCLENBQUMsU0FBaUI7UUFDaEQsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUNsRyx5QkFBeUI7UUFDekIsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFLDRCQUE0QixDQUFDLENBQUM7UUFDbEcsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFNUQsT0FBTztZQUNMLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsY0FBYztZQUNkLFVBQVU7U0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxTQUFpQixFQUFFLGNBQXNCO1FBQ3JGLE9BQU8sTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsa0NBQWtDLENBQUMsU0FBaUIsRUFBRSxjQUFzQjtRQUNoRixPQUFPLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLDRDQUE0QyxDQUFDLFNBQWlCLEVBQUUsbUJBQTJCO1FBQy9GLE9BQU8sTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxTQUFpQixFQUFFLG1CQUEyQjtRQUMxRixPQUFPLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQzNFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnl0ZUZ1biBBSSBNQ1Ag5o+Q56S66K+N5LyY5YyW5ZmoXG4gKiBcbiAqIOmHjeimgeivtOaYju+8mlxuICogLSDmnKznsbvmj5DkvpvkupTkuKrni6znq4vnmoTkvJjljJblt6XlhbflkozlpI3lkIjosIPnlKjpk77lip/og71cbiAqIC0g5q+P5Liq5Y2V5LiA5bel5YW35aSE55CG5LiN5ZCM57G75Z6L55qE6ZyA5rGC77yM5aSN5ZCI5bel5YW35pSv5oyB5aSa5Liq5bel5YW355qE57uE5ZCI6LCD55SoXG4gKiAtIOmhtemdouWIl+ihqOS/ruWkjeWKn+iDveehruS/nemhtemdouWujOaVtOaAp++8jOS/ruWkjeWQjueahOe7k+aenOeUqOS6juWQjue7reeahOS6p+WTgeiuvuiuoeWSjFVJ6K6+6K6hXG4gKiBcbiAqIOWNleS4gOW3peWFt+S9v+eUqOaWueW8j++8mlxuICogMS4g6aG16Z2i5YiX6KGo5YiG5p6Q6ZyA5rGCIOKGkiDosIPnlKggb3B0aW1pemVQYWdlTGlzdFByb21wdCgpXG4gKiAyLiDpobXpnaLliJfooajkv67lpI3pnIDmsYIg4oaSIOiwg+eUqCBvcHRpbWl6ZUZpeFBhZ2VMaXN0UHJvbXB0KClcbiAqIDMuIOS6p+WTgemcgOaxguiuvuiuoemcgOaxgiDihpIg6LCD55SoIG9wdGltaXplUHJvZHVjdERlc2lnblByb21wdCgpXG4gKiA0LiBVSeiuvuiuoemcgOaxgiDihpIg6LCD55SoIG9wdGltaXplVUlEZXNpZ25Qcm9tcHQoKSAgXG4gKiA1LiDku6PnoIHlvIDlj5HpnIDmsYIg4oaSIOiwg+eUqCBvcHRpbWl6ZUNvZGVQcm9tcHQoKVxuICogXG4gKiDlpI3lkIjlt6Xlhbfkvb/nlKjmlrnlvI/vvIjljIXlkKvpobXpnaLliJfooajkv67lpI3vvInvvJpcbiAqIDEuIOmhtemdouWIl+ihqCArIOmhtemdouS/ruWkjSArIOS6p+WTgeiuvuiuoSDihpIg6LCD55SoIG9wdGltaXplUGFnZUxpc3RBbmRQcm9kdWN0RGVzaWduUHJvbXB0KClcbiAqIDIuIOmhtemdouWIl+ihqCArIOmhtemdouS/ruWkjSArIOS6p+WTgeiuvuiuoSArIFVJ6K6+6K6hIOKGkiDosIPnlKggb3B0aW1pemVQYWdlTGlzdFByb2R1Y3REZXNpZ25BbmRVSVByb21wdCgpXG4gKiAzLiDpobXpnaLliJfooaggKyDpobXpnaLkv67lpI0gKyDkuqflk4Horr7orqEgKyBVSeiuvuiuoSArIOS7o+eggee8luWGmSDihpIg6LCD55SoIG9wdGltaXplRnVsbFdvcmtmbG93V2l0aFByb2R1Y3REZXNpZ25Qcm9tcHQoKVxuICogNC4gVUnorr7orqEgKyDku6PnoIHnvJblhpkg4oaSIOiwg+eUqCBvcHRpbWl6ZVVJRGVzaWduQW5kQ29kZVByb21wdCgpXG4gKiA1LiDpobXpnaLliJfooaggKyDpobXpnaLkv67lpI0gKyBVSeiuvuiuoSDihpIg6LCD55SoIG9wdGltaXplUGFnZUxpc3RBbmRVSURlc2lnblByb21wdCgpXG4gKiA2LiDpobXpnaLliJfooaggKyDpobXpnaLkv67lpI0gKyBVSeiuvuiuoSArIOS7o+eggee8luWGmSDihpIg6LCD55SoIG9wdGltaXplRnVsbFdvcmtmbG93UHJvbXB0KClcbiAqIFxuICog5pWw5o2u5Lyg6YCS6YC76L6R77yaXG4gKiAtIHt7UEFHRV9MSVNUX1JFU1VMVH19IOS7o+ihqCBvcHRpbWl6ZV9wYWdlTGlzdF9wcm9tcHQg55qE57uT5p6cXG4gKiAtIHt7RklYRURfUEFHRV9MSVNUX1JFU1VMVH19IOS7o+ihqCBvcHRpbWl6ZV9maXhfcGFnZUxpc3RfcHJvbXB0IOeahOS/ruWkjeWQjue7k+aenFxuICogLSDkuqflk4Horr7orqHlkoxVSeiuvuiuoeWfuuS6juS/ruWkjeWQjueahOmhtemdouWIl+ihqOi/m+ihjO+8jOehruS/nemhtemdouWujOaVtOaAp1xuICovXG5leHBvcnQgY2xhc3MgUHJvbXB0T3B0aW1pemVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBwYWdlTGlzdFByb21wdFRlbXBsYXRlID0gYCMg5L2g5pivQVBQ5Lqn5ZOB57uP55CG5LiT5a6277yM546w5Zyo6ZyA6KaB5L2g5qC55o2u55So5oi36L6T5YWl55qE6ZyA5rGC5o+P6L+w77yM6YG15b6qXCLliIbmnpDop4TliJlcIuWIhuaekOWHuuaJgOmcgOimgeeahOWujOaVtOeahOmhtemdouWIl+ihqOOAglxuXG4jIyDliIbmnpDop4TliJlcbuS7peS4i+aWueazleiuuuWIhuS4uuWkmuS4quatpemqpO+8jOmHjeeCueeqgeWHulwi6YCQ6aG16Z2i5YWD57Sg4oaS5Y+v54K54oaS6Lez6L2sXCLliIbmnpDmgJ3ot6/jgIJcblxuIyMg6YeN54K55rOo5oSPXG4tIOW8gOWni+iuvuiuoeS5i+WJjeimgeWFiOafpeeci+W9k+WJjeW3peeoi+ebruW9leS4i+eahGRvYy91aURlc2lnbi91aURlc2lnblN0YXRlLm1k5paH5Lu277yI5aaC5p6c5a2Y5Zyo77yJ77yM5LqG6Kej5LmL5YmN55qE6K6+6K6h6L+b5bqm5ZKM54q25Ya177yM5Lul5L6/5pu05aW95Zyw55CG6Kej5LiK5LiL5paH5ZKM57un57ut6K6+6K6h5bel5L2c44CCXG4tIOWmguaenOWPkeeOsGRvYy91aURlc2lnblN0YXRlLm1k5paH5Lu25LiN5a2Y5Zyo77yM5YiZ6K+05piO5LmL5YmN5rKh5pyJ6K6+6K6h6L+H77yM6ZyA6KaB5LuO6Zu25byA5aeL6K6+6K6h44CCXG4tIOWmguaenOWPkeeOsGRvYy91aURlc2lnblN0YXRlLm1k5paH5Lu25a2Y5Zyo77yM5YiZ6K+05piO5LmL5YmN5bey57uP6K6+6K6h6L+H77yM6ZyA6KaB55yL5LiLIOaYr+WQpuWQjOS4gOS4qkFQUOaIluiAhee9keerme+8jOWmguaenOaYr+WQjOS4gOS4qumCo+WwseS4jemcgOimgemHjeaWsOWIhuaekHBhZ2VMaXN077yM6ICM5LiU5qC55o2u5LmL5YmN55qE6K6+6K6h6L+b5bqm5ZKM54q25Ya177yM57un57ut6K6+6K6h5bel5L2c77yM5aaC5p6c5LiN5piv5ZCM5LiA5LiqQVBQ5oiW6ICF572R56uZ77yM5YiZ6ZyA6KaB5Yig6ZmkZG9jL3VpRGVzaWduU3RhdGUubWTmlofku7bvvIznhLblkI7ku47pm7blvIDlp4vorr7orqHjgIJcblxuIyMg5LiA44CB5qih5Z2X5ouG6Kej5LiO5Yid5q2l5YiX5Ye66aG16Z2i5YiX6KGoXG4tIOaLhuino+aguOW/g+S4muWKoeaooeWdlywg6L6T5Ye65omA5pyJ5Yqf6IO95qih5Z2X77yM5LiN6K665piv5ZCm5qC45b+D77yM5LiN6K665aSn5bCP77yM6YO96KaB5YiX5Ye65p2l44CCXG4tIOmBjeWOhuS4iuS4gOatpeWIhuaekOWIl+WHuuadpeeahOaJgOacieS4muWKoeaooeWdl++8jOWvueavj+S4gOS4quS4muWKoeaooeWdl+i/m+ihjOe7huWIhu+8jOWIl+WHuuivpeS4muWKoeaooeWdl+eahOaJgOaciemhtemdou+8jOaJgOaciemhtemdouS4jeiuuuaYr+WQpuaguOW/g+OAgeS4jeiuuuWkp+Wwj+OAgeS4jeiuuuaYr+WQpuWtkOmhuemhtemdouWFqOmDqOWIl+WHuuadpeOAglxuXG4jIyDkuozjgIHmr4/kuKrpobXpnaLnmoRcIuWFg+e0oOKGkuWPr+eCueKGkui3s+i9rFwi5YiG5p6Q6KaB54K5XG5cbj4gKirmoLjlv4PmgJ3ot6/vvJoqKiAgXG4+IOmBjeWOhuS4iuS4gOatpeWIhuaekOWHuuadpeeahOavj+S4qumhtemdou+8jOWDj+aJq+mbt+S4gOagt1wi54K55LquXCLlroPkuIrpnaLmiYDmnInlj6/kuqTkupLlhYPntKDvvIzmsr/nnYBcIuWFg+e0oOWPr+eCueKGkui3s+i9rOmhtemdouebruagh1wi5LiA6Lev5bu25Ly477yM6YCQ5bGC5Y+R546w5bm26KGl5YWF5pu05aSa6aG16Z2i5oiW5by556qX44CCXG5cbjEuICoq6K+G5Yir6aG16Z2i5YWD57SgKiogIFxuICAgLSAqKumhtemdouahhuaetioq77ya5rWP6KeI6aG16Z2i5pW05L2T5biD5bGA77yI5aaC6aG26YOo5a+86Iiq44CBVGFi44CB5YiX6KGo44CB6KGo5Y2V44CB5bqV6YOo5oyJ6ZKu562J77yJ44CCICBcbiAgIC0gKirliJflh7rmiYDmnInmjqfku7YqKu+8miAgXG4gICAgIC0g6L6T5YWl5qGG44CB5oyJ6ZKu44CB5Zu+54mH44CB5YiX6KGo6aG544CB6ZO+5o6l5paH5a2X44CBVGFiIOmhueOAgeS4i+aLieeureWktOOAgeaCrOa1ruaMiemSruOAgeWbvuagh+OAgeWkjemAiS/ljZXpgInmjInpkq7nrYnjgIJcblxuMi4gKirmoIforrDlj6/ngrnlh7vlhYPntKAqKiAgXG4gICAtIOWcqOS4iui/sOaOp+S7tuS4re+8jOWIpOaWreWTquS6m+aYr1wi5Y+v54K55Ye7XCLvvJogIFxuICAgICAtICoq5pi+5oCn5oyJ6ZKuKirvvIjmj5DkuqQv56Gu6K6kL+WPlua2iC/kuIvkuIDmraXvvIkgIFxuICAgICAtICoq5Y+v5bGV5byA5qCH6aKYL+WNoeeJhyoq77yI54K55Ye75bGV5byA5pu05aSa77yJICBcbiAgICAgLSAqKuW4pumTvuaOpeeahOaWh+Wtlyoq77yI5Y2P6K6u44CB6ZqQ56eB44CB5rOo5YaM44CB5b+Y6K6w5a+G56CB562J77yJICBcbiAgICAgLSAqKuWIl+ihqOmhuS/nvZHmoLzljaHniYcqKiAgXG4gICAgIC0gKirlm77lg4/nvKnnlaXlm77jgIHova7mkq3lm77mn5Dkupvlj6/ngrnlh7vljLrln58qKiAgXG4gICAgIC0gKirlr7zoiKrov5Tlm54v5YWz6ZetL+iPnOWNleWbvuaghyoqICBcblxuMy4gKirpgJDkuIDliJflh7pcIueCueWHu+KGkui3s+i9rOmhtemdouebruagh1wiKiogIFxuICAgLSDlr7nmr4/kuKrlj6/ngrnlh7vlhYPntKDvvIzmmI7noa7ngrnlh7vlkI7ot7PliLDlk6rkuIDkuKrnm67moIfpobXpnaLvvIzpgqPkuYjor6Xnm67moIfpobXpnaLkuZ/opoHliJflh7rliLDpobXpnaLliJfooajkuK1cblxuICAgLSAqKuekuuS+iyoq77yI5LulXCLllYblk4Hor6bmg4XpobVcIuS4uuS+i++8ie+8miAgXG4gICAgIOmhtemdou+8muiuvue9rumhtSAgXG4gICAgIOWFg+e0oO+8miAgXG4gICAgICAgMS4g5YWz5LqOIOKGkCDngrnlh7sg4oaSIOi3s+WIsOWFs+S6jumhtSBcbiAgICAgICAyLiDlrqLmnI3mjInpkq4g4oaQIOeCueWHuyDihpIg6Lez5Yiw5a6i5pyN5a+56K+d6aG1XG4gICAgICAgLi4uIFxuXG4jIyDkuInjgIHpl63njq/mo4DpqozmraXpqqRcblxuMS4gKirmoKHpqozkuJrliqHpl63njq8qKlxuICAgLSDmr5TlpoLkuIDkuKrkuovnianmnInliY3lrp7mlr3lkI7nmoTpl63njq/pobXpnaLvvIzmr5TlpoLmkJzntKLpobXvvIzpgqPkuYjmkJzntKLkuYvlkI7ogq/lrprmnInkuIDkuKrmkJzntKLnu5PmnpzpobXov5vooYzpl63njq/jgIJcblxuMi4gKirovpPlh7rmnIDnu4jmuIXljZUqKiAgXG4gICAtIOi+k+WHuumhtemdouaAu+aVsO+8jOS7peWPiuaMieeFp+aooeWdl+Wxgue6p++8jOWwhuaJgOaciVwi6aG16Z2i5ZCN56ewXCLku6XliIblsYLliJfooajlvaLlvI/lsZXnpLrjgIIgIFxuICAgLSDnoa7kv53mr4/kuKrpobXpnaLpg73lt7JcIueCueS6rlwi5omA5pyJ5Lqk5LqS5YWD57Sg54K55Ye76Lez6L2s55qE55uu5qCH6aG16Z2i6YO95Zyo5riF5Y2V5Lit5Ye6546w44CCYDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGZpeFBhZ2VMaXN0UHJvbXB0VGVtcGxhdGUgPSBg5L2g5pivQVBQ5Lqn5ZOB57uP55CG5LiT5a6277yMb3B0aW1pemVfcGFnZUxpc3RfcHJvbXB05b6X5Ye655qE6aG16Z2i5YiX6KGo57uT5p6c5bm25LiN6b2Q5YWo77yM5L2g5b+F6aG75YaN5qyh6L+b6KGM5YiG5p6Q77yM5YiG5p6Q5Ye65pu05aSa5omA6ZyA6aG16Z2i77yM5bCG5bey57uP5b6X5Ye655qE6aG16Z2i5YiX6KGo5aSN55uY5qOA5p+l5LiA5qyh5piv5ZCm5pyJ57y65ryP77yM5b+F6aG75piv5LiA5Liq6aG16Z2i5a6M5pW06b2Q5YWo55qEQVBQ77yM5Li+5Liq5L6L5a2Q77ya6K6+572u6aG16YeM6Z2i5pyJ5b6I5aSa5Liq5a2Q6K6+572u6aG577yM6YKj5LmI5a2Q6K6+572u6aG55pyJ6ZyA6KaB5paw5byA6aG16Z2i55qE5Lmf5b+F6aG75YiX5Ye65p2l5LiA5Liq5Y2V54us55qE6aG16Z2i44CC5YW25LuW6aG16Z2i5Lmf5piv5aaC5q2k77yM5Lmf6KaB6L+b6KGM5YiG5p6Q5piv5ZCm5pyJ5LiN6b2Q5YWo55qE6aG16Z2i6Lev5b6E5ryP5o6J5LqG44CCYDtcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3REZXNpZ25Qcm9tcHRUZW1wbGF0ZSA9IGAjIOS9oOaYr+S6p+WTgee7j+eQhuS4k+Wutu+8jOmcgOimgeWIhuaekOeUqOaIt+mcgOaxguaPj+i/sO+8jOeEtuWQjuagueaNrifpgJrnlKjpnIDmsYLmlofmoaPmqKHmnb8n77yM6L6T5Ye65LiA5Lu95qCH5YeG55qEKirkuqflk4HpnIDmsYLmlofmoaMqKu+8jOeEtuWQjuWwhueUn+aIkOeahOmcgOaxguaWh+aho+WGmeWFpeWIsOW9k+WJjeW3peeoi+ebruW9leS4i+mdoueahGRvY+aWh+S7tuWkueS4i+mdoueahFhYWFByb2R1Y3REZXNpZ24ubWTvvIzlhbbkuK1YWFjmmK/moLnmja7nlKjmiLfpnIDmsYLmj4/ov7DmnaXlkb3lkI3jgIJcblxuKirph43opoHor7TmmI4qKu+8mlxuLSDov5nmmK8qKue6r+S6p+WTgemcgOaxguaWh+ahoyoq77yM5LiT5rOo5LqO5Lqn5ZOB5Yqf6IO944CB5Lia5Yqh6YC76L6R44CB55So5oi35L2T6aqM6ZyA5rGCXG4tICoq5Lil56aB5YyF5ZCr5Lu75L2V5oqA5pyv5a6e546w5YaF5a65KirvvJrkuI3lvpfmtonlj4pVSeiuvuiuoeinhOiMg+OAgeS6pOS6kuinhOiMg+OAgeW8gOWPkeinhOiMg+OAgeaKgOacr+aetuaehOetiVxuLSAqKuS4peemgeWMheWQq+aKgOacr+mAieWei+WGheWuuSoq77ya5LiN5b6X5o+Q5Y+K5YmN56uv5qGG5p6244CB5ZCO56uv5oqA5pyv44CB5pWw5o2u5bqT6K6+6K6h562JXG4tICoq5Lil56aB55Sf5oiQ5oqA5pyv6KeE6IyD56ug6IqCKirvvJrmlofmoaPnu5PmnoTkuKXmoLzmjInnhafkuIvpnaLnmoTmqKHmnb/miafooYzvvIzkuI3lvpfoh6rooYzmt7vliqDmioDmnK/nm7jlhbPnq6DoioJcblxuIyMg6YCa55So6ZyA5rGC5paH5qGj5qih5p2/XG5cbi0tLVxuXG4jIyMgMS4g5paH5qGj6K+05piOXG5cbiogKirmlofmoaPnm67nmoQqKu+8mueugOimgeivtOaYjuacrOmcgOaxguaWh+aho+eahOeUqOmAlOWSjOmAgueUqOiMg+WbtOOAglxuKiAqKueJiOacrOiusOW9lSoq77yaXG5cbiAgXFxgXFxgXFxgXG4gIHwg54mI5pys5Y+3IHwg5pel5pyfICAgICAgIHwg5L2c6ICFIHwg5L+u5pS55YaF5a65IHxcbiAgfCAtLS0tLS0gfCAtLS0tLS0tLS0tIHwgLS0tLSB8IC0tLS0tLS0tIHxcbiAgfCAxLjAgICAgfCBZWVlZLU1NLUREIHwgWFggICB8IOWIneWni+eJiOacrCB8XG4gIFxcYFxcYFxcYFxuKiAqKuivu+iAheWvueixoSoq77ya5Lqn5ZOB57uP55CG44CB56CU5Y+R44CB5rWL6K+V44CB6K6+6K6h562J55u45YWz6KeS6Imy44CCXG4qICoq5pyv6K+t6K+05piOKirvvJrliJflh7rmlofmoaPkuK3lh7rnjrDnmoTkuJPkuJrmnK/or63miJbnvKnlhpnvvIzlubblgZrnroDopoHop6Pph4rjgIJcblxuLS0tXG5cbiMjIyAyLiDmlbTkvZPmpoLop4hcblxuMS4gKirpobnnm67og4zmma/kuI7lrprkvY0qKlxuXG4gICAqIOivtOaYjiBBUFAg6Z2i5ZCR55qE55uu5qCH55So5oi35ZKM5qC45b+D5Lu35YC844CB5Lia5Yqh5Zy65pmv44CCXG5cbi0tLVxuXG4jIyMgMy4g6aG16Z2i5YiX6KGo77yI5oyJ5bGV56S66aG65bqP77yJXG5cbuS4jemcgOimgeiHquW3seWIhuaekOWKn+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/og73op6blj5Hor6XpobXpnaLnmoTmnaXmupDjgIJcblxuLS0tXG5cbiMjIyA0LiDpgJDpobXor6bnu4bpnIDmsYJcblxu5oyJXCLpobXpnaLliJfooahcIuS4remhuuW6j++8jOS+neasoeWxleW8gOavj+S4qumhtemdoueahOS7peS4i+WGheWuueOAguavj+S4qumhtemdouS4gOiKgu+8jOW7uuiuruS9v+eUqOS6jOe6p+aIluS4iee6p+agh+mimOOAglxuXG4jIyMjIDQuWCDpobXpnaLlkI3np7DvvIjnpLrkvovvvJrpl6rlsY/pobXvvIlcblxuMS4gKirpobXpnaLmpoLov7AqKlxuXG4gICAqIOWKn+iDveWumuS9jeOAgeS9leaXtuWxleekuuOAgeeJueauiuivtOaYjuOAglxuXG4yLiAqKui3s+i9rOWFs+ezuyoqXG5cbiAgICogKirmnaXmupAqKu+8muWIl+WHuuaJgOacieWPr+iDvei3s+i9rOWIsOacrOmhteeahOWFpeWPo+WcuuaZr+OAglxuICAgKiAqKuebruaghyoq77ya5pys6aG15a6M5oiQ5ZCO6Lez6L2s5Yiw5ZOq5Lqb6aG16Z2i44CB5Zyo5L2V56eN5p2h5Lu25LiL6Lez6L2s44CCXG5cbjMuICoqVUkg57uE5Lu25riF5Y2VKipcblxuICAgKiDliJflh7rmnKzpobXmiYDmnInlj6/op4bnu4Tku7blj4rlhbblsYLnuqfvvIjlpoLvvJrog4zmma/jgIFMb2dv44CB5oyJ6ZKu44CB5paH5pys44CB5Yqo55S75o6n5Lu2562J77yJ44CCXG4gICAqIOWmguaenOacieWkmuS4quS6pOS6kuWMuuWfn++8jOWPr+eUqOWtkOWIl+ihqOagh+aYjuOAglxuXG40LiAqKuS6pOS6kumAu+i+kSoqXG5cbiAgICog5a+55q+P5LiqIFVJIOe7hOS7tueahOihjOS4uuaPj+i/sO+8mlxuXG4gICAgICog54K55Ye7L+a7keWKqC/ovpPlhaUv54Sm54K55Y+Y5YyWIOetieS6pOS6kuaWueW8j+S8muinpuWPkeS7gOS5iOWPjemmiOOAglxuICAgICAqIOWmguacieWAkuiuoeaXtuOAgeWKqOeUu+aSreaUvuetieW8guatpeihjOS4uu+8jOimgeivtOaYjuinpuWPkeaXtuacuuWSjOe7k+adn+mAu+i+keOAglxuXG41LiAqKuS4muWKoemAu+i+kSoqXG5cbiAgICog6ZyA6KaB6LCD55So55qE5ZCO56uv5o6l5Y+j77yI5o6l5Y+j5Zyw5Z2A44CB6K+35rGC5pa55byP44CB5Li76KaB6K+35rGC5Y+C5pWw44CB6L+U5Zue5YWz6ZSu5a2X5q6177yJ44CCXG4gICAqIOaVsOaNruajgOafpS/moKHpqozop4TliJnvvIzljIXmi6zliY3nq6/moKHpqozlkozlkI7nq6/ov5Tlm57nmoTplJnor6/lpITnkIbjgIJcbiAgICog5pys5Zyw5a2Y5YKo5LiO57yT5a2Y77ya5ZOq5Lqb5pWw5o2u5L+d5a2Y5Zyo5pys5Zyw77yIVG9rZW7jgIHnlKjmiLflgY/lpb3jgIHmnKzlnLDmoIforrDnrYnvvInjgIJcblxuNi4gKirmlbDmja7mnaXmupDkuI7mm7TmlrAqKlxuXG4gICAqIOmdmeaAgeaVsOaNru+8muWmguaenOmhtemdouWGheWuueS4uumdmeaAgei1hOa6kO+8jOWIl+WHuui1hOa6kOS9jee9ru+8iOWmguacrOWcsOWbvueJh+OAgemFjee9ruaWh+S7tu+8ieOAglxuICAgKiDliqjmgIHmlbDmja7vvJrmjqXlj6Pov5Tlm57mlbDmja7lrZfmrrXor7TmmI7jgIHmlbDmja7liLfmlrAv5ouJ5Y+W5pe25py677yI5aaC5LiL5ouJ5Yi35paw44CB5a6a5pe25Yi35paw77yJ44CCXG5cbjcuICoq54m55q6K54q25oCBICYg5byC5bi45aSE55CGKipcblxuICAgKiAqKuWKoOi9veS4reaAgSoq77ya5b2T6K+35rGC5pyq6L+U5Zue5pe255qE5bGV56S65pWI5p6c77yI6L2s5ZyI5Yqo55S744CB6aqo5p625bGP562J77yJ44CCXG4gICAqICoq56m654q25oCBKirvvJrml6DmlbDmja7ml7bnmoTljaDkvY3lm74v5paH5qGI44CCXG4gICAqICoq6ZSZ6K+v54q25oCBKirvvJrnvZHnu5zlvILluLjjgIHmjqXlj6PlpLHotKXjgIHmlbDmja7op6PmnpDlvILluLjml7bnmoTlvLnnqpfmiJbmj5DnpLrmlofmoYjjgIJcblxuOC4gKirkuI7lhbbku5bpobXpnaLnmoTmlbDmja4v6YC76L6R5YWz57O7KipcblxuICAgKiDmnKzpobXlpoLkvZXmjqXmlLbmnaXoh6rkuIrkuIDkuKrpobXpnaLnmoTlj4LmlbDvvIjlpoLpgJrov4fot6/nlLHjgIFJbnRlbnTjgIHlm57osIPvvInjgIJcbiAgICog5pys6aG15pON5L2c5oiQ5Yqf5ZCO5aaC5L2V5Lyg6YCS5pWw5o2u57uZ5LiL5LiA5Liq6aG16Z2i5oiW5a+55YWo5bGA54q25oCB6L+b6KGM5pu05paw44CCXG5cbjkuICoq5Z+L54K5KipcblxuICAgKiDliJflh7rmnKzpobXpnIDln4vngrnnmoTkuovku7blkI3np7Dlj4rop6blj5Hml7bmnLrvvIjlpoJcIumhtemdouWxleekulwi44CBXCLmjInpkq7ngrnlh7tcIuOAgVwi6KGo5Y2V5o+Q5Lqk5oiQ5YqfL+Wksei0pVwi562J77yJ44CCXG4gICAqIOWPguaVsOivtOaYju+8muS4iuaKpeWTquS6m+aMh+agh++8iOaMiemSriBJROOAgemhtemdouWBnOeVmeaXtumVv+OAgemUmeivr+eggeetie+8ieOAglxuXG4tLS1cblxuIyMjIDUuIOWFqOWxgOi3s+i9rOa1geeoiyAmIOaVsOaNrua1gVxuXG4qICoq5paH5a2X6K+05piOKirvvJrlj6/lnKjmnKznq6DnlKjmloflrZfmlrnlvI/vvIzmpoLmi6zkuLvopoHpobXpnaLpl7TnmoTot7Povazpobrluo/kuI7mlbDmja7kvKDpgJLpgLvovpHjgILkvovlpoLvvJpcblxuICAxLiDpl6rlsY/pobUg4oaS77yI6aaW5qyh5omT5byA77yJ5paw5omL5byV5a+86aG1IOKGkiDnmbvlvZUv6aaW6aG1XG4gIDIuIOmmlumhtSDihpIg5pCc57Si6aG1IOKGkiDor6bmg4XpobUg4oaSIOi0reeJqei9pi/mlK/ku5jpobVcbiAgMy4g5Lu75oSP6ZyA6KaB5o6I5p2D6aG16Z2iIOKGkiDoi6XmnKrnmbvlvZXihpIg55m75b2V6aG1IOKGkiDov5Tlm57ljp/pobXpnaJcblxuKiAqKuWFqOWxgOWFseS6q+aVsOaNruivtOaYjioq77yaXG5cbiAgKiDnlKjmiLfnmbvlvZXmgIHvvIhhY2Nlc3NUb2tlbuOAgXJlZnJlc2hUb2tlbu+8iVxuICAqIOeUqOaIt+S/oeaBr++8iHVzZXJJZOOAgeaYteensOOAgeWktOWDj+OAgeacrOWcsOWBj+Wlveetie+8iVxuICAqIOi0reeJqei9pueKtuaAgeOAgeacquivu+a2iOaBr+aVsOOAgUFQUCDphY3nva7lvIDlhbPnrYlcblxuIyMjIDYuIOmcgOaxguaWh+aho+WGmeWFpVxuLSDnlJ/miJDnmoTpnIDmsYLmlofmoaPlhpnlhaXliLDlvZPliY3lt6XnqIvnm67lvZXkuIvpnaLnmoRkb2Pmlofku7blpLnkuIvpnaLnmoRYWFhQcm9kdWN0RGVzaWduLm1k77yM5YW25LitWFhY5piv5qC55o2u55So5oi36ZyA5rGC5o+P6L+w5p2l5ZG95ZCN44CCXG5cbioq6YeN6KaB6ZmQ5Yi2KirvvJpcbi0gKirnpoHmraLnlJ/miJDmioDmnK/op4TojIMqKu+8muS4jeW+l+WMheWQq1VJ6K6+6K6h6KeE6IyD44CB5Lqk5LqS6KeE6IyD44CB5byA5Y+R6KeE6IyD44CB5oqA5pyv5p625p6E562J5oqA5pyv5a6e546w57uG6IqCXG4tICoq56aB5q2i55Sf5oiQ5a6e546w5pa55qGIKirvvJrkuI3lvpfmtonlj4rliY3nq6/moYbmnrbpgInmi6njgIHlkI7nq6/mioDmnK/moIjjgIHmlbDmja7lupPorr7orqHnrYnmioDmnK/pgInlnotcbi0gKirkuJPms6jkuqflk4HpnIDmsYIqKu+8muaWh+aho+W6lOS4k+azqOS6juS6p+WTgeWKn+iDvemcgOaxguOAgeS4muWKoemAu+i+keOAgeeUqOaIt+S9k+mqjOmcgOaxguetieS6p+WTgeWxgumdoueahOWGheWuuVxuLSAqKumBv+WFjeaKgOacr+e7huiKgioq77ya5LiN5b6X5o+P6L+w5YW35L2T55qE5Luj56CB5a6e546w44CB5o6l5Y+j6K6+6K6h44CB5pWw5o2u57uT5p6E562J5byA5Y+R5bGC6Z2i55qE5YaF5a65XG4tICoq5Lil5qC85oyJ54Wn5qih5p2/57uT5p6EKirvvJrmlofmoaPlv4XpobvkuKXmoLzmjInnhafkuIrov7A15Liq56ug6IqC57uT5p6E57yW5YaZ77yM5LiN5b6X6Ieq6KGM5re75Yqg5YW25LuW56ug6IqCXG4tICoq56ug6IqC5YaF5a656ZmQ5Yi2KirvvJrmr4/kuKrnq6DoioLlj6rog73ljIXlkKvmqKHmnb/kuK3mjIflrprnmoTlhoXlrrnvvIzkuI3lvpfmianlsZXliLDmioDmnK/lrp7njrDpoobln59cblxuIyMjIDcuIOWujOaIkOehruiupFxuLSDlvZPkuqflk4HpnIDmsYLmlofmoaPlhpnlhaXlrozmiJDlkI7vvIzlv4XpobvlkYrnn6XnlKjmiLfvvJpcIuKchSAqKuS6p+WTgemcgOaxguaWh+aho+W3suWujOaIkO+8gSoq6K+35oKo5YWI5p+l55yLIGRvYy9YWFhQcm9kdWN0RGVzaWduLm1kIOaWh+S7tu+8jOS7lOe7humYheivu+mcgOaxguaWh+aho+WGheWuue+8jOehruiupOaYr+WQpuaciemcgOimgeS/ruaUueeahOWcsOaWueOAguWmguaenOacieS/ruaUueaEj+inge+8jOivt+WRiuivieaIkeWFt+S9k+eahOS/ruaUueimgeaxguOAguehruiupOmcgOaxguaWh+aho+aXoOmXrumimOaIluS/ruaUueWujOavleWQju+8jOivt+WRiuivieaIkeWPr+S7pei/m+ihjOS4i+S4gOatpeeahFVJ6K6+6K6h5bel5L2c44CCXCJcbi0gKirimqDvuI8g6YeN6KaB77ya6L+Z5piv5bel5L2c5rWB5pqC5YGc54K577yB5Zyo55So5oi35piO56Gu6KGo56S656Gu6K6k6ZyA5rGC5paH5qGj5peg6Zeu6aKY5bm26KaB5rGC57un57ut6L+b6KGMVUnorr7orqHkuYvliY3vvIznu53lr7nkuI3og73oh6rliqjov5vooYzkuIvkuIDmraXlt6XkvZzjgIIqKlxuLSAqKuKaoO+4jyDlpoLmnpzns7vnu5/oh6rliqjnu6fnu63miafooYzkuoZVSeiuvuiuoe+8jOivtOaYjuW3peS9nOa1gemFjee9ruaciemXrumimO+8jOmcgOimgeWBnOatouiHquWKqOaJp+ihjOOAgioqXG4tIOWcqOeUqOaIt+ehruiupOmcgOaxguaWh+aho+aXoOmXrumimOaIluWujOaIkOS/ruaUueWQju+8jOaJjeiDvee7p+e7rei/m+ihjOWQjue7reeahFVJ6K6+6K6h5oiW5Luj56CB5byA5Y+R5bel5L2c44CCYDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvZGVQcm9tcHRUZW1wbGF0ZSA9IGAjIOS9oOaYr3R5cGVzY3JpcHTku6PnoIHkuJPlrrbvvIzmoLnmja4n6KeE5YiZJ+OAgSfkvovlrZAn5ZKM55So5oi36L6T5YWl55qE6ZyA5rGC5o+P6L+w77yM5a6M5oiQ5Luj56CB5byA5Y+RXG5cbiMjIOmHjeimgeivtOaYjlxuLSDlnKjlvIDlp4vku6PnoIHlvIDlj5HkuYvliY3vvIzlv4XpobvlhYjmn6XnnIvlvZPliY3lt6XnqIvnm67lvZXkuIvnmoRkb2Pmlofku7blpLnkuK3nmoTkuqflk4HpnIDmsYLmlofmoaPvvIjlpoJYWFhQcm9kdWN0RGVzaWduLm1k77yJ77yM5Lil5qC85oyJ54Wn6ZyA5rGC5paH5qGj5Lit55qE6aG16Z2i5a6a5LmJ44CB5Lqk5LqS6YC76L6R44CB5Lia5Yqh6YC76L6R6L+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+6K6hKirvvIzkuI3opoHopoHmsYLnlKjmiLfmo4Dmn6XkuK3pl7Tnu5Pmnpxcbi0gKirku47nrKzkuIDkuKrpobXpnaLlvIDlp4vvvIzov57nu63orr7orqHliLDmnIDlkI7kuIDkuKrpobXpnaLkuLrmraIqKlxuXG4jIyDph43opoHor7TmmI5cbi0g5Zyo5byA5aeLVUnorr7orqHkuYvliY3vvIzlv4XpobvlhYjmn6XnnIvlvZPliY3lt6XnqIvnm67lvZXkuIvnmoRkb2Pmlofku7blpLnkuK3nmoTkuqflk4HpnIDmsYLmlofmoaPvvIjlpoJYWFhQcm9kdWN0RGVzaWduLm1k77yJ77yM5Lil5qC85oyJ54Wn6ZyA5rGC5paH5qGj5Lit55qE6aG16Z2i5a6a5LmJ44CBVUnnu4Tku7bmuIXljZXjgIHkuqTkupLpgLvovpHov5vooYzorr7orqHjgIJcbi0g5aaC5p6c5Y+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+W7umluZGV4Lmh0bWzmlofku7bvvIznhLblkI7moLnmja5wYWdlTGlzdOaKiuaJgOaciemhtemdouWFiOWumuS5ieWGmeWFpWluZGV4Lmh0bWzmlofku7bph4zpnaLvvIznhLblkI7lvIDlp4vnrKzkuIDkuKrpobXpnaLnmoRVSeiuvuiuoeOAglxuLSB2aWV3UGFnZXLova7mkq3nu4Tku7boioLngrnnu53lr7nkuI3lhYHorrjorr7nva4nb3ZlcmZsb3c6IGhpZGRlbifjgIJcbi0g56ys5LiA5q2l5L2g5b6X5YWI5YWF5YiG55CG6KejJ+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+d6aG16Z2i5a6M5pW05oCnXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZUZpeFBhZ2VMaXN0UHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nLCBleGlzdGluZ1BhZ2VMaXN0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHt0aGlzLmZpeFBhZ2VMaXN0UHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1cblxuIyDlt7LmnInpobXpnaLliJfooahcbiR7ZXhpc3RpbmdQYWdlTGlzdH1cblxuIyDkv67lpI3ku7vliqFcbuivt+WvueS4iui/sOW3suaciemhtemdouWIl+ihqOi/m+ihjOa3seW6puWIhuaekOWSjOS/ruWkje+8jOihpeWFheaJgOaciemBl+a8j+eahOmhtemdou+8jOehruS/nUFQUOWKn+iDveWujOaVtOOAgemhtemdoum9kOWFqOOAgmA7XG4gIH1cblxuICAvKipcbiAgICog5LyY5YyW5Lqn5ZOB6ZyA5rGC6K6+6K6h5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhuS6p+WTgemcgOaxguaWh+aho+eUn+aIkO+8jOmcgOimgeWfuuS6jumhtemdouWIl+ihqOe7k+aenFxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVQcm9kdWN0RGVzaWduUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nLCBwYWdlTGlzdD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgbGV0IHByb21wdCA9IHRoaXMucHJvZHVjdERlc2lnblByb21wdFRlbXBsYXRlO1xuICAgIFxuICAgIGlmIChwYWdlTGlzdCkge1xuICAgICAgcHJvbXB0ICs9IGBcblxuIyDpobXpnaLliJfooajlj4LogINcbiR7cGFnZUxpc3R9XG5cbiMjIOmHjeimgeivtOaYjlxuLSDor7fkuKXmoLzmjInnhafkuIrov7DpobXpnaLliJfooajmnaXnvJblhpnpnIDmsYLmlofmoaPnmoRcIumhtemdouWIl+ihqFwi6YOo5YiGXG4tIOWcqFwi6YCQ6aG16K+m57uG6ZyA5rGCXCLpg6jliIbvvIzpnIDopoHlr7nmr4/kuKrpobXpnaLov5vooYzor6bnu4bnmoTpnIDmsYLmj4/ov7Bcbi0g56Gu5L+d6aG16Z2i5YiX6KGo5ZKM6K+m57uG6ZyA5rGC5L+d5oyB5LiA6Ie0YDtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7cHJvbXB0fVxuXG4jIOeUqOaIt+mcgOaxguaPj+i/sFxuJHt1c2VySW5wdXR9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiDkvJjljJbku6PnoIHlvIDlj5Hmj5DnpLror41cbiAgICog5rOo5oSP77ya5q2k5pa55rOV5LiT6Zeo5aSE55CG5Luj56CB5byA5Y+R55u45YWz6ZyA5rGC77yM5Lya5Y+C6ICD5Lqn5ZOB6ZyA5rGC5paH5qGjXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZUNvZGVQcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHt0aGlzLmNvZGVQcm9tcHRUZW1wbGF0ZX1cblxuIyDnlKjmiLfpnIDmsYLmj4/ov7BcbiR7dXNlcklucHV0fWA7XG4gIH1cblxuICAvKipcbiAgICog5LyY5YyWVUnorr7orqHmj5DnpLror41cbiAgICog5rOo5oSP77ya5q2k5pa55rOV5LiT6Zeo5aSE55CGVUnorr7orqHnm7jlhbPpnIDmsYLvvIzkvJrlj4LogIPkuqflk4HpnIDmsYLmlofmoaNcbiAgICovXG4gIGFzeW5jIG9wdGltaXplVUlEZXNpZ25Qcm9tcHQodXNlcklucHV0OiBzdHJpbmcsIHBhZ2VMaXN0Pzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBsZXQgcHJvbXB0ID0gdGhpcy51aURlc2lnblByb21wdFRlbXBsYXRlO1xuICAgIFxuICAgIGlmIChwYWdlTGlzdCkge1xuICAgICAgcHJvbXB0ICs9IGBcblxuIyDpobXpnaLliJfooajlj4LogINcbiR7cGFnZUxpc3R9XG5cbiMjIOmHjeimgeivtOaYjlxuLSDor7flj4LogIPkuIrov7DpobXpnaLliJfooajmnaXnoa7lrprpnIDopoHorr7orqHlk6rkupvpobXpnaJcbi0g5aaC5p6c5b2T5YmN5bel56iL5Lit5bey57uP5a2Y5Zyo5p+Q5Lqb6aG16Z2i77yM6K+35o6S6Zmk6L+Z5Lqb6aG16Z2i77yM5Y+q6K6+6K6h5bCa5pyq5a2Y5Zyo55qE6aG16Z2iXG4tIOS4peagvOaMieeFp+mhtemdouWIl+ihqOS4reeahOmhtemdouWQjeensOWSjOWKn+iDveaPj+i/sOi/m+ihjOiuvuiuoWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3Byb21wdH1cblxuIyDnlKjmiLfpnIDmsYLmj4/ov7BcbiR7dXNlcklucHV0fWA7XG4gIH1cblxuICAvKipcbiAgICog5aSN5ZCI5bel5YW377ya6aG16Z2i5YiX6KGoICsg6aG16Z2i5L+u5aSNICsg5Lqn5ZOB6K6+6K6hXG4gICAqIOWFiOWIhuaekOmhtemdouWIl+ihqO+8jOeEtuWQjuS/ruWkjemhtemdouWIl+ihqO+8jOacgOWQjuWfuuS6juS/ruWkjeWQjueahOmhtemdouWIl+ihqOeUn+aIkOS6p+WTgemcgOaxguaWh+aho1xuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVQYWdlTGlzdEFuZFByb2R1Y3REZXNpZ25Qcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHtwYWdlTGlzdFByb21wdDogc3RyaW5nLCBmaXhQYWdlTGlzdFByb21wdDogc3RyaW5nLCBwcm9kdWN0RGVzaWduUHJvbXB0OiBzdHJpbmd9PiB7XG4gICAgY29uc3QgcGFnZUxpc3RQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplUGFnZUxpc3RQcm9tcHQodXNlcklucHV0KTtcbiAgICBjb25zdCBmaXhQYWdlTGlzdFByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVGaXhQYWdlTGlzdFByb21wdCh1c2VySW5wdXQsICd7e1BBR0VfTElTVF9SRVNVTFR9fScpO1xuICAgIC8vIOazqOaEj++8muS6p+WTgeiuvuiuoeWwhuWcqOS/ruWkjeWQjueahOmhtemdouWIl+ihqOWfuuehgOS4iui/m+ihjO+8jOi/memHjOi/lOWbnuWfuuehgOaooeadv1xuICAgIGNvbnN0IHByb2R1Y3REZXNpZ25Qcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplUHJvZHVjdERlc2lnblByb21wdCh1c2VySW5wdXQsICd7e0ZJWEVEX1BBR0VfTElTVF9SRVNVTFR9fScpO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBwYWdlTGlzdFByb21wdCxcbiAgICAgIGZpeFBhZ2VMaXN0UHJvbXB0LFxuICAgICAgcHJvZHVjdERlc2lnblByb21wdFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICog5aSN5ZCI5bel5YW377ya6aG16Z2i5YiX6KGoICsg6aG16Z2i5L+u5aSNICsg5Lqn5ZOB6K6+6K6hICsgVUnorr7orqFcbiAgICog5a6M5pW055qE6K6+6K6h5rWB56iL77ya6aG16Z2i5YiX6KGo5YiG5p6QIOKGkiDpobXpnaLliJfooajkv67lpI0g4oaSIOS6p+WTgemcgOaxguiuvuiuoSDihpIgVUnorr7orqFcbiAgICovXG4gIGFzeW5jIG9wdGltaXplUGFnZUxpc3RQcm9kdWN0RGVzaWduQW5kVUlQcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHtwYWdlTGlzdFByb21wdDogc3RyaW5nLCBmaXhQYWdlTGlzdFByb21wdDogc3RyaW5nLCBwcm9kdWN0RGVzaWduUHJvbXB0OiBzdHJpbmcsIHVpRGVzaWduUHJvbXB0OiBzdHJpbmd9PiB7XG4gICAgY29uc3QgcGFnZUxpc3RQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplUGFnZUxpc3RQcm9tcHQodXNlcklucHV0KTtcbiAgICBjb25zdCBmaXhQYWdlTGlzdFByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVGaXhQYWdlTGlzdFByb21wdCh1c2VySW5wdXQsICd7e1BBR0VfTElTVF9SRVNVTFR9fScpO1xuICAgIC8vIOazqOaEj++8muS6p+WTgeiuvuiuoeWSjFVJ6K6+6K6h5bCG5Zyo5L+u5aSN5ZCO55qE6aG16Z2i5YiX6KGo5Z+656GA5LiK6L+b6KGMXG4gICAgY29uc3QgcHJvZHVjdERlc2lnblByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVQcm9kdWN0RGVzaWduUHJvbXB0KHVzZXJJbnB1dCwgJ3t7RklYRURfUEFHRV9MSVNUX1JFU1VMVH19Jyk7XG4gICAgY29uc3QgdWlEZXNpZ25Qcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplVUlEZXNpZ25Qcm9tcHQodXNlcklucHV0LCAne3tGSVhFRF9QQUdFX0xJU1RfUkVTVUxUfX0nKTtcbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgcGFnZUxpc3RQcm9tcHQsXG4gICAgICBmaXhQYWdlTGlzdFByb21wdCxcbiAgICAgIHByb2R1Y3REZXNpZ25Qcm9tcHQsXG4gICAgICB1aURlc2lnblByb21wdFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICog5aSN5ZCI5bel5YW377ya6aG16Z2i5YiX6KGoICsg6aG16Z2i5L+u5aSNICsg5Lqn5ZOB6K6+6K6hICsgVUnorr7orqEgKyDku6PnoIHnvJblhplcbiAgICog5a6M5pW055qE5byA5Y+R5rWB56iL77ya6aG16Z2i5YiX6KGo5YiG5p6QIOKGkiDpobXpnaLliJfooajkv67lpI0g4oaSIOS6p+WTgemcgOaxguiuvuiuoSDihpIgVUnorr7orqEg4oaSIOS7o+eggeW8gOWPkVxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVGdWxsV29ya2Zsb3dXaXRoUHJvZHVjdERlc2lnblByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8e3BhZ2VMaXN0UHJvbXB0OiBzdHJpbmcsIGZpeFBhZ2VMaXN0UHJvbXB0OiBzdHJpbmcsIHByb2R1Y3REZXNpZ25Qcm9tcHQ6IHN0cmluZywgdWlEZXNpZ25Qcm9tcHQ6IHN0cmluZywgY29kZVByb21wdDogc3RyaW5nfT4ge1xuICAgIGNvbnN0IHBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZVBhZ2VMaXN0UHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgY29uc3QgZml4UGFnZUxpc3RQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplRml4UGFnZUxpc3RQcm9tcHQodXNlcklucHV0LCAne3tQQUdFX0xJU1RfUkVTVUxUfX0nKTtcbiAgICAvLyDms6jmhI/vvJrkuqflk4Horr7orqHlkoxVSeiuvuiuoeWwhuWcqOS/ruWkjeWQjueahOmhtemdouWIl+ihqOWfuuehgOS4iui/m+ihjFxuICAgIGNvbnN0IHByb2R1Y3REZXNpZ25Qcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplUHJvZHVjdERlc2lnblByb21wdCh1c2VySW5wdXQsICd7e0ZJWEVEX1BBR0VfTElTVF9SRVNVTFR9fScpO1xuICAgIGNvbnN0IHVpRGVzaWduUHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZVVJRGVzaWduUHJvbXB0KHVzZXJJbnB1dCwgJ3t7RklYRURfUEFHRV9MSVNUX1JFU1VMVH19Jyk7XG4gICAgY29uc3QgY29kZVByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVDb2RlUHJvbXB0KHVzZXJJbnB1dCk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2VMaXN0UHJvbXB0LFxuICAgICAgZml4UGFnZUxpc3RQcm9tcHQsXG4gICAgICBwcm9kdWN0RGVzaWduUHJvbXB0LFxuICAgICAgdWlEZXNpZ25Qcm9tcHQsXG4gICAgICBjb2RlUHJvbXB0XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlpI3lkIjlt6XlhbfvvJpVSeiuvuiuoSArIOS7o+eggee8luWGmVxuICAgKiDlhYjov5vooYxVSeiuvuiuoe+8jOeEtuWQjui/m+ihjOS7o+eggeW8gOWPkVxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVVSURlc2lnbkFuZENvZGVQcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHt1aURlc2lnblByb21wdDogc3RyaW5nLCBjb2RlUHJvbXB0OiBzdHJpbmd9PiB7XG4gICAgY29uc3QgdWlEZXNpZ25Qcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplVUlEZXNpZ25Qcm9tcHQodXNlcklucHV0KTtcbiAgICBjb25zdCBjb2RlUHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZUNvZGVQcm9tcHQodXNlcklucHV0KTtcbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgdWlEZXNpZ25Qcm9tcHQsXG4gICAgICBjb2RlUHJvbXB0XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlpI3lkIjlt6XlhbfvvJrpobXpnaLliJfooaggKyDpobXpnaLkv67lpI0gKyBVSeiuvuiuoVxuICAgKiDlhYjliIbmnpDpobXpnaLliJfooajvvIznhLblkI7kv67lpI3pobXpnaLliJfooajvvIzlho3ln7rkuo7kv67lpI3lkI7nmoTpobXpnaLliJfooajov5vooYxVSeiuvuiuoVxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVQYWdlTGlzdEFuZFVJRGVzaWduUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTx7cGFnZUxpc3RQcm9tcHQ6IHN0cmluZywgZml4UGFnZUxpc3RQcm9tcHQ6IHN0cmluZywgdWlEZXNpZ25Qcm9tcHQ6IHN0cmluZ30+IHtcbiAgICBjb25zdCBwYWdlTGlzdFByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVQYWdlTGlzdFByb21wdCh1c2VySW5wdXQpO1xuICAgIGNvbnN0IGZpeFBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZUZpeFBhZ2VMaXN0UHJvbXB0KHVzZXJJbnB1dCwgJ3t7UEFHRV9MSVNUX1JFU1VMVH19Jyk7XG4gICAgLy8g5rOo5oSP77yaVUnorr7orqHlsIblnKjkv67lpI3lkI7nmoTpobXpnaLliJfooajln7rnoYDkuIrov5vooYxcbiAgICBjb25zdCB1aURlc2lnblByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVVSURlc2lnblByb21wdCh1c2VySW5wdXQsICd7e0ZJWEVEX1BBR0VfTElTVF9SRVNVTFR9fScpO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBwYWdlTGlzdFByb21wdCxcbiAgICAgIGZpeFBhZ2VMaXN0UHJvbXB0LFxuICAgICAgdWlEZXNpZ25Qcm9tcHRcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIOWkjeWQiOW3peWFt++8mumhtemdouWIl+ihqCArIOmhtemdouS/ruWkjSArIFVJ6K6+6K6hICsg5Luj56CB57yW5YaZXG4gICAqIOWujOaVtOeahOW3peS9nOa1geeoi++8mumhtemdouWIl+ihqOWIhuaekCDihpIg6aG16Z2i5YiX6KGo5L+u5aSNIOKGkiBVSeiuvuiuoSDihpIg5Luj56CB5byA5Y+RXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZUZ1bGxXb3JrZmxvd1Byb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8e3BhZ2VMaXN0UHJvbXB0OiBzdHJpbmcsIGZpeFBhZ2VMaXN0UHJvbXB0OiBzdHJpbmcsIHVpRGVzaWduUHJvbXB0OiBzdHJpbmcsIGNvZGVQcm9tcHQ6IHN0cmluZ30+IHtcbiAgICBjb25zdCBwYWdlTGlzdFByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVQYWdlTGlzdFByb21wdCh1c2VySW5wdXQpO1xuICAgIGNvbnN0IGZpeFBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgdGhpcy5vcHRpbWl6ZUZpeFBhZ2VMaXN0UHJvbXB0KHVzZXJJbnB1dCwgJ3t7UEFHRV9MSVNUX1JFU1VMVH19Jyk7XG4gICAgLy8g5rOo5oSP77yaVUnorr7orqHlsIblnKjkv67lpI3lkI7nmoTpobXpnaLliJfooajln7rnoYDkuIrov5vooYxcbiAgICBjb25zdCB1aURlc2lnblByb21wdCA9IGF3YWl0IHRoaXMub3B0aW1pemVVSURlc2lnblByb21wdCh1c2VySW5wdXQsICd7e0ZJWEVEX1BBR0VfTElTVF9SRVNVTFR9fScpO1xuICAgIGNvbnN0IGNvZGVQcm9tcHQgPSBhd2FpdCB0aGlzLm9wdGltaXplQ29kZVByb21wdCh1c2VySW5wdXQpO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBwYWdlTGlzdFByb21wdCxcbiAgICAgIGZpeFBhZ2VMaXN0UHJvbXB0LFxuICAgICAgdWlEZXNpZ25Qcm9tcHQsXG4gICAgICBjb2RlUHJvbXB0XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiDln7rkuo7pobXpnaLliJfooajnu5PmnpznlJ/miJDkuqflk4HpnIDmsYLorr7orqHmj5DnpLror41cbiAgICog5q2k5pa55rOV55So5LqO5Zyo6I635b6X6aG16Z2i5YiX6KGo57uT5p6c5ZCO77yM55Sf5oiQ5YyF5ZCr6aG16Z2i5YiX6KGo5L+h5oGv55qE5Lqn5ZOB6K6+6K6h5o+Q56S66K+NXG4gICAqL1xuICBhc3luYyBnZW5lcmF0ZVByb2R1Y3REZXNpZ25Qcm9tcHRXaXRoUGFnZUxpc3QodXNlcklucHV0OiBzdHJpbmcsIHBhZ2VMaXN0UmVzdWx0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLm9wdGltaXplUHJvZHVjdERlc2lnblByb21wdCh1c2VySW5wdXQsIHBhZ2VMaXN0UmVzdWx0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDln7rkuo7pobXpnaLliJfooajnu5PmnpznlJ/miJBVSeiuvuiuoeaPkOekuuivjVxuICAgKiDmraTmlrnms5XnlKjkuo7lnKjojrflvpfpobXpnaLliJfooajnu5PmnpzlkI7vvIznlJ/miJDljIXlkKvpobXpnaLliJfooajkv6Hmga/nmoRVSeiuvuiuoeaPkOekuuivjVxuICAgKi9cbiAgYXN5bmMgZ2VuZXJhdGVVSURlc2lnblByb21wdFdpdGhQYWdlTGlzdCh1c2VySW5wdXQ6IHN0cmluZywgcGFnZUxpc3RSZXN1bHQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMub3B0aW1pemVVSURlc2lnblByb21wdCh1c2VySW5wdXQsIHBhZ2VMaXN0UmVzdWx0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDln7rkuo7kv67lpI3lkI7nmoTpobXpnaLliJfooajnu5PmnpznlJ/miJDkuqflk4HpnIDmsYLorr7orqHmj5DnpLror41cbiAgICog5q2k5pa55rOV55So5LqO5Zyo6I635b6X5L+u5aSN5ZCO55qE6aG16Z2i5YiX6KGo57uT5p6c5ZCO77yM55Sf5oiQ5YyF5ZCr5a6M5pW06aG16Z2i5YiX6KGo5L+h5oGv55qE5Lqn5ZOB6K6+6K6h5o+Q56S66K+NXG4gICAqL1xuICBhc3luYyBnZW5lcmF0ZVByb2R1Y3REZXNpZ25Qcm9tcHRXaXRoRml4ZWRQYWdlTGlzdCh1c2VySW5wdXQ6IHN0cmluZywgZml4ZWRQYWdlTGlzdFJlc3VsdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5vcHRpbWl6ZVByb2R1Y3REZXNpZ25Qcm9tcHQodXNlcklucHV0LCBmaXhlZFBhZ2VMaXN0UmVzdWx0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDln7rkuo7kv67lpI3lkI7nmoTpobXpnaLliJfooajnu5PmnpznlJ/miJBVSeiuvuiuoeaPkOekuuivjVxuICAgKiDmraTmlrnms5XnlKjkuo7lnKjojrflvpfkv67lpI3lkI7nmoTpobXpnaLliJfooajnu5PmnpzlkI7vvIznlJ/miJDljIXlkKvlrozmlbTpobXpnaLliJfooajkv6Hmga/nmoRVSeiuvuiuoeaPkOekuuivjVxuICAgKi9cbiAgYXN5bmMgZ2VuZXJhdGVVSURlc2lnblByb21wdFdpdGhGaXhlZFBhZ2VMaXN0KHVzZXJJbnB1dDogc3RyaW5nLCBmaXhlZFBhZ2VMaXN0UmVzdWx0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLm9wdGltaXplVUlEZXNpZ25Qcm9tcHQodXNlcklucHV0LCBmaXhlZFBhZ2VMaXN0UmVzdWx0KTtcbiAgfVxufSAiXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bytefun-ai-mcp",
3
- "version": "1.2.7",
3
+ "version": "1.2.9",
4
4
  "description": "ByteFun AI MCP服务 - 打通产品设计、UI设计、代码开发的服务平台,支持设计稿转代码和跨平台原生代码开发",
5
5
  "main": "build/index.js",
6
6
  "type": "module",