genassist-chat-react 1.0.39 → 1.0.40
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/dist/components/DynamicFormMessage.d.ts +8 -2
- package/dist/components/DynamicFormMessage.js +99 -55
- package/dist/components/GenAgentChat.js +128 -24
- package/dist/hooks/useChat.d.ts +4 -1
- package/dist/hooks/useChat.js +81 -39
- package/dist/services/chatService.d.ts +19 -2
- package/dist/services/chatService.js +46 -3
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.js +1 -1
- package/package.json +6 -3
|
@@ -24,8 +24,14 @@ interface DynamicFormMessageProps {
|
|
|
24
24
|
isSubmitted: boolean;
|
|
25
25
|
primaryColor?: string;
|
|
26
26
|
fontFamily?: string;
|
|
27
|
-
/**
|
|
28
|
-
|
|
27
|
+
/**
|
|
28
|
+
* "card" = inline chat bubble
|
|
29
|
+
* "footer" = compact footer layout
|
|
30
|
+
* "fullscreen" = fills the chat panel; message shown as a heading on top
|
|
31
|
+
*/
|
|
32
|
+
variant?: 'card' | 'footer' | 'fullscreen';
|
|
33
|
+
/** Optional heading above the message (e.g. the agent name) for the fullscreen layout. */
|
|
34
|
+
title?: string;
|
|
29
35
|
}
|
|
30
36
|
declare const DynamicFormMessage: React.FC<DynamicFormMessageProps>;
|
|
31
37
|
export default DynamicFormMessage;
|
|
@@ -12,12 +12,15 @@ var __assign = (this && this.__assign) || function () {
|
|
|
12
12
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
13
|
import { useState } from 'react';
|
|
14
14
|
var DynamicFormMessage = function (_a) {
|
|
15
|
-
var schema = _a.schema, onSubmit = _a.onSubmit, onCancel = _a.onCancel, isSubmitting = _a.isSubmitting, isSubmitted = _a.isSubmitted, _b = _a.primaryColor, primaryColor = _b === void 0 ? '#2563eb' : _b, _c = _a.fontFamily, fontFamily = _c === void 0 ? 'inherit' : _c, _d = _a.variant, variant = _d === void 0 ? 'card' : _d;
|
|
15
|
+
var schema = _a.schema, onSubmit = _a.onSubmit, onCancel = _a.onCancel, isSubmitting = _a.isSubmitting, isSubmitted = _a.isSubmitted, _b = _a.primaryColor, primaryColor = _b === void 0 ? '#2563eb' : _b, _c = _a.fontFamily, fontFamily = _c === void 0 ? 'inherit' : _c, _d = _a.variant, variant = _d === void 0 ? 'card' : _d, title = _a.title;
|
|
16
16
|
var _e = useState({}), formData = _e[0], setFormData = _e[1];
|
|
17
17
|
var _f = useState({}), errors = _f[0], setErrors = _f[1];
|
|
18
|
+
var _g = useState(null), focused = _g[0], setFocused = _g[1];
|
|
18
19
|
var isFooter = variant === 'footer';
|
|
20
|
+
var isFullscreen = variant === 'fullscreen';
|
|
19
21
|
var allFieldsOptional = schema.fields.every(function (f) { return !f.required; });
|
|
20
22
|
var showCancel = !!onCancel && allFieldsOptional && !isSubmitted;
|
|
23
|
+
var disabled = isSubmitted || isSubmitting;
|
|
21
24
|
var handleChange = function (name, value) {
|
|
22
25
|
setFormData(function (prev) {
|
|
23
26
|
var _a;
|
|
@@ -48,82 +51,123 @@ var DynamicFormMessage = function (_a) {
|
|
|
48
51
|
onSubmit(formData);
|
|
49
52
|
};
|
|
50
53
|
// ── Styles (variant-aware) ──
|
|
51
|
-
var
|
|
52
|
-
? { width: '100%' }
|
|
53
|
-
:
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
54
|
+
var formStyle = isFullscreen
|
|
55
|
+
? { display: 'flex', flexDirection: 'column', height: '100%', width: '100%', fontFamily: fontFamily }
|
|
56
|
+
: isFooter
|
|
57
|
+
? { width: '100%', fontFamily: fontFamily }
|
|
58
|
+
: {
|
|
59
|
+
backgroundColor: '#ffffff',
|
|
60
|
+
border: '1px solid #e5e7eb',
|
|
61
|
+
borderRadius: '14px',
|
|
62
|
+
padding: '16px',
|
|
63
|
+
maxWidth: '100%',
|
|
64
|
+
fontFamily: fontFamily,
|
|
65
|
+
boxShadow: '0 1px 2px rgba(0,0,0,0.04)',
|
|
66
|
+
};
|
|
67
|
+
var headerStyle = {
|
|
68
|
+
padding: isFullscreen ? '20px 22px 16px' : 0,
|
|
69
|
+
borderBottom: isFullscreen ? '1px solid #eef0f3' : 'none',
|
|
70
|
+
flexShrink: 0,
|
|
66
71
|
};
|
|
67
|
-
var
|
|
68
|
-
|
|
69
|
-
:
|
|
70
|
-
|
|
71
|
-
|
|
72
|
+
var titleStyle = {
|
|
73
|
+
fontSize: '13px',
|
|
74
|
+
fontWeight: 700,
|
|
75
|
+
color: primaryColor,
|
|
76
|
+
letterSpacing: '0.02em',
|
|
77
|
+
textTransform: 'uppercase',
|
|
78
|
+
marginBottom: '6px',
|
|
79
|
+
};
|
|
80
|
+
var messageStyle = {
|
|
81
|
+
fontSize: isFullscreen ? '18px' : isFooter ? '13px' : '15px',
|
|
82
|
+
lineHeight: 1.4,
|
|
83
|
+
color: isFullscreen ? '#111827' : '#374151',
|
|
84
|
+
marginBottom: isFullscreen ? 0 : isFooter ? '10px' : '14px',
|
|
85
|
+
fontWeight: isFullscreen ? 700 : 500,
|
|
72
86
|
};
|
|
87
|
+
var bodyStyle = isFullscreen
|
|
88
|
+
? { flex: 1, overflowY: 'auto', padding: '18px 22px', display: 'flex', flexDirection: 'column', gap: '18px' }
|
|
89
|
+
: isFooter
|
|
90
|
+
? { maxHeight: '220px', overflowY: 'auto', paddingRight: '4px', display: 'flex', flexDirection: 'column', gap: '12px' }
|
|
91
|
+
: { display: 'flex', flexDirection: 'column', gap: '14px' };
|
|
73
92
|
var labelStyle = {
|
|
74
93
|
display: 'block',
|
|
75
|
-
fontSize:
|
|
94
|
+
fontSize: '13px',
|
|
76
95
|
fontWeight: 600,
|
|
77
|
-
color: '#
|
|
78
|
-
marginBottom: '
|
|
79
|
-
fontFamily: fontFamily,
|
|
96
|
+
color: '#1f2937',
|
|
97
|
+
marginBottom: '6px',
|
|
80
98
|
};
|
|
81
99
|
var descriptionStyle = {
|
|
82
|
-
fontSize: '
|
|
100
|
+
fontSize: '12px',
|
|
83
101
|
color: '#6b7280',
|
|
84
|
-
|
|
85
|
-
|
|
102
|
+
marginTop: '-2px',
|
|
103
|
+
marginBottom: '7px',
|
|
104
|
+
lineHeight: 1.4,
|
|
86
105
|
};
|
|
87
|
-
var
|
|
106
|
+
var baseInputStyle = function (name) { return ({
|
|
88
107
|
width: '100%',
|
|
89
|
-
padding:
|
|
90
|
-
fontSize:
|
|
91
|
-
border:
|
|
92
|
-
borderRadius: '
|
|
108
|
+
padding: '10px 12px',
|
|
109
|
+
fontSize: '14px',
|
|
110
|
+
border: "1.5px solid ".concat(focused === name ? primaryColor : '#e5e7eb'),
|
|
111
|
+
borderRadius: '10px',
|
|
93
112
|
outline: 'none',
|
|
94
113
|
boxSizing: 'border-box',
|
|
95
|
-
backgroundColor:
|
|
114
|
+
backgroundColor: disabled ? '#f3f4f6' : '#ffffff',
|
|
115
|
+
color: '#111827',
|
|
96
116
|
fontFamily: fontFamily,
|
|
97
|
-
|
|
98
|
-
|
|
117
|
+
transition: 'border-color 120ms ease, box-shadow 120ms ease',
|
|
118
|
+
boxShadow: focused === name ? "0 0 0 3px ".concat(hexToSoftRing(primaryColor)) : 'none',
|
|
119
|
+
}); };
|
|
99
120
|
var errorStyle = {
|
|
100
121
|
fontSize: '12px',
|
|
101
122
|
color: '#ef4444',
|
|
102
|
-
marginTop: '
|
|
123
|
+
marginTop: '5px',
|
|
103
124
|
};
|
|
104
|
-
var
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
125
|
+
var footerStyle = __assign({ display: 'flex', gap: '10px', flexShrink: 0 }, (isFullscreen
|
|
126
|
+
? { padding: '16px 22px', borderTop: '1px solid #eef0f3' }
|
|
127
|
+
: { marginTop: isFooter ? '8px' : '14px' }));
|
|
128
|
+
var primaryButtonStyle = {
|
|
129
|
+
flex: 1,
|
|
130
|
+
padding: '11px 16px',
|
|
131
|
+
fontSize: '14px',
|
|
108
132
|
fontWeight: 600,
|
|
109
133
|
color: '#ffffff',
|
|
110
|
-
backgroundColor:
|
|
134
|
+
backgroundColor: disabled ? '#9ca3af' : primaryColor,
|
|
111
135
|
border: 'none',
|
|
112
|
-
borderRadius:
|
|
113
|
-
cursor:
|
|
114
|
-
opacity: isSubmitting ? 0.
|
|
115
|
-
|
|
136
|
+
borderRadius: '10px',
|
|
137
|
+
cursor: disabled ? 'not-allowed' : 'pointer',
|
|
138
|
+
opacity: isSubmitting ? 0.75 : 1,
|
|
139
|
+
fontFamily: fontFamily,
|
|
140
|
+
transition: 'opacity 120ms ease',
|
|
141
|
+
};
|
|
142
|
+
var skipButtonStyle = {
|
|
143
|
+
padding: '11px 16px',
|
|
144
|
+
fontSize: '14px',
|
|
145
|
+
fontWeight: 600,
|
|
146
|
+
color: '#6b7280',
|
|
147
|
+
backgroundColor: 'transparent',
|
|
148
|
+
border: '1.5px solid #e5e7eb',
|
|
149
|
+
borderRadius: '10px',
|
|
150
|
+
cursor: isSubmitting ? 'not-allowed' : 'pointer',
|
|
116
151
|
fontFamily: fontFamily,
|
|
117
152
|
};
|
|
118
|
-
var
|
|
119
|
-
|
|
120
|
-
alignItems: 'center',
|
|
121
|
-
gap: '8px',
|
|
153
|
+
var renderField = function (field) {
|
|
154
|
+
var _a;
|
|
155
|
+
return (_jsxs("div", { children: [_jsxs("label", { style: labelStyle, children: [field.label, field.required && _jsx("span", { style: { color: '#ef4444', marginLeft: '3px' }, children: "*" })] }), field.description && _jsx("div", { style: descriptionStyle, children: field.description }), field.type === 'text' && (_jsx("input", { type: "text", style: baseInputStyle(field.name), placeholder: field.placeholder || '', value: formData[field.name] || '', onChange: function (e) { return handleChange(field.name, e.target.value); }, onFocus: function () { return setFocused(field.name); }, onBlur: function () { return setFocused(null); }, disabled: disabled })), field.type === 'number' && (_jsx("input", { type: "number", style: baseInputStyle(field.name), placeholder: field.placeholder || '', value: formData[field.name] !== undefined ? String(formData[field.name]) : '', onChange: function (e) { return handleChange(field.name, e.target.value ? Number(e.target.value) : ''); }, onFocus: function () { return setFocused(field.name); }, onBlur: function () { return setFocused(null); }, disabled: disabled })), field.type === 'date' && (_jsx("input", { type: "date", style: baseInputStyle(field.name), value: formData[field.name] || '', onChange: function (e) { return handleChange(field.name, e.target.value); }, onFocus: function () { return setFocused(field.name); }, onBlur: function () { return setFocused(null); }, disabled: disabled })), field.type === 'select' && (_jsxs("select", { style: __assign(__assign({}, baseInputStyle(field.name)), { appearance: 'auto', cursor: disabled ? 'not-allowed' : 'pointer' }), value: formData[field.name] || '', onChange: function (e) { return handleChange(field.name, e.target.value); }, onFocus: function () { return setFocused(field.name); }, onBlur: function () { return setFocused(null); }, disabled: disabled, children: [_jsx("option", { value: "", children: field.placeholder || 'Select...' }), (_a = field.options) === null || _a === void 0 ? void 0 : _a.map(function (opt) { return (_jsx("option", { value: opt.value, children: opt.label }, opt.value)); })] })), field.type === 'boolean' && (_jsxs("label", { style: { display: 'flex', alignItems: 'center', gap: '10px', cursor: disabled ? 'not-allowed' : 'pointer' }, children: [_jsx("input", { type: "checkbox", checked: formData[field.name] || false, onChange: function (e) { return handleChange(field.name, e.target.checked); }, disabled: disabled, style: { width: '17px', height: '17px', accentColor: primaryColor, cursor: 'inherit' } }), _jsx("span", { style: { fontSize: '14px', color: '#374151' }, children: field.placeholder || 'Yes' })] })), errors[field.name] && _jsx("div", { style: errorStyle, children: errors[field.name] })] }, field.name));
|
|
122
156
|
};
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
return (_jsxs("div", { style: fieldContainerStyle, children: [_jsxs("label", { style: labelStyle, children: [field.label, field.required && _jsx("span", { style: { color: '#ef4444', marginLeft: '2px' }, children: "*" })] }), field.description && (_jsx("div", { style: descriptionStyle, children: field.description })), field.type === 'text' && (_jsx("input", { type: "text", style: inputStyle, placeholder: field.placeholder || '', value: formData[field.name] || '', onChange: function (e) { return handleChange(field.name, e.target.value); }, disabled: isSubmitted || isSubmitting })), field.type === 'number' && (_jsx("input", { type: "number", style: inputStyle, placeholder: field.placeholder || '', value: formData[field.name] !== undefined ? String(formData[field.name]) : '', onChange: function (e) { return handleChange(field.name, e.target.value ? Number(e.target.value) : ''); }, disabled: isSubmitted || isSubmitting })), field.type === 'date' && (_jsx("input", { type: "date", style: inputStyle, value: formData[field.name] || '', onChange: function (e) { return handleChange(field.name, e.target.value); }, disabled: isSubmitted || isSubmitting })), field.type === 'select' && (_jsxs("select", { style: selectStyle, value: formData[field.name] || '', onChange: function (e) { return handleChange(field.name, e.target.value); }, disabled: isSubmitted || isSubmitting, children: [_jsx("option", { value: "", children: field.placeholder || 'Select...' }), (_a = field.options) === null || _a === void 0 ? void 0 : _a.map(function (opt) { return (_jsx("option", { value: opt.value, children: opt.label }, opt.value)); })] })), field.type === 'boolean' && (_jsxs("div", { style: checkboxContainerStyle, children: [_jsx("input", { type: "checkbox", checked: formData[field.name] || false, onChange: function (e) { return handleChange(field.name, e.target.checked); }, disabled: isSubmitted || isSubmitting, style: { width: '16px', height: '16px' } }), _jsx("span", { style: { fontSize: '14px', color: '#374151' }, children: field.placeholder || 'Yes' })] })), errors[field.name] && (_jsx("div", { style: errorStyle, children: errors[field.name] }))] }, field.name));
|
|
126
|
-
}) }), _jsxs("div", { style: { display: 'flex', gap: '8px', marginTop: isFooter ? '2px' : '4px' }, children: [showCancel && (_jsx("button", { type: "button", style: __assign(__assign({}, buttonStyle), { marginTop: 0, backgroundColor: 'transparent', color: '#6b7280', border: '1px solid #d1d5db', cursor: isSubmitting ? 'not-allowed' : 'pointer' }), disabled: isSubmitting, onClick: onCancel, children: "Skip" })), _jsx("button", { type: "submit", style: __assign(__assign({}, buttonStyle), { marginTop: 0 }), disabled: isSubmitted || isSubmitting, children: isSubmitted ? 'Submitted' : isSubmitting ? 'Submitting...' : 'Submit' })] })] }));
|
|
157
|
+
var buttons = (_jsxs("div", { style: footerStyle, children: [showCancel && (_jsx("button", { type: "button", style: skipButtonStyle, disabled: isSubmitting, onClick: onCancel, children: "Skip" })), _jsx("button", { type: "submit", style: primaryButtonStyle, disabled: disabled, children: isSubmitted ? 'Submitted' : isSubmitting ? 'Submitting…' : 'Submit' })] }));
|
|
158
|
+
return (_jsxs("form", { onSubmit: handleSubmit, style: formStyle, children: [(schema.message || (isFullscreen && title)) && (_jsxs("div", { style: headerStyle, children: [isFullscreen && title && _jsx("div", { style: titleStyle, children: title }), schema.message && _jsx("div", { style: messageStyle, children: schema.message })] })), _jsx("div", { style: bodyStyle, children: schema.fields.map(renderField) }), buttons] }));
|
|
127
159
|
};
|
|
160
|
+
/** Translucent version of the primary color for the focus ring (accepts #rgb/#rrggbb). */
|
|
161
|
+
function hexToSoftRing(hex) {
|
|
162
|
+
var m = hex.replace('#', '');
|
|
163
|
+
var full = m.length === 3 ? m.split('').map(function (c) { return c + c; }).join('') : m;
|
|
164
|
+
var int = parseInt(full, 16);
|
|
165
|
+
if (full.length !== 6 || Number.isNaN(int))
|
|
166
|
+
return 'rgba(37,99,235,0.15)';
|
|
167
|
+
var r = (int >> 16) & 255;
|
|
168
|
+
var g = (int >> 8) & 255;
|
|
169
|
+
var b = int & 255;
|
|
170
|
+
return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", 0.15)");
|
|
171
|
+
}
|
|
128
172
|
export default DynamicFormMessage;
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY0Zvcm1NZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvRHluYW1pY0Zvcm1NZXNzYWdlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxPQUFjLEVBQUUsUUFBUSxFQUFpQixNQUFNLE9BQU8sQ0FBQztBQThCdkQsSUFBTSxrQkFBa0IsR0FBc0MsVUFBQyxFQVM5RDtRQVJDLE1BQU0sWUFBQSxFQUNOLFFBQVEsY0FBQSxFQUNSLFFBQVEsY0FBQSxFQUNSLFlBQVksa0JBQUEsRUFDWixXQUFXLGlCQUFBLEVBQ1gsb0JBQXdCLEVBQXhCLFlBQVksbUJBQUcsU0FBUyxLQUFBLEVBQ3hCLGtCQUFzQixFQUF0QixVQUFVLG1CQUFHLFNBQVMsS0FBQSxFQUN0QixlQUFnQixFQUFoQixPQUFPLG1CQUFHLE1BQU0sS0FBQTtJQUVWLElBQUEsS0FBMEIsUUFBUSxDQUEwQixFQUFFLENBQUMsRUFBOUQsUUFBUSxRQUFBLEVBQUUsV0FBVyxRQUF5QyxDQUFDO0lBQ2hFLElBQUEsS0FBc0IsUUFBUSxDQUF5QixFQUFFLENBQUMsRUFBekQsTUFBTSxRQUFBLEVBQUUsU0FBUyxRQUF3QyxDQUFDO0lBRWpFLElBQU0sUUFBUSxHQUFHLE9BQU8sS0FBSyxRQUFRLENBQUM7SUFDdEMsSUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFDLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBWCxDQUFXLENBQUMsQ0FBQztJQUNsRSxJQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsUUFBUSxJQUFJLGlCQUFpQixJQUFJLENBQUMsV0FBVyxDQUFDO0lBRW5FLElBQU0sWUFBWSxHQUFHLFVBQUMsSUFBWSxFQUFFLEtBQWM7UUFDaEQsV0FBVyxDQUFDLFVBQUMsSUFBSTs7WUFBSyxPQUFBLHVCQUFNLElBQUksZ0JBQUcsSUFBSSxJQUFH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U1NQcm9wZXJ0aWVzIH0gZnJvbSAncmVhY3QnO1xuXG5pbnRlcmZhY2UgRm9ybUZpZWxkIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiAndGV4dCcgfCAnbnVtYmVyJyB8ICdzZWxlY3QnIHwgJ2Jvb2xlYW4nIHwgJ2RhdGUnO1xuICBsYWJlbDogc3RyaW5nO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgb3B0aW9ucz86IEFycmF5PHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9Pjtcbn1cblxuaW50ZXJmYWNlIEZvcm1TY2hlbWEge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGZpZWxkczogRm9ybUZpZWxkW107XG4gIG5vZGVfaWQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIER5bmFtaWNGb3JtTWVzc2FnZVByb3BzIHtcbiAgc2NoZW1hOiBGb3JtU2NoZW1hO1xuICBvblN1Ym1pdDogKGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIGlzU3VibWl0dGluZzogYm9vbGVhbjtcbiAgaXNTdWJtaXR0ZWQ6IGJvb2xlYW47XG4gIHByaW1hcnlDb2xvcj86IHN0cmluZztcbiAgZm9udEZhbWlseT86IHN0cmluZztcbiAgLyoqIFwiY2FyZFwiID0gaW5saW5lIGNoYXQgYnViYmxlIChkZWZhdWx0KSwgXCJmb290ZXJcIiA9IGNvbXBhY3QgZm9vdGVyIGxheW91dCAqL1xuICB2YXJpYW50PzogJ2NhcmQnIHwgJ2Zvb3Rlcic7XG59XG5cbmNvbnN0IER5bmFtaWNGb3JtTWVzc2FnZTogUmVhY3QuRkM8RHluYW1pY0Zvcm1NZXNzYWdlUHJvcHM+ID0gKHtcbiAgc2NoZW1hLFxuICBvblN1Ym1pdCxcbiAgb25DYW5jZWwsXG4gIGlzU3VibWl0dGluZyxcbiAgaXNTdWJtaXR0ZWQsXG4gIHByaW1hcnlDb2xvciA9ICcjMjU2M2ViJyxcbiAgZm9udEZhbWlseSA9ICdpbmhlcml0JyxcbiAgdmFyaWFudCA9ICdjYXJkJyxcbn0pID0+IHtcbiAgY29uc3QgW2Zvcm1EYXRhLCBzZXRGb3JtRGF0YV0gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe30pO1xuICBjb25zdCBbZXJyb3JzLCBzZXRFcnJvcnNdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oe30pO1xuXG4gIGNvbnN0IGlzRm9vdGVyID0gdmFyaWFudCA9PT0gJ2Zvb3Rlcic7XG4gIGNvbnN0IGFsbEZpZWxkc09wdGlvbmFsID0gc2NoZW1hLmZpZWxkcy5ldmVyeSgoZikgPT4gIWYucmVxdWlyZWQpO1xuICBjb25zdCBzaG93Q2FuY2VsID0gISFvbkNhbmNlbCAmJiBhbGxGaWVsZHNPcHRpb25hbCAmJiAhaXNTdWJtaXR0ZWQ7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKG5hbWU6IHN0cmluZywgdmFsdWU6IHVua25vd24pID0+IHtcbiAgICBzZXRGb3JtRGF0YSgocHJldikgPT4gKHsgLi4ucHJldiwgW25hbWVdOiB2YWx1ZSB9KSk7XG4gICAgaWYgKGVycm9yc1tuYW1lXSkge1xuICAgICAgc2V0RXJyb3JzKChwcmV2KSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHQgPSB7IC4uLnByZXYgfTtcbiAgICAgICAgZGVsZXRlIG5leHRbbmFtZV07XG4gICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlOiBSZWFjdC5Gb3JtRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlzU3VibWl0dGVkIHx8IGlzU3VibWl0dGluZykgcmV0dXJuO1xuXG4gICAgY29uc3QgbmV3RXJyb3JzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgc2NoZW1hLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgaWYgKGZpZWxkLnJlcXVpcmVkICYmICFmb3JtRGF0YVtmaWVsZC5uYW1lXSAmJiBmb3JtRGF0YVtmaWVsZC5uYW1lXSAhPT0gMCAmJiBmb3JtRGF0YVtmaWVsZC5uYW1lXSAhPT0gZmFsc2UpIHtcbiAgICAgICAgbmV3RXJyb3JzW2ZpZWxkLm5hbWVdID0gJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld0Vycm9ycykubGVuZ3RoID4gMCkge1xuICAgICAgc2V0RXJyb3JzKG5ld0Vycm9ycyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgb25TdWJtaXQoZm9ybURhdGEpO1xuICB9O1xuXG4gIC8vIOKUgOKUgCBTdHlsZXMgKHZhcmlhbnQtYXdhcmUpIOKUgOKUgFxuXG4gIGNvbnN0IGNvbnRhaW5lclN0eWxlOiBDU1NQcm9wZXJ0aWVzID0gaXNGb290ZXJcbiAgICA/IHsgd2lkdGg6ICcxMDAlJyB9XG4gICAgOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJyNmOWZhZmInLFxuICAgICAgICBib3JkZXI6ICcxcHggc29saWQgI2U1ZTdlYicsXG4gICAgICAgIGJvcmRlclJhZGl1czogJzEycHgnLFxuICAgICAgICBwYWRkaW5nOiAnMTZweCcsXG4gICAgICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgICB9O1xuXG4gIGNvbnN0IG1lc3NhZ2VTdHlsZTogQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogaXNGb290ZXIgPyAnMTNweCcgOiAnMTRweCcsXG4gICAgY29sb3I6ICcjMzc0MTUxJyxcbiAgICBtYXJnaW5Cb3R0b206IGlzRm9vdGVyID8gJzhweCcgOiAnMTJweCcsXG4gICAgZm9udFdlaWdodDogNTAwLFxuICAgIGZvbnRGYW1pbHksXG4gIH07XG5cbiAgY29uc3QgZmllbGRzV3JhcHBlclN0eWxlOiBDU1NQcm9wZXJ0aWVzID0gaXNGb290ZXJcbiAgICA/IHsgbWF4SGVpZ2h0OiAnMjAwcHgnLCBvdmVyZmxvd1k6ICdhdXRvJywgcGFkZGluZ1JpZ2h0OiAnNHB4JyB9XG4gICAgOiB7fTtcblxuICBjb25zdCBmaWVsZENvbnRhaW5lclN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgIG1hcmdpbkJvdHRvbTogaXNGb290ZXIgPyAnOHB4JyA6ICcxMnB4JyxcbiAgfTtcblxuICBjb25zdCBsYWJlbFN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgZm9udFNpemU6IGlzRm9vdGVyID8gJzEycHgnIDogJzEzcHgnLFxuICAgIGZvbnRXZWlnaHQ6IDYwMCxcbiAgICBjb2xvcjogJyMzNzQxNTEnLFxuICAgIG1hcmdpbkJvdHRvbTogJzJweCcsXG4gICAgZm9udEZhbWlseSxcbiAgfTtcblxuICBjb25zdCBkZXNjcmlwdGlvblN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgIGZvbnRTaXplOiAnMTFweCcsXG4gICAgY29sb3I6ICcjNmI3MjgwJyxcbiAgICBtYXJnaW5Cb3R0b206ICczcHgnLFxuICAgIGZvbnRGYW1pbHksXG4gIH07XG5cbiAgY29uc3QgaW5wdXRTdHlsZTogQ1NTUHJvcGVydGllcyA9IHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHBhZGRpbmc6IGlzRm9vdGVyID8gJzZweCAxMHB4JyA6ICc4cHggMTJweCcsXG4gICAgZm9udFNpemU6IGlzRm9vdGVyID8gJzEzcHgnIDogJzE0cHgnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZDFkNWRiJyxcbiAgICBib3JkZXJSYWRpdXM6ICc4cHgnLFxuICAgIG91dGxpbmU6ICdub25lJyxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzU3VibWl0dGVkID8gJyNmM2Y0ZjYnIDogJyNmZmZmZmYnLFxuICAgIGZvbnRGYW1pbHksXG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0U3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgLi4uaW5wdXRTdHlsZSxcbiAgICBhcHBlYXJhbmNlOiAnYXV0bycgYXMgY29uc3QsXG4gIH07XG5cbiAgY29uc3QgZXJyb3JTdHlsZTogQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogJzEycHgnLFxuICAgIGNvbG9yOiAnI2VmNDQ0NCcsXG4gICAgbWFyZ2luVG9wOiAnMnB4JyxcbiAgfTtcblxuICBjb25zdCBidXR0b25TdHlsZTogQ1NTUHJvcGVydGllcyA9IHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHBhZGRpbmc6IGlzRm9vdGVyID8gJzlweCAxNnB4JyA6ICcxMHB4IDE2cHgnLFxuICAgIGZvbnRTaXplOiBpc0Zvb3RlciA/ICcxM3B4JyA6ICcxNHB4JyxcbiAgICBmb250V2VpZ2h0OiA2MDAsXG4gICAgY29sb3I6ICcjZmZmZmZmJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzU3VibWl0dGVkID8gJyM5Y2EzYWYnIDogcHJpbWFyeUNvbG9yLFxuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIGJvcmRlclJhZGl1czogaXNGb290ZXIgPyAnMTBweCcgOiAnOHB4JyxcbiAgICBjdXJzb3I6IGlzU3VibWl0dGVkIHx8IGlzU3VibWl0dGluZyA/ICdub3QtYWxsb3dlZCcgOiAncG9pbnRlcicsXG4gICAgb3BhY2l0eTogaXNTdWJtaXR0aW5nID8gMC43IDogMSxcbiAgICBtYXJnaW5Ub3A6IGlzRm9vdGVyID8gJzJweCcgOiAnNHB4JyxcbiAgICBmb250RmFtaWx5LFxuICB9O1xuXG4gIGNvbnN0IGNoZWNrYm94Q29udGFpbmVyU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGdhcDogJzhweCcsXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlU3VibWl0fSBzdHlsZT17Y29udGFpbmVyU3R5bGV9PlxuICAgICAgPGRpdiBzdHlsZT17bWVzc2FnZVN0eWxlfT57c2NoZW1hLm1lc3NhZ2V9PC9kaXY+XG5cbiAgICAgIDxkaXYgc3R5bGU9e2ZpZWxkc1dyYXBwZXJTdHlsZX0+XG4gICAgICAgIHtzY2hlbWEuZmllbGRzLm1hcCgoZmllbGQpID0+IChcbiAgICAgICAgICA8ZGl2IGtleT17ZmllbGQubmFtZX0gc3R5bGU9e2ZpZWxkQ29udGFpbmVyU3R5bGV9PlxuICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXtsYWJlbFN0eWxlfT5cbiAgICAgICAgICAgICAge2ZpZWxkLmxhYmVsfVxuICAgICAgICAgICAgICB7ZmllbGQucmVxdWlyZWQgJiYgPHNwYW4gc3R5bGU9e3sgY29sb3I6ICcjZWY0NDQ0JywgbWFyZ2luTGVmdDogJzJweCcgfX0+Kjwvc3Bhbj59XG4gICAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgICB7ZmllbGQuZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtkZXNjcmlwdGlvblN0eWxlfT57ZmllbGQuZGVzY3JpcHRpb259PC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ZmllbGQudHlwZSA9PT0gJ3RleHQnICYmIChcbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtpbnB1dFN0eWxlfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtmaWVsZC5wbGFjZWhvbGRlciB8fCAnJ31cbiAgICAgICAgICAgICAgICB2YWx1ZT17KGZvcm1EYXRhW2ZpZWxkLm5hbWVdIGFzIHN0cmluZykgfHwgJyd9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVDaGFuZ2UoZmllbGQubmFtZSwgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRlZCB8fCBpc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ZmllbGQudHlwZSA9PT0gJ251bWJlcicgJiYgKFxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17aW5wdXRTdHlsZX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17ZmllbGQucGxhY2Vob2xkZXIgfHwgJyd9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1EYXRhW2ZpZWxkLm5hbWVdICE9PSB1bmRlZmluZWQgPyBTdHJpbmcoZm9ybURhdGFbZmllbGQubmFtZV0pIDogJyd9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVDaGFuZ2UoZmllbGQubmFtZSwgZS50YXJnZXQudmFsdWUgPyBOdW1iZXIoZS50YXJnZXQudmFsdWUpIDogJycpfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRlZCB8fCBpc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ZmllbGQudHlwZSA9PT0gJ2RhdGUnICYmIChcbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtpbnB1dFN0eWxlfVxuICAgICAgICAgICAgICAgIHZhbHVlPXsoZm9ybURhdGFbZmllbGQubmFtZV0gYXMgc3RyaW5nKSB8fCAnJ31cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUNoYW5nZShmaWVsZC5uYW1lLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGVkIHx8IGlzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtmaWVsZC50eXBlID09PSAnc2VsZWN0JyAmJiAoXG4gICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICBzdHlsZT17c2VsZWN0U3R5bGV9XG4gICAgICAgICAgICAgICAgdmFsdWU9eyhmb3JtRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmcpIHx8ICcnfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlQ2hhbmdlKGZpZWxkLm5hbWUsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNTdWJtaXR0ZWQgfHwgaXNTdWJtaXR0aW5nfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPntmaWVsZC5wbGFjZWhvbGRlciB8fCAnU2VsZWN0Li4uJ308L29wdGlvbj5cbiAgICAgICAgICAgICAgICB7ZmllbGQub3B0aW9ucz8ubWFwKChvcHQpID0+IChcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24ga2V5PXtvcHQudmFsdWV9IHZhbHVlPXtvcHQudmFsdWV9PlxuICAgICAgICAgICAgICAgICAgICB7b3B0LmxhYmVsfVxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge2ZpZWxkLnR5cGUgPT09ICdib29sZWFuJyAmJiAoXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e2NoZWNrYm94Q29udGFpbmVyU3R5bGV9PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9eyhmb3JtRGF0YVtmaWVsZC5uYW1lXSBhcyBib29sZWFuKSB8fCBmYWxzZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlQ2hhbmdlKGZpZWxkLm5hbWUsIGUudGFyZ2V0LmNoZWNrZWQpfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGVkIHx8IGlzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiAnMTZweCcsIGhlaWdodDogJzE2cHgnIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBmb250U2l6ZTogJzE0cHgnLCBjb2xvcjogJyMzNzQxNTEnIH19PlxuICAgICAgICAgICAgICAgICAge2ZpZWxkLnBsYWNlaG9sZGVyIHx8ICdZZXMnfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ZXJyb3JzW2ZpZWxkLm5hbWVdICYmIChcbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17ZXJyb3JTdHlsZX0+e2Vycm9yc1tmaWVsZC5uYW1lXX08L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkpfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6ICc4cHgnLCBtYXJnaW5Ub3A6IGlzRm9vdGVyID8gJzJweCcgOiAnNHB4JyB9fT5cbiAgICAgICAge3Nob3dDYW5jZWwgJiYgKFxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgLi4uYnV0dG9uU3R5bGUsXG4gICAgICAgICAgICAgIG1hcmdpblRvcDogMCxcbiAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICBjb2xvcjogJyM2YjcyODAnLFxuICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgI2QxZDVkYicsXG4gICAgICAgICAgICAgIGN1cnNvcjogaXNTdWJtaXR0aW5nID8gJ25vdC1hbGxvd2VkJyA6ICdwb2ludGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfVxuICAgICAgICAgICAgb25DbGljaz17b25DYW5jZWx9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgU2tpcFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApfVxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgc3R5bGU9e3sgLi4uYnV0dG9uU3R5bGUsIG1hcmdpblRvcDogMCB9fVxuICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRlZCB8fCBpc1N1Ym1pdHRpbmd9XG4gICAgICAgID5cbiAgICAgICAgICB7aXNTdWJtaXR0ZWQgPyAnU3VibWl0dGVkJyA6IGlzU3VibWl0dGluZyA/ICdTdWJtaXR0aW5nLi4uJyA6ICdTdWJtaXQnfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IER5bmFtaWNGb3JtTWVzc2FnZTtcbiJdfQ==
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY0Zvcm1NZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvRHluYW1pY0Zvcm1NZXNzYWdlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxPQUFjLEVBQUUsUUFBUSxFQUFpQixNQUFNLE9BQU8sQ0FBQztBQW9DdkQsSUFBTSxrQkFBa0IsR0FBc0MsVUFBQyxFQVU5RDtRQVRDLE1BQU0sWUFBQSxFQUNOLFFBQVEsY0FBQSxFQUNSLFFBQVEsY0FBQSxFQUNSLFlBQVksa0JBQUEsRUFDWixXQUFXLGlCQUFBLEVBQ1gsb0JBQXdCLEVBQXhCLFlBQVksbUJBQUcsU0FBUyxLQUFBLEVBQ3hCLGtCQUFzQixFQUF0QixVQUFVLG1CQUFHLFNBQVMsS0FBQSxFQUN0QixlQUFnQixFQUFoQixPQUFPLG1CQUFHLE1BQU0sS0FBQSxFQUNoQixLQUFLLFdBQUE7SUFFQyxJQUFBLEtBQTBCLFFBQVEsQ0FBMEIsRUFBRSxDQUFDLEVBQTlELFFBQVEsUUFBQSxFQUFFLFdBQVcsUUFBeUMsQ0FBQztJQUNoRSxJQUFBLEtBQXNCLFFBQVEsQ0FBeUIsRUFBRSxDQUFDLEVBQXpELE1BQU0sUUFBQSxFQUFFLFNBQVMsUUFBd0MsQ0FBQztJQUMzRCxJQUFBLEtBQXdCLFFBQVEsQ0FBZ0IsSUFBSSxDQUFDLEVBQXBELE9BQU8sUUFBQSxFQUFFLFVBQVUsUUFBaUMsQ0FBQztJQUU1RCxJQUFNLFFBQVEsR0FBRyxPQUFPLEtBQUssUUFBUSxDQUFDO0lBQ3RDLElBQU0sWUFBWSxHQUFHLE9BQU8sS0FBSyxZQUFZLENBQUM7SUFDOUMsSUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFDLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBWCxDQUFXLENBQUMsQ0FBQztJQUNsRSxJQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsUUFBUSxJQUFJ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O0FBQ3hDLENBQUM7QUFFRCxlQUFlLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCBDU1NQcm9wZXJ0aWVzIH0gZnJvbSAncmVhY3QnO1xuXG5pbnRlcmZhY2UgRm9ybUZpZWxkIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiAndGV4dCcgfCAnbnVtYmVyJyB8ICdzZWxlY3QnIHwgJ2Jvb2xlYW4nIHwgJ2RhdGUnO1xuICBsYWJlbDogc3RyaW5nO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgb3B0aW9ucz86IEFycmF5PHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9Pjtcbn1cblxuaW50ZXJmYWNlIEZvcm1TY2hlbWEge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGZpZWxkczogRm9ybUZpZWxkW107XG4gIG5vZGVfaWQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIER5bmFtaWNGb3JtTWVzc2FnZVByb3BzIHtcbiAgc2NoZW1hOiBGb3JtU2NoZW1hO1xuICBvblN1Ym1pdDogKGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIGlzU3VibWl0dGluZzogYm9vbGVhbjtcbiAgaXNTdWJtaXR0ZWQ6IGJvb2xlYW47XG4gIHByaW1hcnlDb2xvcj86IHN0cmluZztcbiAgZm9udEZhbWlseT86IHN0cmluZztcbiAgLyoqXG4gICAqIFwiY2FyZFwiICAgICAgID0gaW5saW5lIGNoYXQgYnViYmxlXG4gICAqIFwiZm9vdGVyXCIgICAgID0gY29tcGFjdCBmb290ZXIgbGF5b3V0XG4gICAqIFwiZnVsbHNjcmVlblwiID0gZmlsbHMgdGhlIGNoYXQgcGFuZWw7IG1lc3NhZ2Ugc2hvd24gYXMgYSBoZWFkaW5nIG9uIHRvcFxuICAgKi9cbiAgdmFyaWFudD86ICdjYXJkJyB8ICdmb290ZXInIHwgJ2Z1bGxzY3JlZW4nO1xuICAvKiogT3B0aW9uYWwgaGVhZGluZyBhYm92ZSB0aGUgbWVzc2FnZSAoZS5nLiB0aGUgYWdlbnQgbmFtZSkgZm9yIHRoZSBmdWxsc2NyZWVuIGxheW91dC4gKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG59XG5cbmNvbnN0IER5bmFtaWNGb3JtTWVzc2FnZTogUmVhY3QuRkM8RHluYW1pY0Zvcm1NZXNzYWdlUHJvcHM+ID0gKHtcbiAgc2NoZW1hLFxuICBvblN1Ym1pdCxcbiAgb25DYW5jZWwsXG4gIGlzU3VibWl0dGluZyxcbiAgaXNTdWJtaXR0ZWQsXG4gIHByaW1hcnlDb2xvciA9ICcjMjU2M2ViJyxcbiAgZm9udEZhbWlseSA9ICdpbmhlcml0JyxcbiAgdmFyaWFudCA9ICdjYXJkJyxcbiAgdGl0bGUsXG59KSA9PiB7XG4gIGNvbnN0IFtmb3JtRGF0YSwgc2V0Rm9ybURhdGFdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHt9KTtcbiAgY29uc3QgW2Vycm9ycywgc2V0RXJyb3JzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KHt9KTtcbiAgY29uc3QgW2ZvY3VzZWQsIHNldEZvY3VzZWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgaXNGb290ZXIgPSB2YXJpYW50ID09PSAnZm9vdGVyJztcbiAgY29uc3QgaXNGdWxsc2NyZWVuID0gdmFyaWFudCA9PT0gJ2Z1bGxzY3JlZW4nO1xuICBjb25zdCBhbGxGaWVsZHNPcHRpb25hbCA9IHNjaGVtYS5maWVsZHMuZXZlcnkoKGYpID0+ICFmLnJlcXVpcmVkKTtcbiAgY29uc3Qgc2hvd0NhbmNlbCA9ICEhb25DYW5jZWwgJiYgYWxsRmllbGRzT3B0aW9uYWwgJiYgIWlzU3VibWl0dGVkO1xuICBjb25zdCBkaXNhYmxlZCA9IGlzU3VibWl0dGVkIHx8IGlzU3VibWl0dGluZztcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAobmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgIHNldEZvcm1EYXRhKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBbbmFtZV06IHZhbHVlIH0pKTtcbiAgICBpZiAoZXJyb3JzW25hbWVdKSB7XG4gICAgICBzZXRFcnJvcnMoKHByZXYpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dCA9IHsgLi4ucHJldiB9O1xuICAgICAgICBkZWxldGUgbmV4dFtuYW1lXTtcbiAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gKGU6IFJlYWN0LkZvcm1FdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaXNTdWJtaXR0ZWQgfHwgaXNTdWJtaXR0aW5nKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXdFcnJvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBzY2hlbWEuZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICBpZiAoZmllbGQucmVxdWlyZWQgJiYgIWZvcm1EYXRhW2ZpZWxkLm5hbWVdICYmIGZvcm1EYXRhW2ZpZWxkLm5hbWVdICE9PSAwICYmIGZvcm1EYXRhW2ZpZWxkLm5hbWVdICE9PSBmYWxzZSkge1xuICAgICAgICBuZXdFcnJvcnNbZmllbGQubmFtZV0gPSAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoT2JqZWN0LmtleXMobmV3RXJyb3JzKS5sZW5ndGggPiAwKSB7XG4gICAgICBzZXRFcnJvcnMobmV3RXJyb3JzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBvblN1Ym1pdChmb3JtRGF0YSk7XG4gIH07XG5cbiAgLy8g4pSA4pSAIFN0eWxlcyAodmFyaWFudC1hd2FyZSkg4pSA4pSAXG5cbiAgY29uc3QgZm9ybVN0eWxlOiBDU1NQcm9wZXJ0aWVzID0gaXNGdWxsc2NyZWVuXG4gICAgPyB7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogJzEwMCUnLCB3aWR0aDogJzEwMCUnLCBmb250RmFtaWx5IH1cbiAgICA6IGlzRm9vdGVyXG4gICAgPyB7IHdpZHRoOiAnMTAwJScsIGZvbnRGYW1pbHkgfVxuICAgIDoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmZmZmJyxcbiAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlNWU3ZWInLFxuICAgICAgICBib3JkZXJSYWRpdXM6ICcxNHB4JyxcbiAgICAgICAgcGFkZGluZzogJzE2cHgnLFxuICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgICBmb250RmFtaWx5LFxuICAgICAgICBib3hTaGFkb3c6ICcwIDFweCAycHggcmdiYSgwLDAsMCwwLjA0KScsXG4gICAgICB9O1xuXG4gIGNvbnN0IGhlYWRlclN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgIHBhZGRpbmc6IGlzRnVsbHNjcmVlbiA/ICcyMHB4IDIycHggMTZweCcgOiAwLFxuICAgIGJvcmRlckJvdHRvbTogaXNGdWxsc2NyZWVuID8gJzFweCBzb2xpZCAjZWVmMGYzJyA6ICdub25lJyxcbiAgICBmbGV4U2hyaW5rOiAwLFxuICB9O1xuXG4gIGNvbnN0IHRpdGxlU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgZm9udFNpemU6ICcxM3B4JyxcbiAgICBmb250V2VpZ2h0OiA3MDAsXG4gICAgY29sb3I6IHByaW1hcnlDb2xvcixcbiAgICBsZXR0ZXJTcGFjaW5nOiAnMC4wMmVtJyxcbiAgICB0ZXh0VHJhbnNmb3JtOiAndXBwZXJjYXNlJyxcbiAgICBtYXJnaW5Cb3R0b206ICc2cHgnLFxuICB9O1xuXG4gIGNvbnN0IG1lc3NhZ2VTdHlsZTogQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogaXNGdWxsc2NyZWVuID8gJzE4cHgnIDogaXNGb290ZXIgPyAnMTNweCcgOiAnMTVweCcsXG4gICAgbGluZUhlaWdodDogMS40LFxuICAgIGNvbG9yOiBpc0Z1bGxzY3JlZW4gPyAnIzExMTgyNycgOiAnIzM3NDE1MScsXG4gICAgbWFyZ2luQm90dG9tOiBpc0Z1bGxzY3JlZW4gPyAwIDogaXNGb290ZXIgPyAnMTBweCcgOiAnMTRweCcsXG4gICAgZm9udFdlaWdodDogaXNGdWxsc2NyZWVuID8gNzAwIDogNTAwLFxuICB9O1xuXG4gIGNvbnN0IGJvZHlTdHlsZTogQ1NTUHJvcGVydGllcyA9IGlzRnVsbHNjcmVlblxuICAgID8geyBmbGV4OiAxLCBvdmVyZmxvd1k6ICdhdXRvJywgcGFkZGluZzogJzE4cHggMjJweCcsIGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogJzE4cHgnIH1cbiAgICA6IGlzRm9vdGVyXG4gICAgPyB7IG1heEhlaWdodDogJzIyMHB4Jywgb3ZlcmZsb3dZOiAnYXV0bycsIHBhZGRpbmdSaWdodDogJzRweCcsIGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogJzEycHgnIH1cbiAgICA6IHsgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiAnMTRweCcgfTtcblxuICBjb25zdCBsYWJlbFN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgZm9udFNpemU6ICcxM3B4JyxcbiAgICBmb250V2VpZ2h0OiA2MDAsXG4gICAgY29sb3I6ICcjMWYyOTM3JyxcbiAgICBtYXJnaW5Cb3R0b206ICc2cHgnLFxuICB9O1xuXG4gIGNvbnN0IGRlc2NyaXB0aW9uU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgZm9udFNpemU6ICcxMnB4JyxcbiAgICBjb2xvcjogJyM2YjcyODAnLFxuICAgIG1hcmdpblRvcDogJy0ycHgnLFxuICAgIG1hcmdpbkJvdHRvbTogJzdweCcsXG4gICAgbGluZUhlaWdodDogMS40LFxuICB9O1xuXG4gIGNvbnN0IGJhc2VJbnB1dFN0eWxlID0gKG5hbWU6IHN0cmluZyk6IENTU1Byb3BlcnRpZXMgPT4gKHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHBhZGRpbmc6ICcxMHB4IDEycHgnLFxuICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgYm9yZGVyOiBgMS41cHggc29saWQgJHtmb2N1c2VkID09PSBuYW1lID8gcHJpbWFyeUNvbG9yIDogJyNlNWU3ZWInfWAsXG4gICAgYm9yZGVyUmFkaXVzOiAnMTBweCcsXG4gICAgb3V0bGluZTogJ25vbmUnLFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIGJhY2tncm91bmRDb2xvcjogZGlzYWJsZWQgPyAnI2YzZjRmNicgOiAnI2ZmZmZmZicsXG4gICAgY29sb3I6ICcjMTExODI3JyxcbiAgICBmb250RmFtaWx5LFxuICAgIHRyYW5zaXRpb246ICdib3JkZXItY29sb3IgMTIwbXMgZWFzZSwgYm94LXNoYWRvdyAxMjBtcyBlYXNlJyxcbiAgICBib3hTaGFkb3c6IGZvY3VzZWQgPT09IG5hbWUgPyBgMCAwIDAgM3B4ICR7aGV4VG9Tb2Z0UmluZyhwcmltYXJ5Q29sb3IpfWAgOiAnbm9uZScsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgZm9udFNpemU6ICcxMnB4JyxcbiAgICBjb2xvcjogJyNlZjQ0NDQnLFxuICAgIG1hcmdpblRvcDogJzVweCcsXG4gIH07XG5cbiAgY29uc3QgZm9vdGVyU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogJzEwcHgnLFxuICAgIGZsZXhTaHJpbms6IDAsXG4gICAgLi4uKGlzRnVsbHNjcmVlblxuICAgICAgPyB7IHBhZGRpbmc6ICcxNnB4IDIycHgnLCBib3JkZXJUb3A6ICcxcHggc29saWQgI2VlZjBmMycgfVxuICAgICAgOiB7IG1hcmdpblRvcDogaXNGb290ZXIgPyAnOHB4JyA6ICcxNHB4JyB9KSxcbiAgfTtcblxuICBjb25zdCBwcmltYXJ5QnV0dG9uU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgZmxleDogMSxcbiAgICBwYWRkaW5nOiAnMTFweCAxNnB4JyxcbiAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgIGZvbnRXZWlnaHQ6IDYwMCxcbiAgICBjb2xvcjogJyNmZmZmZmYnLFxuICAgIGJhY2tncm91bmRDb2xvcjogZGlzYWJsZWQgPyAnIzljYTNhZicgOiBwcmltYXJ5Q29sb3IsXG4gICAgYm9yZGVyOiAnbm9uZScsXG4gICAgYm9yZGVyUmFkaXVzOiAnMTBweCcsXG4gICAgY3Vyc29yOiBkaXNhYmxlZCA/ICdub3QtYWxsb3dlZCcgOiAncG9pbnRlcicsXG4gICAgb3BhY2l0eTogaXNTdWJtaXR0aW5nID8gMC43NSA6IDEsXG4gICAgZm9udEZhbWlseSxcbiAgICB0cmFuc2l0aW9uOiAnb3BhY2l0eSAxMjBtcyBlYXNlJyxcbiAgfTtcblxuICBjb25zdCBza2lwQnV0dG9uU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgcGFkZGluZzogJzExcHggMTZweCcsXG4gICAgZm9udFNpemU6ICcxNHB4JyxcbiAgICBmb250V2VpZ2h0OiA2MDAsXG4gICAgY29sb3I6ICcjNmI3MjgwJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgYm9yZGVyOiAnMS41cHggc29saWQgI2U1ZTdlYicsXG4gICAgYm9yZGVyUmFkaXVzOiAnMTBweCcsXG4gICAgY3Vyc29yOiBpc1N1Ym1pdHRpbmcgPyAnbm90LWFsbG93ZWQnIDogJ3BvaW50ZXInLFxuICAgIGZvbnRGYW1pbHksXG4gIH07XG5cbiAgY29uc3QgcmVuZGVyRmllbGQgPSAoZmllbGQ6IEZvcm1GaWVsZCkgPT4gKFxuICAgIDxkaXYga2V5PXtmaWVsZC5uYW1lfT5cbiAgICAgIDxsYWJlbCBzdHlsZT17bGFiZWxTdHlsZX0+XG4gICAgICAgIHtmaWVsZC5sYWJlbH1cbiAgICAgICAge2ZpZWxkLnJlcXVpcmVkICYmIDxzcGFuIHN0eWxlPXt7IGNvbG9yOiAnI2VmNDQ0NCcsIG1hcmdpbkxlZnQ6ICczcHgnIH19Pio8L3NwYW4+fVxuICAgICAgPC9sYWJlbD5cblxuICAgICAge2ZpZWxkLmRlc2NyaXB0aW9uICYmIDxkaXYgc3R5bGU9e2Rlc2NyaXB0aW9uU3R5bGV9PntmaWVsZC5kZXNjcmlwdGlvbn08L2Rpdj59XG5cbiAgICAgIHtmaWVsZC50eXBlID09PSAndGV4dCcgJiYgKFxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgc3R5bGU9e2Jhc2VJbnB1dFN0eWxlKGZpZWxkLm5hbWUpfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtmaWVsZC5wbGFjZWhvbGRlciB8fCAnJ31cbiAgICAgICAgICB2YWx1ZT17KGZvcm1EYXRhW2ZpZWxkLm5hbWVdIGFzIHN0cmluZykgfHwgJyd9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVDaGFuZ2UoZmllbGQubmFtZSwgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uRm9jdXM9eygpID0+IHNldEZvY3VzZWQoZmllbGQubmFtZSl9XG4gICAgICAgICAgb25CbHVyPXsoKSA9PiBzZXRGb2N1c2VkKG51bGwpfVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtmaWVsZC50eXBlID09PSAnbnVtYmVyJyAmJiAoXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgIHN0eWxlPXtiYXNlSW5wdXRTdHlsZShmaWVsZC5uYW1lKX1cbiAgICAgICAgICBwbGFjZWhvbGRlcj17ZmllbGQucGxhY2Vob2xkZXIgfHwgJyd9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1EYXRhW2ZpZWxkLm5hbWVdICE9PSB1bmRlZmluZWQgPyBTdHJpbmcoZm9ybURhdGFbZmllbGQubmFtZV0pIDogJyd9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVDaGFuZ2UoZmllbGQubmFtZSwgZS50YXJnZXQudmFsdWUgPyBOdW1iZXIoZS50YXJnZXQudmFsdWUpIDogJycpfVxuICAgICAgICAgIG9uRm9jdXM9eygpID0+IHNldEZvY3VzZWQoZmllbGQubmFtZSl9XG4gICAgICAgICAgb25CbHVyPXsoKSA9PiBzZXRGb2N1c2VkKG51bGwpfVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtmaWVsZC50eXBlID09PSAnZGF0ZScgJiYgKFxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICAgICAgc3R5bGU9e2Jhc2VJbnB1dFN0eWxlKGZpZWxkLm5hbWUpfVxuICAgICAgICAgIHZhbHVlPXsoZm9ybURhdGFbZmllbGQubmFtZV0gYXMgc3RyaW5nKSB8fCAnJ31cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUNoYW5nZShmaWVsZC5uYW1lLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25Gb2N1cz17KCkgPT4gc2V0Rm9jdXNlZChmaWVsZC5uYW1lKX1cbiAgICAgICAgICBvbkJsdXI9eygpID0+IHNldEZvY3VzZWQobnVsbCl9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge2ZpZWxkLnR5cGUgPT09ICdzZWxlY3QnICYmIChcbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIHN0eWxlPXt7IC4uLmJhc2VJbnB1dFN0eWxlKGZpZWxkLm5hbWUpLCBhcHBlYXJhbmNlOiAnYXV0bycgYXMgY29uc3QsIGN1cnNvcjogZGlzYWJsZWQgPyAnbm90LWFsbG93ZWQnIDogJ3BvaW50ZXInIH19XG4gICAgICAgICAgdmFsdWU9eyhmb3JtRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmcpIHx8ICcnfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlQ2hhbmdlKGZpZWxkLm5hbWUsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICBvbkZvY3VzPXsoKSA9PiBzZXRGb2N1c2VkKGZpZWxkLm5hbWUpfVxuICAgICAgICAgIG9uQmx1cj17KCkgPT4gc2V0Rm9jdXNlZChudWxsKX1cbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgID5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+e2ZpZWxkLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QuLi4nfTwvb3B0aW9uPlxuICAgICAgICAgIHtmaWVsZC5vcHRpb25zPy5tYXAoKG9wdCkgPT4gKFxuICAgICAgICAgICAgPG9wdGlvbiBrZXk9e29wdC52YWx1ZX0gdmFsdWU9e29wdC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcHQubGFiZWx9XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICApfVxuXG4gICAgICB7ZmllbGQudHlwZSA9PT0gJ2Jvb2xlYW4nICYmIChcbiAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzEwcHgnLCBjdXJzb3I6IGRpc2FibGVkID8gJ25vdC1hbGxvd2VkJyA6ICdwb2ludGVyJyB9fT5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjaGVja2VkPXsoZm9ybURhdGFbZmllbGQubmFtZV0gYXMgYm9vbGVhbikgfHwgZmFsc2V9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUNoYW5nZShmaWVsZC5uYW1lLCBlLnRhcmdldC5jaGVja2VkKX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiAnMTdweCcsIGhlaWdodDogJzE3cHgnLCBhY2NlbnRDb2xvcjogcHJpbWFyeUNvbG9yLCBjdXJzb3I6ICdpbmhlcml0JyB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZm9udFNpemU6ICcxNHB4JywgY29sb3I6ICcjMzc0MTUxJyB9fT57ZmllbGQucGxhY2Vob2xkZXIgfHwgJ1llcyd9PC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgKX1cblxuICAgICAge2Vycm9yc1tmaWVsZC5uYW1lXSAmJiA8ZGl2IHN0eWxlPXtlcnJvclN0eWxlfT57ZXJyb3JzW2ZpZWxkLm5hbWVdfTwvZGl2Pn1cbiAgICA8L2Rpdj5cbiAgKTtcblxuICBjb25zdCBidXR0b25zID0gKFxuICAgIDxkaXYgc3R5bGU9e2Zvb3RlclN0eWxlfT5cbiAgICAgIHtzaG93Q2FuY2VsICYmIChcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgc3R5bGU9e3NraXBCdXR0b25TdHlsZX0gZGlzYWJsZWQ9e2lzU3VibWl0dGluZ30gb25DbGljaz17b25DYW5jZWx9PlxuICAgICAgICAgIFNraXBcbiAgICAgICAgPC9idXR0b24+XG4gICAgICApfVxuICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgc3R5bGU9e3ByaW1hcnlCdXR0b25TdHlsZX0gZGlzYWJsZWQ9e2Rpc2FibGVkfT5cbiAgICAgICAge2lzU3VibWl0dGVkID8gJ1N1Ym1pdHRlZCcgOiBpc1N1Ym1pdHRpbmcgPyAnU3VibWl0dGluZ+KApicgOiAnU3VibWl0J31cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH0gc3R5bGU9e2Zvcm1TdHlsZX0+XG4gICAgICB7KHNjaGVtYS5tZXNzYWdlIHx8IChpc0Z1bGxzY3JlZW4gJiYgdGl0bGUpKSAmJiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e2hlYWRlclN0eWxlfT5cbiAgICAgICAgICB7aXNGdWxsc2NyZWVuICYmIHRpdGxlICYmIDxkaXYgc3R5bGU9e3RpdGxlU3R5bGV9Pnt0aXRsZX08L2Rpdj59XG4gICAgICAgICAge3NjaGVtYS5tZXNzYWdlICYmIDxkaXYgc3R5bGU9e21lc3NhZ2VTdHlsZX0+e3NjaGVtYS5tZXNzYWdlfTwvZGl2Pn1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICA8ZGl2IHN0eWxlPXtib2R5U3R5bGV9PntzY2hlbWEuZmllbGRzLm1hcChyZW5kZXJGaWVsZCl9PC9kaXY+XG5cbiAgICAgIHtidXR0b25zfVxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cbi8qKiBUcmFuc2x1Y2VudCB2ZXJzaW9uIG9mIHRoZSBwcmltYXJ5IGNvbG9yIGZvciB0aGUgZm9jdXMgcmluZyAoYWNjZXB0cyAjcmdiLyNycmdnYmIpLiAqL1xuZnVuY3Rpb24gaGV4VG9Tb2Z0UmluZyhoZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG0gPSBoZXgucmVwbGFjZSgnIycsICcnKTtcbiAgY29uc3QgZnVsbCA9IG0ubGVuZ3RoID09PSAzID8gbS5zcGxpdCgnJykubWFwKChjKSA9PiBjICsgYykuam9pbignJykgOiBtO1xuICBjb25zdCBpbnQgPSBwYXJzZUludChmdWxsLCAxNik7XG4gIGlmIChmdWxsLmxlbmd0aCAhPT0gNiB8fCBOdW1iZXIuaXNOYU4oaW50KSkgcmV0dXJuICdyZ2JhKDM3LDk5LDIzNSwwLjE1KSc7XG4gIGNvbnN0IHIgPSAoaW50ID4+IDE2KSAmIDI1NTtcbiAgY29uc3QgZyA9IChpbnQgPj4gOCkgJiAyNTU7XG4gIGNvbnN0IGIgPSBpbnQgJiAyNTU7XG4gIHJldHVybiBgcmdiYSgke3J9LCAke2d9LCAke2J9LCAwLjE1KWA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IER5bmFtaWNGb3JtTWVzc2FnZTtcbiJdfQ==
|