@promptbook/components 0.103.0-52 โ 0.103.0-54
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/esm/index.es.js +742 -71
- package/esm/index.es.js.map +1 -1
- package/esm/typings/servers.d.ts +8 -1
- package/esm/typings/src/_packages/components.index.d.ts +2 -0
- package/esm/typings/src/_packages/core.index.d.ts +6 -0
- package/esm/typings/src/_packages/types.index.d.ts +2 -0
- package/esm/typings/src/_packages/utils.index.d.ts +2 -0
- package/esm/typings/src/book-2.0/agent-source/AgentModelRequirements.d.ts +7 -0
- package/esm/typings/src/book-components/Chat/Chat/ChatProps.d.ts +4 -0
- package/esm/typings/src/book-components/_common/HamburgerMenu/HamburgerMenu.d.ts +12 -0
- package/esm/typings/src/book-components/icons/MicIcon.d.ts +8 -0
- package/esm/typings/src/collection/agent-collection/constructors/agent-collection-in-supabase/AgentCollectionInSupabase.d.ts +17 -0
- package/esm/typings/src/commitments/ACTION/ACTION.d.ts +4 -0
- package/esm/typings/src/commitments/DELETE/DELETE.d.ts +4 -0
- package/esm/typings/src/commitments/FORMAT/FORMAT.d.ts +4 -0
- package/esm/typings/src/commitments/GOAL/GOAL.d.ts +4 -0
- package/esm/typings/src/commitments/KNOWLEDGE/KNOWLEDGE.d.ts +4 -0
- package/esm/typings/src/commitments/MEMORY/MEMORY.d.ts +4 -0
- package/esm/typings/src/commitments/MESSAGE/AgentMessageCommitmentDefinition.d.ts +32 -0
- package/esm/typings/src/commitments/MESSAGE/InitialMessageCommitmentDefinition.d.ts +4 -0
- package/esm/typings/src/commitments/MESSAGE/MESSAGE.d.ts +4 -0
- package/esm/typings/src/commitments/MESSAGE/UserMessageCommitmentDefinition.d.ts +32 -0
- package/esm/typings/src/commitments/META/META.d.ts +4 -0
- package/esm/typings/src/commitments/META_COLOR/META_COLOR.d.ts +4 -0
- package/esm/typings/src/commitments/META_IMAGE/META_IMAGE.d.ts +4 -0
- package/esm/typings/src/commitments/META_LINK/META_LINK.d.ts +4 -0
- package/esm/typings/src/commitments/MODEL/MODEL.d.ts +4 -0
- package/esm/typings/src/commitments/NOTE/NOTE.d.ts +4 -0
- package/esm/typings/src/commitments/PERSONA/PERSONA.d.ts +4 -0
- package/esm/typings/src/commitments/RULE/RULE.d.ts +4 -0
- package/esm/typings/src/commitments/SAMPLE/SAMPLE.d.ts +4 -0
- package/esm/typings/src/commitments/SCENARIO/SCENARIO.d.ts +4 -0
- package/esm/typings/src/commitments/STYLE/STYLE.d.ts +4 -0
- package/esm/typings/src/commitments/_base/BaseCommitmentDefinition.d.ts +5 -0
- package/esm/typings/src/commitments/_base/CommitmentDefinition.d.ts +5 -0
- package/esm/typings/src/commitments/_base/NotYetImplementedCommitmentDefinition.d.ts +4 -0
- package/esm/typings/src/commitments/index.d.ts +20 -1
- package/esm/typings/src/execution/LlmExecutionTools.d.ts +9 -0
- package/esm/typings/src/llm-providers/agent/AgentLlmExecutionTools.d.ts +2 -1
- package/esm/typings/src/llm-providers/agent/RemoteAgent.d.ts +10 -1
- package/esm/typings/src/utils/normalization/normalizeMessageText.d.ts +9 -0
- package/esm/typings/src/utils/normalization/normalizeMessageText.test.d.ts +1 -0
- package/esm/typings/src/version.d.ts +1 -1
- package/package.json +3 -3
- package/umd/index.umd.js +742 -70
- package/umd/index.umd.js.map +1 -1
package/esm/index.es.js
CHANGED
|
@@ -35,7 +35,7 @@ const BOOK_LANGUAGE_VERSION = '2.0.0';
|
|
|
35
35
|
* @generated
|
|
36
36
|
* @see https://github.com/webgptorg/promptbook
|
|
37
37
|
*/
|
|
38
|
-
const PROMPTBOOK_ENGINE_VERSION = '0.103.0-
|
|
38
|
+
const PROMPTBOOK_ENGINE_VERSION = '0.103.0-54';
|
|
39
39
|
/**
|
|
40
40
|
* TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
|
|
41
41
|
* Note: [๐] Ignore a discrepancy between file name and entity name
|
|
@@ -84,9 +84,9 @@ function styleInject(css, ref) {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
var css_248z$
|
|
88
|
-
var styles$
|
|
89
|
-
styleInject(css_248z$
|
|
87
|
+
var css_248z$9 = ".AvatarChip-module_AvatarChip__4sA0u{align-items:center;background:#e0e7ef;border:1px solid #b3c2d1;border-radius:16px;color:#2a3b4d;cursor:pointer;display:inline-flex;font-size:.95em;font-weight:500;margin:2px;padding:4px 12px}.AvatarChip-module_Avatar__mN2sc{border-radius:50%;height:24px;margin-right:8px;object-fit:cover;width:24px}.AvatarChip-module_TemplateLabel__-7vVI{background:#f0f4f8;border-radius:12px;color:#3a4752;font-size:.8em;margin-left:8px;margin-right:0;padding:2px 6px;text-transform:uppercase}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkF2YXRhckNoaXAubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FFSSxrQkFBbUIsQ0FHbkIsa0JBQW1CLENBS25CLHdCQUF5QixDQU56QixrQkFBbUIsQ0FFbkIsYUFBYyxDQU1kLGNBQWUsQ0FYZixtQkFBb0IsQ0FPcEIsZUFBaUIsQ0FEakIsZUFBZ0IsQ0FFaEIsVUFBVyxDQU5YLGdCQVVKLENBRUEsaUNBR0ksaUJBQWtCLENBRGxCLFdBQVksQ0FHWixnQkFBaUIsQ0FEakIsZ0JBQWlCLENBSGpCLFVBS0osQ0FFQSx3Q0FDSSxrQkFBbUIsQ0FJbkIsa0JBQW1CLENBSG5CLGFBQWMsQ0FDZCxjQUFnQixDQUdoQixlQUFnQixDQUNoQixjQUFlLENBSGYsZUFBZ0IsQ0FJaEIsd0JBQ0oiLCJmaWxlIjoiQXZhdGFyQ2hpcC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLkF2YXRhckNoaXAge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDEycHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiAjZTBlN2VmO1xuICAgIGNvbG9yOiAjMmEzYjRkO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZm9udC1zaXplOiAwLjk1ZW07XG4gICAgbWFyZ2luOiAycHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2IzYzJkMTtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLkF2YXRhciB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cblxuLlRlbXBsYXRlTGFiZWwge1xuICAgIGJhY2tncm91bmQ6ICNmMGY0Zjg7XG4gICAgY29sb3I6ICMzYTQ3NTI7XG4gICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICBwYWRkaW5nOiAycHggNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cbiJdfQ== */";
|
|
88
|
+
var styles$8 = {"AvatarChip":"AvatarChip-module_AvatarChip__4sA0u","Avatar":"AvatarChip-module_Avatar__mN2sc","TemplateLabel":"AvatarChip-module_TemplateLabel__-7vVI"};
|
|
89
|
+
styleInject(css_248z$9);
|
|
90
90
|
|
|
91
91
|
/**
|
|
92
92
|
* Shows a chip with avatar's avatar and name
|
|
@@ -96,7 +96,7 @@ styleInject(css_248z$8);
|
|
|
96
96
|
function AvatarChip(props) {
|
|
97
97
|
const { avatarBasicInformation, className, onSelect, isSelected, isTemplate } = props;
|
|
98
98
|
const { agentName, meta } = avatarBasicInformation;
|
|
99
|
-
return (jsxs("div", { className: classNames(styles$
|
|
99
|
+
return (jsxs("div", { className: classNames(styles$8.AvatarChip, className, isSelected ? styles$8.Selected : undefined), onClick: () => onSelect === null || onSelect === void 0 ? void 0 : onSelect(avatarBasicInformation), style: { cursor: onSelect ? 'pointer' : undefined }, children: [jsx("img", { src: meta.image, alt: agentName || '', className: styles$8.Avatar }), meta.fullname || agentName, isTemplate && jsx("span", { className: styles$8.TemplateLabel, children: "Template" })] }));
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
/**
|
|
@@ -191,6 +191,17 @@ function generatePlaceholderAgentProfileImageUrl(agentName) {
|
|
|
191
191
|
* TODO: [๐คน] Figure out best placeholder image generator https://i.pravatar.cc/1000?u=568
|
|
192
192
|
*/
|
|
193
193
|
|
|
194
|
+
/**
|
|
195
|
+
* Core Promptbook server configuration.
|
|
196
|
+
*
|
|
197
|
+
* This server is also used for auto-federation in the Agents Server.
|
|
198
|
+
*/
|
|
199
|
+
const CORE_SERVER = {
|
|
200
|
+
title: 'Promptbook Core',
|
|
201
|
+
description: `Core Promptbook server used for auto-federation`,
|
|
202
|
+
owner: 'AI Web, LLC <legal@ptbk.io> (https://www.ptbk.io/)',
|
|
203
|
+
urls: ['https://core.ptbk.io/'],
|
|
204
|
+
};
|
|
194
205
|
/**
|
|
195
206
|
* Available remote servers for the Promptbook
|
|
196
207
|
*
|
|
@@ -212,6 +223,7 @@ const REMOTE_SERVER_URLS = [
|
|
|
212
223
|
owner: 'AI Web, LLC <legal@ptbk.io> (https://www.ptbk.io/)',
|
|
213
224
|
urls: ['https://s6.ptbk.io/'],
|
|
214
225
|
},
|
|
226
|
+
CORE_SERVER,
|
|
215
227
|
/*
|
|
216
228
|
Note: Working on older version of Promptbook and not supported anymore
|
|
217
229
|
{
|
|
@@ -224,7 +236,14 @@ const REMOTE_SERVER_URLS = [
|
|
|
224
236
|
*/
|
|
225
237
|
];
|
|
226
238
|
/**
|
|
227
|
-
*
|
|
239
|
+
* Remote servers that are auto-federated by the Agents Server.
|
|
240
|
+
*
|
|
241
|
+
* These servers are always added in addition to the `FEDERATED_SERVERS` metadata.
|
|
242
|
+
*
|
|
243
|
+
* @public exported from `@promptbook/core`
|
|
244
|
+
*/
|
|
245
|
+
CORE_SERVER.urls;
|
|
246
|
+
/**
|
|
228
247
|
* Note: [๐] Ignore a discrepancy between file name and entity name
|
|
229
248
|
*/
|
|
230
249
|
|
|
@@ -2914,6 +2933,61 @@ function templateParameters(template, parameters) {
|
|
|
2914
2933
|
return replacedTemplates;
|
|
2915
2934
|
}
|
|
2916
2935
|
|
|
2936
|
+
/**
|
|
2937
|
+
* Tag function for notating a prompt as template literal
|
|
2938
|
+
*
|
|
2939
|
+
* Note: There are 3 similar functions:
|
|
2940
|
+
* 1) `prompt` for notating single prompt exported from `@promptbook/utils`
|
|
2941
|
+
* 2) `promptTemplate` alias for `prompt`
|
|
2942
|
+
* 3) `book` for notating and validating entire books exported from `@promptbook/utils`
|
|
2943
|
+
*
|
|
2944
|
+
* @param strings
|
|
2945
|
+
* @param values
|
|
2946
|
+
* @returns the prompt string
|
|
2947
|
+
* @public exported from `@promptbook/utils`
|
|
2948
|
+
*/
|
|
2949
|
+
function prompt(strings, ...values) {
|
|
2950
|
+
if (values.length === 0) {
|
|
2951
|
+
return spaceTrim(strings.join(''));
|
|
2952
|
+
}
|
|
2953
|
+
const stringsWithHiddenParameters = strings.map((stringsItem) =>
|
|
2954
|
+
// TODO: [0] DRY
|
|
2955
|
+
stringsItem.split('{').join(`${REPLACING_NONCE}beginbracket`).split('}').join(`${REPLACING_NONCE}endbracket`));
|
|
2956
|
+
const placeholderParameterNames = values.map((value, i) => `${REPLACING_NONCE}${i}`);
|
|
2957
|
+
const parameters = Object.fromEntries(values.map((value, i) => [placeholderParameterNames[i], value]));
|
|
2958
|
+
// Combine strings and values
|
|
2959
|
+
let pipelineString = stringsWithHiddenParameters.reduce((result, stringsItem, i) => placeholderParameterNames[i] === undefined
|
|
2960
|
+
? `${result}${stringsItem}`
|
|
2961
|
+
: `${result}${stringsItem}{${placeholderParameterNames[i]}}`, '');
|
|
2962
|
+
pipelineString = spaceTrim(pipelineString);
|
|
2963
|
+
try {
|
|
2964
|
+
pipelineString = templateParameters(pipelineString, parameters);
|
|
2965
|
+
}
|
|
2966
|
+
catch (error) {
|
|
2967
|
+
if (!(error instanceof PipelineExecutionError)) {
|
|
2968
|
+
throw error;
|
|
2969
|
+
}
|
|
2970
|
+
console.error({ pipelineString, parameters, placeholderParameterNames, error });
|
|
2971
|
+
throw new UnexpectedError(spaceTrim((block) => `
|
|
2972
|
+
Internal error in prompt template literal
|
|
2973
|
+
|
|
2974
|
+
${block(JSON.stringify({ strings, values }, null, 4))}}
|
|
2975
|
+
|
|
2976
|
+
`));
|
|
2977
|
+
}
|
|
2978
|
+
// TODO: [0] DRY
|
|
2979
|
+
pipelineString = pipelineString
|
|
2980
|
+
.split(`${REPLACING_NONCE}beginbracket`)
|
|
2981
|
+
.join('{')
|
|
2982
|
+
.split(`${REPLACING_NONCE}endbracket`)
|
|
2983
|
+
.join('}');
|
|
2984
|
+
return pipelineString;
|
|
2985
|
+
}
|
|
2986
|
+
/**
|
|
2987
|
+
* TODO: [๐ง ][๐ด] Where is the best location for this file
|
|
2988
|
+
* Note: [๐] Ignore a discrepancy between file name and entity name
|
|
2989
|
+
*/
|
|
2990
|
+
|
|
2917
2991
|
/**
|
|
2918
2992
|
* Detects if the code is running in a browser environment in main thread (Not in a web worker)
|
|
2919
2993
|
*
|
|
@@ -3231,6 +3305,18 @@ function normalizeTo_SCREAMING_CASE(text) {
|
|
|
3231
3305
|
* TODO: [๐บ] Use some intermediate util splitWords
|
|
3232
3306
|
*/
|
|
3233
3307
|
|
|
3308
|
+
/**
|
|
3309
|
+
* Normalizes message text for comparison
|
|
3310
|
+
*
|
|
3311
|
+
* @param text The message text to normalize
|
|
3312
|
+
* @returns The normalized message text
|
|
3313
|
+
*
|
|
3314
|
+
* @public exported from `@promptbook/utils`
|
|
3315
|
+
*/
|
|
3316
|
+
function normalizeMessageText(text) {
|
|
3317
|
+
return spaceTrim$1(text);
|
|
3318
|
+
}
|
|
3319
|
+
|
|
3234
3320
|
/**
|
|
3235
3321
|
* Normalizes a given text to PascalCase format.
|
|
3236
3322
|
*
|
|
@@ -3636,6 +3722,12 @@ class ActionCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
3636
3722
|
get description() {
|
|
3637
3723
|
return 'Define agent capabilities and actions it can perform.';
|
|
3638
3724
|
}
|
|
3725
|
+
/**
|
|
3726
|
+
* Icon for this commitment.
|
|
3727
|
+
*/
|
|
3728
|
+
get icon() {
|
|
3729
|
+
return 'โก';
|
|
3730
|
+
}
|
|
3639
3731
|
/**
|
|
3640
3732
|
* Markdown documentation for ACTION commitment.
|
|
3641
3733
|
*/
|
|
@@ -3715,6 +3807,12 @@ class DeleteCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
3715
3807
|
get description() {
|
|
3716
3808
|
return 'Remove or **disregard** certain information, context, or previous commitments.';
|
|
3717
3809
|
}
|
|
3810
|
+
/**
|
|
3811
|
+
* Icon for this commitment.
|
|
3812
|
+
*/
|
|
3813
|
+
get icon() {
|
|
3814
|
+
return '๐๏ธ';
|
|
3815
|
+
}
|
|
3718
3816
|
/**
|
|
3719
3817
|
* Markdown documentation for DELETE commitment.
|
|
3720
3818
|
*/
|
|
@@ -3831,6 +3929,12 @@ class FormatCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
3831
3929
|
get description() {
|
|
3832
3930
|
return 'Specify output structure or formatting requirements.';
|
|
3833
3931
|
}
|
|
3932
|
+
/**
|
|
3933
|
+
* Icon for this commitment.
|
|
3934
|
+
*/
|
|
3935
|
+
get icon() {
|
|
3936
|
+
return '๐';
|
|
3937
|
+
}
|
|
3834
3938
|
/**
|
|
3835
3939
|
* Markdown documentation for FORMAT commitment.
|
|
3836
3940
|
*/
|
|
@@ -3906,6 +4010,12 @@ class GoalCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
3906
4010
|
get description() {
|
|
3907
4011
|
return 'Define main **goals** the AI assistant should achieve, with later goals having higher priority.';
|
|
3908
4012
|
}
|
|
4013
|
+
/**
|
|
4014
|
+
* Icon for this commitment.
|
|
4015
|
+
*/
|
|
4016
|
+
get icon() {
|
|
4017
|
+
return '๐ฏ';
|
|
4018
|
+
}
|
|
3909
4019
|
/**
|
|
3910
4020
|
* Markdown documentation for GOAL commitment.
|
|
3911
4021
|
*/
|
|
@@ -4002,6 +4112,12 @@ class KnowledgeCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
4002
4112
|
get description() {
|
|
4003
4113
|
return 'Add domain **knowledge** via direct text or external sources (RAG).';
|
|
4004
4114
|
}
|
|
4115
|
+
/**
|
|
4116
|
+
* Icon for this commitment.
|
|
4117
|
+
*/
|
|
4118
|
+
get icon() {
|
|
4119
|
+
return '๐ง ';
|
|
4120
|
+
}
|
|
4005
4121
|
/**
|
|
4006
4122
|
* Markdown documentation for KNOWLEDGE commitment.
|
|
4007
4123
|
*/
|
|
@@ -4103,6 +4219,12 @@ class MemoryCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
4103
4219
|
get description() {
|
|
4104
4220
|
return 'Remember past interactions and user **preferences** for personalized responses.';
|
|
4105
4221
|
}
|
|
4222
|
+
/**
|
|
4223
|
+
* Icon for this commitment.
|
|
4224
|
+
*/
|
|
4225
|
+
get icon() {
|
|
4226
|
+
return '๐ง ';
|
|
4227
|
+
}
|
|
4106
4228
|
/**
|
|
4107
4229
|
* Markdown documentation for MEMORY commitment.
|
|
4108
4230
|
*/
|
|
@@ -4194,6 +4316,83 @@ class MemoryCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
4194
4316
|
function keepUnused(...valuesToKeep) {
|
|
4195
4317
|
}
|
|
4196
4318
|
|
|
4319
|
+
/**
|
|
4320
|
+
* AGENT MESSAGE commitment definition
|
|
4321
|
+
*
|
|
4322
|
+
* The AGENT MESSAGE commitment defines a message from the agent in the conversation history.
|
|
4323
|
+
* It is used to pre-fill the chat with a conversation history or to provide few-shot examples.
|
|
4324
|
+
*
|
|
4325
|
+
* Example usage in agent source:
|
|
4326
|
+
*
|
|
4327
|
+
* ```book
|
|
4328
|
+
* AGENT MESSAGE What seems to be the issue?
|
|
4329
|
+
* ```
|
|
4330
|
+
*
|
|
4331
|
+
* @private [๐ช] Maybe export the commitments through some package
|
|
4332
|
+
*/
|
|
4333
|
+
class AgentMessageCommitmentDefinition extends BaseCommitmentDefinition {
|
|
4334
|
+
constructor() {
|
|
4335
|
+
super('AGENT MESSAGE');
|
|
4336
|
+
}
|
|
4337
|
+
/**
|
|
4338
|
+
* Short one-line description of AGENT MESSAGE.
|
|
4339
|
+
*/
|
|
4340
|
+
get description() {
|
|
4341
|
+
return 'Defines a **message from the agent** in the conversation history.';
|
|
4342
|
+
}
|
|
4343
|
+
/**
|
|
4344
|
+
* Icon for this commitment.
|
|
4345
|
+
*/
|
|
4346
|
+
get icon() {
|
|
4347
|
+
return '๐ค';
|
|
4348
|
+
}
|
|
4349
|
+
/**
|
|
4350
|
+
* Markdown documentation for AGENT MESSAGE commitment.
|
|
4351
|
+
*/
|
|
4352
|
+
get documentation() {
|
|
4353
|
+
return spaceTrim$1(`
|
|
4354
|
+
# ${this.type}
|
|
4355
|
+
|
|
4356
|
+
Defines a message from the agent in the conversation history. This is used to pre-fill the chat with a conversation history or to provide few-shot examples.
|
|
4357
|
+
|
|
4358
|
+
## Key aspects
|
|
4359
|
+
|
|
4360
|
+
- Represents a message sent by the agent.
|
|
4361
|
+
- Used for setting up conversation context.
|
|
4362
|
+
- Can be used in conjunction with USER MESSAGE.
|
|
4363
|
+
|
|
4364
|
+
## Examples
|
|
4365
|
+
|
|
4366
|
+
\`\`\`book
|
|
4367
|
+
Conversation History
|
|
4368
|
+
|
|
4369
|
+
USER MESSAGE Hello, I have a problem.
|
|
4370
|
+
AGENT MESSAGE What seems to be the issue?
|
|
4371
|
+
USER MESSAGE My computer is not starting.
|
|
4372
|
+
\`\`\`
|
|
4373
|
+
`);
|
|
4374
|
+
}
|
|
4375
|
+
applyToAgentModelRequirements(requirements, content) {
|
|
4376
|
+
// AGENT MESSAGE is for UI display purposes / conversation history construction
|
|
4377
|
+
// and typically doesn't need to be added to the system prompt or model requirements directly.
|
|
4378
|
+
// It is extracted separately for the chat interface.
|
|
4379
|
+
var _a;
|
|
4380
|
+
const pendingUserMessage = (_a = requirements.metadata) === null || _a === void 0 ? void 0 : _a.pendingUserMessage;
|
|
4381
|
+
if (pendingUserMessage) {
|
|
4382
|
+
const newSample = { question: pendingUserMessage, answer: content };
|
|
4383
|
+
const newSamples = [...(requirements.samples || []), newSample];
|
|
4384
|
+
const newMetadata = { ...requirements.metadata };
|
|
4385
|
+
delete newMetadata.pendingUserMessage;
|
|
4386
|
+
return {
|
|
4387
|
+
...requirements,
|
|
4388
|
+
samples: newSamples,
|
|
4389
|
+
metadata: newMetadata,
|
|
4390
|
+
};
|
|
4391
|
+
}
|
|
4392
|
+
return requirements;
|
|
4393
|
+
}
|
|
4394
|
+
}
|
|
4395
|
+
|
|
4197
4396
|
/**
|
|
4198
4397
|
* INITIAL MESSAGE commitment definition
|
|
4199
4398
|
*
|
|
@@ -4218,6 +4417,12 @@ class InitialMessageCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
4218
4417
|
get description() {
|
|
4219
4418
|
return 'Defines the **initial message** shown to the user when the chat starts.';
|
|
4220
4419
|
}
|
|
4420
|
+
/**
|
|
4421
|
+
* Icon for this commitment.
|
|
4422
|
+
*/
|
|
4423
|
+
get icon() {
|
|
4424
|
+
return '๐';
|
|
4425
|
+
}
|
|
4221
4426
|
/**
|
|
4222
4427
|
* Markdown documentation for INITIAL MESSAGE commitment.
|
|
4223
4428
|
*/
|
|
@@ -4276,6 +4481,12 @@ class MessageCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
4276
4481
|
get description() {
|
|
4277
4482
|
return 'Include actual **messages** the AI assistant has sent during conversation history.';
|
|
4278
4483
|
}
|
|
4484
|
+
/**
|
|
4485
|
+
* Icon for this commitment.
|
|
4486
|
+
*/
|
|
4487
|
+
get icon() {
|
|
4488
|
+
return '๐ฌ';
|
|
4489
|
+
}
|
|
4279
4490
|
/**
|
|
4280
4491
|
* Markdown documentation for MESSAGE commitment.
|
|
4281
4492
|
*/
|
|
@@ -4358,6 +4569,73 @@ class MessageCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
4358
4569
|
* Note: [๐] Ignore a discrepancy between file name and entity name
|
|
4359
4570
|
*/
|
|
4360
4571
|
|
|
4572
|
+
/**
|
|
4573
|
+
* USER MESSAGE commitment definition
|
|
4574
|
+
*
|
|
4575
|
+
* The USER MESSAGE commitment defines a message from the user in the conversation history.
|
|
4576
|
+
* It is used to pre-fill the chat with a conversation history or to provide few-shot examples.
|
|
4577
|
+
*
|
|
4578
|
+
* Example usage in agent source:
|
|
4579
|
+
*
|
|
4580
|
+
* ```book
|
|
4581
|
+
* USER MESSAGE Hello, I have a problem.
|
|
4582
|
+
* ```
|
|
4583
|
+
*
|
|
4584
|
+
* @private [๐ช] Maybe export the commitments through some package
|
|
4585
|
+
*/
|
|
4586
|
+
class UserMessageCommitmentDefinition extends BaseCommitmentDefinition {
|
|
4587
|
+
constructor() {
|
|
4588
|
+
super('USER MESSAGE');
|
|
4589
|
+
}
|
|
4590
|
+
/**
|
|
4591
|
+
* Short one-line description of USER MESSAGE.
|
|
4592
|
+
*/
|
|
4593
|
+
get description() {
|
|
4594
|
+
return 'Defines a **message from the user** in the conversation history.';
|
|
4595
|
+
}
|
|
4596
|
+
/**
|
|
4597
|
+
* Icon for this commitment.
|
|
4598
|
+
*/
|
|
4599
|
+
get icon() {
|
|
4600
|
+
return '๐ง';
|
|
4601
|
+
}
|
|
4602
|
+
/**
|
|
4603
|
+
* Markdown documentation for USER MESSAGE commitment.
|
|
4604
|
+
*/
|
|
4605
|
+
get documentation() {
|
|
4606
|
+
return spaceTrim$1(`
|
|
4607
|
+
# ${this.type}
|
|
4608
|
+
|
|
4609
|
+
Defines a message from the user in the conversation history. This is used to pre-fill the chat with a conversation history or to provide few-shot examples.
|
|
4610
|
+
|
|
4611
|
+
## Key aspects
|
|
4612
|
+
|
|
4613
|
+
- Represents a message sent by the user.
|
|
4614
|
+
- Used for setting up conversation context.
|
|
4615
|
+
- Can be used in conjunction with AGENT MESSAGE.
|
|
4616
|
+
|
|
4617
|
+
## Examples
|
|
4618
|
+
|
|
4619
|
+
\`\`\`book
|
|
4620
|
+
Conversation History
|
|
4621
|
+
|
|
4622
|
+
USER MESSAGE Hello, I have a problem.
|
|
4623
|
+
AGENT MESSAGE What seems to be the issue?
|
|
4624
|
+
USER MESSAGE My computer is not starting.
|
|
4625
|
+
\`\`\`
|
|
4626
|
+
`);
|
|
4627
|
+
}
|
|
4628
|
+
applyToAgentModelRequirements(requirements, content) {
|
|
4629
|
+
return {
|
|
4630
|
+
...requirements,
|
|
4631
|
+
metadata: {
|
|
4632
|
+
...requirements.metadata,
|
|
4633
|
+
pendingUserMessage: content,
|
|
4634
|
+
},
|
|
4635
|
+
};
|
|
4636
|
+
}
|
|
4637
|
+
}
|
|
4638
|
+
|
|
4361
4639
|
/**
|
|
4362
4640
|
* META commitment definition
|
|
4363
4641
|
*
|
|
@@ -4394,6 +4672,12 @@ class MetaCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
4394
4672
|
get description() {
|
|
4395
4673
|
return 'Set meta-information about the agent (IMAGE, LINK, TITLE, DESCRIPTION, etc.).';
|
|
4396
4674
|
}
|
|
4675
|
+
/**
|
|
4676
|
+
* Icon for this commitment.
|
|
4677
|
+
*/
|
|
4678
|
+
get icon() {
|
|
4679
|
+
return 'โน๏ธ';
|
|
4680
|
+
}
|
|
4397
4681
|
/**
|
|
4398
4682
|
* Markdown documentation for META commitment.
|
|
4399
4683
|
*/
|
|
@@ -4521,6 +4805,12 @@ class MetaColorCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
4521
4805
|
get description() {
|
|
4522
4806
|
return "Set the agent's accent color.";
|
|
4523
4807
|
}
|
|
4808
|
+
/**
|
|
4809
|
+
* Icon for this commitment.
|
|
4810
|
+
*/
|
|
4811
|
+
get icon() {
|
|
4812
|
+
return '๐จ';
|
|
4813
|
+
}
|
|
4524
4814
|
/**
|
|
4525
4815
|
* Markdown documentation for META COLOR commitment.
|
|
4526
4816
|
*/
|
|
@@ -4599,6 +4889,12 @@ class MetaImageCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
4599
4889
|
get description() {
|
|
4600
4890
|
return "Set the agent's profile image URL.";
|
|
4601
4891
|
}
|
|
4892
|
+
/**
|
|
4893
|
+
* Icon for this commitment.
|
|
4894
|
+
*/
|
|
4895
|
+
get icon() {
|
|
4896
|
+
return '๐ผ๏ธ';
|
|
4897
|
+
}
|
|
4602
4898
|
/**
|
|
4603
4899
|
* Markdown documentation for META IMAGE commitment.
|
|
4604
4900
|
*/
|
|
@@ -4689,6 +4985,12 @@ class ModelCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
4689
4985
|
get description() {
|
|
4690
4986
|
return 'Enforce AI model requirements including name and technical parameters.';
|
|
4691
4987
|
}
|
|
4988
|
+
/**
|
|
4989
|
+
* Icon for this commitment.
|
|
4990
|
+
*/
|
|
4991
|
+
get icon() {
|
|
4992
|
+
return 'โ๏ธ';
|
|
4993
|
+
}
|
|
4692
4994
|
/**
|
|
4693
4995
|
* Markdown documentation for MODEL commitment.
|
|
4694
4996
|
*/
|
|
@@ -4924,6 +5226,12 @@ class NoteCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
4924
5226
|
get description() {
|
|
4925
5227
|
return 'Add developer-facing notes without changing behavior or output.';
|
|
4926
5228
|
}
|
|
5229
|
+
/**
|
|
5230
|
+
* Icon for this commitment.
|
|
5231
|
+
*/
|
|
5232
|
+
get icon() {
|
|
5233
|
+
return '๐';
|
|
5234
|
+
}
|
|
4927
5235
|
/**
|
|
4928
5236
|
* Markdown documentation for NOTE commitment.
|
|
4929
5237
|
*/
|
|
@@ -5026,6 +5334,12 @@ class PersonaCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
5026
5334
|
get description() {
|
|
5027
5335
|
return 'Define who the agent is: background, expertise, and personality.';
|
|
5028
5336
|
}
|
|
5337
|
+
/**
|
|
5338
|
+
* Icon for this commitment.
|
|
5339
|
+
*/
|
|
5340
|
+
get icon() {
|
|
5341
|
+
return '๐ค';
|
|
5342
|
+
}
|
|
5029
5343
|
/**
|
|
5030
5344
|
* Markdown documentation for PERSONA commitment.
|
|
5031
5345
|
*/
|
|
@@ -5153,6 +5467,12 @@ class RuleCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
5153
5467
|
get description() {
|
|
5154
5468
|
return 'Add behavioral rules the agent must follow.';
|
|
5155
5469
|
}
|
|
5470
|
+
/**
|
|
5471
|
+
* Icon for this commitment.
|
|
5472
|
+
*/
|
|
5473
|
+
get icon() {
|
|
5474
|
+
return 'โ๏ธ';
|
|
5475
|
+
}
|
|
5156
5476
|
/**
|
|
5157
5477
|
* Markdown documentation for RULE/RULES commitment.
|
|
5158
5478
|
*/
|
|
@@ -5229,6 +5549,12 @@ class SampleCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
5229
5549
|
get description() {
|
|
5230
5550
|
return 'Provide example responses to guide behavior.';
|
|
5231
5551
|
}
|
|
5552
|
+
/**
|
|
5553
|
+
* Icon for this commitment.
|
|
5554
|
+
*/
|
|
5555
|
+
get icon() {
|
|
5556
|
+
return '๐';
|
|
5557
|
+
}
|
|
5232
5558
|
/**
|
|
5233
5559
|
* Markdown documentation for SAMPLE/EXAMPLE commitment.
|
|
5234
5560
|
*/
|
|
@@ -5306,6 +5632,12 @@ class ScenarioCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
5306
5632
|
get description() {
|
|
5307
5633
|
return 'Define specific **situations** or contexts for AI responses, with later scenarios having higher priority.';
|
|
5308
5634
|
}
|
|
5635
|
+
/**
|
|
5636
|
+
* Icon for this commitment.
|
|
5637
|
+
*/
|
|
5638
|
+
get icon() {
|
|
5639
|
+
return '๐ญ';
|
|
5640
|
+
}
|
|
5309
5641
|
/**
|
|
5310
5642
|
* Markdown documentation for SCENARIO commitment.
|
|
5311
5643
|
*/
|
|
@@ -5422,6 +5754,12 @@ class StyleCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
5422
5754
|
get description() {
|
|
5423
5755
|
return 'Control the tone and writing style of responses.';
|
|
5424
5756
|
}
|
|
5757
|
+
/**
|
|
5758
|
+
* Icon for this commitment.
|
|
5759
|
+
*/
|
|
5760
|
+
get icon() {
|
|
5761
|
+
return '๐๏ธ';
|
|
5762
|
+
}
|
|
5425
5763
|
/**
|
|
5426
5764
|
* Markdown documentation for STYLE commitment.
|
|
5427
5765
|
*/
|
|
@@ -5491,6 +5829,12 @@ class NotYetImplementedCommitmentDefinition extends BaseCommitmentDefinition {
|
|
|
5491
5829
|
get description() {
|
|
5492
5830
|
return 'Placeholder commitment that appends content verbatim to the system message.';
|
|
5493
5831
|
}
|
|
5832
|
+
/**
|
|
5833
|
+
* Icon for this commitment.
|
|
5834
|
+
*/
|
|
5835
|
+
get icon() {
|
|
5836
|
+
return '๐ง';
|
|
5837
|
+
}
|
|
5494
5838
|
/**
|
|
5495
5839
|
* Markdown documentation available at runtime.
|
|
5496
5840
|
*/
|
|
@@ -5571,6 +5915,8 @@ const COMMITMENT_REGISTRY = [
|
|
|
5571
5915
|
new GoalCommitmentDefinition('GOAL'),
|
|
5572
5916
|
new GoalCommitmentDefinition('GOALS'),
|
|
5573
5917
|
new InitialMessageCommitmentDefinition(),
|
|
5918
|
+
new UserMessageCommitmentDefinition(),
|
|
5919
|
+
new AgentMessageCommitmentDefinition(),
|
|
5574
5920
|
new MessageCommitmentDefinition('MESSAGE'),
|
|
5575
5921
|
new MessageCommitmentDefinition('MESSAGES'),
|
|
5576
5922
|
new ScenarioCommitmentDefinition('SCENARIO'),
|
|
@@ -5871,9 +6217,9 @@ function AvatarChipFromSource(props) {
|
|
|
5871
6217
|
return jsx(AvatarChip, { avatarBasicInformation: avatarBasicInformation, ...props });
|
|
5872
6218
|
}
|
|
5873
6219
|
|
|
5874
|
-
var css_248z$
|
|
5875
|
-
var styles$
|
|
5876
|
-
styleInject(css_248z$
|
|
6220
|
+
var css_248z$8 = ".Modal-module_scrim__jKO-A{align-items:center;background-color:rgba(0,0,0,.5);display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:9000000}.Modal-module_Modal__k49dY{background:#fff;border-radius:8px;max-height:90%;max-width:90%;min-height:30vh;min-width:50vw;overflow:auto;padding:20px;position:relative}.Modal-module_closeButton__dzf6l{background:transparent;border:none;cursor:pointer;font-size:24px;position:absolute;right:10px;top:10px}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1vZGFsLm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkJBU0ksa0JBQW1CLENBSG5CLCtCQUFvQyxDQUNwQyxZQUFhLENBRmIsV0FBWSxDQUdaLHNCQUF1QixDQUx2QixNQUFPLENBRlAsY0FBZSxDQUNmLEtBQU0sQ0FFTixVQUFXLENBTVgsZUFDSixDQUVBLDJCQUNJLGVBQWlCLENBRWpCLGlCQUFrQixDQUdsQixjQUFlLENBRGYsYUFBYyxDQUdkLGVBQWdCLENBRGhCLGNBQWUsQ0FFZixhQUFjLENBUGQsWUFBYSxDQUViLGlCQU1KLENBRUEsaUNBSUksc0JBQXVCLENBQ3ZCLFdBQVksQ0FFWixjQUFlLENBRGYsY0FBZSxDQUxmLGlCQUFrQixDQUVsQixVQUFXLENBRFgsUUFNSiIsImZpbGUiOiJNb2RhbC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnNjcmltIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgei1pbmRleDogOTAwMDAwMDtcbn1cblxuLk1vZGFsIHtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgbWF4LWhlaWdodDogOTAlO1xuICAgIG1pbi13aWR0aDogNTB2dztcbiAgICBtaW4taGVpZ2h0OiAzMHZoO1xuICAgIG92ZXJmbG93OiBhdXRvO1xufVxuXG4uY2xvc2VCdXR0b24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwcHg7XG4gICAgcmlnaHQ6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4iXX0= */";
|
|
6221
|
+
var styles$7 = {"scrim":"Modal-module_scrim__jKO-A","Modal":"Modal-module_Modal__k49dY","closeButton":"Modal-module_closeButton__dzf6l"};
|
|
6222
|
+
styleInject(css_248z$8);
|
|
5877
6223
|
|
|
5878
6224
|
/**
|
|
5879
6225
|
*
|
|
@@ -5891,7 +6237,7 @@ function Modal({ children, onClose, className, }) {
|
|
|
5891
6237
|
window.removeEventListener('keydown', handleKeyDown);
|
|
5892
6238
|
};
|
|
5893
6239
|
}, [onClose]);
|
|
5894
|
-
return createPortal(jsx("div", { className: styles$
|
|
6240
|
+
return createPortal(jsx("div", { className: styles$7.scrim, onClick: onClose, children: jsxs("div", { className: classNames(styles$7.Modal, className), onClick: (e) => e.stopPropagation(), children: [jsx("button", { className: styles$7.closeButton, onClick: onClose, children: "\u00D7" }), children] }) }), document.body);
|
|
5895
6241
|
}
|
|
5896
6242
|
|
|
5897
6243
|
/**
|
|
@@ -5976,9 +6322,9 @@ const DEFAULT_BOOK = padBook(validateBook(spaceTrim(`
|
|
|
5976
6322
|
// <- [๐ฑโ๐] Buttons into genesis book
|
|
5977
6323
|
// <- TODO: [๐ฑโ๐] generateBookBoilerplate and deprecate `DEFAULT_BOOK`
|
|
5978
6324
|
|
|
5979
|
-
var css_248z$
|
|
5980
|
-
var styles$
|
|
5981
|
-
styleInject(css_248z$
|
|
6325
|
+
var css_248z$7 = ".BookEditor-module_BookEditor__s-0PU{width:100%}.BookEditor-module_bookEditorContainer__wLMwM{box-sizing:border-box;height:100%;padding:10px 25px 0;position:relative;width:100%}.BookEditor-module_bookEditorContainer__wLMwM.BookEditor-module_isVerbose__VQ6iL{background-color:rgba(0,0,0,.05);outline:1px dotted rgba(0,0,0,.5)}.BookEditor-module_isVerbose__VQ6iL{outline:2px dotted #ff7526}.BookEditor-module_bookEditorWrapper__twppD{background-color:#fff;border:1px solid rgba(209,213,219,.8);border-radius:1rem;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);overflow:hidden;padding-top:10px;transition:box-shadow .2s ease-in-out}.BookEditor-module_isVerbose__VQ6iL .BookEditor-module_bookEditorWrapper__twppD{overflow:visible}.BookEditor-module_bookEditorWrapper__twppD:hover{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.BookEditor-module_bookEditorWrapper__twppD.BookEditor-module_isBorderRadiusDisabled__h1I3v{border-radius:0}.BookEditor-module_dropOverlay__xWWoX{align-items:center;background-color:rgba(0,0,0,.5);bottom:0;color:#fff;display:flex;font-size:1.5rem;justify-content:center;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:100}.BookEditor-module_bookEditorActionbar__KW6dc{position:absolute;right:55px;top:10px;z-index:100}.BookEditor-module_fullscreen__rktsl{border:none;border-radius:0;bottom:0;box-shadow:none;height:100%;left:0;padding-top:50px;position:fixed;right:0;top:0;width:100%;z-index:9999}.BookEditor-module_button__hS390{align-items:center;background-color:#fff;border:1px solid #d1d5db;border-radius:.375rem;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);color:#374151;cursor:pointer;display:inline-flex;gap:.5rem;padding:.5rem 1rem;transition:all .2s ease-in-out}.BookEditor-module_button__hS390:hover{background-color:#f9fafb;border-color:#b7bcce;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJvb2tFZGl0b3IubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FFSSxVQUNKLENBRUEsOENBS0kscUJBQXNCLENBSHRCLFdBQVksQ0FFWixtQkFBb0IsQ0FEcEIsaUJBQWtCLENBRmxCLFVBS0osQ0FFQSxpRkFFSSxnQ0FBcUMsQ0FDckMsaUNBRUosQ0FFQSxvQ0FDSSwwQkFDSixDQUVBLDRDQUtJLHFCQUF1QixDQUR2QixxQ0FBMEMsQ0FGMUMsa0JBQW1CLENBSW5CLHNDQUEyQyxDQUwzQyxlQUFnQixDQUVoQixnQkFBaUIsQ0FJakIscUNBQ0osQ0FDQSxnRkFFSSxnQkFFSixDQUVBLGtEQUNJLHVFQUNKLENBVUEsNEZBQ0ksZUFDSixDQUVBLHNDQVNJLGtCQUFtQixDQUhuQiwrQkFBb0MsQ0FEcEMsUUFBUyxDQUVULFVBQVksQ0FDWixZQUFhLENBR2IsZ0JBQWlCLENBRGpCLHNCQUF1QixDQVB2QixNQUFPLENBVVAsbUJBQW9CLENBWnBCLGlCQUFrQixDQUdsQixPQUFRLENBRlIsS0FBTSxDQVVOLFdBRUosQ0FRQSw4Q0FDSSxpQkFBa0IsQ0FFbEIsVUFBVyxDQURYLFFBQVMsQ0FFVCxXQUNKLENBRUEscUNBV0ksV0FBWSxDQUZaLGVBQWdCLENBSmhCLFFBQVMsQ0FPVCxlQUFnQixDQUxoQixXQUFZLENBSlosTUFBTyxDQU9QLGdCQUFpQixDQVRqQixjQUFlLENBR2YsT0FBUSxDQUZSLEtBQU0sQ0FJTixVQUFXLENBRVgsWUFLSixDQUVBLGlDQU9JLGtCQUFtQixDQU5uQixxQkFBc0IsQ0FDdEIsd0JBQXlCLENBQ3pCLHFCQUF1QixDQU92QixzQ0FBMkMsQ0FEM0MsYUFBYyxDQUpkLGNBQWUsQ0FDZixtQkFBb0IsQ0FFcEIsU0FBVyxDQUpYLGtCQUFvQixDQU9wQiw4QkFDSixDQUVBLHVDQUNJLHdCQUF5QixDQUN6QixvQkFBcUIsQ0FDckIsaUVBQ0oiLCJmaWxlIjoiQm9va0VkaXRvci5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLkJvb2tFZGl0b3Ige1xuICAgIC8qIGhlaWdodDogNDUwcHg7ICovXG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5ib29rRWRpdG9yQ29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDEwcHggMjVweCAwO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi5ib29rRWRpdG9yQ29udGFpbmVyLmlzVmVyYm9zZSB7XG4gICAgLyoqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgb3V0bGluZTogMXB4IGRvdHRlZCByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgLyoqL1xufVxuXG4uaXNWZXJib3NlIHtcbiAgICBvdXRsaW5lOiAycHggZG90dGVkIHJnYigyNTUgMTE3IDM4KTtcbn1cblxuLmJvb2tFZGl0b3JXcmFwcGVyIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMDksIDIxMywgMjE5LCAwLjgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjJzIGVhc2UtaW4tb3V0O1xufVxuLmlzVmVyYm9zZSAuYm9va0VkaXRvcldyYXBwZXIge1xuICAgIC8qKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAvKiovXG59XG5cbi5ib29rRWRpdG9yV3JhcHBlcjpob3ZlciB7XG4gICAgYm94LXNoYWRvdzogMCA0cHggNnB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xufVxuXG4uYm9va0VkaXRvcldyYXBwZXI6Zm9jdXMtd2l0aGluIHtcbiAgICAvKlxuICAgIG91dGxpbmU6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDk5LCAxMDIsIDI0MSwgMC40KTtcbiAgICAqL1xufVxuXG4uYm9va0VkaXRvcldyYXBwZXIuaXNCb3JkZXJSYWRpdXNEaXNhYmxlZCB7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbn1cblxuLmRyb3BPdmVybGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLypcbi5ib29rRWRpdG9yQ29udGFpbmVyIDpnbG9iYWwoLnZpZXctbGluZSkge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlOyAvKiA8LSBOb3RlOiBgUFJPTVBUQk9PS19TWU5UQVhfQ09MT1JTLkxJTkVgICogL1xufVxuKi9cblxuLmJvb2tFZGl0b3JBY3Rpb25iYXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwcHg7XG4gICAgcmlnaHQ6IDU1cHg7XG4gICAgei1pbmRleDogMTAwO1xufVxuXG4uZnVsbHNjcmVlbiB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDogOTk5OTtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIHBhZGRpbmctdG9wOiA1MHB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xufVxuXG4uYnV0dG9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XG4gICAgYm9yZGVyLXJhZGl1czogMC4zNzVyZW07XG4gICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjVyZW07XG4gICAgY29sb3I6ICMzNzQxNTE7XG4gICAgYm94LXNoYWRvdzogMCAxcHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDtcbn1cblxuLmJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZmFmYjtcbiAgICBib3JkZXItY29sb3I6ICNiN2JjY2U7XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDFweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xufVxuIl19 */";
|
|
6326
|
+
var styles$6 = {"BookEditor":"BookEditor-module_BookEditor__s-0PU","bookEditorContainer":"BookEditor-module_bookEditorContainer__wLMwM","isVerbose":"BookEditor-module_isVerbose__VQ6iL","bookEditorWrapper":"BookEditor-module_bookEditorWrapper__twppD","isBorderRadiusDisabled":"BookEditor-module_isBorderRadiusDisabled__h1I3v","dropOverlay":"BookEditor-module_dropOverlay__xWWoX","bookEditorActionbar":"BookEditor-module_bookEditorActionbar__KW6dc","fullscreen":"BookEditor-module_fullscreen__rktsl","button":"BookEditor-module_button__hS390"};
|
|
6327
|
+
styleInject(css_248z$7);
|
|
5982
6328
|
|
|
5983
6329
|
/**
|
|
5984
6330
|
* Converts Blob, File or MediaSource to url using URL.createObjectURL
|
|
@@ -6098,9 +6444,9 @@ async function $induceBookDownload(book) {
|
|
|
6098
6444
|
* Note: [๐ต] Code in this file should never be published outside of `@promptbook/browser`
|
|
6099
6445
|
*/
|
|
6100
6446
|
|
|
6101
|
-
var css_248z$5 = ".MarkdownContent-module_MarkdownContent__2JuyX h1{font-size:2em}.MarkdownContent-module_MarkdownContent__2JuyX h2{font-size:1.75em}.MarkdownContent-module_MarkdownContent__2JuyX h3{font-size:1.5em}.MarkdownContent-module_MarkdownContent__2JuyX h4{font-size:1.25em}.MarkdownContent-module_MarkdownContent__2JuyX h5{font-size:1.1em}.MarkdownContent-module_MarkdownContent__2JuyX p{text-wrap:auto}.MarkdownContent-module_MarkdownContent__2JuyX ul{list-style:disc;margin-left:20px}.MarkdownContent-module_MarkdownContent__2JuyX ol{list-style:decimal;margin-left:20px}.MarkdownContent-module_MarkdownContent__2JuyX blockquote,.MarkdownContent-module_MarkdownContent__2JuyX img,.MarkdownContent-module_MarkdownContent__2JuyX pre,.MarkdownContent-module_MarkdownContent__2JuyX table{border-radius:8px;margin-bottom:10px;margin-top:10px}.MarkdownContent-module_MarkdownContent__2JuyX pre{background:#000;border:none;box-shadow:none;color:#fff;display:block;font-size:inherit;line-height:inherit;padding:1em}.MarkdownContent-module_MarkdownContent__2JuyX blockquote{background:#ffffffcc;border:none;box-shadow:none;color:#000;display:block;font-size:inherit;line-height:inherit;padding:1em}.MarkdownContent-module_MarkdownContent__2JuyX code{background:#cccccc55;border:none;box-shadow:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;margin:0;padding:0}.MarkdownContent-module_MarkdownContent__2JuyX pre code{background-color:#000000cc;border-radius:8px}.MarkdownContent-module_MarkdownContent__2JuyX .MarkdownContent-module_chat-code-block__ZffFg{background:#181c23;border-color:#23272f;box-shadow:0 2px 8px rgba(0,0,0,.12);color:#f8fafc;font-family:Fira Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:14px;line-height:1.6;overflow-x:auto}.MarkdownContent-module_MarkdownContent__2JuyX .MarkdownContent-module_chat-code-block__ZffFg code{background:none!important;border:none!important;box-shadow:none!important;color:inherit!important;display:block;font-family:inherit!important;font-size:inherit!important;overflow-x:auto;padding:0!important;white-space:pre;word-break:break-word}.MarkdownContent-module_MarkdownContent__2JuyX table{background:#f8fafc;border-collapse:separate;border-spacing:0;box-shadow:0 2px 8px rgba(0,0,0,.08);color:#17223b;font-size:14px;margin:16px 0;width:100%}.MarkdownContent-module_MarkdownContent__2JuyX td,.MarkdownContent-module_MarkdownContent__2JuyX th{background:none;border-bottom:1px solid #d1dbe8;color:#17223b;padding:10px 16px;text-align:left}.MarkdownContent-module_MarkdownContent__2JuyX th{background:linear-gradient(90deg,#eaf3fa 80%,#d1e3f8);border-bottom:2px solid #b5c7de;color:#17223b;font-weight:700}.MarkdownContent-module_MarkdownContent__2JuyX tr:last-child td{border-bottom:none}.MarkdownContent-module_MarkdownContent__2JuyX tr:nth-child(2n) td{background:#eaf3fa}.MarkdownContent-module_MarkdownContent__2JuyX tr:hover td{background:#cbe0f7;transition:background .2s}.MarkdownContent-module_MarkdownContent__2JuyX table{border-radius:12px;overflow:hidden}.MarkdownContent-module_MarkdownContent__2JuyX td:first-child,.MarkdownContent-module_MarkdownContent__2JuyX th:first-child{border-top-left-radius:12px}.MarkdownContent-module_MarkdownContent__2JuyX td:last-child,.MarkdownContent-module_MarkdownContent__2JuyX th:last-child{border-top-right-radius:12px}.MarkdownContent-module_citation__11SMw{background:#e7f1ff;border-radius:4px;color:#007bff;cursor:default;display:inline-block;font-size:.7em;font-weight:700;margin:0 2px;padding:0 4px;user-select:none;vertical-align:super}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hcmtkb3duQ29udGVudC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtEQUNJLGFBQ0osQ0FFQSxrREFDSSxnQkFDSixDQUVBLGtEQUNJLGVBQ0osQ0FFQSxrREFDSSxnQkFDSixDQUVBLGtEQUNJLGVBQ0osQ0FFQSxpREFDSSxjQUNKLENBRUEsa0RBQ0ksZUFBZ0IsQ0FDaEIsZ0JBQ0osQ0FFQSxrREFDSSxrQkFBbUIsQ0FDbkIsZ0JBQ0osQ0FFQSxxTkFNSSxpQkFBa0IsQ0FEbEIsa0JBQW1CLENBRG5CLGVBR0osQ0FFQSxtREFJSSxlQUFxQixDQUZyQixXQUFZLENBQ1osZUFBZ0IsQ0FJaEIsVUFBVyxDQU5YLGFBQWMsQ0FJZCxpQkFBa0IsQ0FDbEIsbUJBQW9CLENBRXBCLFdBQ0osQ0FFQSwwREFJSSxvQkFBcUIsQ0FGckIsV0FBWSxDQUNaLGVBQWdCLENBSWhCLFVBQVcsQ0FOWCxhQUFjLENBSWQsaUJBQWtCLENBQ2xCLG1CQUFvQixDQUVwQixXQUNKLENBRUEsb0RBTUksb0JBQXFCLENBRnJCLFdBQVksQ0FDWixlQUFnQixDQUloQixhQUFjLENBUmQsb0JBQXFCLENBTXJCLGlCQUFrQixDQUNsQixtQkFBb0IsQ0FOcEIsUUFBUyxDQUNULFNBT0osQ0FFQSx3REFDSSwwQkFBMkIsQ0FDM0IsaUJBQ0osQ0FFQSw4RkFDSSxrQkFBbUIsQ0FLbkIsb0JBQXFCLENBQ3JCLG9DQUF5QyxDQUx6QyxhQUFjLENBTWQsOERBQTJFLENBTDNFLGNBQWUsQ0FDZixlQUFnQixDQUNoQixlQUlKLENBQ0EsbUdBQ0kseUJBQTJCLENBSzNCLHFCQUF1QixDQUN2Qix5QkFBMkIsQ0FMM0IsdUJBQXlCLENBU3pCLGFBQWMsQ0FSZCw2QkFBK0IsQ0FDL0IsMkJBQTZCLENBTTdCLGVBQWdCLENBTGhCLG1CQUFxQixDQUdyQixlQUFnQixDQUNoQixxQkFHSixDQUNBLHFEQUtJLGtCQUFtQixDQUhuQix3QkFBeUIsQ0FDekIsZ0JBQWlCLENBS2pCLG9DQUF5QyxDQUV6QyxhQUFjLENBRGQsY0FBZSxDQUxmLGFBQWMsQ0FIZCxVQVVKLENBQ0Esb0dBTUksZUFBZ0IsQ0FIaEIsK0JBQWdDLENBRWhDLGFBQWMsQ0FIZCxpQkFBa0IsQ0FFbEIsZUFHSixDQUNBLGtEQUNJLHFEQUE2RCxDQUc3RCwrQkFBZ0MsQ0FEaEMsYUFBYyxDQURkLGVBR0osQ0FDQSxnRUFDSSxrQkFDSixDQUNBLG1FQUNJLGtCQUNKLENBQ0EsMkRBQ0ksa0JBQW1CLENBQ25CLHlCQUNKLENBQ0EscURBQ0ksa0JBQW1CLENBQ25CLGVBQ0osQ0FDQSw0SEFFSSwyQkFDSixDQUNBLDBIQUVJLDRCQUNKLENBRUEsd0NBTUksa0JBQW1CLENBRW5CLGlCQUFrQixDQUhsQixhQUFjLENBS2QsY0FBZSxDQVRmLG9CQUFxQixDQUVyQixjQUFnQixDQUNoQixlQUFpQixDQUtqQixZQUFhLENBRmIsYUFBYyxDQUlkLGdCQUFpQixDQVRqQixvQkFVSiIsImZpbGUiOiJNYXJrZG93bkNvbnRlbnQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5NYXJrZG93bkNvbnRlbnQgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xufVxuXG4uTWFya2Rvd25Db250ZW50IGgyIHtcbiAgICBmb250LXNpemU6IDEuNzVlbTtcbn1cblxuLk1hcmtkb3duQ29udGVudCBoMyB7XG4gICAgZm9udC1zaXplOiAxLjVlbTtcbn1cblxuLk1hcmtkb3duQ29udGVudCBoNCB7XG4gICAgZm9udC1zaXplOiAxLjI1ZW07XG59XG5cbi5NYXJrZG93bkNvbnRlbnQgaDUge1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG59XG5cbi5NYXJrZG93bkNvbnRlbnQgcCB7XG4gICAgdGV4dC13cmFwOiBhdXRvO1xufVxuXG4uTWFya2Rvd25Db250ZW50IHVsIHtcbiAgICBsaXN0LXN0eWxlOiBkaXNjO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4uTWFya2Rvd25Db250ZW50IG9sIHtcbiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4uTWFya2Rvd25Db250ZW50IGltZyxcbi5NYXJrZG93bkNvbnRlbnQgcHJlLFxuLk1hcmtkb3duQ29udGVudCBibG9ja3F1b3RlLFxuLk1hcmtkb3duQ29udGVudCB0YWJsZSB7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbn1cblxuLk1hcmtkb3duQ29udGVudCBwcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMwMDAwMDBmZjtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZzogMWVtO1xufVxuXG4uTWFya2Rvd25Db250ZW50IGJsb2NrcXVvdGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmZjYztcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICMwMDA7XG4gICAgcGFkZGluZzogMWVtO1xufVxuXG4uTWFya2Rvd25Db250ZW50IGNvZGUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiAjY2NjY2NjNTU7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgIGNvbG9yOiBpbmhlcml0O1xufVxuXG4uTWFya2Rvd25Db250ZW50IHByZSBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwY2M7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuXG4uTWFya2Rvd25Db250ZW50IC5jaGF0LWNvZGUtYmxvY2sge1xuICAgIGJhY2tncm91bmQ6ICMxODFjMjM7XG4gICAgY29sb3I6ICNmOGZhZmM7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBib3JkZXItY29sb3I6ICMyMzI3MmY7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgZm9udC1mYW1pbHk6ICdGaXJhIE1vbm8nLCAnTWVubG8nLCAnQ29uc29sYXMnLCAnTGliZXJhdGlvbiBNb25vJywgbW9ub3NwYWNlO1xufVxuLk1hcmtkb3duQ29udGVudCAuY2hhdC1jb2RlLWJsb2NrIGNvZGUge1xuICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICBjb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cbi5NYXJrZG93bkNvbnRlbnQgdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XG4gICAgbWFyZ2luOiAxNnB4IDA7XG4gICAgYmFja2dyb3VuZDogI2Y4ZmFmYzsgLyogU3Ryb25nZXIgbGlnaHQgYmFja2dyb3VuZCBmb3IgY29udHJhc3QgKi9cbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGNvbG9yOiAjMTcyMjNiOyAvKiBEYXJrIHRleHQgZm9yIGNvbnRyYXN0ICovXG59XG4uTWFya2Rvd25Db250ZW50IHRoLFxuLk1hcmtkb3duQ29udGVudCB0ZCB7XG4gICAgcGFkZGluZzogMTBweCAxNnB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDFkYmU4O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgY29sb3I6ICMxNzIyM2I7IC8qIEVuc3VyZSBzdHJvbmcgdGV4dCBjb2xvciBmb3IgYWxsIGNlbGxzICovXG4gICAgYmFja2dyb3VuZDogbm9uZTtcbn1cbi5NYXJrZG93bkNvbnRlbnQgdGgge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2VhZjNmYSA4MCUsICNkMWUzZjggMTAwJSk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogIzE3MjIzYjsgLyogU3Ryb25nIGhlYWRlciB0ZXh0ICovXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNiNWM3ZGU7XG59XG4uTWFya2Rvd25Db250ZW50IHRyOmxhc3QtY2hpbGQgdGQge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG4uTWFya2Rvd25Db250ZW50IHRyOm50aC1jaGlsZChldmVuKSB0ZCB7XG4gICAgYmFja2dyb3VuZDogI2VhZjNmYTtcbn1cbi5NYXJrZG93bkNvbnRlbnQgdHI6aG92ZXIgdGQge1xuICAgIGJhY2tncm91bmQ6ICNjYmUwZjc7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xufVxuLk1hcmtkb3duQ29udGVudCB0YWJsZSB7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLk1hcmtkb3duQ29udGVudCB0aDpmaXJzdC1jaGlsZCxcbi5NYXJrZG93bkNvbnRlbnQgdGQ6Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDEycHg7XG59XG4uTWFya2Rvd25Db250ZW50IHRoOmxhc3QtY2hpbGQsXG4uTWFya2Rvd25Db250ZW50IHRkOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxMnB4O1xufVxuXG4uY2l0YXRpb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogc3VwZXI7XG4gICAgZm9udC1zaXplOiAwLjdlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogIzAwN2JmZjtcbiAgICBiYWNrZ3JvdW5kOiAjZTdmMWZmO1xuICAgIHBhZGRpbmc6IDAgNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBtYXJnaW46IDAgMnB4O1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLyoqXG4gKiBUT0RPOiBb8J+MiV0gRFJZIE1hcmtkb3duIHByaW1pdGl2ZXMgc3R5bGluZ1xuICovXG4iXX0= */";
|
|
6102
|
-
var styles$
|
|
6103
|
-
styleInject(css_248z$
|
|
6447
|
+
var css_248z$6 = ".MarkdownContent-module_MarkdownContent__2JuyX h1{font-size:2em}.MarkdownContent-module_MarkdownContent__2JuyX h2{font-size:1.75em}.MarkdownContent-module_MarkdownContent__2JuyX h3{font-size:1.5em}.MarkdownContent-module_MarkdownContent__2JuyX h4{font-size:1.25em}.MarkdownContent-module_MarkdownContent__2JuyX h5{font-size:1.1em}.MarkdownContent-module_MarkdownContent__2JuyX p{text-wrap:auto}.MarkdownContent-module_MarkdownContent__2JuyX ul{list-style:disc;margin-left:20px}.MarkdownContent-module_MarkdownContent__2JuyX ol{list-style:decimal;margin-left:20px}.MarkdownContent-module_MarkdownContent__2JuyX blockquote,.MarkdownContent-module_MarkdownContent__2JuyX img,.MarkdownContent-module_MarkdownContent__2JuyX pre,.MarkdownContent-module_MarkdownContent__2JuyX table{border-radius:8px;margin-bottom:10px;margin-top:10px}.MarkdownContent-module_MarkdownContent__2JuyX pre{background:#000;border:none;box-shadow:none;color:#fff;display:block;font-size:inherit;line-height:inherit;padding:1em}.MarkdownContent-module_MarkdownContent__2JuyX blockquote{background:#ffffffcc;border:none;box-shadow:none;color:#000;display:block;font-size:inherit;line-height:inherit;padding:1em}.MarkdownContent-module_MarkdownContent__2JuyX code{background:#cccccc55;border:none;box-shadow:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;margin:0;padding:0}.MarkdownContent-module_MarkdownContent__2JuyX pre code{background-color:#000000cc;border-radius:8px}.MarkdownContent-module_MarkdownContent__2JuyX .MarkdownContent-module_chat-code-block__ZffFg{background:#181c23;border-color:#23272f;box-shadow:0 2px 8px rgba(0,0,0,.12);color:#f8fafc;font-family:Fira Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:14px;line-height:1.6;overflow-x:auto}.MarkdownContent-module_MarkdownContent__2JuyX .MarkdownContent-module_chat-code-block__ZffFg code{background:none!important;border:none!important;box-shadow:none!important;color:inherit!important;display:block;font-family:inherit!important;font-size:inherit!important;overflow-x:auto;padding:0!important;white-space:pre;word-break:break-word}.MarkdownContent-module_MarkdownContent__2JuyX table{background:#f8fafc;border-collapse:separate;border-spacing:0;box-shadow:0 2px 8px rgba(0,0,0,.08);color:#17223b;font-size:14px;margin:16px 0;width:100%}.MarkdownContent-module_MarkdownContent__2JuyX td,.MarkdownContent-module_MarkdownContent__2JuyX th{background:none;border-bottom:1px solid #d1dbe8;color:#17223b;padding:10px 16px;text-align:left}.MarkdownContent-module_MarkdownContent__2JuyX th{background:linear-gradient(90deg,#eaf3fa 80%,#d1e3f8);border-bottom:2px solid #b5c7de;color:#17223b;font-weight:700}.MarkdownContent-module_MarkdownContent__2JuyX tr:last-child td{border-bottom:none}.MarkdownContent-module_MarkdownContent__2JuyX tr:nth-child(2n) td{background:#eaf3fa}.MarkdownContent-module_MarkdownContent__2JuyX tr:hover td{background:#cbe0f7;transition:background .2s}.MarkdownContent-module_MarkdownContent__2JuyX table{border-radius:12px;overflow:hidden}.MarkdownContent-module_MarkdownContent__2JuyX td:first-child,.MarkdownContent-module_MarkdownContent__2JuyX th:first-child{border-top-left-radius:12px}.MarkdownContent-module_MarkdownContent__2JuyX td:last-child,.MarkdownContent-module_MarkdownContent__2JuyX th:last-child{border-top-right-radius:12px}.MarkdownContent-module_citation__11SMw{background:#e7f1ff;border-radius:4px;color:#007bff;cursor:default;display:inline-block;font-size:.7em;font-weight:700;margin:0 2px;padding:0 4px;user-select:none;vertical-align:super}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hcmtkb3duQ29udGVudC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtEQUNJLGFBQ0osQ0FFQSxrREFDSSxnQkFDSixDQUVBLGtEQUNJLGVBQ0osQ0FFQSxrREFDSSxnQkFDSixDQUVBLGtEQUNJLGVBQ0osQ0FFQSxpREFDSSxjQUNKLENBRUEsa0RBQ0ksZUFBZ0IsQ0FDaEIsZ0JBQ0osQ0FFQSxrREFDSSxrQkFBbUIsQ0FDbkIsZ0JBQ0osQ0FFQSxxTkFNSSxpQkFBa0IsQ0FEbEIsa0JBQW1CLENBRG5CLGVBR0osQ0FFQSxtREFJSSxlQUFxQixDQUZyQixXQUFZLENBQ1osZUFBZ0IsQ0FJaEIsVUFBVyxDQU5YLGFBQWMsQ0FJZCxpQkFBa0IsQ0FDbEIsbUJBQW9CLENBRXBCLFdBQ0osQ0FFQSwwREFJSSxvQkFBcUIsQ0FGckIsV0FBWSxDQUNaLGVBQWdCLENBSWhCLFVBQVcsQ0FOWCxhQUFjLENBSWQsaUJBQWtCLENBQ2xCLG1CQUFvQixDQUVwQixXQUNKLENBRUEsb0RBTUksb0JBQXFCLENBRnJCLFdBQVksQ0FDWixlQUFnQixDQUloQixhQUFjLENBUmQsb0JBQXFCLENBTXJCLGlCQUFrQixDQUNsQixtQkFBb0IsQ0FOcEIsUUFBUyxDQUNULFNBT0osQ0FFQSx3REFDSSwwQkFBMkIsQ0FDM0IsaUJBQ0osQ0FFQSw4RkFDSSxrQkFBbUIsQ0FLbkIsb0JBQXFCLENBQ3JCLG9DQUF5QyxDQUx6QyxhQUFjLENBTWQsOERBQTJFLENBTDNFLGNBQWUsQ0FDZixlQUFnQixDQUNoQixlQUlKLENBQ0EsbUdBQ0kseUJBQTJCLENBSzNCLHFCQUF1QixDQUN2Qix5QkFBMkIsQ0FMM0IsdUJBQXlCLENBU3pCLGFBQWMsQ0FSZCw2QkFBK0IsQ0FDL0IsMkJBQTZCLENBTTdCLGVBQWdCLENBTGhCLG1CQUFxQixDQUdyQixlQUFnQixDQUNoQixxQkFHSixDQUNBLHFEQUtJLGtCQUFtQixDQUhuQix3QkFBeUIsQ0FDekIsZ0JBQWlCLENBS2pCLG9DQUF5QyxDQUV6QyxhQUFjLENBRGQsY0FBZSxDQUxmLGFBQWMsQ0FIZCxVQVVKLENBQ0Esb0dBTUksZUFBZ0IsQ0FIaEIsK0JBQWdDLENBRWhDLGFBQWMsQ0FIZCxpQkFBa0IsQ0FFbEIsZUFHSixDQUNBLGtEQUNJLHFEQUE2RCxDQUc3RCwrQkFBZ0MsQ0FEaEMsYUFBYyxDQURkLGVBR0osQ0FDQSxnRUFDSSxrQkFDSixDQUNBLG1FQUNJLGtCQUNKLENBQ0EsMkRBQ0ksa0JBQW1CLENBQ25CLHlCQUNKLENBQ0EscURBQ0ksa0JBQW1CLENBQ25CLGVBQ0osQ0FDQSw0SEFFSSwyQkFDSixDQUNBLDBIQUVJLDRCQUNKLENBRUEsd0NBTUksa0JBQW1CLENBRW5CLGlCQUFrQixDQUhsQixhQUFjLENBS2QsY0FBZSxDQVRmLG9CQUFxQixDQUVyQixjQUFnQixDQUNoQixlQUFpQixDQUtqQixZQUFhLENBRmIsYUFBYyxDQUlkLGdCQUFpQixDQVRqQixvQkFVSiIsImZpbGUiOiJNYXJrZG93bkNvbnRlbnQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5NYXJrZG93bkNvbnRlbnQgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xufVxuXG4uTWFya2Rvd25Db250ZW50IGgyIHtcbiAgICBmb250LXNpemU6IDEuNzVlbTtcbn1cblxuLk1hcmtkb3duQ29udGVudCBoMyB7XG4gICAgZm9udC1zaXplOiAxLjVlbTtcbn1cblxuLk1hcmtkb3duQ29udGVudCBoNCB7XG4gICAgZm9udC1zaXplOiAxLjI1ZW07XG59XG5cbi5NYXJrZG93bkNvbnRlbnQgaDUge1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG59XG5cbi5NYXJrZG93bkNvbnRlbnQgcCB7XG4gICAgdGV4dC13cmFwOiBhdXRvO1xufVxuXG4uTWFya2Rvd25Db250ZW50IHVsIHtcbiAgICBsaXN0LXN0eWxlOiBkaXNjO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4uTWFya2Rvd25Db250ZW50IG9sIHtcbiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4uTWFya2Rvd25Db250ZW50IGltZyxcbi5NYXJrZG93bkNvbnRlbnQgcHJlLFxuLk1hcmtkb3duQ29udGVudCBibG9ja3F1b3RlLFxuLk1hcmtkb3duQ29udGVudCB0YWJsZSB7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbn1cblxuLk1hcmtkb3duQ29udGVudCBwcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMwMDAwMDBmZjtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZzogMWVtO1xufVxuXG4uTWFya2Rvd25Db250ZW50IGJsb2NrcXVvdGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmZjYztcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICMwMDA7XG4gICAgcGFkZGluZzogMWVtO1xufVxuXG4uTWFya2Rvd25Db250ZW50IGNvZGUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiAjY2NjY2NjNTU7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgIGNvbG9yOiBpbmhlcml0O1xufVxuXG4uTWFya2Rvd25Db250ZW50IHByZSBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwY2M7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuXG4uTWFya2Rvd25Db250ZW50IC5jaGF0LWNvZGUtYmxvY2sge1xuICAgIGJhY2tncm91bmQ6ICMxODFjMjM7XG4gICAgY29sb3I6ICNmOGZhZmM7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBib3JkZXItY29sb3I6ICMyMzI3MmY7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgZm9udC1mYW1pbHk6ICdGaXJhIE1vbm8nLCAnTWVubG8nLCAnQ29uc29sYXMnLCAnTGliZXJhdGlvbiBNb25vJywgbW9ub3NwYWNlO1xufVxuLk1hcmtkb3duQ29udGVudCAuY2hhdC1jb2RlLWJsb2NrIGNvZGUge1xuICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICBjb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cbi5NYXJrZG93bkNvbnRlbnQgdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XG4gICAgbWFyZ2luOiAxNnB4IDA7XG4gICAgYmFja2dyb3VuZDogI2Y4ZmFmYzsgLyogU3Ryb25nZXIgbGlnaHQgYmFja2dyb3VuZCBmb3IgY29udHJhc3QgKi9cbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGNvbG9yOiAjMTcyMjNiOyAvKiBEYXJrIHRleHQgZm9yIGNvbnRyYXN0ICovXG59XG4uTWFya2Rvd25Db250ZW50IHRoLFxuLk1hcmtkb3duQ29udGVudCB0ZCB7XG4gICAgcGFkZGluZzogMTBweCAxNnB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDFkYmU4O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgY29sb3I6ICMxNzIyM2I7IC8qIEVuc3VyZSBzdHJvbmcgdGV4dCBjb2xvciBmb3IgYWxsIGNlbGxzICovXG4gICAgYmFja2dyb3VuZDogbm9uZTtcbn1cbi5NYXJrZG93bkNvbnRlbnQgdGgge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2VhZjNmYSA4MCUsICNkMWUzZjggMTAwJSk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogIzE3MjIzYjsgLyogU3Ryb25nIGhlYWRlciB0ZXh0ICovXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNiNWM3ZGU7XG59XG4uTWFya2Rvd25Db250ZW50IHRyOmxhc3QtY2hpbGQgdGQge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG4uTWFya2Rvd25Db250ZW50IHRyOm50aC1jaGlsZChldmVuKSB0ZCB7XG4gICAgYmFja2dyb3VuZDogI2VhZjNmYTtcbn1cbi5NYXJrZG93bkNvbnRlbnQgdHI6aG92ZXIgdGQge1xuICAgIGJhY2tncm91bmQ6ICNjYmUwZjc7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xufVxuLk1hcmtkb3duQ29udGVudCB0YWJsZSB7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLk1hcmtkb3duQ29udGVudCB0aDpmaXJzdC1jaGlsZCxcbi5NYXJrZG93bkNvbnRlbnQgdGQ6Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDEycHg7XG59XG4uTWFya2Rvd25Db250ZW50IHRoOmxhc3QtY2hpbGQsXG4uTWFya2Rvd25Db250ZW50IHRkOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxMnB4O1xufVxuXG4uY2l0YXRpb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogc3VwZXI7XG4gICAgZm9udC1zaXplOiAwLjdlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogIzAwN2JmZjtcbiAgICBiYWNrZ3JvdW5kOiAjZTdmMWZmO1xuICAgIHBhZGRpbmc6IDAgNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBtYXJnaW46IDAgMnB4O1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLyoqXG4gKiBUT0RPOiBb8J+MiV0gRFJZIE1hcmtkb3duIHByaW1pdGl2ZXMgc3R5bGluZ1xuICovXG4iXX0= */";
|
|
6448
|
+
var styles$5 = {"MarkdownContent":"MarkdownContent-module_MarkdownContent__2JuyX","chat-code-block":"MarkdownContent-module_chat-code-block__ZffFg","citation":"MarkdownContent-module_citation__11SMw"};
|
|
6449
|
+
styleInject(css_248z$6);
|
|
6104
6450
|
|
|
6105
6451
|
/**
|
|
6106
6452
|
* @@@
|
|
@@ -6144,7 +6490,7 @@ function createChatMarkdownConverter() {
|
|
|
6144
6490
|
type: 'lang',
|
|
6145
6491
|
regex: /ใ(.*?)โ sourceใ/g,
|
|
6146
6492
|
replace: (match, content) => {
|
|
6147
|
-
return `<span class="${styles$
|
|
6493
|
+
return `<span class="${styles$5.citation}">${content}</span>`;
|
|
6148
6494
|
},
|
|
6149
6495
|
}),
|
|
6150
6496
|
],
|
|
@@ -6299,7 +6645,7 @@ function renderMarkdown(markdown) {
|
|
|
6299
6645
|
function MarkdownContent(props) {
|
|
6300
6646
|
const { content, className } = props;
|
|
6301
6647
|
const htmlContent = useMemo(() => renderMarkdown(content), [content]);
|
|
6302
|
-
return (jsx("div", { className: classNames(styles$
|
|
6648
|
+
return (jsx("div", { className: classNames(styles$5.MarkdownContent, className), dangerouslySetInnerHTML: {
|
|
6303
6649
|
__html: htmlContent,
|
|
6304
6650
|
} }));
|
|
6305
6651
|
}
|
|
@@ -6468,14 +6814,17 @@ function FullscreenIcon() {
|
|
|
6468
6814
|
return (jsxs("svg", { width: "1em", height: "1em", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: [jsx("path", { d: "M4 20L10 14M4 20V16M4 20H8", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M20 4L14 10M20 4V8M20 4H16", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M4 4L10 10M4 4V8M4 4H8", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M20 20L14 14M20 20V16M20 20H16", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })] }));
|
|
6469
6815
|
}
|
|
6470
6816
|
|
|
6817
|
+
var css_248z$5 = ".HamburgerMenu-module_MenuHamburger__Jd-wk{align-items:center;cursor:pointer;display:flex;height:48px;justify-content:center;width:48px}.HamburgerMenu-module_MenuHamburger__Jd-wk .HamburgerMenu-module_MenuHamburgerInner__Li47L{align-items:center;display:flex;height:24px;justify-content:center;position:relative;width:24px}.HamburgerMenu-module_MenuHamburger__Jd-wk .HamburgerMenu-module_MenuHamburgerInner__Li47L .HamburgerMenu-module_bar__-HXPB{background-color:currentColor;border-radius:2px;display:block;height:2px;position:absolute;transition:all .3s cubic-bezier(.645,.045,.355,1);width:100%}.HamburgerMenu-module_MenuHamburger__Jd-wk .HamburgerMenu-module_MenuHamburgerInner__Li47L .HamburgerMenu-module_bar__-HXPB.HamburgerMenu-module_bar1__5xeCB{transform:translateY(-7px)}.HamburgerMenu-module_MenuHamburger__Jd-wk .HamburgerMenu-module_MenuHamburgerInner__Li47L .HamburgerMenu-module_bar__-HXPB.HamburgerMenu-module_bar2__Y-Ilp{opacity:1;transform:translateY(0)}.HamburgerMenu-module_MenuHamburger__Jd-wk .HamburgerMenu-module_MenuHamburgerInner__Li47L .HamburgerMenu-module_bar__-HXPB.HamburgerMenu-module_bar3__m1m7T{transform:translateY(7px)}.HamburgerMenu-module_MenuHamburger__Jd-wk .HamburgerMenu-module_MenuHamburgerInner__Li47L.HamburgerMenu-module_open__5O7zI .HamburgerMenu-module_bar__-HXPB.HamburgerMenu-module_bar1__5xeCB{transform:translateY(0) rotate(45deg)}.HamburgerMenu-module_MenuHamburger__Jd-wk .HamburgerMenu-module_MenuHamburgerInner__Li47L.HamburgerMenu-module_open__5O7zI .HamburgerMenu-module_bar__-HXPB.HamburgerMenu-module_bar2__Y-Ilp{opacity:0;transform:translateX(-10px)}.HamburgerMenu-module_MenuHamburger__Jd-wk .HamburgerMenu-module_MenuHamburgerInner__Li47L.HamburgerMenu-module_open__5O7zI .HamburgerMenu-module_bar__-HXPB.HamburgerMenu-module_bar3__m1m7T{transform:translateY(0) rotate(-45deg)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkhhbWJ1cmdlck1lbnUubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FJSSxrQkFBbUIsQ0FIbkIsY0FBZSxDQUVmLFlBQWEsQ0FJYixXQUFZLENBRlosc0JBQXVCLENBQ3ZCLFVBRUosQ0FFQSwyRkFNSSxrQkFBbUIsQ0FGbkIsWUFBYSxDQUZiLFdBQVksQ0FHWixzQkFBdUIsQ0FGdkIsaUJBQWtCLENBRmxCLFVBTUosQ0FFQSw0SEFHSSw2QkFBOEIsQ0FFOUIsaUJBQWtCLENBRGxCLGFBQWMsQ0FIZCxVQUFXLENBTVgsaUJBQWtCLENBRGxCLGlEQUF5RCxDQUp6RCxVQU1KLENBRUEsNkpBQ0ksMEJBQ0osQ0FFQSw2SkFFSSxTQUFVLENBRFYsdUJBRUosQ0FFQSw2SkFDSSx5QkFDSixDQUVBLDhMQUNJLHFDQUNKLENBRUEsOExBQ0ksU0FBVSxDQUNWLDJCQUNKLENBRUEsOExBQ0ksc0NBQ0oiLCJmaWxlIjoiSGFtYnVyZ2VyTWVudS5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLk1lbnVIYW1idXJnZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAvKiA8LSBOb3RlOiBAc2VlIGh0dHA6Ly9lbGVrdHJvbm90ZGllbnN0LW51ZXJuYmVyZy5kZS9idWdzL2N1cnNvci5odG1sICovXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogNDhweDtcbn1cblxuLk1lbnVIYW1idXJnZXIgLk1lbnVIYW1idXJnZXJJbm5lciB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5NZW51SGFtYnVyZ2VyIC5NZW51SGFtYnVyZ2VySW5uZXIgLmJhciB7XG4gICAgaGVpZ2h0OiAycHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC42NDUsIDAuMDQ1LCAwLjM1NSwgMSk7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4uTWVudUhhbWJ1cmdlciAuTWVudUhhbWJ1cmdlcklubmVyIC5iYXIuYmFyMSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC03cHgpO1xufVxuXG4uTWVudUhhbWJ1cmdlciAuTWVudUhhbWJ1cmdlcklubmVyIC5iYXIuYmFyMiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi5NZW51SGFtYnVyZ2VyIC5NZW51SGFtYnVyZ2VySW5uZXIgLmJhci5iYXIzIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoN3B4KTtcbn1cblxuLk1lbnVIYW1idXJnZXIgLk1lbnVIYW1idXJnZXJJbm5lci5vcGVuIC5iYXIuYmFyMSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHJvdGF0ZSg0NWRlZyk7XG59XG5cbi5NZW51SGFtYnVyZ2VyIC5NZW51SGFtYnVyZ2VySW5uZXIub3BlbiAuYmFyLmJhcjIge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMHB4KTtcbn1cblxuLk1lbnVIYW1idXJnZXIgLk1lbnVIYW1idXJnZXJJbm5lci5vcGVuIC5iYXIuYmFyMyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHJvdGF0ZSgtNDVkZWcpO1xufVxuIl19 */";
|
|
6818
|
+
var styles$4 = {"MenuHamburger":"HamburgerMenu-module_MenuHamburger__Jd-wk","MenuHamburgerInner":"HamburgerMenu-module_MenuHamburgerInner__Li47L","bar":"HamburgerMenu-module_bar__-HXPB","bar1":"HamburgerMenu-module_bar1__5xeCB","bar2":"HamburgerMenu-module_bar2__Y-Ilp","bar3":"HamburgerMenu-module_bar3__m1m7T","open":"HamburgerMenu-module_open__5O7zI"};
|
|
6819
|
+
styleInject(css_248z$5);
|
|
6820
|
+
|
|
6471
6821
|
/**
|
|
6472
6822
|
* @@@
|
|
6473
6823
|
*
|
|
6474
|
-
* @private
|
|
6824
|
+
* @private Internal component
|
|
6475
6825
|
*/
|
|
6476
|
-
function
|
|
6477
|
-
|
|
6478
|
-
return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: size || 24, height: size || 24, viewBox: "0 0 24 24", fill: "currentColor", ...rest, children: jsx("path", { d: "M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" }) }));
|
|
6826
|
+
function HamburgerMenu({ isOpen, onClick, className }) {
|
|
6827
|
+
return (jsx("div", { className: classNames(styles$4.MenuHamburger, className), onClick: onClick, children: jsxs("div", { className: classNames(styles$4.MenuHamburgerInner, isOpen && styles$4.open), children: [jsx("div", { className: classNames(styles$4.bar, styles$4.bar1) }), jsx("div", { className: classNames(styles$4.bar, styles$4.bar2) }), jsx("div", { className: classNames(styles$4.bar, styles$4.bar3) })] }) }));
|
|
6479
6828
|
}
|
|
6480
6829
|
|
|
6481
6830
|
var css_248z$4 = ".Dropdown-module_dropdown__ZShv1{display:inline-block;position:relative}.Dropdown-module_button__WzWhM{align-items:center;background-color:transparent;border:none;cursor:pointer;display:flex;font-size:16px;gap:10px;padding:10px;transition:background-color .2s ease-in-out}.Dropdown-module_button__WzWhM:hover{background-color:rgba(0,0,0,.05)}.Dropdown-module_button__WzWhM.Dropdown-module_isOpen__917OA .Dropdown-module_menuIcon__Mp4p8 line:first-child{transform:rotate(45deg) translate(5px,5px)}.Dropdown-module_button__WzWhM.Dropdown-module_isOpen__917OA .Dropdown-module_menuIcon__Mp4p8 line:nth-child(2){opacity:0}.Dropdown-module_button__WzWhM.Dropdown-module_isOpen__917OA .Dropdown-module_menuIcon__Mp4p8 line:nth-child(3){transform:rotate(-45deg) translate(5px,-5px)}.Dropdown-module_menu__-N5tr{background-color:#f9f9f9;border-radius:5px;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);min-width:160px;overflow:hidden;position:absolute;right:0;top:100%;z-index:1}.Dropdown-module_menuItem__7FpAz{text-align:left;width:100%}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRyb3Bkb3duLm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBRUksb0JBQXFCLENBRHJCLGlCQUVKLENBRUEsK0JBT0ksa0JBQW1CLENBTm5CLDRCQUE2QixDQUM3QixXQUFZLENBQ1osY0FBZSxDQUdmLFlBQWEsQ0FEYixjQUFlLENBR2YsUUFBUyxDQUpULFlBQWEsQ0FLYiwyQ0FDSixDQUVBLHFDQUNJLGdDQUNKLENBRUEsK0dBQ0ksMENBQ0osQ0FFQSxnSEFDSSxTQUNKLENBRUEsZ0hBQ0ksNENBQ0osQ0FFQSw2QkFJSSx3QkFBeUIsQ0FJekIsaUJBQWtCLENBRmxCLHNDQUErQyxDQUQvQyxlQUFnQixDQUloQixlQUFnQixDQVJoQixpQkFBa0IsQ0FFbEIsT0FBUSxDQURSLFFBQVMsQ0FLVCxTQUdKLENBRUEsaUNBRUksZUFBZ0IsQ0FEaEIsVUFFSiIsImZpbGUiOiJEcm9wZG93bi5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmRyb3Bkb3duIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uYnV0dG9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEwcHg7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2UtaW4tb3V0O1xufVxuXG4uYnV0dG9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDUpO1xufVxuXG4uYnV0dG9uLmlzT3BlbiAubWVudUljb24gbGluZTpudGgtY2hpbGQoMSkge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGUoNXB4LCA1cHgpO1xufVxuXG4uYnV0dG9uLmlzT3BlbiAubWVudUljb24gbGluZTpudGgtY2hpbGQoMikge1xuICAgIG9wYWNpdHk6IDA7XG59XG5cbi5idXR0b24uaXNPcGVuIC5tZW51SWNvbiBsaW5lOm50aC1jaGlsZCgzKSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSB0cmFuc2xhdGUoNXB4LCAtNXB4KTtcbn1cblxuLm1lbnUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwMCU7XG4gICAgcmlnaHQ6IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcbiAgICBtaW4td2lkdGg6IDE2MHB4O1xuICAgIGJveC1zaGFkb3c6IDBweCA4cHggMTZweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAgIHotaW5kZXg6IDE7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5tZW51SXRlbSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbiJdfQ== */";
|
|
@@ -6489,7 +6838,7 @@ styleInject(css_248z$4);
|
|
|
6489
6838
|
*/
|
|
6490
6839
|
function Dropdown({ actions }) {
|
|
6491
6840
|
const [isOpen, setIsOpen] = useState(false);
|
|
6492
|
-
return (jsxs("div", { className: styles$3.dropdown, children: [jsx(
|
|
6841
|
+
return (jsxs("div", { className: styles$3.dropdown, children: [jsx(HamburgerMenu, { className: classNames(styles$3.button, isOpen && styles$3.isOpen), isOpen: isOpen, onClick: () => setIsOpen(!isOpen) }), isOpen && (jsx("div", { className: styles$3.menu, children: actions.map(({ icon, name, onClick }) => (jsxs("button", { className: classNames(styles$3.button, styles$3.menuItem), onClick: () => {
|
|
6493
6842
|
onClick();
|
|
6494
6843
|
setIsOpen(false);
|
|
6495
6844
|
}, children: [icon, jsx("span", { children: name })] }, name))) }))] }));
|
|
@@ -6529,9 +6878,9 @@ function BookEditorActionbar(props) {
|
|
|
6529
6878
|
});
|
|
6530
6879
|
}
|
|
6531
6880
|
if (isFullscreen) {
|
|
6532
|
-
return (jsx("div", { className: styles$
|
|
6881
|
+
return (jsx("div", { className: styles$6.bookEditorActionbar, children: jsx("button", { className: styles$6.button, onClick: onFullscreenClick, children: jsx(ExitFullscreenIcon, {}) }) }));
|
|
6533
6882
|
}
|
|
6534
|
-
return (jsxs("div", { className: styles$
|
|
6883
|
+
return (jsxs("div", { className: styles$6.bookEditorActionbar, children: [actions.length >= 2 ? (jsx(Dropdown, { actions: actions })) : (actions.map(({ icon, name, onClick }) => (jsx("button", { className: styles$6.button, onClick: onClick, children: icon }, name)))), isAboutModalOpen && (jsx(Modal, { onClose: () => {
|
|
6535
6884
|
setIsAboutModalOpen(false);
|
|
6536
6885
|
}, children: jsx(AboutPromptbookInformation, {}) }))] }));
|
|
6537
6886
|
}
|
|
@@ -6848,12 +7197,12 @@ function BookEditorMonaco(props) {
|
|
|
6848
7197
|
event.preventDefault();
|
|
6849
7198
|
setIsDragOver(false);
|
|
6850
7199
|
}, []);
|
|
6851
|
-
return (jsxs("div", { className: classNames(styles$
|
|
7200
|
+
return (jsxs("div", { className: classNames(styles$6.bookEditorContainer, instanceClass), onDrop: handleDrop, onDragOver: handleDragOver, onDragEnter: handleDragEnter, onDragLeave: handleDragLeave, children: [(isDownloadButtonShown || isAboutButtonShown || isFullscreenButtonShown) && (jsx(BookEditorActionbar, { value,
|
|
6852
7201
|
isDownloadButtonShown,
|
|
6853
7202
|
isAboutButtonShown,
|
|
6854
7203
|
isFullscreenButtonShown,
|
|
6855
7204
|
onFullscreenClick,
|
|
6856
|
-
isFullscreen })), isDragOver && jsx("div", { className: styles$
|
|
7205
|
+
isFullscreen })), isDragOver && jsx("div", { className: styles$6.dropOverlay, children: "Drop files to upload" }), jsxs("div", { style: {
|
|
6857
7206
|
position: 'relative',
|
|
6858
7207
|
flex: 1,
|
|
6859
7208
|
height: '100%',
|
|
@@ -6918,7 +7267,7 @@ function BookEditorMonaco(props) {
|
|
|
6918
7267
|
arrowSize: 0,
|
|
6919
7268
|
useShadows: false,
|
|
6920
7269
|
},
|
|
6921
|
-
}, loading: jsx("div", { className: styles$
|
|
7270
|
+
}, loading: jsx("div", { className: styles$6.loading, children: "\uD83D\uDCD6" }) })] })] }));
|
|
6922
7271
|
}
|
|
6923
7272
|
|
|
6924
7273
|
/**
|
|
@@ -6940,7 +7289,7 @@ function BookEditor(props) {
|
|
|
6940
7289
|
const handleFullscreenToggle = () => {
|
|
6941
7290
|
setIsFullscreen(!isFullscreen);
|
|
6942
7291
|
};
|
|
6943
|
-
const editorContent = (jsx("div", { "data-book-component": "BookEditor", className: classNames(styles$
|
|
7292
|
+
const editorContent = (jsx("div", { "data-book-component": "BookEditor", className: classNames(styles$6.BookEditor, isVerbose && styles$6.isVerbose, styles$6.bookEditorWrapper, isBorderRadiusDisabled && styles$6.isBorderRadiusDisabled, isFullscreen && styles$6.fullscreen, className), style: isFullscreen
|
|
6944
7293
|
? style
|
|
6945
7294
|
: {
|
|
6946
7295
|
...(style || {}),
|
|
@@ -7262,6 +7611,13 @@ function CloseIcon() {
|
|
|
7262
7611
|
return (jsx("svg", { width: "1em", height: "1em", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: jsx("path", { d: "M18 6L6 18M6 6l12 12", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }));
|
|
7263
7612
|
}
|
|
7264
7613
|
|
|
7614
|
+
/**
|
|
7615
|
+
* Shows simple microphone icon
|
|
7616
|
+
*
|
|
7617
|
+
* @public exported from `@promptbook/components`
|
|
7618
|
+
*/
|
|
7619
|
+
const MicIcon = ({ size }) => (jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "currentColor", children: [jsx("path", { d: "M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3z" }), jsx("path", { d: "M17 11c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.61 6.43 6 6.92V21h2v-3.08c3.39-.49 6-3.39 6-6.92h-2z" })] }));
|
|
7620
|
+
|
|
7265
7621
|
/**
|
|
7266
7622
|
* Shows simple reset icon
|
|
7267
7623
|
*
|
|
@@ -7723,8 +8079,8 @@ function getChatSaveFormatDefinitions(formatNames) {
|
|
|
7723
8079
|
return CHAT_SAVE_FORMATS.filter((saveFormatDefinition) => formatNames.includes(saveFormatDefinition.formatName));
|
|
7724
8080
|
}
|
|
7725
8081
|
|
|
7726
|
-
var css_248z$2 = "@font-face{font-family:OpenMojiBlack;src:url(https://s6.ptbk.io/fonts/OpenMoji-black-glyf.woff2) format(\"woff2\");unicode-range:u+23,u+2a,u+2d,u+30-39,u+a9,u+ae,u+200d,u+203c,u+2049,u+20e3,u+2117,u+2120,u+2122,u+2139,u+2194-2199,u+21a9,u+21aa,u+229c,u+231a,u+231b,u+2328,u+23cf,u+23e9-23f3,u+23f8-23fe,u+24c2,u+25a1,u+25aa-25ae,u+25b6,u+25c0,u+25c9,u+25d0,u+25d1,u+25e7-25ea,u+25ed,u+25ee,u+25fb-25fe,u+2600-2605,u+260e,u+2611,u+2614,u+2615,u+2618,u+261d,u+2620,u+2622,u+2623,u+2626,u+262a,u+262e,u+262f,u+2638-263a,u+2640,u+2642,u+2648-2653,u+265f,u+2660,u+2663,u+2665,u+2666,u+2668,u+267b,u+267e,u+267f,u+2691-2697,u+2699,u+269b,u+269c,u+26a0,u+26a1,u+26a7,u+26aa,u+26ab,u+26b0,u+26b1,u+26bd,u+26be,u+26c4,u+26c5,u+26c8,u+26ce,u+26cf,u+26d1,u+26d3,u+26d4,u+26e9,u+26ea,u+26f0-26f5,u+26f7-26fa,u+26fd,u+2702,u+2705,u+2708-270d,u+270f,u+2712,u+2714,u+2716,u+271d,u+2721,u+2728,u+2733,u+2734,u+2744,u+2747,u+274c,u+274e,u+2753-2755,u+2757,u+2763,u+2764,u+2795-2797,u+27a1,u+27b0,u+27bf,u+2934,u+2935,u+2b05-2b07,u+2b0c,u+2b0d,u+2b1b,u+2b1c,u+2b1f-2b24,u+2b2e,u+2b2f,u+2b50,u+2b55,u+2b58,u+2b8f,u+2bba-2bbc,u+2bc3,u+2bc4,u+2bea,u+2beb,u+3030,u+303d,u+3297,u+3299,u+e000-e009,u+e010,u+e011,u+e040-e06d,u+e080-e0b4,u+e0c0-e0cc,u+e0ff-e10d,u+e140-e14a,u+e150-e157,u+e181-e189,u+e1c0-e1c4,u+e1c6-e1d9,u+e200-e216,u+e240-e269,u+e280-e283,u+e2c0-e2c4,u+e2c6-e2da,u+e300-e303,u+e305-e30f,u+e312-e316,u+e318-e322,u+e324-e329,u+e32b,u+e340-e348,u+e380,u+e381,u+f000,u+f77a,u+f8ff,u+fe0f,u+1f004,u+1f0cf,u+1f10d-1f10f,u+1f12f,u+1f16d-1f171,u+1f17e,u+1f17f,u+1f18e,u+1f191-1f19a,u+1f1e6-1f1ff,u+1f201,u+1f202,u+1f21a,u+1f22f,u+1f232-1f23a,u+1f250,u+1f251,u+1f260-1f265,u+1f300-1f321,u+1f324-1f393,u+1f396,u+1f397,u+1f399-1f39b,u+1f39e-1f3f0,u+1f3f3-1f3f5,u+1f3f7-1f4fd,u+1f4ff-1f53d,u+1f549-1f54e,u+1f550-1f567,u+1f56f,u+1f570,u+1f573-1f57a,u+1f587,u+1f58a-1f58d,u+1f590,u+1f595,u+1f596,u+1f5a4,u+1f5a5,u+1f5a8,u+1f5b1,u+1f5b2,u+1f5bc,u+1f5c2-1f5c4,u+1f5d1-1f5d3,u+1f5dc-1f5de,u+1f5e1,u+1f5e3,u+1f5e8,u+1f5ef,u+1f5f3,u+1f5fa-1f64f,u+1f680-1f6c5,u+1f6cb-1f6d2,u+1f6d5-1f6d7,u+1f6dc-1f6e5,u+1f6e9,u+1f6eb,u+1f6ec,u+1f6f0,u+1f6f3-1f6fc,u+1f7e0-1f7eb,u+1f7f0,u+1f90c-1f93a,u+1f93c-1f945,u+1f947-1f9ff,u+1fa70-1fa7c,u+1fa80-1fa88,u+1fa90-1fabd,u+1fabf-1fac5,u+1face-1fadb,u+1fae0-1fae8,u+1faf0-1faf8,u+1fbc5-1fbc9,u+e0061-e0067,u+e0069,u+e006c-e0079,u+e007f}.Chat-module_copiedToClipboardMessage__apCPY{background:#222;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.18);color:#fff;font-size:1.1em;left:50%;opacity:.97;padding:10px 24px;pointer-events:none;position:fixed;top:32px;transform:translateX(-50%);z-index:9999}.Chat-module_Chat__j2eE5{display:flex;flex-direction:column;font-family:Arial,Helvetica,sans-serif,OpenMojiBlack;height:100%;width:100%}.Chat-module_chatMainFlow__--8FE{display:grid;grid-template:\"๐ฆ\" min-content \"๐ฌ\" 1fr \"๐\" min-content/1fr;height:100%;max-width:100vw;width:100%}.Chat-module_chatMainFlow__--8FE .Chat-module_chatBar__fLECN{background-color:#fff;border-bottom:1px solid rgba(15,23,36,.06);color:#0f1724;font-weight:500;grid-area:๐ฆ;padding:16px 20px;text-align:center;width:100%}.Chat-module_TasksInProgress__fQfei{align-self:center;grid-area:๐ฆ;height:min-content;justify-self:self-end;margin:8px 16px;width:auto}.Chat-module_actions__gTZ5T{align-items:center;align-self:self-start;\n /* !!!!! margin: 16px 20px 0; */display:flex;gap:8px;grid-area:๐ฌ;height:min-content;justify-self:self-end;width:auto;z-index:200}.Chat-module_actions__gTZ5T.Chat-module_left__7l5Mn{justify-self:self-start}.Chat-module_actions__gTZ5T.Chat-module_right__ABZrW{justify-self:self-end}@media (max-width:900px){.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}}@media (max-width:600px){.Chat-module_actions__gTZ5T{gap:7px;margin:14px 18px 0}}.Chat-module_chatMainFlow__--8FE .Chat-module_chatChildren__flOPK{grid-area:๐ฌ;height:100%;width:100%;z-index:300}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{grid-area:๐ฌ;height:100%;overflow-x:hidden;overflow-y:auto;padding:24px 20px 16px;scroll-behavior:smooth;width:100%;z-index:10}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar{width:6px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-track{background:transparent}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-thumb{background:hsla(0,0%,49%,.2);border-radius:3px;transition:all .2s ease}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,49%,.3)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ{align-items:flex-end;animation:Chat-module_messageSlideIn__soTy2 .4s cubic-bezier(.25,.46,.45,.94);display:flex;flex-direction:row;margin-bottom:20px;max-width:100%;position:relative}.Chat-module_hasActionsAndFirstMessageIsLong__5jgoZ{margin-top:55px}@keyframes Chat-module_messageSlideIn__soTy2{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.Chat-module_isNotCompleteMessage__Hj2K7{opacity:.7;position:relative}.Chat-module_NonCompleteMessageFiller__G5-Ve{color:transparent}.Chat-module_isNotCompleteMessage__Hj2K7 .Chat-module_messageText__XgNyQ:after{animation:Chat-module_loadingPulse__VomRm 1.5s ease-in-out infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,49%,.6),transparent);border-radius:2px;bottom:8px;content:\"\";height:4px;position:absolute;right:12px;width:20px}@keyframes Chat-module_loadingPulse__VomRm{0%,to{opacity:.3;transform:scaleX(.8)}50%{opacity:1;transform:scaleX(1.2)}}.Chat-module_typingIndicator__S-CT-{align-items:flex-end;animation:Chat-module_messageSlideIn__soTy2 .4s cubic-bezier(.25,.46,.45,.94);display:flex;margin-bottom:20px}.Chat-module_typingIndicator__S-CT- .Chat-module_avatar__gL6bm{flex-shrink:0;height:40px;margin:0 12px 4px;width:40px}.Chat-module_typingIndicator__S-CT- .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;background-color:#eef6fb;border:2px solid hsla(0,0%,49%,.1);border-radius:50%;object-fit:cover;width:40px}.Chat-module_typingBubble__0Lb7B{backdrop-filter:blur(10px);border:1px solid hsla(0,0%,49%,.1);border-radius:20px;border-bottom-left-radius:6px;box-shadow:0 2px 8px rgba(0,0,0,.1);min-height:24px;padding:16px 20px}.Chat-module_typingBubble__0Lb7B,.Chat-module_typingDots__srOBB{align-items:center;display:flex;gap:4px}.Chat-module_typingDot__dnhKT{animation:Chat-module_typingBounce__1yp2v 1.4s ease-in-out infinite;background:linear-gradient(135deg,#6b7280,hsla(0,0%,49%,.6));border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.1);height:8px;width:8px}.Chat-module_typingDot__dnhKT:first-child{animation-delay:-.32s}.Chat-module_typingDot__dnhKT:nth-child(2){animation-delay:-.16s}.Chat-module_typingDot__dnhKT:nth-child(3){animation-delay:0s}@keyframes Chat-module_typingBounce__1yp2v{0%,80%,to{opacity:.5;transform:scale(.8) translateY(0)}40%{opacity:1;transform:scale(1.2) translateY(-8px)}}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ.Chat-module_isMe__nBtaV{align-items:flex-end;flex-direction:row-reverse;justify-content:flex-start}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ.Chat-module_isMe__nBtaV .Chat-module_messageText__XgNyQ{border-bottom-right-radius:6px}.Chat-module_ratingStar__rRfqC{color:var(--star-inactive-color,#ccc);cursor:pointer;font-size:20px;transition:color .2s}.Chat-module_ratingStar__rRfqC.Chat-module_active__lbYL-{color:gold}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{aspect-ratio:1/1;flex-shrink:0;margin:0 12px 4px;position:relative;width:40px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;background-color:var(--avatar-bg-color,#eef6fb);border:2px solid hsla(0,0%,49%,.1);border-radius:50%;object-fit:cover;transition:transform .2s ease,box-shadow .2s ease;width:40px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img:hover{box-shadow:0 4px 12px rgba(0,0,0,.15);transform:scale(1.05)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{word-wrap:break-word;backdrop-filter:blur(10px);background-color:var(--message-bg-color);border-radius:20px;box-shadow:0 2px 8px rgba(0,0,0,.1);color:var(--message-text-color);font-size:15px;line-height:1.5;margin-bottom:4px;max-width:min(70%,600px);padding:14px 18px;position:relative;text-align:left;transition:all .2s ease}.Chat-module_copyButtonContainer__Rij0U{align-items:center;float:right;justify-content:flex-end;pointer-events:none;right:10px;top:8px;visibility:hidden;z-index:2}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ:hover .Chat-module_copyButtonContainer__Rij0U,.Chat-module_copyButtonContainer__Rij0U:focus-within{pointer-events:auto;visibility:visible}.Chat-module_copyButton__DcxT5{align-items:center;background:hsla(0,0%,100%,.2);border:1px solid #ddd;border-radius:6px;box-shadow:0 1px 4px rgba(0,0,0,.07);cursor:pointer;display:flex;opacity:.7;padding:2px 5px;position:relative;transition:all .15s,box-shadow .15s,border .15s}.Chat-module_copiedTooltip__LH81j{animation:Chat-module_copiedTooltipFadeIn__QekO1 .2s;background:#222;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.18);color:#fff;font-size:.98em;left:50%;margin-top:4px;max-width:220px;opacity:.97;overflow-wrap:break-word;padding:6px 16px;pointer-events:none;position:absolute;top:110%;transform:translateX(-50%);white-space:nowrap;word-break:break-word;z-index:100}.Chat-module_copiedTooltipLeft__j-S-5{left:0!important;transform:none!important}.Chat-module_copiedTooltipRight__R-2cE{left:auto!important;right:0!important;transform:none!important}@keyframes Chat-module_copiedTooltipFadeIn__QekO1{0%{opacity:0;transform:translateX(-50%) translateY(8px) scale(.97)}to{opacity:.97;transform:translateX(-50%) translateY(0) scale(1)}}.Chat-module_copyButton__DcxT5:focus,.Chat-module_copyButton__DcxT5:hover{border:1.5px solid #bbb;box-shadow:0 2px 8px rgba(0,132,255,.1);opacity:1}.Chat-module_copyButton__DcxT5 svg{display:block}.Chat-module_messageText__XgNyQ h1{font-size:2em}.Chat-module_messageText__XgNyQ h2{font-size:1.75em}.Chat-module_messageText__XgNyQ h3{font-size:1.5em}.Chat-module_messageText__XgNyQ h4{font-size:1.25em}.Chat-module_messageText__XgNyQ h5{font-size:1.1em}.Chat-module_messageText__XgNyQ ul{list-style:disc;margin-left:20px}.Chat-module_messageText__XgNyQ ol{list-style:decimal;margin-left:20px}.Chat-module_messageText__XgNyQ blockquote,.Chat-module_messageText__XgNyQ img,.Chat-module_messageText__XgNyQ pre,.Chat-module_messageText__XgNyQ table{border-radius:8px;margin-bottom:10px;margin-top:10px}.Chat-module_messageText__XgNyQ pre{background:#000;color:#fff}.Chat-module_messageText__XgNyQ blockquote,.Chat-module_messageText__XgNyQ pre{border:none;box-shadow:none;display:block;font-size:inherit;line-height:inherit;padding:1em}.Chat-module_messageText__XgNyQ blockquote{background:#ffffffcc;color:#000}.Chat-module_messageText__XgNyQ code{background:#cccccc55;border:none;box-shadow:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;margin:0;padding:0}.Chat-module_messageText__XgNyQ pre code{background-color:#000000cc;border-radius:8px}.Chat-module_messageText__XgNyQ .Chat-module_chat-code-block__k8IyS{background:#181c23;border-color:#23272f;box-shadow:0 2px 8px rgba(0,0,0,.12);color:#f8fafc;font-family:Fira Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:14px;line-height:1.6;overflow-x:auto}.Chat-module_messageText__XgNyQ .Chat-module_chat-code-block__k8IyS code{background:none!important;border:none!important;box-shadow:none!important;color:inherit!important;display:block;font-family:inherit!important;font-size:inherit!important;overflow-x:auto;padding:0!important;white-space:pre;word-break:break-word}.Chat-module_messageText__XgNyQ table{background:#f8fafc;border-collapse:separate;border-spacing:0;box-shadow:0 2px 8px rgba(0,0,0,.08);color:#17223b;font-size:14px;margin:16px 0;width:100%}.Chat-module_messageText__XgNyQ td,.Chat-module_messageText__XgNyQ th{background:none;border-bottom:1px solid #d1dbe8;color:#17223b;padding:10px 16px;text-align:left}.Chat-module_messageText__XgNyQ th{background:linear-gradient(90deg,#eaf3fa 80%,#d1e3f8);border-bottom:2px solid #b5c7de;color:#17223b;font-weight:700}.Chat-module_messageText__XgNyQ tr:last-child td{border-bottom:none}.Chat-module_messageText__XgNyQ tr:nth-child(2n) td{background:#eaf3fa}.Chat-module_messageText__XgNyQ tr:hover td{background:#cbe0f7;transition:background .2s}.Chat-module_messageText__XgNyQ table{border-radius:12px;overflow:hidden}.Chat-module_messageText__XgNyQ td:first-child,.Chat-module_messageText__XgNyQ th:first-child{border-top-left-radius:12px}.Chat-module_messageText__XgNyQ td:last-child,.Chat-module_messageText__XgNyQ th:last-child{border-top-right-radius:12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ:hover{box-shadow:0 4px 16px rgba(0,0,0,.15);transform:translateY(-1px)}.Chat-module_messageButtons__WaOob{border-top:1px solid hsla(0,0%,49%,.83);display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;padding-top:12px}.Chat-module_messageButton__mRnn-{-webkit-tap-highlight-color:transparent;align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.9);border-radius:16px;cursor:pointer;display:inline-flex;font-size:13px;font-weight:500;padding:8px 14px;touch-action:manipulation;transition:all .2s ease;user-select:none}.Chat-module_messageButton__mRnn-:hover{background:rgba(0,132,255,.1);border-color:rgba(0,132,255,.3);box-shadow:0 2px 8px rgba(0,132,255,.15);transform:translateY(-1px)}.Chat-module_messageButton__mRnn-:active{transform:scale(.98);transition:transform .1s ease}.Chat-module_messageButton__mRnn- p{line-height:inherit;margin:0;padding:0}.Chat-module_messageButton__mRnn- strong{font-weight:600}.Chat-module_messageButton__mRnn- em{font-style:italic}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M{align-items:center;backdrop-filter:blur(10px);background:rgba(0,0,0,.8);border-radius:12px;bottom:-8px;display:flex;gap:2px;min-width:24px;opacity:0;padding:4px 6px;position:absolute;right:8px;transform:translateY(4px);transition:all .3s cubic-bezier(.25,.46,.45,.94);z-index:1}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ:hover .Chat-module_rating__soc3M{opacity:1;transform:translateY(0)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M:hover{background:rgba(0,0,0,.9);box-shadow:0 4px 12px rgba(0,0,0,.3);padding:6px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M span{cursor:pointer;display:inline-block;font-size:16px;transition:transform .2s ease,color .2s ease}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M:hover span{transform:scale(1.1)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{backdrop-filter:blur(20px);border-top:1px solid hsla(0,0%,49%,.1);display:flex;flex-direction:column;gap:12px;grid-area:๐;padding:20px;position:relative;width:100%;z-index:10}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan.Chat-module_dragOver__bkS-g{background:linear-gradient(0deg,rgba(0,132,255,.1) 0,rgba(0,132,255,.05));border-top:2px solid rgba(0,132,255,.3)}.Chat-module_filePreviewContainer__R70hm{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.Chat-module_filePreview__kq2aX{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.2);border-radius:8px;display:flex;font-size:12px;gap:8px;padding:8px 12px;transition:all .2s ease}.Chat-module_filePreview__kq2aX:hover{background:hsla(0,0%,49%,.15);border-color:hsla(0,0%,49%,.3)}.Chat-module_fileIcon__zoSKW{font-size:14px;opacity:.7}.Chat-module_fileInfo__wBLi0{display:flex;flex-direction:column;gap:2px;min-width:0}.Chat-module_fileName__bBujo{color:#000;font-weight:500;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Chat-module_fileSize__ivliq{color:#6b7280;font-size:11px}.Chat-module_removeFileButton__0gakR{align-items:center;background:rgba(255,0,0,.1);border:none;border-radius:50%;color:#f44;cursor:pointer;display:flex;flex-shrink:0;height:20px;justify-content:center;transition:all .2s ease;width:20px}.Chat-module_removeFileButton__0gakR:hover{background:rgba(255,0,0,.2);transform:scale(1.1)}.Chat-module_inputContainer__bPt99{align-items:center;display:flex;gap:12px}.Chat-module_inputContainer__bPt99 textarea::placeholder{color:inherit;opacity:.7}.Chat-module_attachmentButton__qLO47{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.05);border:1px solid hsla(0,0%,49%,.2);border-radius:50%;color:#6b7280;cursor:pointer;display:flex;flex-shrink:0;height:40px;justify-content:center;transition:all .2s ease;width:40px}.Chat-module_attachmentButton__qLO47:hover:not(:disabled){background:rgba(0,132,255,.1);border-color:rgba(0,132,255,.3);color:#0084ff;transform:scale(1.05)}.Chat-module_attachmentButton__qLO47:disabled{cursor:not-allowed;opacity:.5;transform:none}.Chat-module_uploadProgress__jBTKe{align-items:center;background:rgba(0,132,255,.1);border:1px solid rgba(0,132,255,.2);border-radius:8px;color:#0084ff;display:flex;font-size:13px;gap:12px;padding:8px 12px}.Chat-module_uploadProgressBar__Gutnt{background:rgba(0,132,255,.2);border-radius:2px;flex:1;height:4px;overflow:hidden}.Chat-module_uploadProgressFill__EgubT{animation:Chat-module_uploadProgress__jBTKe 1.5s ease-in-out infinite;background:linear-gradient(90deg,#0084ff,rgba(0,132,255,.8));border-radius:2px;height:100%}@keyframes Chat-module_uploadProgress__jBTKe{0%{transform:translateX(-100%)}50%{transform:translateX(0)}to{transform:translateX(100%)}}.Chat-module_dragOverlay__SEGoS{align-items:center;backdrop-filter:blur(10px);background:rgba(0,132,255,.1);border:2px dashed rgba(0,132,255,.5);border-radius:12px;bottom:0;display:flex;justify-content:center;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:20}.Chat-module_dragOverlayContent__gb9kF{align-items:center;color:#0084ff;display:flex;flex-direction:column;font-weight:600;gap:12px;text-align:center}.Chat-module_dragOverlayContent__gb9kF svg{opacity:.7}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{-webkit-tap-highlight-color:transparent;appearance:none;-webkit-appearance:none;backdrop-filter:blur(20px);background:hsla(0,0%,49%,.05);border-radius:25px;color:#000;flex:1;font-size:15px;line-height:1.4;max-height:120px;min-width:200px;outline:none;padding:16px 20px;resize:none;touch-action:manipulation;transition:all .3s cubic-bezier(.25,.46,.45,.94)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea:focus{background:hsla(0,0%,49%,.08);border-color:#0084ff;box-shadow:0 0 0 4px rgba(0,132,255,.1),0 8px 32px rgba(0,132,255,.15);transform:translateY(-2px)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea:disabled{cursor:not-allowed;opacity:.6;transform:none}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea::placeholder{color:inherit;opacity:.7}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{-webkit-tap-highlight-color:transparent;align-items:center;aspect-ratio:1/1;background:linear-gradient(135deg,#0084ff,#06c);border:none;border-radius:50%!important;box-shadow:0 4px 16px rgba(0,132,255,.3);color:#fff;display:flex;height:48px;justify-content:center;margin:0!important;min-height:unset!important;min-width:unset!important;overflow:visible;padding:0!important;padding-left:unset;padding-right:unset;touch-action:manipulation;transition:all .3s cubic-bezier(.25,.46,.45,.94);user-select:none;width:48px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button img{height:100%;object-fit:contain;width:50%}.Chat-module_scrollToBottomContainer__5rXpK{align-items:flex-start;display:flex;grid-area:๐;height:100%;justify-content:center;pointer-events:none;width:100%;z-index:20}.Chat-module_scrollToBottomContainer__5rXpK .Chat-module_scrollToBottom__nzxdZ{-webkit-tap-highlight-color:transparent;align-items:center;animation:Chat-module_scrollButtonSlideIn__XnImg .3s ease-out;backdrop-filter:blur(3px);background:rgba(0,0,0,.5);border:none;border-radius:50%;box-shadow:0 4px 16px rgba(0,0,0,.3);color:#fff;cursor:pointer;display:flex;font-weight:700;height:48px;justify-content:center;outline:none;pointer-events:all;touch-action:manipulation;transform:translate(-50%,-150%);transition:all .3s cubic-bezier(.25,.46,.45,.94);user-select:none;width:48px}@keyframes Chat-module_scrollButtonSlideIn__XnImg{0%{opacity:0;transform:translate(-50%,20px) scale(.8)}to{opacity:.9;transform:translate(-50%) scale(1)}}.Chat-module_scrollToBottom__nzxdZ:hover{transform:translate(-50%,-160%) scale(1.05)}.Chat-module_scrollToBottom__nzxdZ:active{transform:translate(-50%,-160%) scale(.95);transition:transform .1s ease}.Chat-module_ratingModal__XVKYm{align-items:center;animation:Chat-module_modalFadeIn__RPc3w .3s ease-out;backdrop-filter:blur(8px);background-color:rgba(0,0,0,.6);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}@keyframes Chat-module_modalFadeIn__RPc3w{0%{backdrop-filter:blur(0);opacity:0}to{backdrop-filter:blur(8px);opacity:1}}.Chat-module_ratingModalContent__CCdq7{animation:Chat-module_modalSlideIn__XXtgN .3s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(20px);background:#fff;border:1px solid hsla(0,0%,49%,.1);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.3);color:#0f1724;font-family:Arial,Helvetica,sans-serif,OpenMojiBlack;max-width:480px;padding:32px;width:90%}@keyframes Chat-module_modalSlideIn__XXtgN{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.Chat-module_ratingModalContent__CCdq7 h3{color:#000;font-size:20px;font-weight:600;margin:0 0 24px;text-align:center}.Chat-module_stars__PCzNO{display:flex;gap:8px;justify-content:center;margin-bottom:24px}.Chat-module_stars__PCzNO span{border-radius:8px;cursor:pointer;font-size:28px;padding:4px;transition:all .2s ease}.Chat-module_stars__PCzNO span:hover{background:rgba(255,215,0,.1);transform:scale(1.2)}.Chat-module_ratingModalStar__XkbHr{cursor:pointer;font-size:24px;transition:color .2s}.Chat-module_ratingInput__z8Pv-{background:hsla(0,0%,49%,.05);border:2px solid hsla(0,0%,49%,.1);border-radius:12px;color:#0b1220;font-size:14px;line-height:1.5;margin-bottom:18px;min-height:100px;padding:16px;resize:vertical;transition:all .2s ease;width:100%}.Chat-module_ratingInput__z8Pv-:focus{background:hsla(0,0%,49%,.08);border-color:#0084ff;box-shadow:0 0 0 4px rgba(0,132,255,.1);outline:none}.Chat-module_ratingInput__z8Pv-[readonly]{background:hsla(0,0%,49%,.01);border:1px solid hsla(0,0%,49%,.5)}.Chat-module_ratingActions__nXcss{display:flex;gap:12px;justify-content:flex-end}.Chat-module_ratingActions__nXcss button{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;min-width:80px;padding:12px 24px;transition:all .2s ease}.Chat-module_ratingActions__nXcss button:first-child{background-color:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.2);color:#0b1220}.Chat-module_ratingActions__nXcss button:first-child:hover:not(:disabled){background-color:hsla(0,0%,49%,.2);color:#0b1220}.Chat-module_ratingActions__nXcss button:last-child{background:linear-gradient(135deg,#0084ff,#06c);color:#fff}.Chat-module_ratingActions__nXcss button:last-child:hover:not(:disabled){background:linear-gradient(135deg,#0071d1,#0052a3);box-shadow:0 4px 12px rgba(0,132,255,.3);transform:translateY(-1px)}.Chat-module_ratingActions__nXcss button:last-child:disabled{cursor:not-allowed;opacity:.5}.Chat-module_chatButton__d9VgA{-webkit-tap-highlight-color:transparent!important;align-items:center!important;backdrop-filter:blur(20px)!important;background:linear-gradient(135deg,#0084ff,#06c)!important;border:none!important;border-radius:20px!important;box-shadow:0 4px 16px rgba(0,132,255,.3)!important;color:#fff!important;cursor:pointer!important;display:inline-flex!important;font-size:13px!important;font-weight:600!important;gap:8px!important;justify-content:center!important;line-height:1.3!important;margin:0!important;min-height:40px!important;min-width:110px!important;overflow:hidden!important;padding:12px 16px!important;position:relative!important;touch-action:manipulation!important;transition:all .3s cubic-bezier(.25,.46,.45,.94)!important;user-select:none!important}.Chat-module_chatButton__d9VgA:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.Chat-module_chatButton__d9VgA:hover:before{left:100%}.Chat-module_chatButton__d9VgA:hover:not(:disabled){background:linear-gradient(135deg,#09f,#07d);box-shadow:0 8px 24px rgba(0,132,255,.4);transform:translateY(-2px) scale(1.02)}.Chat-module_chatButton__d9VgA:active{box-shadow:0 4px 16px rgba(0,132,255,.3);transform:scale(.98) translateY(-1px);transition:transform .1s ease}.Chat-module_chatButton__d9VgA:focus{box-shadow:0 4px 16px rgba(0,132,255,.3),0 0 0 3px rgba(0,132,255,.3);outline:none}.Chat-module_chatButton__d9VgA svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.2));flex-shrink:0;height:16px;opacity:1;transition:all .3s cubic-bezier(.25,.46,.45,.94);width:16px}.Chat-module_chatButton__d9VgA:hover svg{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));transform:rotate(-90deg) scale(1.1)}.Chat-module_chatButtonText__RkGB-{font-weight:600;opacity:1;text-shadow:0 1px 2px rgba(0,0,0,.1);transition:all .2s ease;white-space:nowrap}.Chat-module_chatButton__d9VgA:hover .Chat-module_chatButtonText__RkGB-{transform:translateX(1px)}.Chat-module_useTemplateButton__xcJNR{-webkit-tap-highlight-color:transparent!important;align-items:center!important;backdrop-filter:blur(20px)!important;background:linear-gradient(135deg,#0084ff,#06c)!important;border:none!important;border-radius:20px!important;box-shadow:0 4px 16px rgba(0,132,255,.3)!important;color:#fff!important;cursor:pointer!important;display:inline-flex!important;font-size:13px!important;font-weight:600!important;gap:8px!important;justify-content:center!important;line-height:1.3!important;margin:0!important;min-height:40px!important;min-width:110px!important;overflow:hidden!important;padding:12px 16px!important;position:relative!important;touch-action:manipulation!important;transition:all .3s cubic-bezier(.25,.46,.45,.94)!important;user-select:none!important}.Chat-module_useTemplateButton__xcJNR:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.Chat-module_useTemplateButton__xcJNR:hover:before{left:100%}.Chat-module_useTemplateButton__xcJNR:hover:not(:disabled){background:linear-gradient(135deg,#09f,#07d);box-shadow:0 8px 24px rgba(0,132,255,.4);transform:translateY(-2px) scale(1.02)}.Chat-module_useTemplateButton__xcJNR:active{box-shadow:0 4px 16px rgba(0,132,255,.3);transform:scale(.98) translateY(-1px);transition:transform .1s ease}.Chat-module_useTemplateButton__xcJNR:focus{box-shadow:0 4px 16px rgba(0,132,255,.3),0 0 0 3px rgba(0,132,255,.3);outline:none}.Chat-module_useTemplateButton__xcJNR svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.2));flex-shrink:0;height:16px;opacity:1;transition:all .3s cubic-bezier(.25,.46,.45,.94);width:16px}.Chat-module_useTemplateButton__xcJNR:hover svg{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));transform:scale(1.1)}.Chat-module_useTemplateButton__xcJNR:hover .Chat-module_chatButtonText__RkGB-{transform:translateX(1px)}.Chat-module_saveButtonContainer__lSNUJ{display:inline-block;position:relative}.Chat-module_saveMenu__-ph8y{background:#fff;border:1px solid #ddd;box-shadow:0 2px 8px rgba(0,0,0,.08);left:0;min-width:120px;position:absolute;top:100%;z-index:10}.Chat-module_saveMenuItem__ISApL{background:none;border:none;color:#111;cursor:pointer;display:block;padding:8px 16px;text-align:left;width:100%}.Chat-module_saveMenuItem__ISApL:hover{background-color:#f0f0f0}.Chat-module_pauseButton__eeu7K{background:linear-gradient(135deg,#ffb347,#ff8c42)!important}.Chat-module_pauseButton__eeu7K:hover:not(:disabled){background:linear-gradient(135deg,#ffc067,#ff9e5f)!important}.Chat-module_pauseButton__eeu7K.Chat-module_pausing__pTx8b{cursor:wait!important;opacity:.6!important}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya{background:linear-gradient(135deg,#10b981,#059669)!important}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya:hover:not(:disabled){background:linear-gradient(135deg,#34d399,#059669)!important;box-shadow:0 8px 24px rgba(16,185,129,.35);transform:translateY(-2px) scale(1.02)}.Chat-module_pauseButton__eeu7K svg{transition:transform .3s ease}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya svg{transform:scale(1.1)}.Chat-module_pauseButton__eeu7K.Chat-module_pausing__pTx8b svg{opacity:.8}.Chat-module_voiceCallIndicatorBar__N2sWN{align-items:center;backdrop-filter:blur(10px);background:linear-gradient(135deg,rgba(34,197,94,.1),rgba(16,185,129,.1));border-bottom:1px solid rgba(34,197,94,.3);display:flex;grid-area:๐ฆ;justify-content:center;padding:12px 20px;width:100%}.Chat-module_voiceCallIndicator__tsaaG{align-items:center;backdrop-filter:blur(10px);background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(16,185,129,.2));border:1px solid rgba(34,197,94,.4);border-radius:20px;box-shadow:0 2px 8px rgba(34,197,94,.2);color:#10b981;display:inline-flex;font-size:13px;font-weight:600;gap:8px;padding:8px 16px;position:relative}.Chat-module_voiceCallIndicator__tsaaG svg{animation:Chat-module_voiceCallIconPulse__zZbJn 2s ease-in-out infinite;flex-shrink:0;height:16px;width:16px}.Chat-module_voiceCallIndicator__tsaaG span{font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.1)}.Chat-module_voiceCallPulse__XcGU4{animation:Chat-module_voiceCallPulse__XcGU4 1.5s ease-in-out infinite;background:#10b981;border-radius:50%;height:8px;position:absolute;right:8px;top:50%;transform:translateY(-50%);width:8px}@keyframes Chat-module_voiceCallIconPulse__zZbJn{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.1)}}@keyframes Chat-module_voiceCallPulse__XcGU4{0%,to{opacity:1;transform:translateY(-50%) scale(1)}50%{opacity:.6;transform:translateY(-50%) scale(1.3)}}.Chat-module_chatMessage__nmLaZ .Chat-module_voiceCallIndicator__tsaaG{border-radius:16px;font-size:12px;margin-bottom:8px;padding:6px 12px}.Chat-module_chatMessage__nmLaZ .Chat-module_voiceCallIndicator__tsaaG svg{height:14px;width:14px}.Chat-module_ratingConfirmation__n16vb{word-wrap:break-word;animation:Chat-module_confirmationSlideIn__5U-wz .3s ease-out;backdrop-filter:blur(20px);background:linear-gradient(135deg,#10b981,#059669);border-radius:12px;box-shadow:0 8px 32px rgba(16,185,129,.3);color:#fff;font-weight:500;max-width:300px;padding:16px 20px;position:fixed;right:20px;top:20px;z-index:1001}@keyframes Chat-module_confirmationSlideIn__5U-wz{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@media (max-width:768px){.Chat-module_actions__gTZ5T{gap:6px;margin:12px 16px 0}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{padding:16px 12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ{margin-bottom:16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border-radius:18px;font-size:14px;max-width:85%;padding:12px 16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{height:36px;margin:0 10px 4px;width:36px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;width:36px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{gap:10px;padding:16px 12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-radius:22px;font-size:16px;padding:14px 18px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{height:44px;width:44px}.Chat-module_scrollToBottom__nzxdZ{font-size:18px;height:44px;top:calc(100% - 160px);width:44px}.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_ratingModalContent__CCdq7{border-radius:16px;margin:16px;max-height:80vh;overflow-y:auto;padding:24px 20px}.Chat-module_stars__PCzNO{gap:6px;margin-bottom:20px}.Chat-module_stars__PCzNO span{font-size:32px;padding:8px}.Chat-module_ratingActions__nXcss{flex-direction:column-reverse;gap:8px}.Chat-module_ratingActions__nXcss button{border-radius:10px;font-size:16px;padding:14px;width:100%}}@media (max-width:480px){.Chat-module_actions__gTZ5T{gap:4px;margin:8px 12px 0}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{padding:12px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border-radius:16px;font-size:14px;max-width:90%;padding:10px 14px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{height:32px;margin:0 8px 4px;width:32px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;width:32px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{gap:8px;padding:12px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-radius:20px;font-size:16px;padding:12px 16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{height:40px;width:40px}.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_scrollToBottom__nzxdZ{font-size:16px;height:40px;top:calc(100% - 140px);width:40px}.Chat-module_ratingModal__XVKYm{align-items:flex-end;padding:0}.Chat-module_ratingModalContent__CCdq7{border-radius:20px 20px 0 0;margin:0;max-height:70vh;padding:24px 16px 20px;width:100%}}@media (prefers-reduced-motion:reduce){.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ,.Chat-module_ratingConfirmation__n16vb,.Chat-module_ratingModalContent__CCdq7,.Chat-module_ratingModal__XVKYm,.Chat-module_scrollToBottom__nzxdZ{animation:none}.Chat-module_chatButton__d9VgA,.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button,.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea,.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img,.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{transition:none}}@media (prefers-contrast:high){.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border:2px solid}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-width:3px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{border:2px solid}}\n/*# sourceMappingURL=data:application/json;base64,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LHlCQUNJLDRCQUVJLE9BQVEsQ0FEUixpQkFFSixDQUVBLGtFQUNJLGdCQUNKLENBRUEsaUdBSUksa0JBQW1CLENBRG5CLGNBQWUsQ0FGZixhQUFjLENBQ2QsaUJBR0osQ0FFQSw0RkFFSSxXQUFZLENBQ1osZ0JBQWlCLENBRmpCLFVBR0osQ0FFQSxnR0FFSSxnQkFBbUIsQ0FEbkIsVUFFSixDQUVBLCtEQUVJLE9BQVEsQ0FEUixnQkFFSixDQUVBLHdFQUVJLGtCQUFtQixDQUNuQixjQUFlLENBRmYsaUJBR0osQ0FFQSxzRUFFSSxXQUFZLENBRFosVUFFSixDQUVBLCtCQUNJLDJCQUE2QixDQU03QixlQUFpQixDQUpqQixxQkFBdUIsQ0FLdkIsa0JBQW9CLENBSHBCLHlCQUEyQixDQUQzQix3QkFBMEIsQ0FFMUIsbUJBQXFCLENBSnJCLG9CQU9KLENBRUEsbUNBRUkscUJBQXVCLENBRHZCLG9CQUVKLENBRUEsbUNBQ0ksc0JBQ0osQ0FFQSxzQ0FDSSwyQkFBNkIsQ0FNN0IsZUFBaUIsQ0FKakIscUJBQXVCLENBS3ZCLGtCQUFvQixDQUhwQix5QkFBMkIsQ0FEM0Isd0JBQTBCLENBRTFCLG1CQUFxQixDQUpyQixvQkFPSixDQUVBLDBDQUVJLHFCQUF1QixDQUR2QixvQkFFSixDQUVBLHlFQUNJLHNCQUNKLENBRUEsbUNBR0ksY0FBZSxDQURmLFdBQVksQ0FFWixzQkFBdUIsQ0FIdkIsVUFJSixDQUVBLGdDQUVJLG9CQUFxQixDQURyQixTQUVKLENBRUEsdUNBR0ksMkJBQTRCLENBRjVCLFFBQVMsQ0FHVCxlQUFnQixDQUNoQixzQkFBdUIsQ0FIdkIsVUFJSixDQUNKLENBR0EsdUNBQ0ksa05BS0ksY0FDSixDQUVBLDhXQUtJLGVBQ0osQ0FDSixDQUdBLCtCQUNJLGlHQUNJLGdCQUNKLENBRUEsd0VBQ0ksZ0JBQ0osQ0FFQSxzRUFDSSxnQkFDSixDQUNKIiwiZmlsZSI6IkNoYXQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnT3Blbk1vamlCbGFjayc7XG4gICAgc3JjOiB1cmwoJ2h0dHBzOi8vczYucHRiay5pby9mb250cy9PcGVuTW9qaS1ibGFjay1nbHlmLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpOyAvKiA8LSBUT0RPOiBb8J+QseKAjfCfmoBdIER5bmFtaWNhbGx5IGxvYWQgZnJvbSAvc2VydmVycy50cyAqL1xuICAgIHVuaWNvZGUtcmFuZ2U6IFUrMjMsIFUrMkEsIFUrMkQsIFUrMzAtMzksIFUrQTksIFUrQUUsIFUrMjAwRCwgVSsyMDNDLCBVKzIwNDksIFUrMjBFMywgVSsyMTE3LCBVKzIxMjAsIFUrMjEyMiwgVSsyMTM5LFxuICAgICAgICBVKzIxOTQtMjE5OSwgVSsyMUE5LCBVKzIxQUEsIFUrMjI5QywgVSsyMzFBLCBVKzIzMUIsIFUrMjMyOCwgVSsyM0NGLCBVKzIzRTktMjNGMywgVSsyM0Y4LTIzRkUsIFUrMjRDMiwgVSsyNUExLFxuICAgICAgICBVKzI1QUEtMjVBRSwgVSsyNUI2LCBVKzI1QzAsIFUrMjVDOSwgVSsyNUQwLCBVKzI1RDEsIFUrMjVFNy0yNUVBLCBVKzI1RUQsIFUrMjVFRSwgVSsyNUZCLTI1RkUsIFUrMjYwMC0yNjA1LFxuICAgICAgICBVKzI2MEUsIFUrMjYxMSwgVSsyNjE0LCBVKzI2MTUsIFUrMjYxOCwgVSsyNjFELCBVKzI2MjAsIFUrMjYyMiwgVSsyNjIzLCBVKzI2MjYsIFUrMjYyQSwgVSsyNjJFLCBVKzI2MkYsXG4gICAgICAgIFUrMjYzOC0yNjNBLCBVKzI2NDAsIFUrMjY0MiwgVSsyNjQ4LTI2NTMsIFUrMjY1RiwgVSsyNjYwLCBVKzI2NjMsIFUrMjY2NSwgVSsyNjY2LCBVKzI2NjgsIFUrMjY3QiwgVSsyNjdFLCBVKzI2N0YsXG4gICAgICAgIFUrMjY5MS0yNjk3LCBVKzI2OTksIFUrMjY5QiwgVSsyNjlDLCBVKzI2QTAsIFUrMjZBMSwgVSsyNkE3LCBVKzI2QUEsIFUrMjZBQiwgVSsyNkIwLCBVKzI2QjEsIFUrMjZCRCwgVSsyNkJFLFxuICAgICAgICBVKzI2QzQsIFUrMjZDNSwgVSsyNkM4LCBVKzI2Q0UsIFUrMjZDRiwgVSsyNkQxLCBVKzI2RDMsIFUrMjZENCwgVSsyNkU5LCBVKzI2RUEsIFUrMjZGMC0yNkY1LCBVKzI2RjctMjZGQSwgVSsyNkZELFxuICAgICAgICBVKzI3MDIsIFUrMjcwNSwgVSsyNzA4LTI3MEQsIFUrMjcwRiwgVSsyNzEyLCBVKzI3MTQsIFUrMjcxNiwgVSsyNzFELCBVKzI3MjEsIFUrMjcyOCwgVSsyNzMzLCBVKzI3MzQsIFUrMjc0NCxcbiAgICAgICAgVSsyNzQ3LCBVKzI3NEMsIFUrMjc0RSwgVSsyNzUzLTI3NTUsIFUrMjc1NywgVSsyNzYzLCBVKzI3NjQsIFUrMjc5NS0yNzk3LCBVKzI3QTEsIFUrMjdCMCwgVSsyN0JGLCBVKzI5MzQsIFUrMjkzNSxcbiAgICAgICAgVSsyQjA1LTJCMDcsIFUrMkIwQywgVSsyQjBELCBVKzJCMUIsIFUrMkIxQywgVSsyQjFGLTJCMjQsIFUrMkIyRSwgVSsyQjJGLCBVKzJCNTAsIFUrMkI1NSwgVSsyQjU4LCBVKzJCOEYsXG4gICAgICAgIFUrMkJCQS0yQkJDLCBVKzJCQzMsIFUrMkJDNCwgVSsyQkVBLCBVKzJCRUIsIFUrMzAzMCwgVSszMDNELCBVKzMyOTcsIFUrMzI5OSwgVStFMDAwLUUwMDksIFUrRTAxMCwgVStFMDExLFxuICAgICAgICBVK0UwNDAtRTA2RCwgVStFMDgwLUUwQjQsIFUrRTBDMC1FMENDLCBVK0UwRkYtRTEwRCwgVStFMTQwLUUxNEEsIFUrRTE1MC1FMTU3LCBVK0UxODEtRTE4OSwgVStFMUMwLUUxQzQsXG4gICAgICAgIFUrRTFDNi1FMUQ5LCBVK0UyMDAtRTIxNiwgVStFMjQwLUUyNjksIFUrRTI4MC1FMjgzLCBVK0UyQzAtRTJDNCwgVStFMkM2LUUyREEsIFUrRTMwMC1FMzAzLCBVK0UzMDUtRTMwRixcbiAgICAgICAgVStFMzEyLUUzMTYsIFUrRTMxOC1FMzIyLCBVK0UzMjQtRTMyOSwgVStFMzJCLCBVK0UzNDAtRTM0OCwgVStFMzgwLCBVK0UzODEsIFUrRjAwMCwgVStGNzdBLCBVK0Y4RkYsIFUrRkUwRixcbiAgICAgICAgVSsxRjAwNCwgVSsxRjBDRiwgVSsxRjEwRC0xRjEwRiwgVSsxRjEyRiwgVSsxRjE2RC0xRjE3MSwgVSsxRjE3RSwgVSsxRjE3RiwgVSsxRjE4RSwgVSsxRjE5MS0xRjE5QSwgVSsxRjFFNi0xRjFGRixcbiAgICAgICAgVSsxRjIwMSwgVSsxRjIwMiwgVSsxRjIxQSwgVSsxRjIyRiwgVSsxRjIzMi0xRjIzQSwgVSsxRjI1MCwgVSsxRjI1MSwgVSsxRjI2MC0xRjI2NSwgVSsxRjMwMC0xRjMyMSwgVSsxRjMyNC0xRjM5MyxcbiAgICAgICAgVSsxRjM5NiwgVSsxRjM5NywgVSsxRjM5OS0xRjM5QiwgVSsxRjM5RS0xRjNGMCwgVSsxRjNGMy0xRjNGNSwgVSsxRjNGNy0xRjRGRCwgVSsxRjRGRi0xRjUzRCwgVSsxRjU0OS0xRjU0RSxcbiAgICAgICAgVSsxRjU1MC0xRjU2NywgVSsxRjU2RiwgVSsxRjU3MCwgVSsxRjU3My0xRjU3QSwgVSsxRjU4NywgVSsxRjU4QS0xRjU4RCwgVSsxRjU5MCwgVSsxRjU5NSwgVSsxRjU5NiwgVSsxRjVBNCxcbiAgICAgICAgVSsxRjVBNSwgVSsxRjVBOCwgVSsxRjVCMSwgVSsxRjVCMiwgVSsxRjVCQywgVSsxRjVDMi0xRjVDNCwgVSsxRjVEMS0xRjVEMywgVSsxRjVEQy0xRjVERSwgVSsxRjVFMSwgVSsxRjVFMyxcbiAgICAgICAgVSsxRjVFOCwgVSsxRjVFRiwgVSsxRjVGMywgVSsxRjVGQS0xRjY0RiwgVSsxRjY4MC0xRjZDNSwgVSsxRjZDQi0xRjZEMiwgVSsxRjZENS0xRjZENywgVSsxRjZEQy0xRjZFNSwgVSsxRjZFOSxcbiAgICAgICAgVSsxRjZFQiwgVSsxRjZFQywgVSsxRjZGMCwgVSsxRjZGMy0xRjZGQywgVSsxRjdFMC0xRjdFQiwgVSsxRjdGMCwgVSsxRjkwQy0xRjkzQSwgVSsxRjkzQy0xRjk0NSwgVSsxRjk0Ny0xRjlGRixcbiAgICAgICAgVSsxRkE3MC0xRkE3QywgVSsxRkE4MC0xRkE4OCwgVSsxRkE5MC0xRkFCRCwgVSsxRkFCRi0xRkFDNSwgVSsxRkFDRS0xRkFEQiwgVSsxRkFFMC0xRkFFOCwgVSsxRkFGMC0xRkFGOCxcbiAgICAgICAgVSsxRkJDNS0xRkJDOSwgVStFMDA2MS1FMDA2NywgVStFMDA2OSwgVStFMDA2Qy1FMDA3OSwgVStFMDA3Rjtcbn1cblxuLmNvcGllZFRvQ2xpcGJvYXJkTWVzc2FnZSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMzJweDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIGJhY2tncm91bmQ6ICMyMjI7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZzogMTBweCAyNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDEuMWVtO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE4KTtcbiAgICBvcGFjaXR5OiAwLjk3O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDk5OTk7XG59XG5cbi5DaGF0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYsICdPcGVuTW9qaUJsYWNrJztcbiAgICAvKiA8LSBUT0RPOiBb8J+noF1b8J+OsV0gQmV0dGVyLCBkZWZpbmUgb3RoZXIgZm9udHMgKi9cbn1cblxuLmNoYXRNYWluRmxvdyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwdnc7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlOlxuICAgICAgICAn8J+fpicgbWluLWNvbnRlbnRcbiAgICAgICAgJ/CfkqwnIDFmclxuICAgICAgICAn8J+TnScgbWluLWNvbnRlbnRcbiAgICAgICAgLyAxZnI7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRCYXIge1xuICAgIGdyaWQtYXJlYTog8J+fpjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG4gICAgY29sb3I6ICMwZjE3MjQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgxNSwgMjMsIDM2LCAwLjA2KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLlRhc2tzSW5Qcm9ncmVzcyB7XG4gICAgZ3JpZC1hcmVhOiDwn5+mO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogbWluLWNvbnRlbnQ7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgIGp1c3RpZnktc2VsZjogc2VsZi1lbmQ7XG4gICAgbWFyZ2luOiA4cHggMTZweDtcbn1cblxuLmFjdGlvbnMge1xuICAgIGdyaWQtYXJlYTog8J+SrDtcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IG1pbi1jb250ZW50O1xuICAgIHotaW5kZXg6IDIwMDtcbiAgICBhbGlnbi1zZWxmOiBzZWxmLXN0YXJ0O1xuICAgIGp1c3RpZnktc2VsZjogc2VsZi1lbmQ7XG4gICAgLyogISEhISEgbWFyZ2luOiAxNnB4IDIwcHggMDsgKi9cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA4cHg7XG59XG5cbi5hY3Rpb25zLmxlZnQge1xuICAgIGp1c3RpZnktc2VsZjogc2VsZi1zdGFydDtcbn1cblxuLmFjdGlvbnMucmlnaHQge1xuICAgIGp1c3RpZnktc2VsZjogc2VsZi1lbmQ7XG59XG5cbi8qIExhcmdlIHRhYmxldCBhbmQgc21hbGwgZGVza3RvcCBzY3JlZW5zICovXG5AbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHtcbiAgICAuY2hhdEJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24gc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnVzZVRlbXBsYXRlQnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiAuY2hhdEJ1dHRvblRleHQge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vKiBNZWRpdW0gc2NyZWVucyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgLmFjdGlvbnMge1xuICAgICAgICBtYXJnaW46IDE0cHggMThweCAwO1xuICAgICAgICBnYXA6IDdweDtcbiAgICB9XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRDaGlsZHJlbiB7XG4gICAgZ3JpZC1hcmVhOiDwn5KsO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAzMDA7XG59XG5cbi8qIENoYXQgbWVzc2FnZXMgYXJlYSAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2VzIHtcbiAgICBncmlkLWFyZWE6IPCfkqw7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDEwO1xuICAgIHBhZGRpbmc6IDI0cHggMjBweCAxNnB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xufVxuXG4vKiBDdXN0b20gc2Nyb2xsYmFyIHN0eWxpbmcgKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiA2cHg7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZXM6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4zKTtcbn1cblxuLyogSW5kaXZpZHVhbCBjaGF0IG1lc3NhZ2UgKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGFuaW1hdGlvbjogbWVzc2FnZVNsaWRlSW4gMC40cyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4vKiBBZGQgdG9wIG1hcmdpbiB0byBmaXJzdCBtZXNzYWdlIGlmIGFjdGlvbnMgYXJlIHByZXNlbnQgYW5kIGZpcnN0IG1lc3NhZ2UgaXMgbG9uZyAqL1xuLmhhc0FjdGlvbnNBbmRGaXJzdE1lc3NhZ2VJc0xvbmcge1xuICAgIG1hcmdpbi10b3A6IDU1cHg7XG59XG5cbkBrZXlmcmFtZXMgbWVzc2FnZVNsaWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCkgc2NhbGUoMC45NSk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLmlzTm90Q29tcGxldGVNZXNzYWdlIHtcbiAgICAvKi9cbiAgICBvdXRsaW5lOiAxcHggZG90dGVkICNmZjAwMDAgIWltcG9ydGFudDtcbiAgICAvKiovXG5cbiAgICBvcGFjaXR5OiAwLjc7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uTm9uQ29tcGxldGVNZXNzYWdlRmlsbGVyIHtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi8qIEVuaGFuY2VkIGxvYWRpbmcgc3RhdGVzIGZvciBtZXNzYWdlcyAqL1xuLmlzTm90Q29tcGxldGVNZXNzYWdlIC5tZXNzYWdlVGV4dDo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDhweDtcbiAgICByaWdodDogMTJweDtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuNiksIHRyYW5zcGFyZW50KTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgYW5pbWF0aW9uOiBsb2FkaW5nUHVsc2UgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBsb2FkaW5nUHVsc2Uge1xuICAgIDAlLFxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAwLjM7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDAuOCk7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEuMik7XG4gICAgfVxufVxuXG4vKiBUeXBpbmcgaW5kaWNhdG9yIGZvciBBSSBtZXNzYWdlcyAqL1xuLnR5cGluZ0luZGljYXRvciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICBhbmltYXRpb246IG1lc3NhZ2VTbGlkZUluIDAuNHMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xufVxuXG4udHlwaW5nSW5kaWNhdG9yIC5hdmF0YXIge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBtYXJnaW46IDAgMTJweCA0cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi50eXBpbmdJbmRpY2F0b3IgLmF2YXRhciBpbWcge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWY2ZmI7XG4gICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xufVxuXG4udHlwaW5nQnViYmxlIHtcbiAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA2cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDRweDtcbiAgICBtaW4taGVpZ2h0OiAyNHB4O1xufVxuXG4udHlwaW5nRG90cyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDRweDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4udHlwaW5nRG90IHtcbiAgICB3aWR0aDogOHB4O1xuICAgIGhlaWdodDogOHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNmI3MjgwIDAlLCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuNikgMTAwJSk7XG4gICAgYW5pbWF0aW9uOiB0eXBpbmdCb3VuY2UgMS40cyBpbmZpbml0ZSBlYXNlLWluLW91dDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4udHlwaW5nRG90Om50aC1jaGlsZCgxKSB7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAtMC4zMnM7XG59XG5cbi50eXBpbmdEb3Q6bnRoLWNoaWxkKDIpIHtcbiAgICBhbmltYXRpb24tZGVsYXk6IC0wLjE2cztcbn1cblxuLnR5cGluZ0RvdDpudGgtY2hpbGQoMykge1xuICAgIGFuaW1hdGlvbi1kZWxheTogMHM7XG59XG5cbkBrZXlmcmFtZXMgdHlwaW5nQm91bmNlIHtcbiAgICAwJSxcbiAgICA4MCUsXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC44KSB0cmFuc2xhdGVZKDApO1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgfVxuICAgIDQwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKSB0cmFuc2xhdGVZKC04cHgpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UuaXNNZSB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlLmlzTWUgLm1lc3NhZ2VUZXh0IHtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNnB4O1xufVxuXG4ucmF0aW5nU3RhciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xuICAgIGNvbG9yOiB2YXIoLS1zdGFyLWluYWN0aXZlLWNvbG9yLCAjY2NjKTtcbn1cblxuLnJhdGluZ1N0YXIuYWN0aXZlIHtcbiAgICBjb2xvcjogI2ZmZDcwMDtcbn1cblxuLyogU2VuZGVyIEF2YXRhciAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLmF2YXRhciB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICBtYXJnaW46IDAgMTJweCA0cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIGltZyB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYXZhdGFyLWJnLWNvbG9yLCAjZWVmNmZiKTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZSwgYm94LXNoYWRvdyAwLjJzIGVhc2U7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5hdmF0YXIgaW1nOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuLyogTWVzc2FnZSB0ZXh0IGJ1YmJsZSAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLm1lc3NhZ2VUZXh0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZXNzYWdlLWJnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWVzc2FnZS10ZXh0LWNvbG9yKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogMTRweCAxOHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgbWF4LXdpZHRoOiBtaW4oNzAlLCA2MDBweCk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG59XG5cbi8qIENvcHkgYnV0dG9uIHN0eWxlcyAqL1xuLmNvcHlCdXR0b25Db250YWluZXIge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICB0b3A6IDhweDtcbiAgICByaWdodDogMTBweDtcbiAgICB6LWluZGV4OiAyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5tZXNzYWdlVGV4dDpob3ZlciAuY29weUJ1dHRvbkNvbnRhaW5lcixcbi5jb3B5QnV0dG9uQ29udGFpbmVyOmZvY3VzLXdpdGhpbiB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbn1cblxuLmNvcHlCdXR0b24ge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBwYWRkaW5nOiAycHggNXB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLCAwLCAwLCAwLjA3KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMsIGJveC1zaGFkb3cgMC4xNXMsIGJvcmRlciAwLjE1cztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgb3BhY2l0eTogMC43O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmNvcGllZFRvb2x0aXAge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdG9wOiAxMTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICBiYWNrZ3JvdW5kOiAjMjIyO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHBhZGRpbmc6IDZweCAxNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDAuOThlbTtcbiAgICBib3gtc2hhZG93OiAwIDJweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xOCk7XG4gICAgb3BhY2l0eTogMC45NztcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB6LWluZGV4OiAxMDA7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgYW5pbWF0aW9uOiBjb3BpZWRUb29sdGlwRmFkZUluIDAuMnM7XG4gICAgbWF4LXdpZHRoOiAyMjBweDtcbiAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbi5jb3BpZWRUb29sdGlwTGVmdCB7XG4gICAgbGVmdDogMCAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uY29waWVkVG9vbHRpcFJpZ2h0IHtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyogUmVtb3ZlZCByaWdodC1hbGlnbmVkIG92ZXJyaWRlIHRvIGtlZXAgdG9vbHRpcCBwb3NpdGlvbiBzdGFibGUgKi9cblxuQGtleWZyYW1lcyBjb3BpZWRUb29sdGlwRmFkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoOHB4KSBzY2FsZSgwLjk3KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAwLjk3O1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICB9XG59XG5cbi5jb3B5QnV0dG9uOmhvdmVyLFxuLmNvcHlCdXR0b246Zm9jdXMge1xuICAgIGJvcmRlcjogMS41cHggc29saWQgI2JiYjtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xufVxuXG4uY29weUJ1dHRvbiBzdmcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubWVzc2FnZVRleHQgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xufVxuXG4ubWVzc2FnZVRleHQgaDIge1xuICAgIGZvbnQtc2l6ZTogMS43NWVtO1xufVxuXG4ubWVzc2FnZVRleHQgaDMge1xuICAgIGZvbnQtc2l6ZTogMS41ZW07XG59XG5cbi5tZXNzYWdlVGV4dCBoNCB7XG4gICAgZm9udC1zaXplOiAxLjI1ZW07XG59XG5cbi5tZXNzYWdlVGV4dCBoNSB7XG4gICAgZm9udC1zaXplOiAxLjFlbTtcbn1cblxuLm1lc3NhZ2VUZXh0IHVsIHtcbiAgICBsaXN0LXN0eWxlOiBkaXNjO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4ubWVzc2FnZVRleHQgb2wge1xuICAgIGxpc3Qtc3R5bGU6IGRlY2ltYWw7XG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG59XG5cbi5tZXNzYWdlVGV4dCBpbWcsXG4ubWVzc2FnZVRleHQgcHJlLFxuLm1lc3NhZ2VUZXh0IGJsb2NrcXVvdGUsXG4ubWVzc2FnZVRleHQgdGFibGUge1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG59XG5cbi5tZXNzYWdlVGV4dCBwcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMwMDAwMDBmZjtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZzogMWVtO1xufVxuXG4ubWVzc2FnZVRleHQgYmxvY2txdW90ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZmNjO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICBjb2xvcjogIzAwMDtcbiAgICBwYWRkaW5nOiAxZW07XG59XG5cbi5tZXNzYWdlVGV4dCBjb2RlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogI2NjY2NjYzU1O1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLm1lc3NhZ2VUZXh0IHByZSBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwY2M7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuXG4ubWVzc2FnZVRleHQgLmNoYXQtY29kZS1ibG9jayB7XG4gICAgYmFja2dyb3VuZDogIzE4MWMyMztcbiAgICBjb2xvcjogI2Y4ZmFmYztcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIGJvcmRlci1jb2xvcjogIzIzMjcyZjtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgICBmb250LWZhbWlseTogJ0ZpcmEgTW9ubycsICdNZW5sbycsICdDb25zb2xhcycsICdMaWJlcmF0aW9uIE1vbm8nLCBtb25vc3BhY2U7XG59XG4ubWVzc2FnZVRleHQgLmNoYXQtY29kZS1ibG9jayBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgd2hpdGUtc3BhY2U6IHByZTtcbiAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG4ubWVzc2FnZVRleHQgdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XG4gICAgbWFyZ2luOiAxNnB4IDA7XG4gICAgYmFja2dyb3VuZDogI2Y4ZmFmYzsgLyogU3Ryb25nZXIgbGlnaHQgYmFja2dyb3VuZCBmb3IgY29udHJhc3QgKi9cbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGNvbG9yOiAjMTcyMjNiOyAvKiBEYXJrIHRleHQgZm9yIGNvbnRyYXN0ICovXG59XG4ubWVzc2FnZVRleHQgdGgsXG4ubWVzc2FnZVRleHQgdGQge1xuICAgIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2QxZGJlODtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGNvbG9yOiAjMTcyMjNiOyAvKiBFbnN1cmUgc3Ryb25nIHRleHQgY29sb3IgZm9yIGFsbCBjZWxscyAqL1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG59XG4ubWVzc2FnZVRleHQgdGgge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2VhZjNmYSA4MCUsICNkMWUzZjggMTAwJSk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogIzE3MjIzYjsgLyogU3Ryb25nIGhlYWRlciB0ZXh0ICovXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNiNWM3ZGU7XG59XG4ubWVzc2FnZVRleHQgdHI6bGFzdC1jaGlsZCB0ZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cbi5tZXNzYWdlVGV4dCB0cjpudGgtY2hpbGQoZXZlbikgdGQge1xuICAgIGJhY2tncm91bmQ6ICNlYWYzZmE7XG59XG4ubWVzc2FnZVRleHQgdHI6aG92ZXIgdGQge1xuICAgIGJhY2tncm91bmQ6ICNjYmUwZjc7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xufVxuLm1lc3NhZ2VUZXh0IHRhYmxlIHtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubWVzc2FnZVRleHQgdGg6Zmlyc3QtY2hpbGQsXG4ubWVzc2FnZVRleHQgdGQ6Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDEycHg7XG59XG4ubWVzc2FnZVRleHQgdGg6bGFzdC1jaGlsZCxcbi5tZXNzYWdlVGV4dCB0ZDpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMTJweDtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLm1lc3NhZ2VUZXh0OmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xufVxuXG4vKiBNZXNzYWdlIGJ1dHRvbnMgY29udGFpbmVyICovXG4ubWVzc2FnZUJ1dHRvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogOHB4O1xuICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgcGFkZGluZy10b3A6IDEycHg7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMTI1IDEyNSAxMjUgLyAwLjgzKTtcbn1cblxuLyogSW5kaXZpZHVhbCBtZXNzYWdlIGJ1dHRvbiAqL1xuLm1lc3NhZ2VCdXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogOHB4IDE0cHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC45KTtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4ubWVzc2FnZUJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAxMzIsIDI1NSwgMC4xKTtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjE1KTtcbn1cblxuLm1lc3NhZ2VCdXR0b246YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjFzIGVhc2U7XG59XG5cbi8qIFJlbW92ZSBkZWZhdWx0IG1hcmtkb3duIHN0eWxlcyBmcm9tIGJ1dHRvbiBjb250ZW50ICovXG4ubWVzc2FnZUJ1dHRvbiBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbn1cblxuLm1lc3NhZ2VCdXR0b24gc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xufVxuXG4ubWVzc2FnZUJ1dHRvbiBlbSB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4vKiBSYXRpbmcgc3lzdGVtICovXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAucmF0aW5nIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAtOHB4O1xuICAgIHJpZ2h0OiA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDJweDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1pbi13aWR0aDogMjRweDtcbiAgICB6LWluZGV4OiAxO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIHBhZGRpbmc6IDRweCA2cHg7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDRweCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZTpob3ZlciAucmF0aW5nIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLnJhdGluZzpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjkpO1xuICAgIHBhZGRpbmc6IDZweCA4cHg7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5yYXRpbmcgc3BhbiB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZSwgY29sb3IgMC4ycyBlYXNlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAxNnB4O1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAucmF0aW5nOmhvdmVyIHNwYW4ge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbn1cblxuLyogQ2hhdCBpbnB1dCBhcmVhICovXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQge1xuICAgIHotaW5kZXg6IDEwO1xuICAgIGdyaWQtYXJlYTog8J+TnTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDEycHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vKiBGaWxlIHVwbG9hZCBkcmFnLWFuZC1kcm9wIHN0eWxlcyAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdElucHV0LmRyYWdPdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpIDAlLCByZ2JhKDAsIDEzMiwgMjU1LCAwLjA1KSAxMDAlKTtcbiAgICBib3JkZXItdG9wOiAycHggc29saWQgcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbn1cblxuLyogRmlsZSBwcmV2aWV3IGNvbnRhaW5lciAqL1xuLmZpbGVQcmV2aWV3Q29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDhweDtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG5cbi8qIEluZGl2aWR1YWwgZmlsZSBwcmV2aWV3ICovXG4uZmlsZVByZXZpZXcge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5maWxlUHJldmlldzpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjE1KTtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4zKTtcbn1cblxuLmZpbGVJY29uIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgb3BhY2l0eTogMC43O1xufVxuXG4uZmlsZUluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDJweDtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5maWxlTmFtZSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjb2xvcjogYmxhY2s7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIG1heC13aWR0aDogMTUwcHg7XG59XG5cbi5maWxlU2l6ZSB7XG4gICAgY29sb3I6ICM2YjcyODA7XG4gICAgZm9udC1zaXplOiAxMXB4O1xufVxuXG4ucmVtb3ZlRmlsZUJ1dHRvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDAsIDAsIDAuMSk7XG4gICAgY29sb3I6ICNmZjQ0NDQ7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ucmVtb3ZlRmlsZUJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDAsIDAsIDAuMik7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xufVxuXG4vKiBJbnB1dCBjb250YWluZXIgZm9yIHRleHRhcmVhIGFuZCBidXR0b25zICovXG4uaW5wdXRDb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEycHg7XG59XG5cbi5pbnB1dENvbnRhaW5lciB0ZXh0YXJlYTo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIG9wYWNpdHk6IDAuNztcbn1cblxuLyogQXR0YWNobWVudCBidXR0b24gKi9cbi5hdHRhY2htZW50QnV0dG9uIHtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjIpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4wNSk7XG4gICAgY29sb3I6ICM2YjcyODA7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5hdHRhY2htZW50QnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbiAgICBjb2xvcjogIzAwODRmZjtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xufVxuXG4uYXR0YWNobWVudEJ1dHRvbjpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKiBVcGxvYWQgcHJvZ3Jlc3MgaW5kaWNhdG9yICovXG4udXBsb2FkUHJvZ3Jlc3Mge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEycHg7XG4gICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAxMzIsIDI1NSwgMC4xKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDEzMiwgMjU1LCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgY29sb3I6ICMwMDg0ZmY7XG59XG5cbi51cGxvYWRQcm9ncmVzc0JhciB7XG4gICAgZmxleDogMTtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4udXBsb2FkUHJvZ3Jlc3NGaWxsIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjMDA4NGZmLCByZ2JhKDAsIDEzMiwgMjU1LCAwLjgpKTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgYW5pbWF0aW9uOiB1cGxvYWRQcm9ncmVzcyAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIHVwbG9hZFByb2dyZXNzIHtcbiAgICAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxufVxuXG4vKiBEcmFnIG92ZXJsYXkgKi9cbi5kcmFnT3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCByZ2JhKDAsIDEzMiwgMjU1LCAwLjUpO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICB6LWluZGV4OiAyMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmRyYWdPdmVybGF5Q29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMnB4O1xuICAgIGNvbG9yOiAjMDA4NGZmO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZHJhZ092ZXJsYXlDb250ZW50IHN2ZyB7XG4gICAgb3BhY2l0eTogMC43O1xufVxuXG4vKiBDaGF0IGlucHV0IGZpZWxkICovXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgdGV4dGFyZWEge1xuICAgIGZsZXg6IDE7XG4gICAgcGFkZGluZzogMTZweCAyMHB4O1xuXG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAyNXB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4wNSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpO1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgIG1heC1oZWlnaHQ6IDEyMHB4O1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBsaW5lLWhlaWdodDogMS40O1xuICAgIHJlc2l6ZTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICMwMDg0ZmY7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjA4KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCA0cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4xKSwgMCA4cHggMzJweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjE1KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB0ZXh0YXJlYTpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC42O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgdHJhbnNmb3JtOiBub25lO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgdGV4dGFyZWE6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBvcGFjaXR5OiAwLjc7XG59XG5cbi8qIENoYXQgc2VuZCBidXR0b24gKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCBidXR0b24ge1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwODRmZiAwJSwgIzAwNjZjYyAxMDAlKTtcbiAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7XG4gICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICBtaW4td2lkdGg6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgbWluLWhlaWdodDogdW5zZXQgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nLWxlZnQ6IHVuc2V0O1xuICAgIHBhZGRpbmctcmlnaHQ6IHVuc2V0O1xuXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgYnV0dG9uIGltZyB7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb2JqZWN0LWZpdDogY29udGFpbjtcbn1cblxuLyogU2Nyb2xsIHRvIGJvdHRvbSBidXR0b24gKi9cblxuLnNjcm9sbFRvQm90dG9tQ29udGFpbmVyIHtcbiAgICAvKi9cbiAgICBvdXRsaW5lOiAxcHggZG90dGVkIHJlZDtcbiAgICAvKiovXG5cbiAgICB6LWluZGV4OiAyMDtcbiAgICBncmlkLWFyZWE6IPCfk507XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLnNjcm9sbFRvQm90dG9tQ29udGFpbmVyIC5zY3JvbGxUb0JvdHRvbSB7XG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcblxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC0xNTAlKTtcbiAgICB3aWR0aDogNDhweDtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCAwIDAgLyAwLjUpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigzcHgpO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgIGFuaW1hdGlvbjogc2Nyb2xsQnV0dG9uU2xpZGVJbiAwLjNzIGVhc2Utb3V0O1xufVxuXG5Aa2V5ZnJhbWVzIHNjcm9sbEJ1dHRvblNsaWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAyMHB4KSBzY2FsZSgwLjgpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDAuOTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG4uc2Nyb2xsVG9Cb3R0b206aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC0xNjAlKSBzY2FsZSgxLjA1KTtcbn1cblxuLnNjcm9sbFRvQm90dG9tOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTE2MCUpIHNjYWxlKDAuOTUpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjFzIGVhc2U7XG59XG5cbi8qIFJhdGluZyBtb2RhbCAqL1xuLnJhdGluZ01vZGFsIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHotaW5kZXg6IDEwMDA7XG4gICAgYW5pbWF0aW9uOiBtb2RhbEZhZGVJbiAwLjNzIGVhc2Utb3V0O1xufVxuXG5Aa2V5ZnJhbWVzIG1vZGFsRmFkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gICAgfVxufVxuXG4ucmF0aW5nTW9kYWxDb250ZW50IHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIGNvbG9yOiAjMGYxNzI0O1xuICAgIHBhZGRpbmc6IDMycHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICB3aWR0aDogOTAlO1xuICAgIG1heC13aWR0aDogNDgwcHg7XG4gICAgYm94LXNoYWRvdzogMCAyMHB4IDYwcHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4xKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7XG4gICAgYW5pbWF0aW9uOiBtb2RhbFNsaWRlSW4gMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG5cbiAgICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiwgJ09wZW5Nb2ppQmxhY2snO1xuICAgIC8qIDwtIFRPRE86IFvwn6egXVvwn46xXSBCZXR0ZXIsIGRlZmluZSBvdGhlciBmb250cyAqL1xufVxuXG5Aa2V5ZnJhbWVzIG1vZGFsU2xpZGVJbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KSBzY2FsZSgwLjk1KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG4ucmF0aW5nTW9kYWxDb250ZW50IGgzIHtcbiAgICBtYXJnaW46IDAgMCAyNHB4IDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBmb250LXNpemU6IDIwcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLnN0YXJzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogOHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG59XG5cbi5zdGFycyBzcGFuIHtcbiAgICBmb250LXNpemU6IDI4cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgcGFkZGluZzogNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbn1cblxuLnN0YXJzIHNwYW46aG92ZXIge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjE1LCAwLCAwLjEpO1xufVxuXG4ucmF0aW5nTW9kYWxTdGFyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XG59XG5cbi5yYXRpbmdJbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWluLWhlaWdodDogMTAwcHg7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxOHB4O1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjA1KTtcbiAgICBjb2xvcjogIzBiMTIyMDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xufVxuXG4ucmF0aW5nSW5wdXQ6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogIzAwODRmZjtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMDgpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDRweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG5cbi5yYXRpbmdJbnB1dFtyZWFkb25seV0ge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC41KTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMDEpO1xufVxuXG4ucmF0aW5nQWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogMTJweDtcbn1cblxuLnJhdGluZ0FjdGlvbnMgYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAxMnB4IDI0cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICBtaW4td2lkdGg6IDgwcHg7XG59XG5cbi5yYXRpbmdBY3Rpb25zIGJ1dHRvbjpmaXJzdC1jaGlsZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGNvbG9yOiAjMGIxMjIwO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4yKTtcbn1cblxuLnJhdGluZ0FjdGlvbnMgYnV0dG9uOmZpcnN0LWNoaWxkOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMik7XG4gICAgY29sb3I6ICMwYjEyMjA7XG59XG5cbi5yYXRpbmdBY3Rpb25zIGJ1dHRvbjpsYXN0LWNoaWxkIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA4NGZmIDAlLCAjMDA2NmNjIDEwMCUpO1xuICAgIGNvbG9yOiAjZmZmZmZmO1xufVxuXG4ucmF0aW5nQWN0aW9ucyBidXR0b246bGFzdC1jaGlsZDpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwNzFkMSAwJSwgIzAwNTJhMyAxMDAlKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpO1xufVxuXG4ucmF0aW5nQWN0aW9ucyBidXR0b246bGFzdC1jaGlsZDpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi8qIE5ldyBjaGF0IGJ1dHRvbiBzdHlsaW5nIC0gTWF0Y2hlcyB0aGUgc2xlZWsgY2hhdCBtZXNzYWdlIGRlc2lnbiAqL1xuLmNoYXRCdXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgZ2FwOiA4cHggIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAxMnB4IDE2cHggIWltcG9ydGFudDtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA4NGZmIDAlLCAjMDA2NmNjIDEwMCUpICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxM3B4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjMgIWltcG9ydGFudDtcbiAgICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCkgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMykgIWltcG9ydGFudDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCkgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb24gIWltcG9ydGFudDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xuICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICBtaW4td2lkdGg6IDExMHB4ICFpbXBvcnRhbnQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xufVxuXG4uY2hhdEJ1dHRvbjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IC0xMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMiksIHRyYW5zcGFyZW50KTtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuNXMgZWFzZTtcbn1cblxuLmNoYXRCdXR0b246aG92ZXI6OmJlZm9yZSB7XG4gICAgbGVmdDogMTAwJTtcbn1cblxuLmNoYXRCdXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDk5ZmYgMCUsICMwMDc3ZGQgMTAwJSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpIHNjYWxlKDEuMDIpO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggcmdiYSgwLCAxMzIsIDI1NSwgMC40KTtcbn1cblxuLmNoYXRCdXR0b246YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpIHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMgZWFzZTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG59XG5cbi5jaGF0QnV0dG9uOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKSwgMCAwIDAgM3B4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG59XG5cbi5jaGF0QnV0dG9uIHN2ZyB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSk7XG59XG5cbi5jaGF0QnV0dG9uOmhvdmVyIHN2ZyB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKSBzY2FsZSgxLjEpO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4zKSk7XG59XG5cbi5jaGF0QnV0dG9uVGV4dCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgb3BhY2l0eTogMTtcbn1cblxuLmNoYXRCdXR0b246aG92ZXIgLmNoYXRCdXR0b25UZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMXB4KTtcbn1cblxuLyogVXNlIHRlbXBsYXRlIGJ1dHRvbiBzdHlsaW5nIC0gbWF0Y2hlcyB0aGUgY2hhdEJ1dHRvbiBhbmQgc2F2ZUJ1dHRvbiAqL1xuLnVzZVRlbXBsYXRlQnV0dG9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGdhcDogOHB4ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMTJweCAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwODRmZiAwJSwgIzAwNjZjYyAxMDAlKSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMTNweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDtcbiAgICBsaW5lLWhlaWdodDogMS4zICFpbXBvcnRhbnQ7XG4gICAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpICFpbXBvcnRhbnQ7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uICFpbXBvcnRhbnQ7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmUgIWltcG9ydGFudDtcbiAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgbWluLXdpZHRoOiAxMTBweCAhaW1wb3J0YW50O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSwgdHJhbnNwYXJlbnQpO1xuICAgIHRyYW5zaXRpb246IGxlZnQgMC41cyBlYXNlO1xufVxuXG4udXNlVGVtcGxhdGVCdXR0b246aG92ZXI6OmJlZm9yZSB7XG4gICAgbGVmdDogMTAwJTtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA5OWZmIDAlLCAjMDA3N2RkIDEwMCUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KSBzY2FsZSgxLjAyKTtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyNHB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuNCk7XG59XG5cbi51c2VUZW1wbGF0ZUJ1dHRvbjphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCkgdHJhbnNsYXRlWSgtMXB4KTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xcyBlYXNlO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKSwgMCAwIDAgM3B4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG59XG5cbi51c2VUZW1wbGF0ZUJ1dHRvbiBzdmcge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KTtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMikpO1xufVxuXG4udXNlVGVtcGxhdGVCdXR0b246aG92ZXIgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjMpKTtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOmhvdmVyIC5jaGF0QnV0dG9uVGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDFweCk7XG59XG5cbi5zYXZlQnV0dG9uQ29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uc2F2ZU1lbnUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwMCU7XG4gICAgbGVmdDogMDtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgei1pbmRleDogMTA7XG4gICAgbWluLXdpZHRoOiAxMjBweDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbn1cblxuLnNhdmVNZW51SXRlbSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogOHB4IDE2cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6ICMxMTE7XG59XG5cbi5zYXZlTWVudUl0ZW06aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7XG59XG5cbi8qIFBhdXNlL1Jlc3VtZSBidXR0b24gdmFyaWFudCAocmV1c2VzIC5jaGF0QnV0dG9uIGJhc2Ugc3R5bGVzIGZvciBEUlkpICovXG4ucGF1c2VCdXR0b24ge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZmIzNDcgMCUsICNmZjhjNDIgMTAwJSkgIWltcG9ydGFudDsgLyogV2FybSBvcmFuZ2UgZm9yIFwiYWN0aXZlL3J1bm5pbmdcIiAqL1xufVxuXG4ucGF1c2VCdXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZmMwNjcgMCUsICNmZjllNWYgMTAwJSkgIWltcG9ydGFudDtcbn1cblxuLnBhdXNlQnV0dG9uLnBhdXNpbmcge1xuICAgIG9wYWNpdHk6IDAuNiAhaW1wb3J0YW50O1xuICAgIGN1cnNvcjogd2FpdCAhaW1wb3J0YW50O1xufVxuXG4ucGF1c2VCdXR0b24ucGF1c2VkIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMTBiOTgxIDAlLCAjMDU5NjY5IDEwMCUpICFpbXBvcnRhbnQ7IC8qIEdyZWVuIHdoZW4gcGF1c2VkIChyZWFkeSB0byByZXN1bWUpICovXG59XG5cbi5wYXVzZUJ1dHRvbi5wYXVzZWQ6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMzNGQzOTkgMCUsICMwNTk2NjkgMTAwJSkgIWltcG9ydGFudDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgc2NhbGUoMS4wMik7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDE2LCAxODUsIDEyOSwgMC4zNSk7XG59XG5cbi5wYXVzZUJ1dHRvbiBzdmcge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG59XG5cbi5wYXVzZUJ1dHRvbi5wYXVzZWQgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbi5wYXVzZUJ1dHRvbi5wYXVzaW5nIHN2ZyB7XG4gICAgb3BhY2l0eTogMC44O1xufVxuXG4vKiBWb2ljZSBjYWxsIGluZGljYXRvciBiYXIgKi9cbi52b2ljZUNhbGxJbmRpY2F0b3JCYXIge1xuICAgIGdyaWQtYXJlYTog8J+fpjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxMnB4IDIwcHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgzNCwgMTk3LCA5NCwgMC4xKSAwJSwgcmdiYSgxNiwgMTg1LCAxMjksIDAuMSkgMTAwJSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMzQsIDE5NywgOTQsIDAuMyk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbn1cblxuLyogVm9pY2UgY2FsbCBpbmRpY2F0b3IgKi9cbi52b2ljZUNhbGxJbmRpY2F0b3Ige1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA4cHg7XG4gICAgcGFkZGluZzogOHB4IDE2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgzNCwgMTk3LCA5NCwgMC4yKSAwJSwgcmdiYSgxNiwgMTg1LCAxMjksIDAuMikgMTAwJSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgzNCwgMTk3LCA5NCwgMC40KTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIGNvbG9yOiAjMTBiOTgxO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgzNCwgMTk3LCA5NCwgMC4yKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi52b2ljZUNhbGxJbmRpY2F0b3Igc3ZnIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgYW5pbWF0aW9uOiB2b2ljZUNhbGxJY29uUHVsc2UgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbi52b2ljZUNhbGxJbmRpY2F0b3Igc3BhbiB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLyogVm9pY2UgY2FsbCBwdWxzZSBhbmltYXRpb24gKi9cbi52b2ljZUNhbGxQdWxzZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiA4cHg7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIHdpZHRoOiA4cHg7XG4gICAgaGVpZ2h0OiA4cHg7XG4gICAgYmFja2dyb3VuZDogIzEwYjk4MTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYW5pbWF0aW9uOiB2b2ljZUNhbGxQdWxzZSAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIHZvaWNlQ2FsbEljb25QdWxzZSB7XG4gICAgMCUsXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgICAgICAgb3BhY2l0eTogMC44O1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyB2b2ljZUNhbGxQdWxzZSB7XG4gICAgMCUsXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgxKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgNTAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDEuMyk7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICB9XG59XG5cbi8qIFZvaWNlIGNhbGwgaW5kaWNhdG9yIGluIG1lc3NhZ2VzICovXG4uY2hhdE1lc3NhZ2UgLnZvaWNlQ2FsbEluZGljYXRvciB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xufVxuXG4uY2hhdE1lc3NhZ2UgLnZvaWNlQ2FsbEluZGljYXRvciBzdmcge1xuICAgIHdpZHRoOiAxNHB4O1xuICAgIGhlaWdodDogMTRweDtcbn1cblxuLyogUmF0aW5nIGNvbmZpcm1hdGlvbiAqL1xuLnJhdGluZ0NvbmZpcm1hdGlvbiB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMjBweDtcbiAgICByaWdodDogMjBweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMTBiOTgxIDAlLCAjMDU5NjY5IDEwMCUpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBib3gtc2hhZG93OiAwIDhweCAzMnB4IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjMpO1xuICAgIHotaW5kZXg6IDEwMDE7XG4gICAgYW5pbWF0aW9uOiBjb25maXJtYXRpb25TbGlkZUluIDAuM3MgZWFzZS1vdXQ7XG4gICAgbWF4LXdpZHRoOiAzMDBweDtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7XG59XG5cbkBrZXlmcmFtZXMgY29uZmlybWF0aW9uU2xpZGVJbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG4vKiBNb2JpbGUgcmVzcG9uc2l2ZW5lc3MgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5hY3Rpb25zIHtcbiAgICAgICAgbWFyZ2luOiAxMnB4IDE2cHggMDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2VzIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAxMnB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAubWVzc2FnZVRleHQge1xuICAgICAgICBtYXgtd2lkdGg6IDg1JTtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLmF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICAgIG1hcmdpbjogMCAxMHB4IDRweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIGltZyB7XG4gICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMTJweDtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB0ZXh0YXJlYSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgcGFkZGluZzogMTRweCAxOHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMnB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCBidXR0b24ge1xuICAgICAgICB3aWR0aDogNDRweDtcbiAgICAgICAgaGVpZ2h0OiA0NHB4O1xuICAgIH1cblxuICAgIC5zY3JvbGxUb0JvdHRvbSB7XG4gICAgICAgIHdpZHRoOiA0NHB4O1xuICAgICAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSAxNjBweCk7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jaGF0QnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jaGF0QnV0dG9uVGV4dCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiBzdmcge1xuICAgICAgICB3aWR0aDogMThweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDE4cHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24gLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5yYXRpbmdNb2RhbENvbnRlbnQge1xuICAgICAgICBtYXJnaW46IDE2cHg7XG4gICAgICAgIHBhZGRpbmc6IDI0cHggMjBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgbWF4LWhlaWdodDogODB2aDtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB9XG5cbiAgICAuc3RhcnMge1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICB9XG5cbiAgICAuc3RhcnMgc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMzJweDtcbiAgICAgICAgcGFkZGluZzogOHB4O1xuICAgIH1cblxuICAgIC5yYXRpbmdBY3Rpb25zIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xuICAgICAgICBnYXA6IDhweDtcbiAgICB9XG5cbiAgICAucmF0aW5nQWN0aW9ucyBidXR0b24ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMTRweDtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgLmFjdGlvbnMge1xuICAgICAgICBtYXJnaW46IDhweCAxMnB4IDA7XG4gICAgICAgIGdhcDogNHB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlcyB7XG4gICAgICAgIHBhZGRpbmc6IDEycHggOHB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5tZXNzYWdlVGV4dCB7XG4gICAgICAgIG1heC13aWR0aDogOTAlO1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDE0cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgbWFyZ2luOiAwIDhweCA0cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLmF2YXRhciBpbWcge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0SW5wdXQge1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDhweDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhIHtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IGJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jaGF0QnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jaGF0QnV0dG9uVGV4dCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiBzdmcge1xuICAgICAgICB3aWR0aDogMThweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDE4cHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24gLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5zY3JvbGxUb0JvdHRvbSB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSAxNDBweCk7XG4gICAgfVxuXG4gICAgLnJhdGluZ01vZGFsIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIH1cblxuICAgIC5yYXRpbmdNb2RhbENvbnRlbnQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4IDIwcHggMCAwO1xuICAgICAgICBtYXgtaGVpZ2h0OiA3MHZoO1xuICAgICAgICBwYWRkaW5nOiAyNHB4IDE2cHggMjBweDtcbiAgICB9XG59XG5cbi8qIFJlZHVjZWQgbW90aW9uIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UsXG4gICAgLnNjcm9sbFRvQm90dG9tLFxuICAgIC5yYXRpbmdNb2RhbCxcbiAgICAucmF0aW5nTW9kYWxDb250ZW50LFxuICAgIC5yYXRpbmdDb25maXJtYXRpb24ge1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLm1lc3NhZ2VUZXh0LFxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB0ZXh0YXJlYSxcbiAgICAuY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgYnV0dG9uLFxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5hdmF0YXIgaW1nLFxuICAgIC5jaGF0QnV0dG9uIHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG59XG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAubWVzc2FnZVRleHQge1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhIHtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAzcHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IGJ1dHRvbiB7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICB9XG59XG5cbi8qKlxuICogVE9ETzogW/CfjIldIERSWSBNYXJrZG93biBwcmltaXRpdmVzIHN0eWxpbmdcbiAqL1xuIl19 */";
|
|
7727
|
-
var chatStyles = {"copiedToClipboardMessage":"Chat-module_copiedToClipboardMessage__apCPY","Chat":"Chat-module_Chat__j2eE5","chatMainFlow":"Chat-module_chatMainFlow__--8FE","chatBar":"Chat-module_chatBar__fLECN","TasksInProgress":"Chat-module_TasksInProgress__fQfei","actions":"Chat-module_actions__gTZ5T","left":"Chat-module_left__7l5Mn","right":"Chat-module_right__ABZrW","chatButton":"Chat-module_chatButton__d9VgA","chatButtonText":"Chat-module_chatButtonText__RkGB-","useTemplateButton":"Chat-module_useTemplateButton__xcJNR","chatChildren":"Chat-module_chatChildren__flOPK","chatMessages":"Chat-module_chatMessages__J2u2N","chatMessage":"Chat-module_chatMessage__nmLaZ","messageSlideIn":"Chat-module_messageSlideIn__soTy2","hasActionsAndFirstMessageIsLong":"Chat-module_hasActionsAndFirstMessageIsLong__5jgoZ","isNotCompleteMessage":"Chat-module_isNotCompleteMessage__Hj2K7","NonCompleteMessageFiller":"Chat-module_NonCompleteMessageFiller__G5-Ve","messageText":"Chat-module_messageText__XgNyQ","loadingPulse":"Chat-module_loadingPulse__VomRm","typingIndicator":"Chat-module_typingIndicator__S-CT-","avatar":"Chat-module_avatar__gL6bm","typingBubble":"Chat-module_typingBubble__0Lb7B","typingDots":"Chat-module_typingDots__srOBB","typingDot":"Chat-module_typingDot__dnhKT","typingBounce":"Chat-module_typingBounce__1yp2v","isMe":"Chat-module_isMe__nBtaV","ratingStar":"Chat-module_ratingStar__rRfqC","active":"Chat-module_active__lbYL-","copyButtonContainer":"Chat-module_copyButtonContainer__Rij0U","copyButton":"Chat-module_copyButton__DcxT5","copiedTooltip":"Chat-module_copiedTooltip__LH81j","copiedTooltipFadeIn":"Chat-module_copiedTooltipFadeIn__QekO1","copiedTooltipLeft":"Chat-module_copiedTooltipLeft__j-S-5","copiedTooltipRight":"Chat-module_copiedTooltipRight__R-2cE","chat-code-block":"Chat-module_chat-code-block__k8IyS","messageButtons":"Chat-module_messageButtons__WaOob","messageButton":"Chat-module_messageButton__mRnn-","rating":"Chat-module_rating__soc3M","chatInput":"Chat-module_chatInput__1Ecan","dragOver":"Chat-module_dragOver__bkS-g","filePreviewContainer":"Chat-module_filePreviewContainer__R70hm","filePreview":"Chat-module_filePreview__kq2aX","fileIcon":"Chat-module_fileIcon__zoSKW","fileInfo":"Chat-module_fileInfo__wBLi0","fileName":"Chat-module_fileName__bBujo","fileSize":"Chat-module_fileSize__ivliq","removeFileButton":"Chat-module_removeFileButton__0gakR","inputContainer":"Chat-module_inputContainer__bPt99","attachmentButton":"Chat-module_attachmentButton__qLO47","uploadProgress":"Chat-module_uploadProgress__jBTKe","uploadProgressBar":"Chat-module_uploadProgressBar__Gutnt","uploadProgressFill":"Chat-module_uploadProgressFill__EgubT","dragOverlay":"Chat-module_dragOverlay__SEGoS","dragOverlayContent":"Chat-module_dragOverlayContent__gb9kF","scrollToBottomContainer":"Chat-module_scrollToBottomContainer__5rXpK","scrollToBottom":"Chat-module_scrollToBottom__nzxdZ","scrollButtonSlideIn":"Chat-module_scrollButtonSlideIn__XnImg","ratingModal":"Chat-module_ratingModal__XVKYm","modalFadeIn":"Chat-module_modalFadeIn__RPc3w","ratingModalContent":"Chat-module_ratingModalContent__CCdq7","modalSlideIn":"Chat-module_modalSlideIn__XXtgN","stars":"Chat-module_stars__PCzNO","ratingModalStar":"Chat-module_ratingModalStar__XkbHr","ratingInput":"Chat-module_ratingInput__z8Pv-","ratingActions":"Chat-module_ratingActions__nXcss","saveButtonContainer":"Chat-module_saveButtonContainer__lSNUJ","saveMenu":"Chat-module_saveMenu__-ph8y","saveMenuItem":"Chat-module_saveMenuItem__ISApL","pauseButton":"Chat-module_pauseButton__eeu7K","pausing":"Chat-module_pausing__pTx8b","paused":"Chat-module_paused__j-pya","voiceCallIndicatorBar":"Chat-module_voiceCallIndicatorBar__N2sWN","voiceCallIndicator":"Chat-module_voiceCallIndicator__tsaaG","voiceCallIconPulse":"Chat-module_voiceCallIconPulse__zZbJn","voiceCallPulse":"Chat-module_voiceCallPulse__XcGU4","ratingConfirmation":"Chat-module_ratingConfirmation__n16vb","confirmationSlideIn":"Chat-module_confirmationSlideIn__5U-wz"};
|
|
8082
|
+
var css_248z$2 = "@font-face{font-family:OpenMojiBlack;src:url(https://s6.ptbk.io/fonts/OpenMoji-black-glyf.woff2) format(\"woff2\");unicode-range:u+23,u+2a,u+2d,u+30-39,u+a9,u+ae,u+200d,u+203c,u+2049,u+20e3,u+2117,u+2120,u+2122,u+2139,u+2194-2199,u+21a9,u+21aa,u+229c,u+231a,u+231b,u+2328,u+23cf,u+23e9-23f3,u+23f8-23fe,u+24c2,u+25a1,u+25aa-25ae,u+25b6,u+25c0,u+25c9,u+25d0,u+25d1,u+25e7-25ea,u+25ed,u+25ee,u+25fb-25fe,u+2600-2605,u+260e,u+2611,u+2614,u+2615,u+2618,u+261d,u+2620,u+2622,u+2623,u+2626,u+262a,u+262e,u+262f,u+2638-263a,u+2640,u+2642,u+2648-2653,u+265f,u+2660,u+2663,u+2665,u+2666,u+2668,u+267b,u+267e,u+267f,u+2691-2697,u+2699,u+269b,u+269c,u+26a0,u+26a1,u+26a7,u+26aa,u+26ab,u+26b0,u+26b1,u+26bd,u+26be,u+26c4,u+26c5,u+26c8,u+26ce,u+26cf,u+26d1,u+26d3,u+26d4,u+26e9,u+26ea,u+26f0-26f5,u+26f7-26fa,u+26fd,u+2702,u+2705,u+2708-270d,u+270f,u+2712,u+2714,u+2716,u+271d,u+2721,u+2728,u+2733,u+2734,u+2744,u+2747,u+274c,u+274e,u+2753-2755,u+2757,u+2763,u+2764,u+2795-2797,u+27a1,u+27b0,u+27bf,u+2934,u+2935,u+2b05-2b07,u+2b0c,u+2b0d,u+2b1b,u+2b1c,u+2b1f-2b24,u+2b2e,u+2b2f,u+2b50,u+2b55,u+2b58,u+2b8f,u+2bba-2bbc,u+2bc3,u+2bc4,u+2bea,u+2beb,u+3030,u+303d,u+3297,u+3299,u+e000-e009,u+e010,u+e011,u+e040-e06d,u+e080-e0b4,u+e0c0-e0cc,u+e0ff-e10d,u+e140-e14a,u+e150-e157,u+e181-e189,u+e1c0-e1c4,u+e1c6-e1d9,u+e200-e216,u+e240-e269,u+e280-e283,u+e2c0-e2c4,u+e2c6-e2da,u+e300-e303,u+e305-e30f,u+e312-e316,u+e318-e322,u+e324-e329,u+e32b,u+e340-e348,u+e380,u+e381,u+f000,u+f77a,u+f8ff,u+fe0f,u+1f004,u+1f0cf,u+1f10d-1f10f,u+1f12f,u+1f16d-1f171,u+1f17e,u+1f17f,u+1f18e,u+1f191-1f19a,u+1f1e6-1f1ff,u+1f201,u+1f202,u+1f21a,u+1f22f,u+1f232-1f23a,u+1f250,u+1f251,u+1f260-1f265,u+1f300-1f321,u+1f324-1f393,u+1f396,u+1f397,u+1f399-1f39b,u+1f39e-1f3f0,u+1f3f3-1f3f5,u+1f3f7-1f4fd,u+1f4ff-1f53d,u+1f549-1f54e,u+1f550-1f567,u+1f56f,u+1f570,u+1f573-1f57a,u+1f587,u+1f58a-1f58d,u+1f590,u+1f595,u+1f596,u+1f5a4,u+1f5a5,u+1f5a8,u+1f5b1,u+1f5b2,u+1f5bc,u+1f5c2-1f5c4,u+1f5d1-1f5d3,u+1f5dc-1f5de,u+1f5e1,u+1f5e3,u+1f5e8,u+1f5ef,u+1f5f3,u+1f5fa-1f64f,u+1f680-1f6c5,u+1f6cb-1f6d2,u+1f6d5-1f6d7,u+1f6dc-1f6e5,u+1f6e9,u+1f6eb,u+1f6ec,u+1f6f0,u+1f6f3-1f6fc,u+1f7e0-1f7eb,u+1f7f0,u+1f90c-1f93a,u+1f93c-1f945,u+1f947-1f9ff,u+1fa70-1fa7c,u+1fa80-1fa88,u+1fa90-1fabd,u+1fabf-1fac5,u+1face-1fadb,u+1fae0-1fae8,u+1faf0-1faf8,u+1fbc5-1fbc9,u+e0061-e0067,u+e0069,u+e006c-e0079,u+e007f}.Chat-module_copiedToClipboardMessage__apCPY{background:#222;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.18);color:#fff;font-size:1.1em;left:50%;opacity:.97;padding:10px 24px;pointer-events:none;position:fixed;top:32px;transform:translateX(-50%);z-index:9999}.Chat-module_Chat__j2eE5{display:flex;flex-direction:column;font-family:Arial,Helvetica,sans-serif,OpenMojiBlack;height:100%;width:100%}.Chat-module_chatMainFlow__--8FE{display:grid;grid-template:\"๐ฆ\" min-content \"๐ฌ\" 1fr \"๐\" min-content/1fr;height:100%;max-width:100vw;width:100%}.Chat-module_chatMainFlow__--8FE .Chat-module_chatBar__fLECN{background-color:#fff;border-bottom:1px solid rgba(15,23,36,.06);color:#0f1724;font-weight:500;grid-area:๐ฆ;padding:16px 20px;text-align:center;width:100%}.Chat-module_TasksInProgress__fQfei{align-self:center;grid-area:๐ฆ;height:min-content;justify-self:self-end;margin:8px 16px;width:auto}.Chat-module_actions__gTZ5T{align-items:center;align-self:self-start;display:flex;gap:8px;grid-area:๐ฌ;height:min-content;justify-self:self-end;margin:16px 20px 0;width:auto;z-index:200}.Chat-module_actions__gTZ5T.Chat-module_portal__uTOT8{margin:0}.Chat-module_actions__gTZ5T.Chat-module_left__7l5Mn{justify-self:self-start}.Chat-module_actions__gTZ5T.Chat-module_right__ABZrW{justify-self:self-end}@media (max-width:900px){.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}}@media (max-width:600px){.Chat-module_actions__gTZ5T{gap:7px;margin:14px 18px 0}}.Chat-module_chatMainFlow__--8FE .Chat-module_chatChildren__flOPK{grid-area:๐ฌ;height:100%;width:100%;z-index:300}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{grid-area:๐ฌ;height:100%;overflow-x:hidden;overflow-y:auto;padding:24px 20px 16px;scroll-behavior:smooth;width:100%;z-index:10}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar{width:6px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-track{background:transparent}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-thumb{background:hsla(0,0%,49%,.2);border-radius:3px;transition:all .2s ease}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,49%,.3)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ{align-items:flex-end;animation:Chat-module_messageSlideIn__soTy2 .4s cubic-bezier(.25,.46,.45,.94);display:flex;flex-direction:row;margin-bottom:20px;max-width:100%;position:relative}.Chat-module_hasActionsAndFirstMessageIsLong__5jgoZ{margin-top:55px}@keyframes Chat-module_messageSlideIn__soTy2{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.Chat-module_isNotCompleteMessage__Hj2K7{opacity:.7;position:relative}.Chat-module_NonCompleteMessageFiller__G5-Ve{color:transparent}.Chat-module_isNotCompleteMessage__Hj2K7 .Chat-module_messageText__XgNyQ:after{animation:Chat-module_loadingPulse__VomRm 1.5s ease-in-out infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,49%,.6),transparent);border-radius:2px;bottom:8px;content:\"\";height:4px;position:absolute;right:12px;width:20px}@keyframes Chat-module_loadingPulse__VomRm{0%,to{opacity:.3;transform:scaleX(.8)}50%{opacity:1;transform:scaleX(1.2)}}.Chat-module_typingIndicator__S-CT-{align-items:flex-end;animation:Chat-module_messageSlideIn__soTy2 .4s cubic-bezier(.25,.46,.45,.94);display:flex;margin-bottom:20px}.Chat-module_typingIndicator__S-CT- .Chat-module_avatar__gL6bm{flex-shrink:0;height:40px;margin:0 12px 4px;width:40px}.Chat-module_typingIndicator__S-CT- .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;background-color:#eef6fb;border:2px solid hsla(0,0%,49%,.1);border-radius:50%;object-fit:cover;width:40px}.Chat-module_typingBubble__0Lb7B{backdrop-filter:blur(10px);border:1px solid hsla(0,0%,49%,.1);border-radius:20px;border-bottom-left-radius:6px;box-shadow:0 2px 8px rgba(0,0,0,.1);min-height:24px;padding:16px 20px}.Chat-module_typingBubble__0Lb7B,.Chat-module_typingDots__srOBB{align-items:center;display:flex;gap:4px}.Chat-module_typingDot__dnhKT{animation:Chat-module_typingBounce__1yp2v 1.4s ease-in-out infinite;background:linear-gradient(135deg,#6b7280,hsla(0,0%,49%,.6));border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.1);height:8px;width:8px}.Chat-module_typingDot__dnhKT:first-child{animation-delay:-.32s}.Chat-module_typingDot__dnhKT:nth-child(2){animation-delay:-.16s}.Chat-module_typingDot__dnhKT:nth-child(3){animation-delay:0s}@keyframes Chat-module_typingBounce__1yp2v{0%,80%,to{opacity:.5;transform:scale(.8) translateY(0)}40%{opacity:1;transform:scale(1.2) translateY(-8px)}}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ.Chat-module_isMe__nBtaV{align-items:flex-end;flex-direction:row-reverse;justify-content:flex-start}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ.Chat-module_isMe__nBtaV .Chat-module_messageText__XgNyQ{border-bottom-right-radius:6px}.Chat-module_ratingStar__rRfqC{color:var(--star-inactive-color,#ccc);cursor:pointer;font-size:20px;transition:color .2s}.Chat-module_ratingStar__rRfqC.Chat-module_active__lbYL-{color:gold}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{aspect-ratio:1/1;flex-shrink:0;margin:0 12px 4px;position:relative;width:40px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;background-color:var(--avatar-bg-color,#eef6fb);border:2px solid hsla(0,0%,49%,.1);border-radius:50%;object-fit:cover;transition:transform .2s ease,box-shadow .2s ease;width:40px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img:hover{box-shadow:0 4px 12px rgba(0,0,0,.15);transform:scale(1.05)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{word-wrap:break-word;backdrop-filter:blur(10px);background-color:var(--message-bg-color);border-radius:20px;box-shadow:0 2px 8px rgba(0,0,0,.1);color:var(--message-text-color);font-size:15px;line-height:1.5;margin-bottom:4px;max-width:min(70%,600px);padding:14px 18px;position:relative;text-align:left;transition:all .2s ease}.Chat-module_copyButtonContainer__Rij0U{align-items:center;float:right;justify-content:flex-end;pointer-events:none;right:10px;top:8px;visibility:hidden;z-index:2}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ:hover .Chat-module_copyButtonContainer__Rij0U,.Chat-module_copyButtonContainer__Rij0U:focus-within{pointer-events:auto;visibility:visible}.Chat-module_copyButton__DcxT5{align-items:center;background:hsla(0,0%,100%,.2);border:1px solid #ddd;border-radius:6px;box-shadow:0 1px 4px rgba(0,0,0,.07);cursor:pointer;display:flex;opacity:.7;padding:2px 5px;position:relative;transition:all .15s,box-shadow .15s,border .15s}.Chat-module_copiedTooltip__LH81j{animation:Chat-module_copiedTooltipFadeIn__QekO1 .2s;background:#222;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.18);color:#fff;font-size:.98em;left:50%;margin-top:4px;max-width:220px;opacity:.97;overflow-wrap:break-word;padding:6px 16px;pointer-events:none;position:absolute;top:110%;transform:translateX(-50%);white-space:nowrap;word-break:break-word;z-index:100}.Chat-module_copiedTooltipLeft__j-S-5{left:0!important;transform:none!important}.Chat-module_copiedTooltipRight__R-2cE{left:auto!important;right:0!important;transform:none!important}@keyframes Chat-module_copiedTooltipFadeIn__QekO1{0%{opacity:0;transform:translateX(-50%) translateY(8px) scale(.97)}to{opacity:.97;transform:translateX(-50%) translateY(0) scale(1)}}.Chat-module_copyButton__DcxT5:focus,.Chat-module_copyButton__DcxT5:hover{border:1.5px solid #bbb;box-shadow:0 2px 8px rgba(0,132,255,.1);opacity:1}.Chat-module_copyButton__DcxT5 svg{display:block}.Chat-module_messageText__XgNyQ h1{font-size:2em}.Chat-module_messageText__XgNyQ h2{font-size:1.75em}.Chat-module_messageText__XgNyQ h3{font-size:1.5em}.Chat-module_messageText__XgNyQ h4{font-size:1.25em}.Chat-module_messageText__XgNyQ h5{font-size:1.1em}.Chat-module_messageText__XgNyQ ul{list-style:disc;margin-left:20px}.Chat-module_messageText__XgNyQ ol{list-style:decimal;margin-left:20px}.Chat-module_messageText__XgNyQ blockquote,.Chat-module_messageText__XgNyQ img,.Chat-module_messageText__XgNyQ pre,.Chat-module_messageText__XgNyQ table{border-radius:8px;margin-bottom:10px;margin-top:10px}.Chat-module_messageText__XgNyQ pre{background:#000;color:#fff}.Chat-module_messageText__XgNyQ blockquote,.Chat-module_messageText__XgNyQ pre{border:none;box-shadow:none;display:block;font-size:inherit;line-height:inherit;padding:1em}.Chat-module_messageText__XgNyQ blockquote{background:#ffffffcc;color:#000}.Chat-module_messageText__XgNyQ code{background:#cccccc55;border:none;box-shadow:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;margin:0;padding:0}.Chat-module_messageText__XgNyQ pre code{background-color:#000000cc;border-radius:8px}.Chat-module_messageText__XgNyQ .Chat-module_chat-code-block__k8IyS{background:#181c23;border-color:#23272f;box-shadow:0 2px 8px rgba(0,0,0,.12);color:#f8fafc;font-family:Fira Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:14px;line-height:1.6;overflow-x:auto}.Chat-module_messageText__XgNyQ .Chat-module_chat-code-block__k8IyS code{background:none!important;border:none!important;box-shadow:none!important;color:inherit!important;display:block;font-family:inherit!important;font-size:inherit!important;overflow-x:auto;padding:0!important;white-space:pre;word-break:break-word}.Chat-module_messageText__XgNyQ table{background:#f8fafc;border-collapse:separate;border-spacing:0;box-shadow:0 2px 8px rgba(0,0,0,.08);color:#17223b;font-size:14px;margin:16px 0;width:100%}.Chat-module_messageText__XgNyQ td,.Chat-module_messageText__XgNyQ th{background:none;border-bottom:1px solid #d1dbe8;color:#17223b;padding:10px 16px;text-align:left}.Chat-module_messageText__XgNyQ th{background:linear-gradient(90deg,#eaf3fa 80%,#d1e3f8);border-bottom:2px solid #b5c7de;color:#17223b;font-weight:700}.Chat-module_messageText__XgNyQ tr:last-child td{border-bottom:none}.Chat-module_messageText__XgNyQ tr:nth-child(2n) td{background:#eaf3fa}.Chat-module_messageText__XgNyQ tr:hover td{background:#cbe0f7;transition:background .2s}.Chat-module_messageText__XgNyQ table{border-radius:12px;overflow:hidden}.Chat-module_messageText__XgNyQ td:first-child,.Chat-module_messageText__XgNyQ th:first-child{border-top-left-radius:12px}.Chat-module_messageText__XgNyQ td:last-child,.Chat-module_messageText__XgNyQ th:last-child{border-top-right-radius:12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ:hover{box-shadow:0 4px 16px rgba(0,0,0,.15);transform:translateY(-1px)}.Chat-module_messageButtons__WaOob{border-top:1px solid hsla(0,0%,49%,.83);display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;padding-top:12px}.Chat-module_messageButton__mRnn-{-webkit-tap-highlight-color:transparent;align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.9);border-radius:16px;cursor:pointer;display:inline-flex;font-size:13px;font-weight:500;padding:8px 14px;touch-action:manipulation;transition:all .2s ease;user-select:none}.Chat-module_messageButton__mRnn-:hover{background:rgba(0,132,255,.1);border-color:rgba(0,132,255,.3);box-shadow:0 2px 8px rgba(0,132,255,.15);transform:translateY(-1px)}.Chat-module_messageButton__mRnn-:active{transform:scale(.98);transition:transform .1s ease}.Chat-module_messageButton__mRnn- p{line-height:inherit;margin:0;padding:0}.Chat-module_messageButton__mRnn- strong{font-weight:600}.Chat-module_messageButton__mRnn- em{font-style:italic}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M{align-items:center;backdrop-filter:blur(10px);background:rgba(0,0,0,.8);border-radius:12px;bottom:-8px;display:flex;gap:2px;min-width:24px;opacity:0;padding:4px 6px;position:absolute;right:8px;transform:translateY(4px);transition:all .3s cubic-bezier(.25,.46,.45,.94);z-index:1}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ:hover .Chat-module_rating__soc3M{opacity:1;transform:translateY(0)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M:hover{background:rgba(0,0,0,.9);box-shadow:0 4px 12px rgba(0,0,0,.3);padding:6px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M span{cursor:pointer;display:inline-block;font-size:16px;transition:transform .2s ease,color .2s ease}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M:hover span{transform:scale(1.1)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{backdrop-filter:blur(20px);border-top:1px solid hsla(0,0%,49%,.1);display:flex;flex-direction:column;gap:12px;grid-area:๐;padding:20px;position:relative;width:100%;z-index:10}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan.Chat-module_dragOver__bkS-g{background:linear-gradient(0deg,rgba(0,132,255,.1) 0,rgba(0,132,255,.05));border-top:2px solid rgba(0,132,255,.3)}.Chat-module_filePreviewContainer__R70hm{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.Chat-module_filePreview__kq2aX{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.2);border-radius:8px;display:flex;font-size:12px;gap:8px;padding:8px 12px;transition:all .2s ease}.Chat-module_filePreview__kq2aX:hover{background:hsla(0,0%,49%,.15);border-color:hsla(0,0%,49%,.3)}.Chat-module_fileIcon__zoSKW{font-size:14px;opacity:.7}.Chat-module_fileInfo__wBLi0{display:flex;flex-direction:column;gap:2px;min-width:0}.Chat-module_fileName__bBujo{color:#000;font-weight:500;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Chat-module_fileSize__ivliq{color:#6b7280;font-size:11px}.Chat-module_removeFileButton__0gakR{align-items:center;background:rgba(255,0,0,.1);border:none;border-radius:50%;color:#f44;cursor:pointer;display:flex;flex-shrink:0;height:20px;justify-content:center;transition:all .2s ease;width:20px}.Chat-module_removeFileButton__0gakR:hover{background:rgba(255,0,0,.2);transform:scale(1.1)}.Chat-module_inputContainer__bPt99{align-items:center;display:flex;gap:12px}.Chat-module_inputContainer__bPt99 textarea::placeholder{color:inherit;opacity:.7}.Chat-module_attachmentButton__qLO47{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.05);border:1px solid hsla(0,0%,49%,.2);border-radius:50%;color:#6b7280;cursor:pointer;display:flex;flex-shrink:0;height:40px;justify-content:center;transition:all .2s ease;width:40px}.Chat-module_attachmentButton__qLO47:hover:not(:disabled){background:rgba(0,132,255,.1);border-color:rgba(0,132,255,.3);color:#0084ff;transform:scale(1.05)}.Chat-module_attachmentButton__qLO47:disabled{cursor:not-allowed;opacity:.5;transform:none}.Chat-module_voiceButton__d2zlP{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.05);border:1px solid hsla(0,0%,49%,.2);border-radius:50%;color:#6b7280;cursor:pointer;display:flex;flex-shrink:0;height:40px;justify-content:center;transition:all .2s ease;width:40px}.Chat-module_voiceButton__d2zlP:hover{background:rgba(0,132,255,.1);border-color:rgba(0,132,255,.3);color:#0084ff;transform:scale(1.05)}.Chat-module_voiceButtonActive__Uoi3W{animation:Chat-module_voiceRecordingPulse__y2wJ5 1.5s infinite;background:rgba(255,0,0,.1)!important;border-color:rgba(255,0,0,.3)!important;color:red!important}@keyframes Chat-module_voiceRecordingPulse__y2wJ5{0%{box-shadow:0 0 0 0 rgba(255,0,0,.4)}70%{box-shadow:0 0 0 10px rgba(255,0,0,0)}to{box-shadow:0 0 0 0 rgba(255,0,0,0)}}.Chat-module_uploadProgress__jBTKe{align-items:center;background:rgba(0,132,255,.1);border:1px solid rgba(0,132,255,.2);border-radius:8px;color:#0084ff;display:flex;font-size:13px;gap:12px;padding:8px 12px}.Chat-module_uploadProgressBar__Gutnt{background:rgba(0,132,255,.2);border-radius:2px;flex:1;height:4px;overflow:hidden}.Chat-module_uploadProgressFill__EgubT{animation:Chat-module_uploadProgress__jBTKe 1.5s ease-in-out infinite;background:linear-gradient(90deg,#0084ff,rgba(0,132,255,.8));border-radius:2px;height:100%}@keyframes Chat-module_uploadProgress__jBTKe{0%{transform:translateX(-100%)}50%{transform:translateX(0)}to{transform:translateX(100%)}}.Chat-module_dragOverlay__SEGoS{align-items:center;backdrop-filter:blur(10px);background:rgba(0,132,255,.1);border:2px dashed rgba(0,132,255,.5);border-radius:12px;bottom:0;display:flex;justify-content:center;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:20}.Chat-module_dragOverlayContent__gb9kF{align-items:center;color:#0084ff;display:flex;flex-direction:column;font-weight:600;gap:12px;text-align:center}.Chat-module_dragOverlayContent__gb9kF svg{opacity:.7}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{-webkit-tap-highlight-color:transparent;appearance:none;-webkit-appearance:none;backdrop-filter:blur(20px);background:hsla(0,0%,49%,.05);border-radius:25px;color:#000;flex:1;font-size:15px;line-height:1.4;max-height:120px;min-width:200px;outline:none;padding:16px 20px;resize:none;touch-action:manipulation;transition:all .3s cubic-bezier(.25,.46,.45,.94)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea:focus{background:hsla(0,0%,49%,.08);border-color:#0084ff;box-shadow:0 0 0 4px rgba(0,132,255,.1),0 8px 32px rgba(0,132,255,.15);transform:translateY(-2px)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea:disabled{cursor:not-allowed;opacity:.6;transform:none}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea::placeholder{color:inherit;opacity:.7}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{-webkit-tap-highlight-color:transparent;align-items:center;aspect-ratio:1/1;background:linear-gradient(135deg,#0084ff,#06c);border:none;border-radius:50%!important;box-shadow:0 4px 16px rgba(0,132,255,.3);color:#fff;display:flex;height:48px;justify-content:center;margin:0!important;min-height:unset!important;min-width:unset!important;overflow:visible;padding:0!important;padding-left:unset;padding-right:unset;touch-action:manipulation;transition:all .3s cubic-bezier(.25,.46,.45,.94);user-select:none;width:48px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button img{height:100%;object-fit:contain;width:50%}.Chat-module_scrollToBottomContainer__5rXpK{align-items:flex-start;display:flex;grid-area:๐;height:100%;justify-content:center;pointer-events:none;width:100%;z-index:20}.Chat-module_scrollToBottomContainer__5rXpK .Chat-module_scrollToBottom__nzxdZ{-webkit-tap-highlight-color:transparent;align-items:center;animation:Chat-module_scrollButtonSlideIn__XnImg .3s ease-out;backdrop-filter:blur(3px);background:rgba(0,0,0,.5);border:none;border-radius:50%;box-shadow:0 4px 16px rgba(0,0,0,.3);color:#fff;cursor:pointer;display:flex;font-weight:700;height:48px;justify-content:center;outline:none;pointer-events:all;touch-action:manipulation;transform:translate(-50%,-150%);transition:all .3s cubic-bezier(.25,.46,.45,.94);user-select:none;width:48px}@keyframes Chat-module_scrollButtonSlideIn__XnImg{0%{opacity:0;transform:translate(-50%,20px) scale(.8)}to{opacity:.9;transform:translate(-50%) scale(1)}}.Chat-module_scrollToBottom__nzxdZ:hover{transform:translate(-50%,-160%) scale(1.05)}.Chat-module_scrollToBottom__nzxdZ:active{transform:translate(-50%,-160%) scale(.95);transition:transform .1s ease}.Chat-module_ratingModal__XVKYm{align-items:center;animation:Chat-module_modalFadeIn__RPc3w .3s ease-out;backdrop-filter:blur(8px);background-color:rgba(0,0,0,.6);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}@keyframes Chat-module_modalFadeIn__RPc3w{0%{backdrop-filter:blur(0);opacity:0}to{backdrop-filter:blur(8px);opacity:1}}.Chat-module_ratingModalContent__CCdq7{animation:Chat-module_modalSlideIn__XXtgN .3s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(20px);background:#fff;border:1px solid hsla(0,0%,49%,.1);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.3);color:#0f1724;font-family:Arial,Helvetica,sans-serif,OpenMojiBlack;max-width:480px;padding:32px;width:90%}@keyframes Chat-module_modalSlideIn__XXtgN{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.Chat-module_ratingModalContent__CCdq7 h3{color:#000;font-size:20px;font-weight:600;margin:0 0 24px;text-align:center}.Chat-module_stars__PCzNO{display:flex;gap:8px;justify-content:center;margin-bottom:24px}.Chat-module_stars__PCzNO span{border-radius:8px;cursor:pointer;font-size:28px;padding:4px;transition:all .2s ease}.Chat-module_stars__PCzNO span:hover{background:rgba(255,215,0,.1);transform:scale(1.2)}.Chat-module_ratingModalStar__XkbHr{cursor:pointer;font-size:24px;transition:color .2s}.Chat-module_ratingInput__z8Pv-{background:hsla(0,0%,49%,.05);border:2px solid hsla(0,0%,49%,.1);border-radius:12px;color:#0b1220;font-size:14px;line-height:1.5;margin-bottom:18px;min-height:100px;padding:16px;resize:vertical;transition:all .2s ease;width:100%}.Chat-module_ratingInput__z8Pv-:focus{background:hsla(0,0%,49%,.08);border-color:#0084ff;box-shadow:0 0 0 4px rgba(0,132,255,.1);outline:none}.Chat-module_ratingInput__z8Pv-[readonly]{background:hsla(0,0%,49%,.01);border:1px solid hsla(0,0%,49%,.5)}.Chat-module_ratingActions__nXcss{display:flex;gap:12px;justify-content:flex-end}.Chat-module_ratingActions__nXcss button{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;min-width:80px;padding:12px 24px;transition:all .2s ease}.Chat-module_ratingActions__nXcss button:first-child{background-color:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.2);color:#0b1220}.Chat-module_ratingActions__nXcss button:first-child:hover:not(:disabled){background-color:hsla(0,0%,49%,.2);color:#0b1220}.Chat-module_ratingActions__nXcss button:last-child{background:linear-gradient(135deg,#0084ff,#06c);color:#fff}.Chat-module_ratingActions__nXcss button:last-child:hover:not(:disabled){background:linear-gradient(135deg,#0071d1,#0052a3);box-shadow:0 4px 12px rgba(0,132,255,.3);transform:translateY(-1px)}.Chat-module_ratingActions__nXcss button:last-child:disabled{cursor:not-allowed;opacity:.5}.Chat-module_chatButton__d9VgA{-webkit-tap-highlight-color:transparent!important;align-items:center!important;backdrop-filter:blur(20px)!important;background:linear-gradient(135deg,#0084ff,#06c)!important;border:none!important;border-radius:20px!important;box-shadow:0 4px 16px rgba(0,132,255,.3)!important;color:#fff!important;cursor:pointer!important;display:inline-flex!important;font-size:13px!important;font-weight:600!important;gap:8px!important;justify-content:center!important;line-height:1.3!important;margin:0!important;min-height:40px!important;min-width:110px!important;overflow:hidden!important;padding:12px 16px!important;position:relative!important;touch-action:manipulation!important;transition:all .3s cubic-bezier(.25,.46,.45,.94)!important;user-select:none!important}.Chat-module_chatButton__d9VgA:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.Chat-module_chatButton__d9VgA:hover:before{left:100%}.Chat-module_chatButton__d9VgA:hover:not(:disabled){background:linear-gradient(135deg,#09f,#07d);box-shadow:0 8px 24px rgba(0,132,255,.4);transform:translateY(-2px) scale(1.02)}.Chat-module_chatButton__d9VgA:active{box-shadow:0 4px 16px rgba(0,132,255,.3);transform:scale(.98) translateY(-1px);transition:transform .1s ease}.Chat-module_chatButton__d9VgA:focus{box-shadow:0 4px 16px rgba(0,132,255,.3),0 0 0 3px rgba(0,132,255,.3);outline:none}.Chat-module_chatButton__d9VgA svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.2));flex-shrink:0;height:16px;opacity:1;transition:all .3s cubic-bezier(.25,.46,.45,.94);width:16px}.Chat-module_chatButton__d9VgA:hover svg{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));transform:rotate(-90deg) scale(1.1)}.Chat-module_chatButtonText__RkGB-{font-weight:600;opacity:1;text-shadow:0 1px 2px rgba(0,0,0,.1);transition:all .2s ease;white-space:nowrap}.Chat-module_chatButton__d9VgA:hover .Chat-module_chatButtonText__RkGB-{transform:translateX(1px)}.Chat-module_useTemplateButton__xcJNR{-webkit-tap-highlight-color:transparent!important;align-items:center!important;backdrop-filter:blur(20px)!important;background:linear-gradient(135deg,#0084ff,#06c)!important;border:none!important;border-radius:20px!important;box-shadow:0 4px 16px rgba(0,132,255,.3)!important;color:#fff!important;cursor:pointer!important;display:inline-flex!important;font-size:13px!important;font-weight:600!important;gap:8px!important;justify-content:center!important;line-height:1.3!important;margin:0!important;min-height:40px!important;min-width:110px!important;overflow:hidden!important;padding:12px 16px!important;position:relative!important;touch-action:manipulation!important;transition:all .3s cubic-bezier(.25,.46,.45,.94)!important;user-select:none!important}.Chat-module_useTemplateButton__xcJNR:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.Chat-module_useTemplateButton__xcJNR:hover:before{left:100%}.Chat-module_useTemplateButton__xcJNR:hover:not(:disabled){background:linear-gradient(135deg,#09f,#07d);box-shadow:0 8px 24px rgba(0,132,255,.4);transform:translateY(-2px) scale(1.02)}.Chat-module_useTemplateButton__xcJNR:active{box-shadow:0 4px 16px rgba(0,132,255,.3);transform:scale(.98) translateY(-1px);transition:transform .1s ease}.Chat-module_useTemplateButton__xcJNR:focus{box-shadow:0 4px 16px rgba(0,132,255,.3),0 0 0 3px rgba(0,132,255,.3);outline:none}.Chat-module_useTemplateButton__xcJNR svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.2));flex-shrink:0;height:16px;opacity:1;transition:all .3s cubic-bezier(.25,.46,.45,.94);width:16px}.Chat-module_useTemplateButton__xcJNR:hover svg{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));transform:scale(1.1)}.Chat-module_useTemplateButton__xcJNR:hover .Chat-module_chatButtonText__RkGB-{transform:translateX(1px)}.Chat-module_saveButtonContainer__lSNUJ{display:inline-block;position:relative}.Chat-module_saveMenu__-ph8y{background:#fff;border:1px solid #ddd;box-shadow:0 2px 8px rgba(0,0,0,.08);left:0;min-width:120px;position:absolute;top:100%;z-index:10}.Chat-module_saveMenuItem__ISApL{background:none;border:none;color:#111;cursor:pointer;display:block;padding:8px 16px;text-align:left;width:100%}.Chat-module_saveMenuItem__ISApL:hover{background-color:#f0f0f0}.Chat-module_pauseButton__eeu7K{background:linear-gradient(135deg,#ffb347,#ff8c42)!important}.Chat-module_pauseButton__eeu7K:hover:not(:disabled){background:linear-gradient(135deg,#ffc067,#ff9e5f)!important}.Chat-module_pauseButton__eeu7K.Chat-module_pausing__pTx8b{cursor:wait!important;opacity:.6!important}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya{background:linear-gradient(135deg,#10b981,#059669)!important}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya:hover:not(:disabled){background:linear-gradient(135deg,#34d399,#059669)!important;box-shadow:0 8px 24px rgba(16,185,129,.35);transform:translateY(-2px) scale(1.02)}.Chat-module_pauseButton__eeu7K svg{transition:transform .3s ease}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya svg{transform:scale(1.1)}.Chat-module_pauseButton__eeu7K.Chat-module_pausing__pTx8b svg{opacity:.8}.Chat-module_voiceCallIndicatorBar__N2sWN{align-items:center;backdrop-filter:blur(10px);background:linear-gradient(135deg,rgba(34,197,94,.1),rgba(16,185,129,.1));border-bottom:1px solid rgba(34,197,94,.3);display:flex;grid-area:๐ฆ;justify-content:center;padding:12px 20px;width:100%}.Chat-module_voiceCallIndicator__tsaaG{align-items:center;backdrop-filter:blur(10px);background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(16,185,129,.2));border:1px solid rgba(34,197,94,.4);border-radius:20px;box-shadow:0 2px 8px rgba(34,197,94,.2);color:#10b981;display:inline-flex;font-size:13px;font-weight:600;gap:8px;padding:8px 16px;position:relative}.Chat-module_voiceCallIndicator__tsaaG svg{animation:Chat-module_voiceCallIconPulse__zZbJn 2s ease-in-out infinite;flex-shrink:0;height:16px;width:16px}.Chat-module_voiceCallIndicator__tsaaG span{font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.1)}.Chat-module_voiceCallPulse__XcGU4{animation:Chat-module_voiceCallPulse__XcGU4 1.5s ease-in-out infinite;background:#10b981;border-radius:50%;height:8px;position:absolute;right:8px;top:50%;transform:translateY(-50%);width:8px}@keyframes Chat-module_voiceCallIconPulse__zZbJn{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.1)}}@keyframes Chat-module_voiceCallPulse__XcGU4{0%,to{opacity:1;transform:translateY(-50%) scale(1)}50%{opacity:.6;transform:translateY(-50%) scale(1.3)}}.Chat-module_chatMessage__nmLaZ .Chat-module_voiceCallIndicator__tsaaG{border-radius:16px;font-size:12px;margin-bottom:8px;padding:6px 12px}.Chat-module_chatMessage__nmLaZ .Chat-module_voiceCallIndicator__tsaaG svg{height:14px;width:14px}.Chat-module_ratingConfirmation__n16vb{word-wrap:break-word;animation:Chat-module_confirmationSlideIn__5U-wz .3s ease-out;backdrop-filter:blur(20px);background:linear-gradient(135deg,#10b981,#059669);border-radius:12px;box-shadow:0 8px 32px rgba(16,185,129,.3);color:#fff;font-weight:500;max-width:300px;padding:16px 20px;position:fixed;right:20px;top:20px;z-index:1001}@keyframes Chat-module_confirmationSlideIn__5U-wz{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@media (max-width:768px){.Chat-module_actions__gTZ5T{gap:6px;margin:12px 16px 0}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{padding:16px 12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ{margin-bottom:16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border-radius:18px;font-size:14px;max-width:85%;padding:12px 16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{height:36px;margin:0 10px 4px;width:36px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;width:36px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{gap:10px;padding:16px 12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-radius:22px;font-size:16px;padding:14px 18px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{height:44px;width:44px}.Chat-module_scrollToBottom__nzxdZ{font-size:18px;height:44px;top:calc(100% - 160px);width:44px}.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_ratingModalContent__CCdq7{border-radius:16px;margin:16px;max-height:80vh;overflow-y:auto;padding:24px 20px}.Chat-module_stars__PCzNO{gap:6px;margin-bottom:20px}.Chat-module_stars__PCzNO span{font-size:32px;padding:8px}.Chat-module_ratingActions__nXcss{flex-direction:column-reverse;gap:8px}.Chat-module_ratingActions__nXcss button{border-radius:10px;font-size:16px;padding:14px;width:100%}}@media (max-width:480px){.Chat-module_actions__gTZ5T{gap:4px;margin:8px 12px 0}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{padding:12px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border-radius:16px;font-size:14px;max-width:90%;padding:10px 14px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{height:32px;margin:0 8px 4px;width:32px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;width:32px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{gap:8px;padding:12px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-radius:20px;font-size:16px;padding:12px 16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{height:40px;width:40px}.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_scrollToBottom__nzxdZ{font-size:16px;height:40px;top:calc(100% - 140px);width:40px}.Chat-module_ratingModal__XVKYm{align-items:flex-end;padding:0}.Chat-module_ratingModalContent__CCdq7{border-radius:20px 20px 0 0;margin:0;max-height:70vh;padding:24px 16px 20px;width:100%}}@media (prefers-reduced-motion:reduce){.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ,.Chat-module_ratingConfirmation__n16vb,.Chat-module_ratingModalContent__CCdq7,.Chat-module_ratingModal__XVKYm,.Chat-module_scrollToBottom__nzxdZ{animation:none}.Chat-module_chatButton__d9VgA,.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button,.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea,.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img,.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{transition:none}}@media (prefers-contrast:high){.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border:2px solid}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-width:3px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{border:2px solid}}\n/*# sourceMappingURL=data:application/json;base64,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c0JBQ0osQ0FFQSxtQ0FHSSxjQUFlLENBRGYsV0FBWSxDQUVaLHNCQUF1QixDQUh2QixVQUlKLENBRUEsZ0NBRUksb0JBQXFCLENBRHJCLFNBRUosQ0FFQSx1Q0FHSSwyQkFBNEIsQ0FGNUIsUUFBUyxDQUdULGVBQWdCLENBQ2hCLHNCQUF1QixDQUh2QixVQUlKLENBQ0osQ0FHQSx1Q0FDSSxrTkFLSSxjQUNKLENBRUEsOFdBS0ksZUFDSixDQUNKLENBR0EsK0JBQ0ksaUdBQ0ksZ0JBQ0osQ0FFQSx3RUFDSSxnQkFDSixDQUVBLHNFQUNJLGdCQUNKLENBQ0oiLCJmaWxlIjoiQ2hhdC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdPcGVuTW9qaUJsYWNrJztcbiAgICBzcmM6IHVybCgnaHR0cHM6Ly9zNi5wdGJrLmlvL2ZvbnRzL09wZW5Nb2ppLWJsYWNrLWdseWYud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7IC8qIDwtIFRPRE86IFvwn5Cx4oCN8J+agF0gRHluYW1pY2FsbHkgbG9hZCBmcm9tIC9zZXJ2ZXJzLnRzICovXG4gICAgdW5pY29kZS1yYW5nZTogVSsyMywgVSsyQSwgVSsyRCwgVSszMC0zOSwgVStBOSwgVStBRSwgVSsyMDBELCBVKzIwM0MsIFUrMjA0OSwgVSsyMEUzLCBVKzIxMTcsIFUrMjEyMCwgVSsyMTIyLCBVKzIxMzksXG4gICAgICAgIFUrMjE5NC0yMTk5LCBVKzIxQTksIFUrMjFBQSwgVSsyMjlDLCBVKzIzMUEsIFUrMjMxQiwgVSsyMzI4LCBVKzIzQ0YsIFUrMjNFOS0yM0YzLCBVKzIzRjgtMjNGRSwgVSsyNEMyLCBVKzI1QTEsXG4gICAgICAgIFUrMjVBQS0yNUFFLCBVKzI1QjYsIFUrMjVDMCwgVSsyNUM5LCBVKzI1RDAsIFUrMjVEMSwgVSsyNUU3LTI1RUEsIFUrMjVFRCwgVSsyNUVFLCBVKzI1RkItMjVGRSwgVSsyNjAwLTI2MDUsXG4gICAgICAgIFUrMjYwRSwgVSsyNjExLCBVKzI2MTQsIFUrMjYxNSwgVSsyNjE4LCBVKzI2MUQsIFUrMjYyMCwgVSsyNjIyLCBVKzI2MjMsIFUrMjYyNiwgVSsyNjJBLCBVKzI2MkUsIFUrMjYyRixcbiAgICAgICAgVSsyNjM4LTI2M0EsIFUrMjY0MCwgVSsyNjQyLCBVKzI2NDgtMjY1MywgVSsyNjVGLCBVKzI2NjAsIFUrMjY2MywgVSsyNjY1LCBVKzI2NjYsIFUrMjY2OCwgVSsyNjdCLCBVKzI2N0UsIFUrMjY3RixcbiAgICAgICAgVSsyNjkxLTI2OTcsIFUrMjY5OSwgVSsyNjlCLCBVKzI2OUMsIFUrMjZBMCwgVSsyNkExLCBVKzI2QTcsIFUrMjZBQSwgVSsyNkFCLCBVKzI2QjAsIFUrMjZCMSwgVSsyNkJELCBVKzI2QkUsXG4gICAgICAgIFUrMjZDNCwgVSsyNkM1LCBVKzI2QzgsIFUrMjZDRSwgVSsyNkNGLCBVKzI2RDEsIFUrMjZEMywgVSsyNkQ0LCBVKzI2RTksIFUrMjZFQSwgVSsyNkYwLTI2RjUsIFUrMjZGNy0yNkZBLCBVKzI2RkQsXG4gICAgICAgIFUrMjcwMiwgVSsyNzA1LCBVKzI3MDgtMjcwRCwgVSsyNzBGLCBVKzI3MTIsIFUrMjcxNCwgVSsyNzE2LCBVKzI3MUQsIFUrMjcyMSwgVSsyNzI4LCBVKzI3MzMsIFUrMjczNCwgVSsyNzQ0LFxuICAgICAgICBVKzI3NDcsIFUrMjc0QywgVSsyNzRFLCBVKzI3NTMtMjc1NSwgVSsyNzU3LCBVKzI3NjMsIFUrMjc2NCwgVSsyNzk1LTI3OTcsIFUrMjdBMSwgVSsyN0IwLCBVKzI3QkYsIFUrMjkzNCwgVSsyOTM1LFxuICAgICAgICBVKzJCMDUtMkIwNywgVSsyQjBDLCBVKzJCMEQsIFUrMkIxQiwgVSsyQjFDLCBVKzJCMUYtMkIyNCwgVSsyQjJFLCBVKzJCMkYsIFUrMkI1MCwgVSsyQjU1LCBVKzJCNTgsIFUrMkI4RixcbiAgICAgICAgVSsyQkJBLTJCQkMsIFUrMkJDMywgVSsyQkM0LCBVKzJCRUEsIFUrMkJFQiwgVSszMDMwLCBVKzMwM0QsIFUrMzI5NywgVSszMjk5LCBVK0UwMDAtRTAwOSwgVStFMDEwLCBVK0UwMTEsXG4gICAgICAgIFUrRTA0MC1FMDZELCBVK0UwODAtRTBCNCwgVStFMEMwLUUwQ0MsIFUrRTBGRi1FMTBELCBVK0UxNDAtRTE0QSwgVStFMTUwLUUxNTcsIFUrRTE4MS1FMTg5LCBVK0UxQzAtRTFDNCxcbiAgICAgICAgVStFMUM2LUUxRDksIFUrRTIwMC1FMjE2LCBVK0UyNDAtRTI2OSwgVStFMjgwLUUyODMsIFUrRTJDMC1FMkM0LCBVK0UyQzYtRTJEQSwgVStFMzAwLUUzMDMsIFUrRTMwNS1FMzBGLFxuICAgICAgICBVK0UzMTItRTMxNiwgVStFMzE4LUUzMjIsIFUrRTMyNC1FMzI5LCBVK0UzMkIsIFUrRTM0MC1FMzQ4LCBVK0UzODAsIFUrRTM4MSwgVStGMDAwLCBVK0Y3N0EsIFUrRjhGRiwgVStGRTBGLFxuICAgICAgICBVKzFGMDA0LCBVKzFGMENGLCBVKzFGMTBELTFGMTBGLCBVKzFGMTJGLCBVKzFGMTZELTFGMTcxLCBVKzFGMTdFLCBVKzFGMTdGLCBVKzFGMThFLCBVKzFGMTkxLTFGMTlBLCBVKzFGMUU2LTFGMUZGLFxuICAgICAgICBVKzFGMjAxLCBVKzFGMjAyLCBVKzFGMjFBLCBVKzFGMjJGLCBVKzFGMjMyLTFGMjNBLCBVKzFGMjUwLCBVKzFGMjUxLCBVKzFGMjYwLTFGMjY1LCBVKzFGMzAwLTFGMzIxLCBVKzFGMzI0LTFGMzkzLFxuICAgICAgICBVKzFGMzk2LCBVKzFGMzk3LCBVKzFGMzk5LTFGMzlCLCBVKzFGMzlFLTFGM0YwLCBVKzFGM0YzLTFGM0Y1LCBVKzFGM0Y3LTFGNEZELCBVKzFGNEZGLTFGNTNELCBVKzFGNTQ5LTFGNTRFLFxuICAgICAgICBVKzFGNTUwLTFGNTY3LCBVKzFGNTZGLCBVKzFGNTcwLCBVKzFGNTczLTFGNTdBLCBVKzFGNTg3LCBVKzFGNThBLTFGNThELCBVKzFGNTkwLCBVKzFGNTk1LCBVKzFGNTk2LCBVKzFGNUE0LFxuICAgICAgICBVKzFGNUE1LCBVKzFGNUE4LCBVKzFGNUIxLCBVKzFGNUIyLCBVKzFGNUJDLCBVKzFGNUMyLTFGNUM0LCBVKzFGNUQxLTFGNUQzLCBVKzFGNURDLTFGNURFLCBVKzFGNUUxLCBVKzFGNUUzLFxuICAgICAgICBVKzFGNUU4LCBVKzFGNUVGLCBVKzFGNUYzLCBVKzFGNUZBLTFGNjRGLCBVKzFGNjgwLTFGNkM1LCBVKzFGNkNCLTFGNkQyLCBVKzFGNkQ1LTFGNkQ3LCBVKzFGNkRDLTFGNkU1LCBVKzFGNkU5LFxuICAgICAgICBVKzFGNkVCLCBVKzFGNkVDLCBVKzFGNkYwLCBVKzFGNkYzLTFGNkZDLCBVKzFGN0UwLTFGN0VCLCBVKzFGN0YwLCBVKzFGOTBDLTFGOTNBLCBVKzFGOTNDLTFGOTQ1LCBVKzFGOTQ3LTFGOUZGLFxuICAgICAgICBVKzFGQTcwLTFGQTdDLCBVKzFGQTgwLTFGQTg4LCBVKzFGQTkwLTFGQUJELCBVKzFGQUJGLTFGQUM1LCBVKzFGQUNFLTFGQURCLCBVKzFGQUUwLTFGQUU4LCBVKzFGQUYwLTFGQUY4LFxuICAgICAgICBVKzFGQkM1LTFGQkM5LCBVK0UwMDYxLUUwMDY3LCBVK0UwMDY5LCBVK0UwMDZDLUUwMDc5LCBVK0UwMDdGO1xufVxuXG4uY29waWVkVG9DbGlwYm9hcmRNZXNzYWdlIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAzMnB4O1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgYmFja2dyb3VuZDogIzIyMjtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBwYWRkaW5nOiAxMHB4IDI0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gICAgYm94LXNoYWRvdzogMCAycHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTgpO1xuICAgIG9wYWNpdHk6IDAuOTc7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgei1pbmRleDogOTk5OTtcbn1cblxuLkNoYXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiwgJ09wZW5Nb2ppQmxhY2snO1xuICAgIC8qIDwtIFRPRE86IFvwn6egXVvwn46xXSBCZXR0ZXIsIGRlZmluZSBvdGhlciBmb250cyAqL1xufVxuXG4uY2hhdE1haW5GbG93IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDB2dztcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGU6XG4gICAgICAgICfwn5+mJyBtaW4tY29udGVudFxuICAgICAgICAn8J+SrCcgMWZyXG4gICAgICAgICfwn5OdJyBtaW4tY29udGVudFxuICAgICAgICAvIDFmcjtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdEJhciB7XG4gICAgZ3JpZC1hcmVhOiDwn5+mO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDE2cHggMjBweDtcbiAgICBjb2xvcjogIzBmMTcyNDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDE1LCAyMywgMzYsIDAuMDYpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uVGFza3NJblByb2dyZXNzIHtcbiAgICBncmlkLWFyZWE6IPCfn6Y7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgaGVpZ2h0OiBtaW4tY29udGVudDtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAganVzdGlmeS1zZWxmOiBzZWxmLWVuZDtcbiAgICBtYXJnaW46IDhweCAxNnB4O1xufVxuXG4uYWN0aW9ucyB7XG4gICAgZ3JpZC1hcmVhOiDwn5KsO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogbWluLWNvbnRlbnQ7XG4gICAgei1pbmRleDogMjAwO1xuICAgIGFsaWduLXNlbGY6IHNlbGYtc3RhcnQ7XG4gICAganVzdGlmeS1zZWxmOiBzZWxmLWVuZDtcbiAgIG1hcmdpbjogMTZweCAyMHB4IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogOHB4O1xufVxuXG4uYWN0aW9ucy5wb3J0YWx7XG5tYXJnaW46IDA7XG59XG5cbi5hY3Rpb25zLmxlZnQge1xuICAgIGp1c3RpZnktc2VsZjogc2VsZi1zdGFydDtcbn1cblxuLmFjdGlvbnMucmlnaHQge1xuICAgIGp1c3RpZnktc2VsZjogc2VsZi1lbmQ7XG59XG5cbi8qIExhcmdlIHRhYmxldCBhbmQgc21hbGwgZGVza3RvcCBzY3JlZW5zICovXG5AbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHtcbiAgICAuY2hhdEJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24gc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnVzZVRlbXBsYXRlQnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiAuY2hhdEJ1dHRvblRleHQge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vKiBNZWRpdW0gc2NyZWVucyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgLmFjdGlvbnMge1xuICAgICAgICBtYXJnaW46IDE0cHggMThweCAwO1xuICAgICAgICBnYXA6IDdweDtcbiAgICB9XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRDaGlsZHJlbiB7XG4gICAgZ3JpZC1hcmVhOiDwn5KsO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAzMDA7XG59XG5cbi8qIENoYXQgbWVzc2FnZXMgYXJlYSAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2VzIHtcbiAgICBncmlkLWFyZWE6IPCfkqw7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDEwO1xuICAgIHBhZGRpbmc6IDI0cHggMjBweCAxNnB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xufVxuXG4vKiBDdXN0b20gc2Nyb2xsYmFyIHN0eWxpbmcgKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiA2cHg7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZXM6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4zKTtcbn1cblxuLyogSW5kaXZpZHVhbCBjaGF0IG1lc3NhZ2UgKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGFuaW1hdGlvbjogbWVzc2FnZVNsaWRlSW4gMC40cyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4vKiBBZGQgdG9wIG1hcmdpbiB0byBmaXJzdCBtZXNzYWdlIGlmIGFjdGlvbnMgYXJlIHByZXNlbnQgYW5kIGZpcnN0IG1lc3NhZ2UgaXMgbG9uZyAqL1xuLmhhc0FjdGlvbnNBbmRGaXJzdE1lc3NhZ2VJc0xvbmcge1xuICAgIG1hcmdpbi10b3A6IDU1cHg7XG59XG5cbkBrZXlmcmFtZXMgbWVzc2FnZVNsaWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCkgc2NhbGUoMC45NSk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLmlzTm90Q29tcGxldGVNZXNzYWdlIHtcbiAgICAvKi9cbiAgICBvdXRsaW5lOiAxcHggZG90dGVkICNmZjAwMDAgIWltcG9ydGFudDtcbiAgICAvKiovXG5cbiAgICBvcGFjaXR5OiAwLjc7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uTm9uQ29tcGxldGVNZXNzYWdlRmlsbGVyIHtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi8qIEVuaGFuY2VkIGxvYWRpbmcgc3RhdGVzIGZvciBtZXNzYWdlcyAqL1xuLmlzTm90Q29tcGxldGVNZXNzYWdlIC5tZXNzYWdlVGV4dDo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDhweDtcbiAgICByaWdodDogMTJweDtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuNiksIHRyYW5zcGFyZW50KTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgYW5pbWF0aW9uOiBsb2FkaW5nUHVsc2UgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBsb2FkaW5nUHVsc2Uge1xuICAgIDAlLFxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAwLjM7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDAuOCk7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEuMik7XG4gICAgfVxufVxuXG4vKiBUeXBpbmcgaW5kaWNhdG9yIGZvciBBSSBtZXNzYWdlcyAqL1xuLnR5cGluZ0luZGljYXRvciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICBhbmltYXRpb246IG1lc3NhZ2VTbGlkZUluIDAuNHMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xufVxuXG4udHlwaW5nSW5kaWNhdG9yIC5hdmF0YXIge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBtYXJnaW46IDAgMTJweCA0cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi50eXBpbmdJbmRpY2F0b3IgLmF2YXRhciBpbWcge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWY2ZmI7XG4gICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xufVxuXG4udHlwaW5nQnViYmxlIHtcbiAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA2cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDRweDtcbiAgICBtaW4taGVpZ2h0OiAyNHB4O1xufVxuXG4udHlwaW5nRG90cyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDRweDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4udHlwaW5nRG90IHtcbiAgICB3aWR0aDogOHB4O1xuICAgIGhlaWdodDogOHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNmI3MjgwIDAlLCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuNikgMTAwJSk7XG4gICAgYW5pbWF0aW9uOiB0eXBpbmdCb3VuY2UgMS40cyBpbmZpbml0ZSBlYXNlLWluLW91dDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4udHlwaW5nRG90Om50aC1jaGlsZCgxKSB7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAtMC4zMnM7XG59XG5cbi50eXBpbmdEb3Q6bnRoLWNoaWxkKDIpIHtcbiAgICBhbmltYXRpb24tZGVsYXk6IC0wLjE2cztcbn1cblxuLnR5cGluZ0RvdDpudGgtY2hpbGQoMykge1xuICAgIGFuaW1hdGlvbi1kZWxheTogMHM7XG59XG5cbkBrZXlmcmFtZXMgdHlwaW5nQm91bmNlIHtcbiAgICAwJSxcbiAgICA4MCUsXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC44KSB0cmFuc2xhdGVZKDApO1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgfVxuICAgIDQwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKSB0cmFuc2xhdGVZKC04cHgpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UuaXNNZSB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlLmlzTWUgLm1lc3NhZ2VUZXh0IHtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNnB4O1xufVxuXG4ucmF0aW5nU3RhciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xuICAgIGNvbG9yOiB2YXIoLS1zdGFyLWluYWN0aXZlLWNvbG9yLCAjY2NjKTtcbn1cblxuLnJhdGluZ1N0YXIuYWN0aXZlIHtcbiAgICBjb2xvcjogI2ZmZDcwMDtcbn1cblxuLyogU2VuZGVyIEF2YXRhciAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLmF2YXRhciB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICBtYXJnaW46IDAgMTJweCA0cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIGltZyB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYXZhdGFyLWJnLWNvbG9yLCAjZWVmNmZiKTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZSwgYm94LXNoYWRvdyAwLjJzIGVhc2U7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5hdmF0YXIgaW1nOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuLyogTWVzc2FnZSB0ZXh0IGJ1YmJsZSAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLm1lc3NhZ2VUZXh0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZXNzYWdlLWJnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWVzc2FnZS10ZXh0LWNvbG9yKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogMTRweCAxOHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgbWF4LXdpZHRoOiBtaW4oNzAlLCA2MDBweCk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG59XG5cbi8qIENvcHkgYnV0dG9uIHN0eWxlcyAqL1xuLmNvcHlCdXR0b25Db250YWluZXIge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICB0b3A6IDhweDtcbiAgICByaWdodDogMTBweDtcbiAgICB6LWluZGV4OiAyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5tZXNzYWdlVGV4dDpob3ZlciAuY29weUJ1dHRvbkNvbnRhaW5lcixcbi5jb3B5QnV0dG9uQ29udGFpbmVyOmZvY3VzLXdpdGhpbiB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbn1cblxuLmNvcHlCdXR0b24ge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBwYWRkaW5nOiAycHggNXB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLCAwLCAwLCAwLjA3KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMsIGJveC1zaGFkb3cgMC4xNXMsIGJvcmRlciAwLjE1cztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgb3BhY2l0eTogMC43O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmNvcGllZFRvb2x0aXAge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdG9wOiAxMTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICBiYWNrZ3JvdW5kOiAjMjIyO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHBhZGRpbmc6IDZweCAxNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDAuOThlbTtcbiAgICBib3gtc2hhZG93OiAwIDJweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xOCk7XG4gICAgb3BhY2l0eTogMC45NztcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB6LWluZGV4OiAxMDA7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgYW5pbWF0aW9uOiBjb3BpZWRUb29sdGlwRmFkZUluIDAuMnM7XG4gICAgbWF4LXdpZHRoOiAyMjBweDtcbiAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbi5jb3BpZWRUb29sdGlwTGVmdCB7XG4gICAgbGVmdDogMCAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uY29waWVkVG9vbHRpcFJpZ2h0IHtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyogUmVtb3ZlZCByaWdodC1hbGlnbmVkIG92ZXJyaWRlIHRvIGtlZXAgdG9vbHRpcCBwb3NpdGlvbiBzdGFibGUgKi9cblxuQGtleWZyYW1lcyBjb3BpZWRUb29sdGlwRmFkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoOHB4KSBzY2FsZSgwLjk3KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAwLjk3O1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICB9XG59XG5cbi5jb3B5QnV0dG9uOmhvdmVyLFxuLmNvcHlCdXR0b246Zm9jdXMge1xuICAgIGJvcmRlcjogMS41cHggc29saWQgI2JiYjtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xufVxuXG4uY29weUJ1dHRvbiBzdmcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubWVzc2FnZVRleHQgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xufVxuXG4ubWVzc2FnZVRleHQgaDIge1xuICAgIGZvbnQtc2l6ZTogMS43NWVtO1xufVxuXG4ubWVzc2FnZVRleHQgaDMge1xuICAgIGZvbnQtc2l6ZTogMS41ZW07XG59XG5cbi5tZXNzYWdlVGV4dCBoNCB7XG4gICAgZm9udC1zaXplOiAxLjI1ZW07XG59XG5cbi5tZXNzYWdlVGV4dCBoNSB7XG4gICAgZm9udC1zaXplOiAxLjFlbTtcbn1cblxuLm1lc3NhZ2VUZXh0IHVsIHtcbiAgICBsaXN0LXN0eWxlOiBkaXNjO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4ubWVzc2FnZVRleHQgb2wge1xuICAgIGxpc3Qtc3R5bGU6IGRlY2ltYWw7XG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG59XG5cbi5tZXNzYWdlVGV4dCBpbWcsXG4ubWVzc2FnZVRleHQgcHJlLFxuLm1lc3NhZ2VUZXh0IGJsb2NrcXVvdGUsXG4ubWVzc2FnZVRleHQgdGFibGUge1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG59XG5cbi5tZXNzYWdlVGV4dCBwcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMwMDAwMDBmZjtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZzogMWVtO1xufVxuXG4ubWVzc2FnZVRleHQgYmxvY2txdW90ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZmNjO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICBjb2xvcjogIzAwMDtcbiAgICBwYWRkaW5nOiAxZW07XG59XG5cbi5tZXNzYWdlVGV4dCBjb2RlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogI2NjY2NjYzU1O1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLm1lc3NhZ2VUZXh0IHByZSBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwY2M7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuXG4ubWVzc2FnZVRleHQgLmNoYXQtY29kZS1ibG9jayB7XG4gICAgYmFja2dyb3VuZDogIzE4MWMyMztcbiAgICBjb2xvcjogI2Y4ZmFmYztcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIGJvcmRlci1jb2xvcjogIzIzMjcyZjtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgICBmb250LWZhbWlseTogJ0ZpcmEgTW9ubycsICdNZW5sbycsICdDb25zb2xhcycsICdMaWJlcmF0aW9uIE1vbm8nLCBtb25vc3BhY2U7XG59XG4ubWVzc2FnZVRleHQgLmNoYXQtY29kZS1ibG9jayBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgd2hpdGUtc3BhY2U6IHByZTtcbiAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG4ubWVzc2FnZVRleHQgdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XG4gICAgbWFyZ2luOiAxNnB4IDA7XG4gICAgYmFja2dyb3VuZDogI2Y4ZmFmYzsgLyogU3Ryb25nZXIgbGlnaHQgYmFja2dyb3VuZCBmb3IgY29udHJhc3QgKi9cbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGNvbG9yOiAjMTcyMjNiOyAvKiBEYXJrIHRleHQgZm9yIGNvbnRyYXN0ICovXG59XG4ubWVzc2FnZVRleHQgdGgsXG4ubWVzc2FnZVRleHQgdGQge1xuICAgIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2QxZGJlODtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGNvbG9yOiAjMTcyMjNiOyAvKiBFbnN1cmUgc3Ryb25nIHRleHQgY29sb3IgZm9yIGFsbCBjZWxscyAqL1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG59XG4ubWVzc2FnZVRleHQgdGgge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2VhZjNmYSA4MCUsICNkMWUzZjggMTAwJSk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogIzE3MjIzYjsgLyogU3Ryb25nIGhlYWRlciB0ZXh0ICovXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNiNWM3ZGU7XG59XG4ubWVzc2FnZVRleHQgdHI6bGFzdC1jaGlsZCB0ZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cbi5tZXNzYWdlVGV4dCB0cjpudGgtY2hpbGQoZXZlbikgdGQge1xuICAgIGJhY2tncm91bmQ6ICNlYWYzZmE7XG59XG4ubWVzc2FnZVRleHQgdHI6aG92ZXIgdGQge1xuICAgIGJhY2tncm91bmQ6ICNjYmUwZjc7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xufVxuLm1lc3NhZ2VUZXh0IHRhYmxlIHtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubWVzc2FnZVRleHQgdGg6Zmlyc3QtY2hpbGQsXG4ubWVzc2FnZVRleHQgdGQ6Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDEycHg7XG59XG4ubWVzc2FnZVRleHQgdGg6bGFzdC1jaGlsZCxcbi5tZXNzYWdlVGV4dCB0ZDpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMTJweDtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLm1lc3NhZ2VUZXh0OmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xufVxuXG4vKiBNZXNzYWdlIGJ1dHRvbnMgY29udGFpbmVyICovXG4ubWVzc2FnZUJ1dHRvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogOHB4O1xuICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgcGFkZGluZy10b3A6IDEycHg7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMTI1IDEyNSAxMjUgLyAwLjgzKTtcbn1cblxuLyogSW5kaXZpZHVhbCBtZXNzYWdlIGJ1dHRvbiAqL1xuLm1lc3NhZ2VCdXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogOHB4IDE0cHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC45KTtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4ubWVzc2FnZUJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAxMzIsIDI1NSwgMC4xKTtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjE1KTtcbn1cblxuLm1lc3NhZ2VCdXR0b246YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjFzIGVhc2U7XG59XG5cbi8qIFJlbW92ZSBkZWZhdWx0IG1hcmtkb3duIHN0eWxlcyBmcm9tIGJ1dHRvbiBjb250ZW50ICovXG4ubWVzc2FnZUJ1dHRvbiBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbn1cblxuLm1lc3NhZ2VCdXR0b24gc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xufVxuXG4ubWVzc2FnZUJ1dHRvbiBlbSB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4vKiBSYXRpbmcgc3lzdGVtICovXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAucmF0aW5nIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAtOHB4O1xuICAgIHJpZ2h0OiA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDJweDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1pbi13aWR0aDogMjRweDtcbiAgICB6LWluZGV4OiAxO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIHBhZGRpbmc6IDRweCA2cHg7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDRweCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZTpob3ZlciAucmF0aW5nIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLnJhdGluZzpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjkpO1xuICAgIHBhZGRpbmc6IDZweCA4cHg7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5yYXRpbmcgc3BhbiB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZSwgY29sb3IgMC4ycyBlYXNlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAxNnB4O1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAucmF0aW5nOmhvdmVyIHNwYW4ge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbn1cblxuLyogQ2hhdCBpbnB1dCBhcmVhICovXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQge1xuICAgIHotaW5kZXg6IDEwO1xuICAgIGdyaWQtYXJlYTog8J+TnTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDEycHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vKiBGaWxlIHVwbG9hZCBkcmFnLWFuZC1kcm9wIHN0eWxlcyAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdElucHV0LmRyYWdPdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpIDAlLCByZ2JhKDAsIDEzMiwgMjU1LCAwLjA1KSAxMDAlKTtcbiAgICBib3JkZXItdG9wOiAycHggc29saWQgcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbn1cblxuLyogRmlsZSBwcmV2aWV3IGNvbnRhaW5lciAqL1xuLmZpbGVQcmV2aWV3Q29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDhweDtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG5cbi8qIEluZGl2aWR1YWwgZmlsZSBwcmV2aWV3ICovXG4uZmlsZVByZXZpZXcge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5maWxlUHJldmlldzpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjE1KTtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4zKTtcbn1cblxuLmZpbGVJY29uIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgb3BhY2l0eTogMC43O1xufVxuXG4uZmlsZUluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDJweDtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5maWxlTmFtZSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjb2xvcjogYmxhY2s7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIG1heC13aWR0aDogMTUwcHg7XG59XG5cbi5maWxlU2l6ZSB7XG4gICAgY29sb3I6ICM2YjcyODA7XG4gICAgZm9udC1zaXplOiAxMXB4O1xufVxuXG4ucmVtb3ZlRmlsZUJ1dHRvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDAsIDAsIDAuMSk7XG4gICAgY29sb3I6ICNmZjQ0NDQ7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ucmVtb3ZlRmlsZUJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDAsIDAsIDAuMik7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xufVxuXG4vKiBJbnB1dCBjb250YWluZXIgZm9yIHRleHRhcmVhIGFuZCBidXR0b25zICovXG4uaW5wdXRDb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEycHg7XG59XG5cbi5pbnB1dENvbnRhaW5lciB0ZXh0YXJlYTo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIG9wYWNpdHk6IDAuNztcbn1cblxuLyogQXR0YWNobWVudCBidXR0b24gKi9cbi5hdHRhY2htZW50QnV0dG9uIHtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjIpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4wNSk7XG4gICAgY29sb3I6ICM2YjcyODA7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5hdHRhY2htZW50QnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbiAgICBjb2xvcjogIzAwODRmZjtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xufVxuXG4uYXR0YWNobWVudEJ1dHRvbjpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKiBWb2ljZSBCdXR0b24gKi9cbi52b2ljZUJ1dHRvbiB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4yKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMDUpO1xuICAgIGNvbG9yOiAjNmI3MjgwO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4udm9pY2VCdXR0b246aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTMyLCAyNTUsIDAuMSk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpO1xuICAgIGNvbG9yOiAjMDA4NGZmO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG59XG5cbi52b2ljZUJ1dHRvbkFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDAsIDAsIDAuMSkgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAwLCAwLCAwLjMpICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICNmZjAwMDAgIWltcG9ydGFudDtcbiAgICBhbmltYXRpb246IHZvaWNlUmVjb3JkaW5nUHVsc2UgMS41cyBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyB2b2ljZVJlY29yZGluZ1B1bHNlIHtcbiAgICAwJSB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAgcmdiYSgyNTUsIDAsIDAsIDAuNCk7XG4gICAgfVxuICAgIDcwJSB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgyNTUsIDAsIDAsIDApO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMCByZ2JhKDI1NSwgMCwgMCwgMCk7XG4gICAgfVxufVxuXG4vKiBVcGxvYWQgcHJvZ3Jlc3MgaW5kaWNhdG9yICovXG4udXBsb2FkUHJvZ3Jlc3Mge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEycHg7XG4gICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAxMzIsIDI1NSwgMC4xKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDEzMiwgMjU1LCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgY29sb3I6ICMwMDg0ZmY7XG59XG5cbi51cGxvYWRQcm9ncmVzc0JhciB7XG4gICAgZmxleDogMTtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4udXBsb2FkUHJvZ3Jlc3NGaWxsIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjMDA4NGZmLCByZ2JhKDAsIDEzMiwgMjU1LCAwLjgpKTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgYW5pbWF0aW9uOiB1cGxvYWRQcm9ncmVzcyAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIHVwbG9hZFByb2dyZXNzIHtcbiAgICAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxufVxuXG4vKiBEcmFnIG92ZXJsYXkgKi9cbi5kcmFnT3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCByZ2JhKDAsIDEzMiwgMjU1LCAwLjUpO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICB6LWluZGV4OiAyMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmRyYWdPdmVybGF5Q29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMnB4O1xuICAgIGNvbG9yOiAjMDA4NGZmO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZHJhZ092ZXJsYXlDb250ZW50IHN2ZyB7XG4gICAgb3BhY2l0eTogMC43O1xufVxuXG4vKiBDaGF0IGlucHV0IGZpZWxkICovXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgdGV4dGFyZWEge1xuICAgIGZsZXg6IDE7XG4gICAgcGFkZGluZzogMTZweCAyMHB4O1xuXG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAyNXB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4wNSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpO1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgIG1heC1oZWlnaHQ6IDEyMHB4O1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBsaW5lLWhlaWdodDogMS40O1xuICAgIHJlc2l6ZTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICMwMDg0ZmY7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjA4KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCA0cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4xKSwgMCA4cHggMzJweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjE1KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB0ZXh0YXJlYTpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC42O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgdHJhbnNmb3JtOiBub25lO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgdGV4dGFyZWE6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBvcGFjaXR5OiAwLjc7XG59XG5cbi8qIENoYXQgc2VuZCBidXR0b24gKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCBidXR0b24ge1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwODRmZiAwJSwgIzAwNjZjYyAxMDAlKTtcbiAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7XG4gICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICBtaW4td2lkdGg6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgbWluLWhlaWdodDogdW5zZXQgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nLWxlZnQ6IHVuc2V0O1xuICAgIHBhZGRpbmctcmlnaHQ6IHVuc2V0O1xuXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgYnV0dG9uIGltZyB7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb2JqZWN0LWZpdDogY29udGFpbjtcbn1cblxuLyogU2Nyb2xsIHRvIGJvdHRvbSBidXR0b24gKi9cblxuLnNjcm9sbFRvQm90dG9tQ29udGFpbmVyIHtcbiAgICAvKi9cbiAgICBvdXRsaW5lOiAxcHggZG90dGVkIHJlZDtcbiAgICAvKiovXG5cbiAgICB6LWluZGV4OiAyMDtcbiAgICBncmlkLWFyZWE6IPCfk507XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLnNjcm9sbFRvQm90dG9tQ29udGFpbmVyIC5zY3JvbGxUb0JvdHRvbSB7XG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcblxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC0xNTAlKTtcbiAgICB3aWR0aDogNDhweDtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCAwIDAgLyAwLjUpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigzcHgpO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgIGFuaW1hdGlvbjogc2Nyb2xsQnV0dG9uU2xpZGVJbiAwLjNzIGVhc2Utb3V0O1xufVxuXG5Aa2V5ZnJhbWVzIHNjcm9sbEJ1dHRvblNsaWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAyMHB4KSBzY2FsZSgwLjgpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDAuOTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG4uc2Nyb2xsVG9Cb3R0b206aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC0xNjAlKSBzY2FsZSgxLjA1KTtcbn1cblxuLnNjcm9sbFRvQm90dG9tOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTE2MCUpIHNjYWxlKDAuOTUpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjFzIGVhc2U7XG59XG5cbi8qIFJhdGluZyBtb2RhbCAqL1xuLnJhdGluZ01vZGFsIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHotaW5kZXg6IDEwMDA7XG4gICAgYW5pbWF0aW9uOiBtb2RhbEZhZGVJbiAwLjNzIGVhc2Utb3V0O1xufVxuXG5Aa2V5ZnJhbWVzIG1vZGFsRmFkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gICAgfVxufVxuXG4ucmF0aW5nTW9kYWxDb250ZW50IHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIGNvbG9yOiAjMGYxNzI0O1xuICAgIHBhZGRpbmc6IDMycHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICB3aWR0aDogOTAlO1xuICAgIG1heC13aWR0aDogNDgwcHg7XG4gICAgYm94LXNoYWRvdzogMCAyMHB4IDYwcHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4xKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7XG4gICAgYW5pbWF0aW9uOiBtb2RhbFNsaWRlSW4gMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG5cbiAgICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiwgJ09wZW5Nb2ppQmxhY2snO1xuICAgIC8qIDwtIFRPRE86IFvwn6egXVvwn46xXSBCZXR0ZXIsIGRlZmluZSBvdGhlciBmb250cyAqL1xufVxuXG5Aa2V5ZnJhbWVzIG1vZGFsU2xpZGVJbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KSBzY2FsZSgwLjk1KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG4ucmF0aW5nTW9kYWxDb250ZW50IGgzIHtcbiAgICBtYXJnaW46IDAgMCAyNHB4IDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBmb250LXNpemU6IDIwcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLnN0YXJzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogOHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG59XG5cbi5zdGFycyBzcGFuIHtcbiAgICBmb250LXNpemU6IDI4cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgcGFkZGluZzogNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbn1cblxuLnN0YXJzIHNwYW46aG92ZXIge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjE1LCAwLCAwLjEpO1xufVxuXG4ucmF0aW5nTW9kYWxTdGFyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XG59XG5cbi5yYXRpbmdJbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWluLWhlaWdodDogMTAwcHg7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxOHB4O1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjA1KTtcbiAgICBjb2xvcjogIzBiMTIyMDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xufVxuXG4ucmF0aW5nSW5wdXQ6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogIzAwODRmZjtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMDgpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDRweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG5cbi5yYXRpbmdJbnB1dFtyZWFkb25seV0ge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC41KTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMDEpO1xufVxuXG4ucmF0aW5nQWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogMTJweDtcbn1cblxuLnJhdGluZ0FjdGlvbnMgYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAxMnB4IDI0cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICBtaW4td2lkdGg6IDgwcHg7XG59XG5cbi5yYXRpbmdBY3Rpb25zIGJ1dHRvbjpmaXJzdC1jaGlsZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGNvbG9yOiAjMGIxMjIwO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4yKTtcbn1cblxuLnJhdGluZ0FjdGlvbnMgYnV0dG9uOmZpcnN0LWNoaWxkOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMik7XG4gICAgY29sb3I6ICMwYjEyMjA7XG59XG5cbi5yYXRpbmdBY3Rpb25zIGJ1dHRvbjpsYXN0LWNoaWxkIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA4NGZmIDAlLCAjMDA2NmNjIDEwMCUpO1xuICAgIGNvbG9yOiAjZmZmZmZmO1xufVxuXG4ucmF0aW5nQWN0aW9ucyBidXR0b246bGFzdC1jaGlsZDpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwNzFkMSAwJSwgIzAwNTJhMyAxMDAlKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpO1xufVxuXG4ucmF0aW5nQWN0aW9ucyBidXR0b246bGFzdC1jaGlsZDpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi8qIE5ldyBjaGF0IGJ1dHRvbiBzdHlsaW5nIC0gTWF0Y2hlcyB0aGUgc2xlZWsgY2hhdCBtZXNzYWdlIGRlc2lnbiAqL1xuLmNoYXRCdXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgZ2FwOiA4cHggIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAxMnB4IDE2cHggIWltcG9ydGFudDtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA4NGZmIDAlLCAjMDA2NmNjIDEwMCUpICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxM3B4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjMgIWltcG9ydGFudDtcbiAgICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCkgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMykgIWltcG9ydGFudDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCkgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb24gIWltcG9ydGFudDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xuICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICBtaW4td2lkdGg6IDExMHB4ICFpbXBvcnRhbnQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xufVxuXG4uY2hhdEJ1dHRvbjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IC0xMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMiksIHRyYW5zcGFyZW50KTtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuNXMgZWFzZTtcbn1cblxuLmNoYXRCdXR0b246aG92ZXI6OmJlZm9yZSB7XG4gICAgbGVmdDogMTAwJTtcbn1cblxuLmNoYXRCdXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDk5ZmYgMCUsICMwMDc3ZGQgMTAwJSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpIHNjYWxlKDEuMDIpO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggcmdiYSgwLCAxMzIsIDI1NSwgMC40KTtcbn1cblxuLmNoYXRCdXR0b246YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpIHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMgZWFzZTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG59XG5cbi5jaGF0QnV0dG9uOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKSwgMCAwIDAgM3B4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG59XG5cbi5jaGF0QnV0dG9uIHN2ZyB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSk7XG59XG5cbi5jaGF0QnV0dG9uOmhvdmVyIHN2ZyB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKSBzY2FsZSgxLjEpO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4zKSk7XG59XG5cbi5jaGF0QnV0dG9uVGV4dCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgb3BhY2l0eTogMTtcbn1cblxuLmNoYXRCdXR0b246aG92ZXIgLmNoYXRCdXR0b25UZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMXB4KTtcbn1cblxuLyogVXNlIHRlbXBsYXRlIGJ1dHRvbiBzdHlsaW5nIC0gbWF0Y2hlcyB0aGUgY2hhdEJ1dHRvbiBhbmQgc2F2ZUJ1dHRvbiAqL1xuLnVzZVRlbXBsYXRlQnV0dG9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGdhcDogOHB4ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMTJweCAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwODRmZiAwJSwgIzAwNjZjYyAxMDAlKSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMTNweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDtcbiAgICBsaW5lLWhlaWdodDogMS4zICFpbXBvcnRhbnQ7XG4gICAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpICFpbXBvcnRhbnQ7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uICFpbXBvcnRhbnQ7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmUgIWltcG9ydGFudDtcbiAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgbWluLXdpZHRoOiAxMTBweCAhaW1wb3J0YW50O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSwgdHJhbnNwYXJlbnQpO1xuICAgIHRyYW5zaXRpb246IGxlZnQgMC41cyBlYXNlO1xufVxuXG4udXNlVGVtcGxhdGVCdXR0b246aG92ZXI6OmJlZm9yZSB7XG4gICAgbGVmdDogMTAwJTtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA5OWZmIDAlLCAjMDA3N2RkIDEwMCUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KSBzY2FsZSgxLjAyKTtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyNHB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuNCk7XG59XG5cbi51c2VUZW1wbGF0ZUJ1dHRvbjphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCkgdHJhbnNsYXRlWSgtMXB4KTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xcyBlYXNlO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKSwgMCAwIDAgM3B4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG59XG5cbi51c2VUZW1wbGF0ZUJ1dHRvbiBzdmcge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KTtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMikpO1xufVxuXG4udXNlVGVtcGxhdGVCdXR0b246aG92ZXIgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjMpKTtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOmhvdmVyIC5jaGF0QnV0dG9uVGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDFweCk7XG59XG5cbi5zYXZlQnV0dG9uQ29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uc2F2ZU1lbnUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwMCU7XG4gICAgbGVmdDogMDtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgei1pbmRleDogMTA7XG4gICAgbWluLXdpZHRoOiAxMjBweDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbn1cblxuLnNhdmVNZW51SXRlbSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogOHB4IDE2cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6ICMxMTE7XG59XG5cbi5zYXZlTWVudUl0ZW06aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7XG59XG5cbi8qIFBhdXNlL1Jlc3VtZSBidXR0b24gdmFyaWFudCAocmV1c2VzIC5jaGF0QnV0dG9uIGJhc2Ugc3R5bGVzIGZvciBEUlkpICovXG4ucGF1c2VCdXR0b24ge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZmIzNDcgMCUsICNmZjhjNDIgMTAwJSkgIWltcG9ydGFudDsgLyogV2FybSBvcmFuZ2UgZm9yIFwiYWN0aXZlL3J1bm5pbmdcIiAqL1xufVxuXG4ucGF1c2VCdXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZmMwNjcgMCUsICNmZjllNWYgMTAwJSkgIWltcG9ydGFudDtcbn1cblxuLnBhdXNlQnV0dG9uLnBhdXNpbmcge1xuICAgIG9wYWNpdHk6IDAuNiAhaW1wb3J0YW50O1xuICAgIGN1cnNvcjogd2FpdCAhaW1wb3J0YW50O1xufVxuXG4ucGF1c2VCdXR0b24ucGF1c2VkIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMTBiOTgxIDAlLCAjMDU5NjY5IDEwMCUpICFpbXBvcnRhbnQ7IC8qIEdyZWVuIHdoZW4gcGF1c2VkIChyZWFkeSB0byByZXN1bWUpICovXG59XG5cbi5wYXVzZUJ1dHRvbi5wYXVzZWQ6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMzNGQzOTkgMCUsICMwNTk2NjkgMTAwJSkgIWltcG9ydGFudDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgc2NhbGUoMS4wMik7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDE2LCAxODUsIDEyOSwgMC4zNSk7XG59XG5cbi5wYXVzZUJ1dHRvbiBzdmcge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG59XG5cbi5wYXVzZUJ1dHRvbi5wYXVzZWQgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbi5wYXVzZUJ1dHRvbi5wYXVzaW5nIHN2ZyB7XG4gICAgb3BhY2l0eTogMC44O1xufVxuXG4vKiBWb2ljZSBjYWxsIGluZGljYXRvciBiYXIgKi9cbi52b2ljZUNhbGxJbmRpY2F0b3JCYXIge1xuICAgIGdyaWQtYXJlYTog8J+fpjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxMnB4IDIwcHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgzNCwgMTk3LCA5NCwgMC4xKSAwJSwgcmdiYSgxNiwgMTg1LCAxMjksIDAuMSkgMTAwJSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMzQsIDE5NywgOTQsIDAuMyk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbn1cblxuLyogVm9pY2UgY2FsbCBpbmRpY2F0b3IgKi9cbi52b2ljZUNhbGxJbmRpY2F0b3Ige1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA4cHg7XG4gICAgcGFkZGluZzogOHB4IDE2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgzNCwgMTk3LCA5NCwgMC4yKSAwJSwgcmdiYSgxNiwgMTg1LCAxMjksIDAuMikgMTAwJSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgzNCwgMTk3LCA5NCwgMC40KTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIGNvbG9yOiAjMTBiOTgxO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgzNCwgMTk3LCA5NCwgMC4yKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi52b2ljZUNhbGxJbmRpY2F0b3Igc3ZnIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgYW5pbWF0aW9uOiB2b2ljZUNhbGxJY29uUHVsc2UgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbi52b2ljZUNhbGxJbmRpY2F0b3Igc3BhbiB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLyogVm9pY2UgY2FsbCBwdWxzZSBhbmltYXRpb24gKi9cbi52b2ljZUNhbGxQdWxzZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiA4cHg7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIHdpZHRoOiA4cHg7XG4gICAgaGVpZ2h0OiA4cHg7XG4gICAgYmFja2dyb3VuZDogIzEwYjk4MTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYW5pbWF0aW9uOiB2b2ljZUNhbGxQdWxzZSAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIHZvaWNlQ2FsbEljb25QdWxzZSB7XG4gICAgMCUsXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgICAgICAgb3BhY2l0eTogMC44O1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyB2b2ljZUNhbGxQdWxzZSB7XG4gICAgMCUsXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgxKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgNTAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDEuMyk7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICB9XG59XG5cbi8qIFZvaWNlIGNhbGwgaW5kaWNhdG9yIGluIG1lc3NhZ2VzICovXG4uY2hhdE1lc3NhZ2UgLnZvaWNlQ2FsbEluZGljYXRvciB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xufVxuXG4uY2hhdE1lc3NhZ2UgLnZvaWNlQ2FsbEluZGljYXRvciBzdmcge1xuICAgIHdpZHRoOiAxNHB4O1xuICAgIGhlaWdodDogMTRweDtcbn1cblxuLyogUmF0aW5nIGNvbmZpcm1hdGlvbiAqL1xuLnJhdGluZ0NvbmZpcm1hdGlvbiB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMjBweDtcbiAgICByaWdodDogMjBweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMTBiOTgxIDAlLCAjMDU5NjY5IDEwMCUpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBib3gtc2hhZG93OiAwIDhweCAzMnB4IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjMpO1xuICAgIHotaW5kZXg6IDEwMDE7XG4gICAgYW5pbWF0aW9uOiBjb25maXJtYXRpb25TbGlkZUluIDAuM3MgZWFzZS1vdXQ7XG4gICAgbWF4LXdpZHRoOiAzMDBweDtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7XG59XG5cbkBrZXlmcmFtZXMgY29uZmlybWF0aW9uU2xpZGVJbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG4vKiBNb2JpbGUgcmVzcG9uc2l2ZW5lc3MgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5hY3Rpb25zIHtcbiAgICAgICAgbWFyZ2luOiAxMnB4IDE2cHggMDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2VzIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAxMnB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAubWVzc2FnZVRleHQge1xuICAgICAgICBtYXgtd2lkdGg6IDg1JTtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLmF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICAgIG1hcmdpbjogMCAxMHB4IDRweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIGltZyB7XG4gICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMTJweDtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB0ZXh0YXJlYSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgcGFkZGluZzogMTRweCAxOHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMnB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCBidXR0b24ge1xuICAgICAgICB3aWR0aDogNDRweDtcbiAgICAgICAgaGVpZ2h0OiA0NHB4O1xuICAgIH1cblxuICAgIC5zY3JvbGxUb0JvdHRvbSB7XG4gICAgICAgIHdpZHRoOiA0NHB4O1xuICAgICAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSAxNjBweCk7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jaGF0QnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jaGF0QnV0dG9uVGV4dCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiBzdmcge1xuICAgICAgICB3aWR0aDogMThweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDE4cHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24gLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5yYXRpbmdNb2RhbENvbnRlbnQge1xuICAgICAgICBtYXJnaW46IDE2cHg7XG4gICAgICAgIHBhZGRpbmc6IDI0cHggMjBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgbWF4LWhlaWdodDogODB2aDtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB9XG5cbiAgICAuc3RhcnMge1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICB9XG5cbiAgICAuc3RhcnMgc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMzJweDtcbiAgICAgICAgcGFkZGluZzogOHB4O1xuICAgIH1cblxuICAgIC5yYXRpbmdBY3Rpb25zIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xuICAgICAgICBnYXA6IDhweDtcbiAgICB9XG5cbiAgICAucmF0aW5nQWN0aW9ucyBidXR0b24ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMTRweDtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgLmFjdGlvbnMge1xuICAgICAgICBtYXJnaW46IDhweCAxMnB4IDA7XG4gICAgICAgIGdhcDogNHB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlcyB7XG4gICAgICAgIHBhZGRpbmc6IDEycHggOHB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5tZXNzYWdlVGV4dCB7XG4gICAgICAgIG1heC13aWR0aDogOTAlO1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDE0cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgbWFyZ2luOiAwIDhweCA0cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLmF2YXRhciBpbWcge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0SW5wdXQge1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDhweDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhIHtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IGJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jaGF0QnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jaGF0QnV0dG9uVGV4dCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiBzdmcge1xuICAgICAgICB3aWR0aDogMThweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDE4cHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24gLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5zY3JvbGxUb0JvdHRvbSB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSAxNDBweCk7XG4gICAgfVxuXG4gICAgLnJhdGluZ01vZGFsIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIH1cblxuICAgIC5yYXRpbmdNb2RhbENvbnRlbnQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4IDIwcHggMCAwO1xuICAgICAgICBtYXgtaGVpZ2h0OiA3MHZoO1xuICAgICAgICBwYWRkaW5nOiAyNHB4IDE2cHggMjBweDtcbiAgICB9XG59XG5cbi8qIFJlZHVjZWQgbW90aW9uIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UsXG4gICAgLnNjcm9sbFRvQm90dG9tLFxuICAgIC5yYXRpbmdNb2RhbCxcbiAgICAucmF0aW5nTW9kYWxDb250ZW50LFxuICAgIC5yYXRpbmdDb25maXJtYXRpb24ge1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLm1lc3NhZ2VUZXh0LFxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB0ZXh0YXJlYSxcbiAgICAuY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgYnV0dG9uLFxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5hdmF0YXIgaW1nLFxuICAgIC5jaGF0QnV0dG9uIHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG59XG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAubWVzc2FnZVRleHQge1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhIHtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAzcHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IGJ1dHRvbiB7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICB9XG59XG5cbi8qKlxuICogVE9ETzogW/CfjIldIERSWSBNYXJrZG93biBwcmltaXRpdmVzIHN0eWxpbmdcbiAqL1xuIl19 */";
|
|
8083
|
+
var chatStyles = {"copiedToClipboardMessage":"Chat-module_copiedToClipboardMessage__apCPY","Chat":"Chat-module_Chat__j2eE5","chatMainFlow":"Chat-module_chatMainFlow__--8FE","chatBar":"Chat-module_chatBar__fLECN","TasksInProgress":"Chat-module_TasksInProgress__fQfei","actions":"Chat-module_actions__gTZ5T","portal":"Chat-module_portal__uTOT8","left":"Chat-module_left__7l5Mn","right":"Chat-module_right__ABZrW","chatButton":"Chat-module_chatButton__d9VgA","chatButtonText":"Chat-module_chatButtonText__RkGB-","useTemplateButton":"Chat-module_useTemplateButton__xcJNR","chatChildren":"Chat-module_chatChildren__flOPK","chatMessages":"Chat-module_chatMessages__J2u2N","chatMessage":"Chat-module_chatMessage__nmLaZ","messageSlideIn":"Chat-module_messageSlideIn__soTy2","hasActionsAndFirstMessageIsLong":"Chat-module_hasActionsAndFirstMessageIsLong__5jgoZ","isNotCompleteMessage":"Chat-module_isNotCompleteMessage__Hj2K7","NonCompleteMessageFiller":"Chat-module_NonCompleteMessageFiller__G5-Ve","messageText":"Chat-module_messageText__XgNyQ","loadingPulse":"Chat-module_loadingPulse__VomRm","typingIndicator":"Chat-module_typingIndicator__S-CT-","avatar":"Chat-module_avatar__gL6bm","typingBubble":"Chat-module_typingBubble__0Lb7B","typingDots":"Chat-module_typingDots__srOBB","typingDot":"Chat-module_typingDot__dnhKT","typingBounce":"Chat-module_typingBounce__1yp2v","isMe":"Chat-module_isMe__nBtaV","ratingStar":"Chat-module_ratingStar__rRfqC","active":"Chat-module_active__lbYL-","copyButtonContainer":"Chat-module_copyButtonContainer__Rij0U","copyButton":"Chat-module_copyButton__DcxT5","copiedTooltip":"Chat-module_copiedTooltip__LH81j","copiedTooltipFadeIn":"Chat-module_copiedTooltipFadeIn__QekO1","copiedTooltipLeft":"Chat-module_copiedTooltipLeft__j-S-5","copiedTooltipRight":"Chat-module_copiedTooltipRight__R-2cE","chat-code-block":"Chat-module_chat-code-block__k8IyS","messageButtons":"Chat-module_messageButtons__WaOob","messageButton":"Chat-module_messageButton__mRnn-","rating":"Chat-module_rating__soc3M","chatInput":"Chat-module_chatInput__1Ecan","dragOver":"Chat-module_dragOver__bkS-g","filePreviewContainer":"Chat-module_filePreviewContainer__R70hm","filePreview":"Chat-module_filePreview__kq2aX","fileIcon":"Chat-module_fileIcon__zoSKW","fileInfo":"Chat-module_fileInfo__wBLi0","fileName":"Chat-module_fileName__bBujo","fileSize":"Chat-module_fileSize__ivliq","removeFileButton":"Chat-module_removeFileButton__0gakR","inputContainer":"Chat-module_inputContainer__bPt99","attachmentButton":"Chat-module_attachmentButton__qLO47","voiceButton":"Chat-module_voiceButton__d2zlP","voiceButtonActive":"Chat-module_voiceButtonActive__Uoi3W","voiceRecordingPulse":"Chat-module_voiceRecordingPulse__y2wJ5","uploadProgress":"Chat-module_uploadProgress__jBTKe","uploadProgressBar":"Chat-module_uploadProgressBar__Gutnt","uploadProgressFill":"Chat-module_uploadProgressFill__EgubT","dragOverlay":"Chat-module_dragOverlay__SEGoS","dragOverlayContent":"Chat-module_dragOverlayContent__gb9kF","scrollToBottomContainer":"Chat-module_scrollToBottomContainer__5rXpK","scrollToBottom":"Chat-module_scrollToBottom__nzxdZ","scrollButtonSlideIn":"Chat-module_scrollButtonSlideIn__XnImg","ratingModal":"Chat-module_ratingModal__XVKYm","modalFadeIn":"Chat-module_modalFadeIn__RPc3w","ratingModalContent":"Chat-module_ratingModalContent__CCdq7","modalSlideIn":"Chat-module_modalSlideIn__XXtgN","stars":"Chat-module_stars__PCzNO","ratingModalStar":"Chat-module_ratingModalStar__XkbHr","ratingInput":"Chat-module_ratingInput__z8Pv-","ratingActions":"Chat-module_ratingActions__nXcss","saveButtonContainer":"Chat-module_saveButtonContainer__lSNUJ","saveMenu":"Chat-module_saveMenu__-ph8y","saveMenuItem":"Chat-module_saveMenuItem__ISApL","pauseButton":"Chat-module_pauseButton__eeu7K","pausing":"Chat-module_pausing__pTx8b","paused":"Chat-module_paused__j-pya","voiceCallIndicatorBar":"Chat-module_voiceCallIndicatorBar__N2sWN","voiceCallIndicator":"Chat-module_voiceCallIndicator__tsaaG","voiceCallIconPulse":"Chat-module_voiceCallIconPulse__zZbJn","voiceCallPulse":"Chat-module_voiceCallPulse__XcGU4","ratingConfirmation":"Chat-module_ratingConfirmation__n16vb","confirmationSlideIn":"Chat-module_confirmationSlideIn__5U-wz"};
|
|
7728
8084
|
styleInject(css_248z$2);
|
|
7729
8085
|
|
|
7730
8086
|
var css_248z$1 = ".AvatarProfileTooltip-module_AvatarProfileTooltip__bZ020{background-color:#fff;border:1px solid #ccc;border-radius:10px;box-shadow:0 4px 8px rgba(0,0,0,.1);max-width:300px;padding:20px;position:fixed;z-index:1000}.AvatarProfileTooltip-module_arrow__wmM61{border-color:transparent transparent #fff;border-style:solid;border-width:0 10px 10px;filter:drop-shadow(0 -1px 1px rgba(0,0,0,.1));height:0;left:20px;position:absolute;top:-10px;width:0}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkF2YXRhclByb2ZpbGVUb29sdGlwLm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBSUkscUJBQXVCLENBQ3ZCLHFCQUFzQixDQUN0QixrQkFBbUIsQ0FDbkIsbUNBQXdDLENBQ3hDLGVBQWdCLENBTGhCLFlBQWEsQ0FGYixjQUFlLENBQ2YsWUFRSixDQUVBLDBDQVFJLHlDQUF1RCxDQUF2RCxrQkFBdUQsQ0FBdkQsd0JBQXVELENBQ3ZELDZDQUFrRCxDQU5sRCxRQUFTLENBR1QsU0FBVSxDQUxWLGlCQUFrQixDQUlsQixTQUFVLENBSFYsT0FRSiIsImZpbGUiOiJBdmF0YXJQcm9maWxlVG9vbHRpcC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLkF2YXRhclByb2ZpbGVUb29sdGlwIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgei1pbmRleDogMTAwMDtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIG1heC13aWR0aDogMzAwcHg7XG4gICAgLyogW/Cfp6BdIFdoYXQgaXMgdGhlIGJlc3QgbWF4LXdpZHRoIGZvciB0aGUgdG9vbHRpcCAqL1xufVxuXG4uYXJyb3cge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICB0b3A6IC0xMHB4O1xuICAgIGxlZnQ6IDIwcHg7XG4gICAgYm9yZGVyLXdpZHRoOiAwIDEwcHggMTBweCAxMHB4O1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgd2hpdGUgdHJhbnNwYXJlbnQ7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIC0xcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XG59XG4iXX0= */";
|
|
@@ -8009,7 +8365,7 @@ ChatMessageItem.displayName = 'ChatMessageItem';
|
|
|
8009
8365
|
*/
|
|
8010
8366
|
function Chat(props) {
|
|
8011
8367
|
var _a;
|
|
8012
|
-
const { title = 'Chat', messages, onChange, onMessage, onReset, onFeedback, onFileUpload,
|
|
8368
|
+
const { title = 'Chat', messages, onChange, onMessage, onReset, onFeedback, onFileUpload, onVoiceInput,
|
|
8013
8369
|
// isVoiceRecognitionButtonShown,
|
|
8014
8370
|
// voiceLanguage = 'en-US',
|
|
8015
8371
|
placeholderMessageContent, defaultMessage,
|
|
@@ -8280,7 +8636,7 @@ function Chat(props) {
|
|
|
8280
8636
|
// Handler for copy button
|
|
8281
8637
|
const handleCopy = () => { };
|
|
8282
8638
|
return (jsxs(Fragment, { children: [ratingConfirmation && jsx("div", { className: chatStyles.ratingConfirmation, children: ratingConfirmation }), jsx("div", { className: classNames(className, chatStyles.Chat, useChatCssClassName('Chat')), style, children: jsxs("div", { className: classNames(className, chatStyles.chatMainFlow, useChatCssClassName('chatMainFlow')), children: [children && jsx("div", { className: classNames(chatStyles.chatChildren), children: children }), !isAutoScrolling && (jsx("div", { className: chatStyles.scrollToBottomContainer, children: jsx("button", { "data-button-type": "custom", className: classNames(chatStyles.scrollToBottom, scrollToBottomCssClassName), onClick: scrollToBottom, children: jsx(ArrowIcon, { direction: "DOWN", size: 33 }) }) })), isVoiceCalling && (jsx("div", { className: chatStyles.voiceCallIndicatorBar, children: jsxs("div", { className: chatStyles.voiceCallIndicator, children: [jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: jsx("path", { d: "M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z" }) }), jsx("span", { children: "Voice call active" }), jsx("div", { className: chatStyles.voiceCallPulse })] }) })), (() => {
|
|
8283
|
-
const actionsContent = (jsxs("div", { className: classNames(actionsAlignmentClass), children: [onReset && postprocessedMessages.length !== 0 && (jsxs("button", { className: classNames(chatStyles.chatButton), onClick: () => {
|
|
8639
|
+
const actionsContent = (jsxs("div", { className: classNames(actionsAlignmentClass, actionsContainer && chatStyles.portal), children: [onReset && postprocessedMessages.length !== 0 && (jsxs("button", { className: classNames(chatStyles.chatButton), onClick: () => {
|
|
8284
8640
|
if (!confirm(`Do you really want to reset the chat?`)) {
|
|
8285
8641
|
return;
|
|
8286
8642
|
}
|
|
@@ -8362,7 +8718,10 @@ function Chat(props) {
|
|
|
8362
8718
|
return;
|
|
8363
8719
|
}
|
|
8364
8720
|
onChange(((_a = textareaRef.current) === null || _a === void 0 ? void 0 : _a.value) || '');
|
|
8365
|
-
} }), onFileUpload && (jsxs(Fragment, { children: [jsx("input", { ref: fileInputRef, type: "file", multiple: true, style: { display: 'none' }, onChange: handleFileInputChange }), jsx("button", { type: "button", className: chatStyles.attachmentButton, onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, disabled: isUploading, title: "Attach file", children: jsx(AttachmentIcon, { size: 20 }) })] })), jsx("button", { "data-button-type": "
|
|
8721
|
+
} }), onFileUpload && (jsxs(Fragment, { children: [jsx("input", { ref: fileInputRef, type: "file", multiple: true, style: { display: 'none' }, onChange: handleFileInputChange }), jsx("button", { type: "button", className: chatStyles.attachmentButton, onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, disabled: isUploading, title: "Attach file", children: jsx(AttachmentIcon, { size: 20 }) })] })), onVoiceInput && (jsx("button", { "data-button-type": "voice", className: classNames(chatStyles.voiceButton, isVoiceCalling && chatStyles.voiceButtonActive), onClick: (event) => {
|
|
8722
|
+
event.preventDefault();
|
|
8723
|
+
onVoiceInput();
|
|
8724
|
+
}, title: isVoiceCalling ? 'Stop voice call' : 'Start voice call', children: jsx(MicIcon, { size: 25 }) })), jsx("button", { "data-button-type": "call-to-action", ref: buttonSendRef, onClick: (event) => {
|
|
8366
8725
|
if (!onMessage) {
|
|
8367
8726
|
return;
|
|
8368
8727
|
}
|
|
@@ -8504,6 +8863,14 @@ function LlmChat(props) {
|
|
|
8504
8863
|
const buildInitialMessages = useCallback(() => (initialMessages ? [...initialMessages] : []), [initialMessages]);
|
|
8505
8864
|
const [messages, setMessages] = useState(() => buildInitialMessages());
|
|
8506
8865
|
const [tasksProgress, setTasksProgress] = useState([]);
|
|
8866
|
+
const [isVoiceCalling, setIsVoiceCalling] = useState(false);
|
|
8867
|
+
const mediaRecorderRef = useRef(null);
|
|
8868
|
+
// Refs to keep latest state for long-lived voice handlers
|
|
8869
|
+
const messagesRef = useRef([]);
|
|
8870
|
+
const participantsRef = useRef([]);
|
|
8871
|
+
const isProcessingVoiceChunkRef = useRef(false);
|
|
8872
|
+
const allVoiceChunksRef = useRef([]);
|
|
8873
|
+
const utteranceTimeoutRef = useRef(null);
|
|
8507
8874
|
/**
|
|
8508
8875
|
* Tracks whether the user (or system via persistence restoration) has interacted.
|
|
8509
8876
|
* We do NOT persist purely initialMessages until the user sends something.
|
|
@@ -8544,6 +8911,150 @@ function LlmChat(props) {
|
|
|
8544
8911
|
color: '#10b981',
|
|
8545
8912
|
},
|
|
8546
8913
|
], [llmTools.profile, llmTools.title]);
|
|
8914
|
+
// Keep refs in sync for usage inside long-lived callbacks
|
|
8915
|
+
useEffect(() => {
|
|
8916
|
+
messagesRef.current = messages;
|
|
8917
|
+
}, [messages]);
|
|
8918
|
+
useEffect(() => {
|
|
8919
|
+
participantsRef.current = participants;
|
|
8920
|
+
}, [participants]);
|
|
8921
|
+
// Handle voice input in a fluent, multi-message way:
|
|
8922
|
+
// - While the call is active we keep recording audio.
|
|
8923
|
+
// - When the user is silent for ~2 seconds, we treat it as the end of an utterance
|
|
8924
|
+
// and send one combined audio blob to the agent (one agent turn per utterance).
|
|
8925
|
+
const processCurrentUtterance = useCallback(async () => {
|
|
8926
|
+
var _a;
|
|
8927
|
+
if (!llmTools.callVoiceChatModel) {
|
|
8928
|
+
return;
|
|
8929
|
+
}
|
|
8930
|
+
if (isProcessingVoiceChunkRef.current) {
|
|
8931
|
+
return;
|
|
8932
|
+
}
|
|
8933
|
+
const chunks = allVoiceChunksRef.current;
|
|
8934
|
+
if (!chunks.length) {
|
|
8935
|
+
return;
|
|
8936
|
+
}
|
|
8937
|
+
isProcessingVoiceChunkRef.current = true;
|
|
8938
|
+
allVoiceChunksRef.current = [];
|
|
8939
|
+
const blob = new Blob(chunks, {
|
|
8940
|
+
type: ((_a = chunks[0]) === null || _a === void 0 ? void 0 : _a.type) || 'audio/webm',
|
|
8941
|
+
});
|
|
8942
|
+
const taskId = `voice_call_${Date.now()}`;
|
|
8943
|
+
setTasksProgress([{ id: taskId, name: 'Processing voice...', progress: 50 }]);
|
|
8944
|
+
try {
|
|
8945
|
+
const thread = props.thread ? [...props.thread] : [...messagesRef.current];
|
|
8946
|
+
const result = await llmTools.callVoiceChatModel(blob, {
|
|
8947
|
+
title: 'Voice Message',
|
|
8948
|
+
content: '',
|
|
8949
|
+
parameters: {},
|
|
8950
|
+
modelRequirements: { modelVariant: 'CHAT' },
|
|
8951
|
+
thread,
|
|
8952
|
+
});
|
|
8953
|
+
setTasksProgress([{ id: taskId, name: 'Playing response...', progress: 100 }]);
|
|
8954
|
+
const now = Date.now();
|
|
8955
|
+
const userMessage = {
|
|
8956
|
+
id: `user_${now}`,
|
|
8957
|
+
date: new Date(),
|
|
8958
|
+
from: userParticipantName,
|
|
8959
|
+
content: (result.userMessage || '(Voice message)'),
|
|
8960
|
+
isComplete: true,
|
|
8961
|
+
isVoiceCall: true,
|
|
8962
|
+
};
|
|
8963
|
+
const agentMessage = {
|
|
8964
|
+
id: `agent_${now}`,
|
|
8965
|
+
date: new Date(),
|
|
8966
|
+
from: llmParticipantName,
|
|
8967
|
+
content: (result.agentMessage || result.text),
|
|
8968
|
+
isComplete: true,
|
|
8969
|
+
isVoiceCall: true,
|
|
8970
|
+
};
|
|
8971
|
+
setMessages((prevMessages) => {
|
|
8972
|
+
const newMessages = [...prevMessages, userMessage, agentMessage];
|
|
8973
|
+
messagesRef.current = newMessages;
|
|
8974
|
+
if (onChange) {
|
|
8975
|
+
onChange(newMessages, participantsRef.current);
|
|
8976
|
+
}
|
|
8977
|
+
return newMessages;
|
|
8978
|
+
});
|
|
8979
|
+
// Play audio
|
|
8980
|
+
const audioUrl = URL.createObjectURL(result.audio);
|
|
8981
|
+
const audioEl = new Audio(audioUrl);
|
|
8982
|
+
audioEl.play();
|
|
8983
|
+
setTimeout(() => setTasksProgress([]), 1000);
|
|
8984
|
+
}
|
|
8985
|
+
catch (error) {
|
|
8986
|
+
console.error('Error calling Voice LLM:', error);
|
|
8987
|
+
setTasksProgress([]);
|
|
8988
|
+
}
|
|
8989
|
+
finally {
|
|
8990
|
+
isProcessingVoiceChunkRef.current = false;
|
|
8991
|
+
}
|
|
8992
|
+
}, [llmTools, onChange, userParticipantName, llmParticipantName, props.thread]);
|
|
8993
|
+
const handleVoiceInput = useCallback(async () => {
|
|
8994
|
+
if (!llmTools.callVoiceChatModel) {
|
|
8995
|
+
return;
|
|
8996
|
+
}
|
|
8997
|
+
if (isVoiceCalling) {
|
|
8998
|
+
// Stop recording and end call
|
|
8999
|
+
const recorder = mediaRecorderRef.current;
|
|
9000
|
+
if (recorder) {
|
|
9001
|
+
recorder.stop();
|
|
9002
|
+
}
|
|
9003
|
+
mediaRecorderRef.current = null;
|
|
9004
|
+
setIsVoiceCalling(false);
|
|
9005
|
+
// Process any remaining audio as the final utterance
|
|
9006
|
+
if (utteranceTimeoutRef.current) {
|
|
9007
|
+
clearTimeout(utteranceTimeoutRef.current);
|
|
9008
|
+
utteranceTimeoutRef.current = null;
|
|
9009
|
+
}
|
|
9010
|
+
void processCurrentUtterance();
|
|
9011
|
+
}
|
|
9012
|
+
else {
|
|
9013
|
+
// Start recording and keep listening for utterances separated by ~2s of silence
|
|
9014
|
+
try {
|
|
9015
|
+
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
|
9016
|
+
const mediaRecorder = new MediaRecorder(stream);
|
|
9017
|
+
mediaRecorderRef.current = mediaRecorder;
|
|
9018
|
+
allVoiceChunksRef.current = [];
|
|
9019
|
+
isProcessingVoiceChunkRef.current = false;
|
|
9020
|
+
if (utteranceTimeoutRef.current) {
|
|
9021
|
+
clearTimeout(utteranceTimeoutRef.current);
|
|
9022
|
+
utteranceTimeoutRef.current = null;
|
|
9023
|
+
}
|
|
9024
|
+
mediaRecorder.ondataavailable = (event) => {
|
|
9025
|
+
const chunk = event.data;
|
|
9026
|
+
if (!chunk || chunk.size === 0) {
|
|
9027
|
+
return;
|
|
9028
|
+
}
|
|
9029
|
+
// Accumulate chunks for the current utterance
|
|
9030
|
+
allVoiceChunksRef.current.push(chunk);
|
|
9031
|
+
// Reset the silence timer; if there is no new audio for 2s,
|
|
9032
|
+
// treat it as the end of the current utterance.
|
|
9033
|
+
if (utteranceTimeoutRef.current) {
|
|
9034
|
+
clearTimeout(utteranceTimeoutRef.current);
|
|
9035
|
+
}
|
|
9036
|
+
utteranceTimeoutRef.current = setTimeout(() => {
|
|
9037
|
+
void processCurrentUtterance();
|
|
9038
|
+
}, 2000);
|
|
9039
|
+
};
|
|
9040
|
+
mediaRecorder.onstop = () => {
|
|
9041
|
+
mediaRecorder.stream.getTracks().forEach((track) => track.stop());
|
|
9042
|
+
if (utteranceTimeoutRef.current) {
|
|
9043
|
+
clearTimeout(utteranceTimeoutRef.current);
|
|
9044
|
+
utteranceTimeoutRef.current = null;
|
|
9045
|
+
}
|
|
9046
|
+
// Process any remaining audio when the recorder stops
|
|
9047
|
+
void processCurrentUtterance();
|
|
9048
|
+
};
|
|
9049
|
+
// Use timeslices so ondataavailable is fired continuously
|
|
9050
|
+
mediaRecorder.start(500);
|
|
9051
|
+
setIsVoiceCalling(true);
|
|
9052
|
+
}
|
|
9053
|
+
catch (err) {
|
|
9054
|
+
console.error('Error accessing microphone:', err);
|
|
9055
|
+
}
|
|
9056
|
+
}
|
|
9057
|
+
}, [isVoiceCalling, llmTools, processCurrentUtterance]);
|
|
8547
9058
|
// Handle user messages and LLM responses
|
|
8548
9059
|
const handleMessage = useCallback(async (messageContent) => {
|
|
8549
9060
|
hasUserInteractedRef.current = true;
|
|
@@ -8680,7 +9191,7 @@ function LlmChat(props) {
|
|
|
8680
9191
|
sendMessage._attach(handleMessage);
|
|
8681
9192
|
}
|
|
8682
9193
|
}, [sendMessage, handleMessage]);
|
|
8683
|
-
return (jsx(Chat, { ...restProps, messages, onReset, tasksProgress, participants, onMessage: handleMessage, onReset: handleReset }));
|
|
9194
|
+
return (jsx(Chat, { ...restProps, messages, onReset, tasksProgress, participants, onMessage: handleMessage, onReset: handleReset, onVoiceInput: llmTools.callVoiceChatModel ? handleVoiceInput : undefined, isVoiceCalling: isVoiceCalling }));
|
|
8684
9195
|
}
|
|
8685
9196
|
|
|
8686
9197
|
/**
|
|
@@ -9100,6 +9611,101 @@ function MockedChat(props) {
|
|
|
9100
9611
|
onMessage: isSimulationComplete && chatProps.onMessage ? chatProps.onMessage : undefined }));
|
|
9101
9612
|
}
|
|
9102
9613
|
|
|
9614
|
+
/**
|
|
9615
|
+
* Function `validatePipelineString` will validate the if the string is a valid pipeline string
|
|
9616
|
+
* It does not check if the string is fully logically correct, but if it is a string that can be a pipeline string or the string looks completely different.
|
|
9617
|
+
*
|
|
9618
|
+
* Note: [๐] This function is idempotent.
|
|
9619
|
+
*
|
|
9620
|
+
* @param {string} pipelineString the candidate for a pipeline string
|
|
9621
|
+
* @returns {PipelineString} the same string as input, but validated as valid
|
|
9622
|
+
* @throws {ParseError} if the string is not a valid pipeline string
|
|
9623
|
+
* @public exported from `@promptbook/core`
|
|
9624
|
+
*/
|
|
9625
|
+
function validatePipelineString(pipelineString) {
|
|
9626
|
+
if (isValidJsonString(pipelineString)) {
|
|
9627
|
+
throw new ParseError('Expected a book, but got a JSON string');
|
|
9628
|
+
}
|
|
9629
|
+
else if (isValidUrl(pipelineString)) {
|
|
9630
|
+
throw new ParseError(`Expected a book, but got just the URL "${pipelineString}"`);
|
|
9631
|
+
}
|
|
9632
|
+
else if (isValidFilePath(pipelineString)) {
|
|
9633
|
+
throw new ParseError(`Expected a book, but got just the file path "${pipelineString}"`);
|
|
9634
|
+
}
|
|
9635
|
+
else if (isValidEmail(pipelineString)) {
|
|
9636
|
+
throw new ParseError(`Expected a book, but got just the email "${pipelineString}"`);
|
|
9637
|
+
}
|
|
9638
|
+
// <- TODO: Implement the validation + add tests when the pipeline logic considered as invalid
|
|
9639
|
+
return pipelineString;
|
|
9640
|
+
}
|
|
9641
|
+
/**
|
|
9642
|
+
* TODO: [๐ง ][๐ด] Where is the best location for this file
|
|
9643
|
+
*/
|
|
9644
|
+
|
|
9645
|
+
/**
|
|
9646
|
+
* Function `isValidPipelineString` will validate the if the string is a valid pipeline string
|
|
9647
|
+
* It does not check if the string is fully logically correct, but if it is a string that can be a pipeline string or the string looks completely different.
|
|
9648
|
+
*
|
|
9649
|
+
* @param {string} pipelineString the candidate for a pipeline string
|
|
9650
|
+
* @returns {boolean} if the string is a valid pipeline string
|
|
9651
|
+
* @public exported from `@promptbook/core`
|
|
9652
|
+
*/
|
|
9653
|
+
function isValidPipelineString(pipelineString) {
|
|
9654
|
+
try {
|
|
9655
|
+
validatePipelineString(pipelineString);
|
|
9656
|
+
return true;
|
|
9657
|
+
}
|
|
9658
|
+
catch (error) {
|
|
9659
|
+
assertsError(error);
|
|
9660
|
+
return false;
|
|
9661
|
+
}
|
|
9662
|
+
}
|
|
9663
|
+
/**
|
|
9664
|
+
* TODO: [๐ง ][๐ด] Where is the best location for this file
|
|
9665
|
+
*/
|
|
9666
|
+
|
|
9667
|
+
/**
|
|
9668
|
+
* Tag function for notating a pipeline with a book\`...\ notation as template literal
|
|
9669
|
+
*
|
|
9670
|
+
* Note: There are 3 similar functions:
|
|
9671
|
+
* 1) `prompt` for notating single prompt exported from `@promptbook/utils`
|
|
9672
|
+
* 2) `promptTemplate` alias for `prompt`
|
|
9673
|
+
* 3) `book` for notating and validating entire books exported from `@promptbook/utils`
|
|
9674
|
+
*
|
|
9675
|
+
* @param strings The static string parts of the template literal
|
|
9676
|
+
* @param values The dynamic values embedded within the template literal used as data
|
|
9677
|
+
* @returns the pipeline string
|
|
9678
|
+
* @public exported from `@promptbook/core`
|
|
9679
|
+
*/
|
|
9680
|
+
function book(strings, ...values) {
|
|
9681
|
+
const bookString = prompt(strings, ...values);
|
|
9682
|
+
if (!isValidPipelineString(bookString)) {
|
|
9683
|
+
// TODO: Make the CustomError for this
|
|
9684
|
+
throw new Error(spaceTrim(`
|
|
9685
|
+
The string is not a valid pipeline string
|
|
9686
|
+
|
|
9687
|
+
book\`
|
|
9688
|
+
${bookString}
|
|
9689
|
+
\`
|
|
9690
|
+
`));
|
|
9691
|
+
}
|
|
9692
|
+
if (!isValidBook(bookString)) {
|
|
9693
|
+
// TODO: Make the CustomError for this
|
|
9694
|
+
throw new Error(spaceTrim(`
|
|
9695
|
+
The string is not a valid book
|
|
9696
|
+
|
|
9697
|
+
book\`
|
|
9698
|
+
${bookString}
|
|
9699
|
+
\`
|
|
9700
|
+
`));
|
|
9701
|
+
}
|
|
9702
|
+
return padBook(bookString);
|
|
9703
|
+
}
|
|
9704
|
+
/**
|
|
9705
|
+
* TODO: [๐ง ][๐ด] Where is the best location for this file
|
|
9706
|
+
* Note: [๐] Ignore a discrepancy between file name and entity name
|
|
9707
|
+
*/
|
|
9708
|
+
|
|
9103
9709
|
/**
|
|
9104
9710
|
* Takes an item or an array of items and returns an array of items
|
|
9105
9711
|
*
|
|
@@ -9348,37 +9954,6 @@ function getSingleLlmExecutionTools(oneOrMoreLlmExecutionTools) {
|
|
|
9348
9954
|
|
|
9349
9955
|
var PipelineCollection = [{title:"Prepare Knowledge from Markdown",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-from-markdown.book",formfactorName:"GENERIC",parameters:[{name:"knowledgeContent",description:"Markdown document content",isInput:true,isOutput:false},{name:"knowledgePieces",description:"The knowledge JSON object",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"knowledge",title:"Knowledge",content:"You are experienced data researcher, extract the important knowledge from the document.\n\n# Rules\n\n- Make pieces of information concise, clear, and easy to understand\n- One piece of information should be approximately 1 paragraph\n- Divide the paragraphs by markdown horizontal lines ---\n- Omit irrelevant information\n- Group redundant information\n- Write just extracted information, nothing else\n\n# The document\n\nTake information from this document:\n\n> {knowledgeContent}",resultingParameterName:"knowledgePieces",dependentParameterNames:["knowledgeContent"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Knowledge from Markdown\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-knowledge-from-markdown.book`\n- INPUT PARAMETER `{knowledgeContent}` Markdown document content\n- OUTPUT PARAMETER `{knowledgePieces}` The knowledge JSON object\n\n## Knowledge\n\n<!-- TODO: [๐] -FORMAT JSON -->\n\n```markdown\nYou are experienced data researcher, extract the important knowledge from the document.\n\n# Rules\n\n- Make pieces of information concise, clear, and easy to understand\n- One piece of information should be approximately 1 paragraph\n- Divide the paragraphs by markdown horizontal lines ---\n- Omit irrelevant information\n- Group redundant information\n- Write just extracted information, nothing else\n\n# The document\n\nTake information from this document:\n\n> {knowledgeContent}\n```\n\n`-> {knowledgePieces}`\n"}],sourceFile:"./books/prepare-knowledge-from-markdown.book"},{title:"Prepare Keywords",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-keywords.book",formfactorName:"GENERIC",parameters:[{name:"knowledgePieceContent",description:"The content",isInput:true,isOutput:false},{name:"keywords",description:"Keywords separated by comma",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"knowledge",title:"Knowledge",content:"You are experienced data researcher, detect the important keywords in the document.\n\n# Rules\n\n- Write just keywords separated by comma\n\n# The document\n\nTake information from this document:\n\n> {knowledgePieceContent}",resultingParameterName:"keywords",dependentParameterNames:["knowledgePieceContent"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Keywords\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-knowledge-keywords.book`\n- INPUT PARAMETER `{knowledgePieceContent}` The content\n- OUTPUT PARAMETER `{keywords}` Keywords separated by comma\n\n## Knowledge\n\n<!-- TODO: [๐] -FORMAT JSON -->\n\n```markdown\nYou are experienced data researcher, detect the important keywords in the document.\n\n# Rules\n\n- Write just keywords separated by comma\n\n# The document\n\nTake information from this document:\n\n> {knowledgePieceContent}\n```\n\n`-> {keywords}`\n"}],sourceFile:"./books/prepare-knowledge-keywords.book"},{title:"Prepare Knowledge-piece Title",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-title.book",formfactorName:"GENERIC",parameters:[{name:"knowledgePieceContent",description:"The content",isInput:true,isOutput:false},{name:"title",description:"The title of the document",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"knowledge",title:"Knowledge",content:"You are experienced content creator, write best title for the document.\n\n# Rules\n\n- Write just title, nothing else\n- Write maximum 5 words for the title\n\n# The document\n\n> {knowledgePieceContent}",resultingParameterName:"title",expectations:{words:{min:1,max:8}},dependentParameterNames:["knowledgePieceContent"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Knowledge-piece Title\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-knowledge-title.book`\n- INPUT PARAMETER `{knowledgePieceContent}` The content\n- OUTPUT PARAMETER `{title}` The title of the document\n\n## Knowledge\n\n- EXPECT MIN 1 WORD\n- EXPECT MAX 8 WORDS\n\n```markdown\nYou are experienced content creator, write best title for the document.\n\n# Rules\n\n- Write just title, nothing else\n- Write maximum 5 words for the title\n\n# The document\n\n> {knowledgePieceContent}\n```\n\n`-> {title}`\n"}],sourceFile:"./books/prepare-knowledge-title.book"},{title:"Prepare Persona",pipelineUrl:"https://promptbook.studio/promptbook/prepare-persona.book",formfactorName:"GENERIC",parameters:[{name:"availableModels",description:"List of available model names together with their descriptions as JSON",isInput:true,isOutput:false},{name:"personaDescription",description:"Description of the persona",isInput:true,isOutput:false},{name:"modelsRequirements",description:"Specific requirements for the model",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"make-model-requirements",title:"Make modelRequirements",content:"You are an experienced AI engineer, you need to find the best models for virtual assistants:\n\n## Example\n\n```json\n[\n {\n \"modelName\": \"gpt-4o\",\n \"systemMessage\": \"You are experienced AI engineer and helpful assistant.\",\n \"temperature\": 0.7\n },\n {\n \"modelName\": \"claude-3-5-sonnet\",\n \"systemMessage\": \"You are a friendly and knowledgeable chatbot.\",\n \"temperature\": 0.5\n }\n]\n```\n\n## Instructions\n\n- Your output format is JSON array\n- Sort best-fitting models first\n- Omit any models that are not suitable\n- Write just the JSON, no other text should be present\n- Array contain items with following keys:\n - `modelName`: The name of the model to use\n - `systemMessage`: The system message to provide context to the model\n - `temperature`: The sampling temperature to use\n\n### Key `modelName`\n\nHere are the available models:\n\n```json\n{availableModels}\n```\n\n### Key `systemMessage`\n\nThe system message is used to communicate instructions or provide context to the model at the beginning of a conversation. It is displayed in a different format compared to user messages, helping the model understand its role in the conversation. The system message typically guides the model's behavior, sets the tone, or specifies desired output from the model. By utilizing the system message effectively, users can steer the model towards generating more accurate and relevant responses.\n\nFor example:\n\n> You are an experienced AI engineer and helpful assistant.\n\n> You are a friendly and knowledgeable chatbot.\n\n### Key `temperature`\n\nThe sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use log probability to automatically increase the temperature until certain thresholds are hit.\n\nYou can pick a value between 0 and 2. For example:\n\n- `0.1`: Low temperature, extremely conservative and deterministic\n- `0.5`: Medium temperature, balanced between conservative and creative\n- `1.0`: High temperature, creative and bit random\n- `1.5`: Very high temperature, extremely creative and often chaotic and unpredictable\n- `2.0`: Maximum temperature, completely random and unpredictable, for some extreme creative use cases\n\n# The assistant\n\nTake this description of the persona:\n\n> {personaDescription}",resultingParameterName:"modelsRequirements",format:"JSON",dependentParameterNames:["availableModels","personaDescription"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Persona\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-persona.book`\n- INPUT PARAMETER `{availableModels}` List of available model names together with their descriptions as JSON\n- INPUT PARAMETER `{personaDescription}` Description of the persona\n- OUTPUT PARAMETER `{modelsRequirements}` Specific requirements for the model\n\n## Make modelRequirements\n\n- FORMAT JSON\n\n```markdown\nYou are an experienced AI engineer, you need to find the best models for virtual assistants:\n\n## Example\n\n\\`\\`\\`json\n[\n {\n \"modelName\": \"gpt-4o\",\n \"systemMessage\": \"You are experienced AI engineer and helpful assistant.\",\n \"temperature\": 0.7\n },\n {\n \"modelName\": \"claude-3-5-sonnet\",\n \"systemMessage\": \"You are a friendly and knowledgeable chatbot.\",\n \"temperature\": 0.5\n }\n]\n\\`\\`\\`\n\n## Instructions\n\n- Your output format is JSON array\n- Sort best-fitting models first\n- Omit any models that are not suitable\n- Write just the JSON, no other text should be present\n- Array contain items with following keys:\n - `modelName`: The name of the model to use\n - `systemMessage`: The system message to provide context to the model\n - `temperature`: The sampling temperature to use\n\n### Key `modelName`\n\nHere are the available models:\n\n\\`\\`\\`json\n{availableModels}\n\\`\\`\\`\n\n### Key `systemMessage`\n\nThe system message is used to communicate instructions or provide context to the model at the beginning of a conversation. It is displayed in a different format compared to user messages, helping the model understand its role in the conversation. The system message typically guides the model's behavior, sets the tone, or specifies desired output from the model. By utilizing the system message effectively, users can steer the model towards generating more accurate and relevant responses.\n\nFor example:\n\n> You are an experienced AI engineer and helpful assistant.\n\n> You are a friendly and knowledgeable chatbot.\n\n### Key `temperature`\n\nThe sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use log probability to automatically increase the temperature until certain thresholds are hit.\n\nYou can pick a value between 0 and 2. For example:\n\n- `0.1`: Low temperature, extremely conservative and deterministic\n- `0.5`: Medium temperature, balanced between conservative and creative\n- `1.0`: High temperature, creative and bit random\n- `1.5`: Very high temperature, extremely creative and often chaotic and unpredictable\n- `2.0`: Maximum temperature, completely random and unpredictable, for some extreme creative use cases\n\n# The assistant\n\nTake this description of the persona:\n\n> {personaDescription}\n```\n\n`-> {modelsRequirements}`\n"}],sourceFile:"./books/prepare-persona.book"},{title:"Prepare Title",pipelineUrl:"https://promptbook.studio/promptbook/prepare-title.book",formfactorName:"GENERIC",parameters:[{name:"book",description:"The book to prepare the title for",isInput:true,isOutput:false},{name:"title",description:"Best title for the book",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"make-title",title:"Make title",content:"Make best title for given text which describes the workflow:\n\n## Rules\n\n- Write just title, nothing else\n- Title should be concise and clear - Write maximum ideally 2 words, maximum 5 words\n- Title starts with emoticon\n- Title should not mention the input and output of the workflow but the main purpose of the workflow\n _For example, not \"โ Convert Knowledge-piece to title\" but \"โ Title\"_\n\n## The workflow\n\n> {book}",resultingParameterName:"title",expectations:{words:{min:1,max:8},lines:{min:1,max:1}},dependentParameterNames:["book"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Title\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-title.book`\n- INPUT PARAMETER `{book}` The book to prepare the title for\n- OUTPUT PARAMETER `{title}` Best title for the book\n\n## Make title\n\n- EXPECT MIN 1 Word\n- EXPECT MAX 8 Words\n- EXPECT EXACTLY 1 Line\n\n```markdown\nMake best title for given text which describes the workflow:\n\n## Rules\n\n- Write just title, nothing else\n- Title should be concise and clear - Write maximum ideally 2 words, maximum 5 words\n- Title starts with emoticon\n- Title should not mention the input and output of the workflow but the main purpose of the workflow\n _For example, not \"โ Convert Knowledge-piece to title\" but \"โ Title\"_\n\n## The workflow\n\n> {book}\n```\n\n`-> {title}`\n"}],sourceFile:"./books/prepare-title.book"}];
|
|
9350
9956
|
|
|
9351
|
-
/**
|
|
9352
|
-
* Function `validatePipelineString` will validate the if the string is a valid pipeline string
|
|
9353
|
-
* It does not check if the string is fully logically correct, but if it is a string that can be a pipeline string or the string looks completely different.
|
|
9354
|
-
*
|
|
9355
|
-
* Note: [๐] This function is idempotent.
|
|
9356
|
-
*
|
|
9357
|
-
* @param {string} pipelineString the candidate for a pipeline string
|
|
9358
|
-
* @returns {PipelineString} the same string as input, but validated as valid
|
|
9359
|
-
* @throws {ParseError} if the string is not a valid pipeline string
|
|
9360
|
-
* @public exported from `@promptbook/core`
|
|
9361
|
-
*/
|
|
9362
|
-
function validatePipelineString(pipelineString) {
|
|
9363
|
-
if (isValidJsonString(pipelineString)) {
|
|
9364
|
-
throw new ParseError('Expected a book, but got a JSON string');
|
|
9365
|
-
}
|
|
9366
|
-
else if (isValidUrl(pipelineString)) {
|
|
9367
|
-
throw new ParseError(`Expected a book, but got just the URL "${pipelineString}"`);
|
|
9368
|
-
}
|
|
9369
|
-
else if (isValidFilePath(pipelineString)) {
|
|
9370
|
-
throw new ParseError(`Expected a book, but got just the file path "${pipelineString}"`);
|
|
9371
|
-
}
|
|
9372
|
-
else if (isValidEmail(pipelineString)) {
|
|
9373
|
-
throw new ParseError(`Expected a book, but got just the email "${pipelineString}"`);
|
|
9374
|
-
}
|
|
9375
|
-
// <- TODO: Implement the validation + add tests when the pipeline logic considered as invalid
|
|
9376
|
-
return pipelineString;
|
|
9377
|
-
}
|
|
9378
|
-
/**
|
|
9379
|
-
* TODO: [๐ง ][๐ด] Where is the best location for this file
|
|
9380
|
-
*/
|
|
9381
|
-
|
|
9382
9957
|
/**
|
|
9383
9958
|
* Prettify the html code
|
|
9384
9959
|
*
|
|
@@ -15115,12 +15690,15 @@ class OpenAiAssistantExecutionTools extends OpenAiExecutionTools {
|
|
|
15115
15690
|
fileStreams.push(file);
|
|
15116
15691
|
}
|
|
15117
15692
|
else {
|
|
15693
|
+
/*
|
|
15694
|
+
TODO: [๐ฑโ๐] Resolve problem with browser environment
|
|
15118
15695
|
// Assume it's a local file path
|
|
15119
15696
|
// Note: This will work in Node.js environment
|
|
15120
15697
|
// For browser environments, this would need different handling
|
|
15121
15698
|
const fs = await import('fs');
|
|
15122
15699
|
const fileStream = fs.createReadStream(source);
|
|
15123
15700
|
fileStreams.push(fileStream);
|
|
15701
|
+
*/
|
|
15124
15702
|
}
|
|
15125
15703
|
}
|
|
15126
15704
|
catch (error) {
|
|
@@ -15209,12 +15787,15 @@ class OpenAiAssistantExecutionTools extends OpenAiExecutionTools {
|
|
|
15209
15787
|
fileStreams.push(file);
|
|
15210
15788
|
}
|
|
15211
15789
|
else {
|
|
15790
|
+
/*
|
|
15791
|
+
TODO: [๐ฑโ๐] Resolve problem with browser environment
|
|
15212
15792
|
// Assume it's a local file path
|
|
15213
15793
|
// Note: This will work in Node.js environment
|
|
15214
15794
|
// For browser environments, this would need different handling
|
|
15215
15795
|
const fs = await import('fs');
|
|
15216
15796
|
const fileStream = fs.createReadStream(source);
|
|
15217
15797
|
fileStreams.push(fileStream);
|
|
15798
|
+
*/
|
|
15218
15799
|
}
|
|
15219
15800
|
}
|
|
15220
15801
|
catch (error) {
|
|
@@ -15588,7 +16169,53 @@ class Agent extends AgentLlmExecutionTools {
|
|
|
15588
16169
|
* Note: This method also implements the learning mechanism
|
|
15589
16170
|
*/
|
|
15590
16171
|
async callChatModelStream(prompt, onProgress) {
|
|
16172
|
+
// [1] Check if the user is asking the same thing as in the samples
|
|
16173
|
+
const modelRequirements = await this.getAgentModelRequirements();
|
|
16174
|
+
if (modelRequirements.samples) {
|
|
16175
|
+
const normalizedPrompt = normalizeMessageText(prompt.content);
|
|
16176
|
+
const sample = modelRequirements.samples.find((s) => normalizeMessageText(s.question) === normalizedPrompt);
|
|
16177
|
+
if (sample) {
|
|
16178
|
+
const now = new Date().toISOString();
|
|
16179
|
+
const result = {
|
|
16180
|
+
content: sample.answer,
|
|
16181
|
+
modelName: this.modelName,
|
|
16182
|
+
timing: {
|
|
16183
|
+
start: now,
|
|
16184
|
+
complete: now,
|
|
16185
|
+
},
|
|
16186
|
+
usage: {
|
|
16187
|
+
price: { value: 0, isUncertain: true },
|
|
16188
|
+
input: {
|
|
16189
|
+
tokensCount: { value: 0, isUncertain: true },
|
|
16190
|
+
charactersCount: { value: 0, isUncertain: true },
|
|
16191
|
+
wordsCount: { value: 0, isUncertain: true },
|
|
16192
|
+
linesCount: { value: 0, isUncertain: true },
|
|
16193
|
+
sentencesCount: { value: 0, isUncertain: true },
|
|
16194
|
+
paragraphsCount: { value: 0, isUncertain: true },
|
|
16195
|
+
pagesCount: { value: 0, isUncertain: true },
|
|
16196
|
+
},
|
|
16197
|
+
output: {
|
|
16198
|
+
tokensCount: { value: 0, isUncertain: true },
|
|
16199
|
+
charactersCount: { value: 0, isUncertain: true },
|
|
16200
|
+
wordsCount: { value: 0, isUncertain: true },
|
|
16201
|
+
linesCount: { value: 0, isUncertain: true },
|
|
16202
|
+
sentencesCount: { value: 0, isUncertain: true },
|
|
16203
|
+
paragraphsCount: { value: 0, isUncertain: true },
|
|
16204
|
+
pagesCount: { value: 0, isUncertain: true },
|
|
16205
|
+
},
|
|
16206
|
+
},
|
|
16207
|
+
rawPromptContent: prompt.content,
|
|
16208
|
+
rawRequest: null,
|
|
16209
|
+
rawResponse: { sample },
|
|
16210
|
+
};
|
|
16211
|
+
onProgress(result);
|
|
16212
|
+
return result;
|
|
16213
|
+
}
|
|
16214
|
+
}
|
|
15591
16215
|
const result = await super.callChatModelStream(prompt, onProgress);
|
|
16216
|
+
if (result.rawResponse && 'sample' in result.rawResponse) {
|
|
16217
|
+
return result;
|
|
16218
|
+
}
|
|
15592
16219
|
// TODO: !!! Extract learning to separate method
|
|
15593
16220
|
// Learning: Append the conversation sample to the agent source
|
|
15594
16221
|
const learningExample = spaceTrim((block) => `
|
|
@@ -15635,11 +16262,12 @@ class RemoteAgent extends Agent {
|
|
|
15635
16262
|
const profile = await profileResponse.json();
|
|
15636
16263
|
// Note: We are creating dummy agent source because we don't have the source from the remote agent
|
|
15637
16264
|
// But we populate the metadata from the profile
|
|
15638
|
-
const agentSource = new BehaviorSubject(`
|
|
15639
|
-
|
|
16265
|
+
const agentSource = new BehaviorSubject(book `
|
|
16266
|
+
${profile.agentName}
|
|
15640
16267
|
|
|
15641
|
-
${profile.personaDescription}
|
|
16268
|
+
${profile.personaDescription}
|
|
15642
16269
|
`);
|
|
16270
|
+
// <- TODO: [๐ฑโ๐] createBookFromProfile
|
|
15643
16271
|
// <- TODO: [๐ฑโ๐] Support updating and self-updating
|
|
15644
16272
|
const remoteAgent = new RemoteAgent({
|
|
15645
16273
|
...options,
|
|
@@ -15664,10 +16292,12 @@ ${profile.personaDescription}
|
|
|
15664
16292
|
remoteAgent.initialMessage = profile.initialMessage;
|
|
15665
16293
|
remoteAgent.links = profile.links;
|
|
15666
16294
|
remoteAgent.meta = profile.meta;
|
|
16295
|
+
remoteAgent._isVoiceCallingEnabled = profile.isVoiceCallingEnabled === true; // [โจโท] Store voice calling status
|
|
15667
16296
|
return remoteAgent;
|
|
15668
16297
|
}
|
|
15669
16298
|
constructor(options) {
|
|
15670
16299
|
super(options);
|
|
16300
|
+
this._isVoiceCallingEnabled = false; // [โจโท] Track voice calling status
|
|
15671
16301
|
this.agentUrl = options.agentUrl;
|
|
15672
16302
|
}
|
|
15673
16303
|
get agentName() {
|
|
@@ -15683,8 +16313,49 @@ ${profile.personaDescription}
|
|
|
15683
16313
|
return this.callChatModelStream(prompt, () => { });
|
|
15684
16314
|
}
|
|
15685
16315
|
/**
|
|
15686
|
-
* Calls the agent on agents remote server with
|
|
16316
|
+
* Calls the agent on agents remote server with voice
|
|
16317
|
+
* [โจโท] Only available when voice calling is enabled on the server
|
|
16318
|
+
* Returns undefined if voice calling is disabled
|
|
15687
16319
|
*/
|
|
16320
|
+
get callVoiceChatModel() {
|
|
16321
|
+
if (!this._isVoiceCallingEnabled) {
|
|
16322
|
+
return undefined;
|
|
16323
|
+
}
|
|
16324
|
+
return async (audio, prompt) => {
|
|
16325
|
+
// Ensure we're working with a chat prompt
|
|
16326
|
+
if (prompt.modelRequirements.modelVariant !== 'CHAT') {
|
|
16327
|
+
throw new Error('Agents only supports chat prompts');
|
|
16328
|
+
}
|
|
16329
|
+
const chatPrompt = prompt;
|
|
16330
|
+
const formData = new FormData();
|
|
16331
|
+
formData.append('audio', audio, 'voice.webm');
|
|
16332
|
+
formData.append('message', prompt.content);
|
|
16333
|
+
if (chatPrompt.thread) {
|
|
16334
|
+
formData.append('thread', JSON.stringify(chatPrompt.thread));
|
|
16335
|
+
}
|
|
16336
|
+
const response = await fetch(`${this.agentUrl}/api/voice`, {
|
|
16337
|
+
method: 'POST',
|
|
16338
|
+
body: formData,
|
|
16339
|
+
});
|
|
16340
|
+
if (!response.ok) {
|
|
16341
|
+
throw new Error(`Voice chat failed: ${response.statusText}`);
|
|
16342
|
+
}
|
|
16343
|
+
const result = await response.json();
|
|
16344
|
+
// Convert base64 audio back to Blob
|
|
16345
|
+
const binaryString = atob(result.audio);
|
|
16346
|
+
const bytes = new Uint8Array(binaryString.length);
|
|
16347
|
+
for (let i = 0; i < binaryString.length; i++) {
|
|
16348
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
16349
|
+
}
|
|
16350
|
+
const audioBlob = new Blob([bytes], { type: 'audio/mp3' });
|
|
16351
|
+
return {
|
|
16352
|
+
text: result.agentMessage || result.text,
|
|
16353
|
+
userMessage: result.userMessage,
|
|
16354
|
+
agentMessage: result.agentMessage || result.text,
|
|
16355
|
+
audio: audioBlob,
|
|
16356
|
+
};
|
|
16357
|
+
};
|
|
16358
|
+
}
|
|
15688
16359
|
async callChatModelStream(prompt, onProgress) {
|
|
15689
16360
|
// Ensure we're working with a chat prompt
|
|
15690
16361
|
if (prompt.modelRequirements.modelVariant !== 'CHAT') {
|
|
@@ -16120,5 +16791,5 @@ function injectCssModuleIntoShadowRoot(options) {
|
|
|
16120
16791
|
}
|
|
16121
16792
|
}
|
|
16122
16793
|
|
|
16123
|
-
export { AboutPromptbookInformation, AgentChat, ArrowIcon, AttachmentIcon, AvatarChip, AvatarChipFromSource, AvatarProfile, AvatarProfileFromSource, BLOCKY_FLOW, BOOK_LANGUAGE_VERSION, BookEditor, BrandedQrCode, CHAT_SAVE_FORMATS, Chat, DEFAULT_BOOK_EDITOR_HEIGHT, FAST_FLOW, GenericQrCode, LlmChat, MOCKED_CHAT_DELAY_CONFIGS, MarkdownContent, MockedChat, NORMAL_FLOW, PROMPTBOOK_ENGINE_VERSION, PauseIcon, PlayIcon, PromptbookAgent, PromptbookQrCode, RANDOM_FLOW, ResetIcon, SLOW_FLOW, SaveIcon, SendIcon, TemplateIcon, getChatSaveFormatDefinitions, htmlSaveFormatDefinition, injectCssModuleIntoShadowRoot, jsonSaveFormatDefinition, mdSaveFormatDefinition, parseMessageButtons, pdfSaveFormatDefinition, reactSaveFormatDefinition, txtSaveFormatDefinition, useChatAutoScroll, useSendMessageToLlmChat };
|
|
16794
|
+
export { AboutPromptbookInformation, AgentChat, ArrowIcon, AttachmentIcon, AvatarChip, AvatarChipFromSource, AvatarProfile, AvatarProfileFromSource, BLOCKY_FLOW, BOOK_LANGUAGE_VERSION, BookEditor, BrandedQrCode, CHAT_SAVE_FORMATS, Chat, DEFAULT_BOOK_EDITOR_HEIGHT, FAST_FLOW, GenericQrCode, LlmChat, MOCKED_CHAT_DELAY_CONFIGS, MarkdownContent, MicIcon, MockedChat, NORMAL_FLOW, PROMPTBOOK_ENGINE_VERSION, PauseIcon, PlayIcon, PromptbookAgent, PromptbookQrCode, RANDOM_FLOW, ResetIcon, SLOW_FLOW, SaveIcon, SendIcon, TemplateIcon, getChatSaveFormatDefinitions, htmlSaveFormatDefinition, injectCssModuleIntoShadowRoot, jsonSaveFormatDefinition, mdSaveFormatDefinition, parseMessageButtons, pdfSaveFormatDefinition, reactSaveFormatDefinition, txtSaveFormatDefinition, useChatAutoScroll, useSendMessageToLlmChat };
|
|
16124
16795
|
//# sourceMappingURL=index.es.js.map
|