@gnwebsoft/ui 4.0.1 → 4.0.3

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.
@@ -0,0 +1,2281 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+
4
+ var _chunkY3QTSDLJcjs = require('./chunk-Y3QTSDLJ.cjs');
5
+
6
+
7
+ var _chunkEYXPJMEFcjs = require('./chunk-EYXPJMEF.cjs');
8
+
9
+
10
+ var _chunkLUW7V5GIcjs = require('./chunk-LUW7V5GI.cjs');
11
+
12
+ // src/wrappers/types/common.ts
13
+ function isValidOption(Value) {
14
+ return typeof Value === "object" && Value !== null && "label" in Value && "value" in Value && typeof Value.Label === "string" && (typeof Value.Value === "string" || typeof Value.Value === "number" || typeof Value.Value === "boolean");
15
+ }
16
+ function normalizeOptions(options, labelField = "label", valueField = "value") {
17
+ return options.map((option) => ({
18
+ label: String(_nullishCoalesce(option[labelField], () => ( ""))),
19
+ value: option[valueField],
20
+ disabled: Boolean(option.disabled)
21
+ }));
22
+ }
23
+
24
+ // src/wrappers/AsyncMultiSelect2/AsyncMultiSelect2.tsx
25
+
26
+
27
+
28
+
29
+
30
+ var _material = require('@mui/material');
31
+ var _lodash = require('lodash');
32
+ var _react = require('react'); var React4 = _interopRequireWildcard(_react);
33
+ var _reacthookform = require('react-hook-form');
34
+ var _jsxruntime = require('react/jsx-runtime');
35
+ var initialState = {
36
+ options: [],
37
+ selectedOptions: [],
38
+ inputValue: "",
39
+ loading: false,
40
+ initialLoaded: false
41
+ };
42
+ function componentReducer(state, action) {
43
+ switch (action.type) {
44
+ case "SET_OPTIONS":
45
+ return { ...state, options: action.payload, loading: false };
46
+ case "SET_SELECTED_OPTIONS":
47
+ return { ...state, selectedOptions: action.payload };
48
+ case "SET_INPUT_VALUE":
49
+ return { ...state, inputValue: action.payload };
50
+ case "SET_LOADING":
51
+ return { ...state, loading: action.payload };
52
+ case "SET_INITIAL_LOADED":
53
+ return { ...state, initialLoaded: action.payload };
54
+ case "RESET_OPTIONS":
55
+ return { ...state, options: state.selectedOptions };
56
+ default:
57
+ return state;
58
+ }
59
+ }
60
+ var AsyncMultiSelect2Component = ({
61
+ name,
62
+ control,
63
+ placeholder,
64
+ initialValues,
65
+ label,
66
+ queryFn,
67
+ variant = "outlined",
68
+ disabled = false,
69
+ debounceMs = 400,
70
+ loadingText = "Loading...",
71
+ noOptionsText = "No options",
72
+ renderInput,
73
+ ...rest
74
+ }) => {
75
+ const [state, dispatch] = _react.useReducer.call(void 0, componentReducer, initialState);
76
+ const {
77
+ field,
78
+ fieldState: { error }
79
+ } = _reacthookform.useController.call(void 0, {
80
+ name,
81
+ control
82
+ });
83
+ const debouncedFetch = _react.useMemo.call(void 0,
84
+ () => _lodash.debounce.call(void 0, async (payload) => {
85
+ try {
86
+ const results = await queryFn(payload);
87
+ const mergedOptions = [
88
+ ...state.selectedOptions,
89
+ ...results.filter(
90
+ (option) => !state.selectedOptions.some(
91
+ (selected) => selected.value === option.value
92
+ )
93
+ )
94
+ ];
95
+ dispatch({ type: "SET_OPTIONS", payload: mergedOptions });
96
+ } catch (_error) {
97
+ dispatch({ type: "SET_LOADING", payload: false });
98
+ }
99
+ }, debounceMs),
100
+ [queryFn, state.selectedOptions, debounceMs]
101
+ );
102
+ _react.useEffect.call(void 0, () => {
103
+ if (!_optionalChain([initialValues, 'optionalAccess', _2 => _2.length]) || state.initialLoaded) return;
104
+ dispatch({ type: "SET_LOADING", payload: true });
105
+ const payload = {
106
+ query: null,
107
+ initialValues
108
+ };
109
+ queryFn(payload).then((results) => {
110
+ if (results) {
111
+ dispatch({ type: "SET_SELECTED_OPTIONS", payload: results });
112
+ dispatch({ type: "SET_OPTIONS", payload: results });
113
+ dispatch({ type: "SET_INITIAL_LOADED", payload: true });
114
+ field.onChange(results.map((option) => option.value));
115
+ }
116
+ dispatch({ type: "SET_LOADING", payload: false });
117
+ }).catch((_error) => {
118
+ dispatch({ type: "SET_LOADING", payload: false });
119
+ });
120
+ }, [initialValues, state.initialLoaded, queryFn, field]);
121
+ _react.useEffect.call(void 0, () => {
122
+ if (!state.initialLoaded) return;
123
+ if (state.inputValue === "") {
124
+ dispatch({ type: "RESET_OPTIONS" });
125
+ return;
126
+ }
127
+ dispatch({ type: "SET_LOADING", payload: true });
128
+ const payload = {
129
+ query: state.inputValue,
130
+ initialValues: null
131
+ };
132
+ debouncedFetch(payload);
133
+ }, [state.inputValue, state.initialLoaded, debouncedFetch]);
134
+ const handleChange = _react.useCallback.call(void 0,
135
+ (event, newValue) => {
136
+ dispatch({ type: "SET_SELECTED_OPTIONS", payload: newValue });
137
+ field.onChange(newValue.map((option) => option.value));
138
+ },
139
+ [field]
140
+ );
141
+ const handleInputChange = _react.useCallback.call(void 0,
142
+ (event, newInputValue) => {
143
+ dispatch({ type: "SET_INPUT_VALUE", payload: newInputValue });
144
+ },
145
+ []
146
+ );
147
+ const isOptionEqualToValue = _react.useCallback.call(void 0,
148
+ (option, value) => option.value === value.value,
149
+ []
150
+ );
151
+ const getOptionLabel = _react.useCallback.call(void 0, (option) => option.label, []);
152
+ const defaultRenderInput = _react.useCallback.call(void 0,
153
+ (params) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
154
+ _material.TextField,
155
+ {
156
+ ...params,
157
+ label,
158
+ placeholder,
159
+ variant,
160
+ error: !!error,
161
+ helperText: _optionalChain([error, 'optionalAccess', _3 => _3.message]),
162
+ slotProps: {
163
+ input: {
164
+ ...params.InputProps,
165
+ endAdornment: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
166
+ state.loading && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.CircularProgress, { color: "inherit", size: 20 }),
167
+ params.InputProps.endAdornment
168
+ ] })
169
+ }
170
+ }
171
+ }
172
+ ),
173
+ [
174
+ label,
175
+ placeholder,
176
+ variant,
177
+ error,
178
+ state.loading
179
+ ]
180
+ );
181
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
182
+ _material.Autocomplete,
183
+ {
184
+ multiple: true,
185
+ options: state.options,
186
+ value: state.selectedOptions,
187
+ loading: state.loading,
188
+ disabled,
189
+ isOptionEqualToValue,
190
+ getOptionLabel,
191
+ filterSelectedOptions: true,
192
+ onChange: handleChange,
193
+ onInputChange: handleInputChange,
194
+ loadingText,
195
+ noOptionsText,
196
+ renderInput: renderInput || defaultRenderInput,
197
+ ...rest
198
+ }
199
+ );
200
+ };
201
+ var AsyncMultiSelect2 = ({
202
+ gridProps = {},
203
+ ...props
204
+ }) => {
205
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Grid, { size: 12, ...gridProps, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AsyncMultiSelect2Component, { ...props }) });
206
+ };
207
+ AsyncMultiSelect2.displayName = "AsyncMultiSelect2";
208
+
209
+ // src/wrappers/CheckboxElement/CheckboxElement.tsx
210
+
211
+
212
+
213
+
214
+
215
+
216
+
217
+
218
+
219
+
220
+ var Component = function CheckboxElement(props) {
221
+ const {
222
+ name,
223
+ control,
224
+ label,
225
+ labelKey,
226
+ namespace,
227
+ labelProps,
228
+ helperText,
229
+ parseError,
230
+ transform,
231
+ disabled,
232
+ onChange: customOnChange,
233
+ ...rest
234
+ } = props;
235
+ const { resolveLabel } = _chunkEYXPJMEFcjs.useFormI18n.call(void 0, );
236
+ const resolvedLabel = resolveLabel(label, labelKey, namespace);
237
+ const {
238
+ field,
239
+ fieldState: { error }
240
+ } = _reacthookform.useController.call(void 0, {
241
+ name,
242
+ control,
243
+ disabled
244
+ });
245
+ if (field.value == null || field.value == void 0) {
246
+ field.onChange(false);
247
+ }
248
+ const customOutputTransform = _optionalChain([transform, 'optionalAccess', _4 => _4.output]);
249
+ const { value, onChange } = _chunkY3QTSDLJcjs.useTransform.call(void 0, {
250
+ value: field.value,
251
+ onChange: field.onChange,
252
+ transform: {
253
+ input: typeof _optionalChain([transform, 'optionalAccess', _5 => _5.input]) === "function" ? transform.input : (value2) => !!value2,
254
+ output: typeof customOutputTransform === "function" ? (eventOrValue, _value) => {
255
+ const event = eventOrValue;
256
+ const checked = _value;
257
+ return customOutputTransform(event, checked);
258
+ } : (eventOrValue, _value) => {
259
+ const checked = _value;
260
+ return checked;
261
+ }
262
+ }
263
+ });
264
+ const handleChange = (event, checked) => {
265
+ onChange(event, checked);
266
+ if (typeof customOnChange === "function") {
267
+ customOnChange(event, checked);
268
+ }
269
+ };
270
+ const displayError = error ? typeof parseError === "function" ? parseError(error) : error.message : null;
271
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.FormControl, { error: !!error, disabled, children: [
272
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.FormGroup, { row: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
273
+ _material.FormControlLabel,
274
+ {
275
+ label: resolvedLabel || "",
276
+ ...labelProps,
277
+ disabled,
278
+ control: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
279
+ _material.Checkbox,
280
+ {
281
+ ...rest,
282
+ color: rest.color || "primary",
283
+ checked: value,
284
+ disabled,
285
+ onChange: handleChange,
286
+ ref: field.ref
287
+ }
288
+ )
289
+ }
290
+ ) }),
291
+ (displayError || helperText) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.FormHelperText, { error: !!error, children: displayError || helperText })
292
+ ] });
293
+ };
294
+ var CheckboxElement2 = ({
295
+ gridProps = {},
296
+ ...props
297
+ }) => {
298
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Grid, { size: 12, ...gridProps, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Component, { ...props }) });
299
+ };
300
+
301
+ // src/wrappers/CheckboxGroup/CheckboxGroup.tsx
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+ var Component2 = function CheckboxGroup(props) {
314
+ const { name, control, labelProps, options, ...rest } = props;
315
+ const {
316
+ field,
317
+ fieldState: { error }
318
+ } = _reacthookform.useController.call(void 0, {
319
+ name,
320
+ control,
321
+ disabled: rest.disabled
322
+ });
323
+ const [selectedValues, setSelectedValues] = _react.useState.call(void 0,
324
+ options.filter((c) => _optionalChain([field, 'access', _6 => _6.value, 'optionalAccess', _7 => _7.includes, 'call', _8 => _8(c.Value)])).map((c) => c.Value) || []
325
+ );
326
+ _react.useEffect.call(void 0, () => {
327
+ field.onChange(selectedValues ? [...selectedValues] : []);
328
+ }, [selectedValues, field]);
329
+ const handleChange = _react.useCallback.call(void 0, (event) => {
330
+ const value = Number.parseInt(event.target.value, 10);
331
+ if (Number.isNaN(value)) {
332
+ return;
333
+ }
334
+ if (event.target.checked) {
335
+ setSelectedValues((prev) => [...prev, value]);
336
+ } else {
337
+ setSelectedValues((prev) => prev.filter((item) => item !== value));
338
+ }
339
+ }, []);
340
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.FormControl, { error: !!error, children: [
341
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.FormGroup, { row: true, children: options.map((option) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
342
+ _material.FormControlLabel,
343
+ {
344
+ label: option.Label,
345
+ ...labelProps,
346
+ control: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
347
+ _material.Checkbox,
348
+ {
349
+ ...rest,
350
+ color: rest.color || "primary",
351
+ value: option.Value,
352
+ checked: selectedValues.includes(option.Value),
353
+ onChange: handleChange
354
+ }
355
+ )
356
+ },
357
+ `${option.Value}`
358
+ )) }),
359
+ error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.FormHelperText, { error: !!error, children: error.message })
360
+ ] });
361
+ };
362
+ var CheckboxGroup2 = ({
363
+ gridProps = {},
364
+ ...props
365
+ }) => {
366
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Grid, { size: 12, ...gridProps, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Component2, { ...props }) });
367
+ };
368
+ CheckboxGroup2.displayName = "CheckboxGroup";
369
+
370
+ // src/wrappers/DatePickerElement/DatePickerElement.tsx
371
+
372
+
373
+
374
+ // src/wrappers/DatePickerElement/DatePickerElementCore.tsx
375
+
376
+ var _xdatepickers = require('@mui/x-date-pickers');
377
+
378
+
379
+
380
+ // src/wrappers/DatePickerElement/hooks/useDatePickerValue.ts
381
+ var _internals = require('@mui/x-date-pickers/internals');
382
+
383
+ function readDatePickerValueAsDate(adapter, value) {
384
+ if (value === null || value === void 0) {
385
+ return null;
386
+ }
387
+ if (typeof value === "string") {
388
+ if (value === "") {
389
+ return null;
390
+ }
391
+ const parsedDate = adapter.utils.date(value);
392
+ return parsedDate;
393
+ }
394
+ return value;
395
+ }
396
+ function useDatePickerValue(options) {
397
+ const { field, transform } = options;
398
+ const adapter = _internals.useLocalizationContext.call(void 0, );
399
+ const value = _react.useMemo.call(void 0, () => {
400
+ if (typeof _optionalChain([transform, 'optionalAccess', _9 => _9.input]) === "function") {
401
+ return transform.input(field.value);
402
+ }
403
+ return readDatePickerValueAsDate(adapter, field.value);
404
+ }, [field.value, _optionalChain([transform, 'optionalAccess', _10 => _10.input]), adapter]);
405
+ const onChange = _react.useCallback.call(void 0,
406
+ (newValue, context) => {
407
+ if (typeof _optionalChain([transform, 'optionalAccess', _11 => _11.output]) === "function") {
408
+ const transformedValue = transform.output(newValue, context);
409
+ field.onChange(transformedValue);
410
+ } else {
411
+ field.onChange(newValue);
412
+ }
413
+ },
414
+ // eslint-disable-next-line react-hooks/exhaustive-deps
415
+ [field.onChange, _optionalChain([transform, 'optionalAccess', _12 => _12.output])]
416
+ );
417
+ return {
418
+ value,
419
+ onChange
420
+ };
421
+ }
422
+
423
+ // src/wrappers/DatePickerElement/hooks/useDatePickerValidation.ts
424
+
425
+ var DEFAULT_ERROR_MESSAGES = {
426
+ invalidDate: "Please enter a valid date",
427
+ minDate: "Date must be after the minimum allowed date",
428
+ maxDate: "Date must be before the maximum allowed date",
429
+ disabledDate: "This date is not allowed",
430
+ required: "This field is required"
431
+ };
432
+ function useDatePickerValidation(options) {
433
+ const { fieldState, validation, parseError, value } = options;
434
+ const validationResult = _react.useMemo.call(void 0, () => {
435
+ const { error: fieldError, invalid } = fieldState;
436
+ let currentError = fieldError;
437
+ if (!fieldError && value && validation) {
438
+ const { minDate, maxDate, shouldDisableDate, errorMessages } = validation;
439
+ if (minDate && value < minDate) {
440
+ currentError = {
441
+ type: "minDate",
442
+ message: _optionalChain([errorMessages, 'optionalAccess', _13 => _13.minDate]) || DEFAULT_ERROR_MESSAGES.minDate
443
+ };
444
+ } else if (maxDate && value > maxDate) {
445
+ currentError = {
446
+ type: "maxDate",
447
+ message: _optionalChain([errorMessages, 'optionalAccess', _14 => _14.maxDate]) || DEFAULT_ERROR_MESSAGES.maxDate
448
+ };
449
+ } else if (shouldDisableDate && shouldDisableDate(value)) {
450
+ currentError = {
451
+ type: "disabledDate",
452
+ message: _optionalChain([errorMessages, 'optionalAccess', _15 => _15.disabledDate]) || DEFAULT_ERROR_MESSAGES.disabledDate
453
+ };
454
+ }
455
+ }
456
+ const hasError = Boolean(currentError);
457
+ return {
458
+ hasError,
459
+ error: currentError,
460
+ invalid: invalid || hasError
461
+ };
462
+ }, [fieldState, validation, value]);
463
+ const errorMessage = _react.useMemo.call(void 0, () => {
464
+ if (!validationResult.error) {
465
+ return null;
466
+ }
467
+ if (parseError) {
468
+ return parseError(validationResult.error);
469
+ }
470
+ if (typeof validationResult.error === "string") {
471
+ return validationResult.error;
472
+ }
473
+ if ("message" in validationResult.error && validationResult.error.message) {
474
+ return validationResult.error.message;
475
+ }
476
+ if ("type" in validationResult.error) {
477
+ const errorType = validationResult.error.type;
478
+ switch (errorType) {
479
+ case "required":
480
+ return DEFAULT_ERROR_MESSAGES.required;
481
+ case "minDate":
482
+ return DEFAULT_ERROR_MESSAGES.minDate;
483
+ case "maxDate":
484
+ return DEFAULT_ERROR_MESSAGES.maxDate;
485
+ case "disabledDate":
486
+ return DEFAULT_ERROR_MESSAGES.disabledDate;
487
+ case "invalidDate":
488
+ default:
489
+ return DEFAULT_ERROR_MESSAGES.invalidDate;
490
+ }
491
+ }
492
+ return DEFAULT_ERROR_MESSAGES.invalidDate;
493
+ }, [validationResult.error, parseError]);
494
+ return {
495
+ ...validationResult,
496
+ errorMessage
497
+ };
498
+ }
499
+
500
+ // src/wrappers/DatePickerElement/hooks/useDatePickerStyles.ts
501
+
502
+
503
+ function useDatePickerStyles(options = {}) {
504
+ const { disabled, hasError, loading, textReadOnly, sx: customSx } = options;
505
+ const theme = _material.useTheme.call(void 0, );
506
+ const computedSx = _react.useMemo.call(void 0, () => {
507
+ const baseStyles = {
508
+ // Input field styling
509
+ "& .MuiOutlinedInput-root": {
510
+ backgroundColor: disabled ? theme.palette.action.disabledBackground : "transparent",
511
+ // Transition for smooth state changes
512
+ transition: theme.transitions.create([
513
+ "background-color",
514
+ "border-color",
515
+ "color"
516
+ ], {
517
+ duration: theme.transitions.duration.short
518
+ }),
519
+ // Error state styling
520
+ ...hasError && {
521
+ borderColor: theme.palette.error.main,
522
+ "&:hover": {
523
+ borderColor: theme.palette.error.main
524
+ },
525
+ "&.Mui-focused": {
526
+ borderColor: theme.palette.error.main,
527
+ boxShadow: `0 0 0 2px ${theme.palette.error.main}25`
528
+ // 25 is 15% opacity in hex
529
+ }
530
+ },
531
+ // Loading state styling
532
+ ...loading && {
533
+ opacity: 0.7,
534
+ pointerEvents: "none"
535
+ }
536
+ },
537
+ // Input element styling
538
+ "& .MuiInputBase-input": {
539
+ cursor: disabled ? "not-allowed" : textReadOnly ? "pointer" : "text",
540
+ // Read-only specific styling
541
+ ...textReadOnly && !disabled && {
542
+ cursor: "pointer",
543
+ userSelect: "none",
544
+ caretColor: "transparent"
545
+ // Hide text cursor in read-only mode
546
+ },
547
+ // Loading state
548
+ ...loading && {
549
+ cursor: "wait"
550
+ }
551
+ },
552
+ // Required field asterisk styling
553
+ "& .MuiInputLabel-asterisk": {
554
+ color: theme.palette.error.main,
555
+ fontSize: "1.2em"
556
+ },
557
+ // Label styling with better contrast
558
+ "& .MuiInputLabel-root": {
559
+ color: hasError ? theme.palette.error.main : theme.palette.text.secondary,
560
+ // Ensure proper contrast for disabled state
561
+ ...disabled && {
562
+ color: theme.palette.text.disabled
563
+ }
564
+ },
565
+ // Helper text styling
566
+ "& .MuiFormHelperText-root": {
567
+ marginLeft: theme.spacing(1),
568
+ marginRight: theme.spacing(1),
569
+ // Error state
570
+ ...hasError && {
571
+ color: theme.palette.error.main
572
+ }
573
+ },
574
+ // Calendar icon styling
575
+ "& .MuiInputAdornment-root": {
576
+ color: disabled ? theme.palette.action.disabled : hasError ? theme.palette.error.main : theme.palette.action.active
577
+ },
578
+ // Focus ring for accessibility
579
+ "& .MuiOutlinedInput-root.Mui-focused": {
580
+ outline: `2px solid ${theme.palette.primary.main}50`,
581
+ // 50 is 31% opacity
582
+ outlineOffset: "2px"
583
+ },
584
+ // Enhanced contrast for dark themes
585
+ ...theme.palette.mode === "dark" && {
586
+ "& .MuiOutlinedInput-root": {
587
+ borderWidth: 2
588
+ }
589
+ }
590
+ };
591
+ return customSx ? [baseStyles, customSx] : baseStyles;
592
+ }, [
593
+ theme,
594
+ disabled,
595
+ hasError,
596
+ loading,
597
+ textReadOnly,
598
+ customSx
599
+ ]);
600
+ const className = _react.useMemo.call(void 0, () => {
601
+ const classes = [];
602
+ if (disabled) classes.push("DatePickerElement--disabled");
603
+ if (hasError) classes.push("DatePickerElement--error");
604
+ if (loading) classes.push("DatePickerElement--loading");
605
+ if (textReadOnly) classes.push("DatePickerElement--readOnly");
606
+ return classes.length > 0 ? classes.join(" ") : void 0;
607
+ }, [disabled, hasError, loading, textReadOnly]);
608
+ return {
609
+ sx: computedSx,
610
+ className
611
+ };
612
+ }
613
+
614
+ // src/wrappers/DatePickerElement/DatePickerElementCore.tsx
615
+
616
+ var DatePickerElementCore = _react.forwardRef.call(void 0,
617
+ (props, ref) => {
618
+ const {
619
+ name,
620
+ required = false,
621
+ control,
622
+ parseError,
623
+ transform,
624
+ validation,
625
+ label,
626
+ labelKey,
627
+ placeholder,
628
+ placeholderKey,
629
+ namespace,
630
+ textReadOnly = false,
631
+ helperText,
632
+ inputProps = {},
633
+ slotProps = {},
634
+ datePickerProps = {},
635
+ variant = "outlined",
636
+ loading = false,
637
+ LoadingComponent,
638
+ ...restProps
639
+ } = props;
640
+ const {
641
+ disabled,
642
+ inputRef: externalInputRef,
643
+ onClose,
644
+ ...restDatePickerProps
645
+ } = datePickerProps;
646
+ const { field, fieldState } = _reacthookform.useController.call(void 0, {
647
+ name,
648
+ control,
649
+ defaultValue: null
650
+ // Let react-hook-form handle the default value typing
651
+ });
652
+ const { value, onChange: onValueChange } = useDatePickerValue({
653
+ field,
654
+ transform
655
+ });
656
+ const { hasError, errorMessage, invalid } = useDatePickerValidation({
657
+ fieldState,
658
+ validation,
659
+ parseError,
660
+ value
661
+ });
662
+ const { className } = useDatePickerStyles({
663
+ disabled,
664
+ hasError,
665
+ loading,
666
+ textReadOnly
667
+ });
668
+ const { resolveLabel } = _chunkEYXPJMEFcjs.useFormI18n.call(void 0, );
669
+ const resolvedLabel = resolveLabel(label, labelKey, namespace);
670
+ const resolvedPlaceholder = resolveLabel(placeholder, placeholderKey, namespace);
671
+ const handleInputRef = _material.useForkRef.call(void 0, field.ref, externalInputRef);
672
+ const handleChange = _react.useCallback.call(void 0,
673
+ (newValue, context) => {
674
+ onValueChange(newValue, context);
675
+ },
676
+ [onValueChange]
677
+ );
678
+ const handleClose = _react.useCallback.call(void 0,
679
+ (...args) => {
680
+ field.onBlur();
681
+ if (onClose) {
682
+ onClose(...args);
683
+ }
684
+ },
685
+ // eslint-disable-next-line react-hooks/exhaustive-deps
686
+ [field.onBlur, onClose]
687
+ );
688
+ const handleTextFieldBlur = _react.useCallback.call(void 0,
689
+ (event) => {
690
+ field.onBlur();
691
+ if (typeof inputProps.onBlur === "function") {
692
+ inputProps.onBlur(event);
693
+ }
694
+ },
695
+ // eslint-disable-next-line react-hooks/exhaustive-deps
696
+ [field.onBlur, inputProps.onBlur]
697
+ );
698
+ const memoizedSlotProps = _react.useMemo.call(void 0,
699
+ () => ({
700
+ ...slotProps,
701
+ actionBar: {
702
+ actions: ["clear", "today", "cancel", "accept"],
703
+ ...slotProps.actionBar
704
+ },
705
+ textField: {
706
+ ...inputProps,
707
+ required,
708
+ placeholder,
709
+ fullWidth: true,
710
+ variant,
711
+ onBlur: handleTextFieldBlur,
712
+ error: hasError,
713
+ helperText: hasError ? errorMessage : helperText,
714
+ inputProps: {
715
+ readOnly: textReadOnly,
716
+ "aria-invalid": invalid,
717
+ "aria-describedby": hasError ? `${name}-error` : void 0,
718
+ ...inputProps.inputProps
719
+ },
720
+ // Add loading indicator if provided
721
+ ...loading && LoadingComponent && {
722
+ InputProps: {
723
+ endAdornment: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadingComponent, {}),
724
+ ...inputProps.InputProps
725
+ }
726
+ },
727
+ ...slotProps.textField
728
+ }
729
+ }),
730
+ [
731
+ slotProps,
732
+ inputProps,
733
+ required,
734
+ placeholder,
735
+ variant,
736
+ handleTextFieldBlur,
737
+ hasError,
738
+ errorMessage,
739
+ helperText,
740
+ textReadOnly,
741
+ invalid,
742
+ name,
743
+ loading,
744
+ LoadingComponent
745
+ ]
746
+ );
747
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
748
+ _xdatepickers.DatePicker,
749
+ {
750
+ ...restProps,
751
+ ...restDatePickerProps,
752
+ ref,
753
+ name,
754
+ value,
755
+ onChange: handleChange,
756
+ onClose: handleClose,
757
+ inputRef: handleInputRef,
758
+ label: resolvedLabel,
759
+ disabled,
760
+ className,
761
+ slotProps: memoizedSlotProps,
762
+ "aria-invalid": invalid,
763
+ "aria-describedby": hasError ? `${name}-error` : void 0
764
+ }
765
+ );
766
+ }
767
+ );
768
+ DatePickerElementCore.displayName = "DatePickerElementCore";
769
+
770
+ // src/wrappers/DatePickerElement/DatePickerElement.tsx
771
+
772
+ var DatePickerElement = _react.forwardRef.call(void 0, (props, ref) => {
773
+ const {
774
+ gridProps = { size: { xs: 12, sm: 12, md: 12, lg: 12, xl: 12 } },
775
+ ...coreProps
776
+ } = props;
777
+ if (gridProps === false) {
778
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
779
+ DatePickerElementCore,
780
+ {
781
+ ref,
782
+ ...coreProps
783
+ }
784
+ );
785
+ }
786
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
787
+ _material.Grid,
788
+ {
789
+ ref,
790
+ ...gridProps,
791
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
792
+ DatePickerElementCore,
793
+ {
794
+ ...coreProps
795
+ }
796
+ )
797
+ }
798
+ );
799
+ });
800
+ DatePickerElement.displayName = "DatePickerElement";
801
+
802
+ // src/wrappers/DatePickerElement/utils.ts
803
+ function isValidDate(value) {
804
+ if (value === null || value === void 0) {
805
+ return false;
806
+ }
807
+ if (value instanceof Date) {
808
+ return !isNaN(value.getTime());
809
+ }
810
+ if (typeof value === "object" && value !== null) {
811
+ if ("isValid" in value && typeof value.isValid === "function") {
812
+ return value.isValid();
813
+ }
814
+ if ("isValid" in value && typeof value.isValid === "boolean") {
815
+ return value.isValid;
816
+ }
817
+ }
818
+ return false;
819
+ }
820
+ function isParsableDateString(value) {
821
+ if (typeof value !== "string" || value === "") {
822
+ return false;
823
+ }
824
+ const isoDateRegex = /^\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}(?:\.\d{3})?(?:Z|[+-]\d{2}:\d{2})?)?$/;
825
+ if (isoDateRegex.test(value)) {
826
+ return true;
827
+ }
828
+ const parsed = new Date(value);
829
+ return !isNaN(parsed.getTime());
830
+ }
831
+ function createDateInputTransform(adapter) {
832
+ return (value) => {
833
+ if (value === null || value === void 0) {
834
+ return null;
835
+ }
836
+ if (typeof value === "string") {
837
+ if (value === "") {
838
+ return null;
839
+ }
840
+ try {
841
+ const parsed = adapter.utils.date(value);
842
+ return isValidDate(parsed) ? parsed : null;
843
+ } catch (e2) {
844
+ return null;
845
+ }
846
+ }
847
+ if (isValidDate(value)) {
848
+ return value;
849
+ }
850
+ return null;
851
+ };
852
+ }
853
+ function createDateOutputTransform(format) {
854
+ return (value) => {
855
+ if (value === null || value === void 0) {
856
+ return null;
857
+ }
858
+ if (!isValidDate(value)) {
859
+ return null;
860
+ }
861
+ if (!format) {
862
+ return value;
863
+ }
864
+ try {
865
+ if (value instanceof Date) {
866
+ if (format === "iso") {
867
+ return value.toISOString();
868
+ }
869
+ if (format === "date-only") {
870
+ return value.toISOString().split("T")[0];
871
+ }
872
+ }
873
+ if (typeof value.format === "function") {
874
+ return value.format(format);
875
+ }
876
+ if (typeof value.format === "function") {
877
+ return value.format(format);
878
+ }
879
+ if (typeof value.toFormat === "function") {
880
+ return value.toFormat(format);
881
+ }
882
+ return value;
883
+ } catch (e3) {
884
+ return null;
885
+ }
886
+ };
887
+ }
888
+ function createDefaultDatePickerConfig() {
889
+ return {
890
+ // Default slot props for consistent behavior
891
+ slotProps: {
892
+ actionBar: {
893
+ actions: ["clear", "today", "cancel", "accept"]
894
+ },
895
+ textField: {
896
+ fullWidth: true,
897
+ variant: "outlined"
898
+ }
899
+ },
900
+ // Default grid props for layout consistency
901
+ gridProps: {
902
+ size: { xs: 12, sm: 12, md: 12, lg: 12, xl: 12 }
903
+ },
904
+ // Default validation configuration
905
+ validation: {
906
+ errorMessages: {
907
+ invalidDate: "Please enter a valid date",
908
+ minDate: "Date must be after the minimum allowed date",
909
+ maxDate: "Date must be before the maximum allowed date",
910
+ disabledDate: "This date is not allowed"
911
+ }
912
+ }
913
+ };
914
+ }
915
+ function extractErrorMessage(error) {
916
+ if (error === null || error === void 0) {
917
+ return "";
918
+ }
919
+ if (typeof error === "string") {
920
+ return error;
921
+ }
922
+ if (typeof error === "object" && error !== null) {
923
+ if ("message" in error && typeof error.message === "string") {
924
+ return error.message;
925
+ }
926
+ if ("type" in error && typeof error.type === "string") {
927
+ const errorType = error.type;
928
+ switch (errorType) {
929
+ case "invalidDate":
930
+ return "Please enter a valid date";
931
+ case "minDate":
932
+ return "Date is too early";
933
+ case "maxDate":
934
+ return "Date is too late";
935
+ case "disabledDate":
936
+ return "This date is not available";
937
+ default:
938
+ return "Invalid date selection";
939
+ }
940
+ }
941
+ }
942
+ return "Invalid input";
943
+ }
944
+ function createStableKey(config) {
945
+ try {
946
+ return JSON.stringify(config, (key, value) => {
947
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
948
+ const sorted = {};
949
+ Object.keys(value).sort().forEach((k) => {
950
+ sorted[k] = value[k];
951
+ });
952
+ return sorted;
953
+ }
954
+ return value;
955
+ });
956
+ } catch (e4) {
957
+ return Object.keys(config).sort().join("-");
958
+ }
959
+ }
960
+
961
+ // src/wrappers/PasswordElement/PasswordElement.tsx
962
+ var _Visibility = require('@mui/icons-material/Visibility'); var _Visibility2 = _interopRequireDefault(_Visibility);
963
+ var _VisibilityOff = require('@mui/icons-material/VisibilityOff'); var _VisibilityOff2 = _interopRequireDefault(_VisibilityOff);
964
+
965
+
966
+
967
+
968
+
969
+
970
+
971
+
972
+
973
+
974
+ var Component3 = function PasswordEl(props) {
975
+ const {
976
+ iconColor,
977
+ renderIcon = (password2) => password2 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Visibility2.default, {}) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _VisibilityOff2.default, {}),
978
+ slotProps,
979
+ name,
980
+ control,
981
+ inputRef,
982
+ onBlur,
983
+ label,
984
+ labelKey,
985
+ placeholder,
986
+ placeholderKey,
987
+ namespace,
988
+ ...rest
989
+ } = props;
990
+ const [password, setPassword] = _react.useState.call(void 0, true);
991
+ const { resolveLabel } = _chunkEYXPJMEFcjs.useFormI18n.call(void 0, );
992
+ const resolvedLabel = resolveLabel(label, labelKey, namespace);
993
+ const resolvedPlaceholder = resolveLabel(placeholder, placeholderKey, namespace);
994
+ const endAdornment = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.InputAdornment, { position: "end", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
995
+ _material.IconButton,
996
+ {
997
+ onMouseDown: (e) => e.preventDefault(),
998
+ onClick: () => setPassword(!password),
999
+ tabIndex: -1,
1000
+ color: _nullishCoalesce(iconColor, () => ( "default")),
1001
+ children: renderIcon(password)
1002
+ }
1003
+ ) });
1004
+ const {
1005
+ field,
1006
+ fieldState: { error }
1007
+ } = _reacthookform.useController.call(void 0, {
1008
+ name,
1009
+ control
1010
+ });
1011
+ const handleInputRef = _material.useForkRef.call(void 0, field.ref, inputRef);
1012
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1013
+ _material.TextField,
1014
+ {
1015
+ ...rest,
1016
+ label: resolvedLabel,
1017
+ placeholder: resolvedPlaceholder,
1018
+ inputRef: handleInputRef,
1019
+ type: password ? "password" : "text",
1020
+ value: _nullishCoalesce(field.value, () => ( "")),
1021
+ fullWidth: true,
1022
+ variant: _nullishCoalesce(rest.variant, () => ( "outlined")),
1023
+ onChange: (event) => {
1024
+ field.onChange(event);
1025
+ if (typeof rest.onChange === "function") {
1026
+ rest.onChange(event);
1027
+ }
1028
+ },
1029
+ onBlur: (event) => {
1030
+ field.onBlur();
1031
+ if (typeof onBlur === "function") {
1032
+ onBlur(event);
1033
+ }
1034
+ },
1035
+ ...typeof slotProps === "undefined" ? {
1036
+ InputProps: {
1037
+ endAdornment
1038
+ }
1039
+ } : {
1040
+ slotProps: {
1041
+ ...slotProps,
1042
+ input: {
1043
+ endAdornment,
1044
+ ..._optionalChain([slotProps, 'optionalAccess', _16 => _16.input])
1045
+ }
1046
+ }
1047
+ },
1048
+ error: !!error,
1049
+ helperText: error ? error.message : ""
1050
+ }
1051
+ );
1052
+ };
1053
+ var PasswordElement = ({
1054
+ gridProps = {},
1055
+ ...props
1056
+ }) => {
1057
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Grid, { size: 12, ...gridProps, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Component3, { ...props }) });
1058
+ };
1059
+
1060
+ // src/wrappers/RadioButtonGroup/RadioButtonGroup.tsx
1061
+
1062
+
1063
+
1064
+
1065
+
1066
+
1067
+
1068
+
1069
+
1070
+
1071
+
1072
+ var Component4 = function RadioButtonGroup(props) {
1073
+ const {
1074
+ options,
1075
+ label,
1076
+ labelKey,
1077
+ namespace,
1078
+ name,
1079
+ labelField = "label",
1080
+ valueField = "id",
1081
+ disabledKey = "disabled",
1082
+ required,
1083
+ emptyOptionLabel,
1084
+ returnObject,
1085
+ row = true,
1086
+ control,
1087
+ type,
1088
+ labelProps,
1089
+ disabled,
1090
+ formLabelProps,
1091
+ radioProps,
1092
+ transform,
1093
+ ...rest
1094
+ } = props;
1095
+ const { resolveLabel } = _chunkEYXPJMEFcjs.useFormI18n.call(void 0, );
1096
+ const resolvedLabel = resolveLabel(label, labelKey, namespace);
1097
+ const {
1098
+ field,
1099
+ fieldState: { error }
1100
+ } = _reacthookform.useController.call(void 0, {
1101
+ name,
1102
+ disabled,
1103
+ control
1104
+ });
1105
+ const { value, onChange } = _chunkY3QTSDLJcjs.useTransform.call(void 0, {
1106
+ value: field.value,
1107
+ onChange: field.onChange,
1108
+ transform: {
1109
+ input: typeof _optionalChain([transform, 'optionalAccess', _17 => _17.input]) === "function" ? transform.input : (value2) => {
1110
+ return value2 || "";
1111
+ },
1112
+ output: typeof _optionalChain([transform, 'optionalAccess', _18 => _18.output]) === "function" ? _optionalChain([transform, 'optionalAccess', _19 => _19.output]) : (_event, value2) => {
1113
+ if (value2 && type === "number") {
1114
+ return Number(value2);
1115
+ }
1116
+ if (value2 && type === "boolean") {
1117
+ return Boolean(value2);
1118
+ }
1119
+ return value2;
1120
+ }
1121
+ }
1122
+ });
1123
+ const onRadioChange = (event, radioValue) => {
1124
+ const returnValue = returnObject ? options.find((option) => option[valueField] === radioValue) : radioValue;
1125
+ onChange(event, returnValue);
1126
+ if (typeof rest.onChange === "function") {
1127
+ rest.onChange(returnValue);
1128
+ }
1129
+ };
1130
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.FormControl, { error: !!error, children: [
1131
+ label && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.FormLabel, { ...formLabelProps, required, error: !!error, children: label }),
1132
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.RadioGroup, { onChange: onRadioChange, name, row, value, children: [
1133
+ emptyOptionLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1134
+ _material.FormControlLabel,
1135
+ {
1136
+ ...labelProps,
1137
+ control: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1138
+ _material.Radio,
1139
+ {
1140
+ ...radioProps,
1141
+ checked: !value
1142
+ }
1143
+ ),
1144
+ label: emptyOptionLabel,
1145
+ value: ""
1146
+ }
1147
+ ),
1148
+ options.map((option) => {
1149
+ const optionKey = option[valueField];
1150
+ const optionDisabled = option[disabledKey] || false;
1151
+ let val = returnObject ? _optionalChain([value, 'optionalAccess', _20 => _20[valueField]]) : value;
1152
+ if (type === "number" && val !== void 0) {
1153
+ val = Number(val);
1154
+ } else if (type === "boolean" && val !== void 0) {
1155
+ val = Boolean(val);
1156
+ }
1157
+ const isChecked = val === optionKey;
1158
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1159
+ _material.FormControlLabel,
1160
+ {
1161
+ ...labelProps,
1162
+ control: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1163
+ _material.Radio,
1164
+ {
1165
+ ...radioProps,
1166
+ disabled: disabled || optionDisabled,
1167
+ checked: isChecked
1168
+ }
1169
+ ),
1170
+ value: optionKey,
1171
+ label: option[labelField]
1172
+ },
1173
+ String(optionKey)
1174
+ );
1175
+ })
1176
+ ] }),
1177
+ error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.FormHelperText, { children: error.message })
1178
+ ] });
1179
+ };
1180
+ var RadioButtonGroup2 = ({
1181
+ gridProps = {},
1182
+ ...props
1183
+ }) => {
1184
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Grid, { size: 12, ...gridProps, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1185
+ Component4,
1186
+ {
1187
+ ...props
1188
+ }
1189
+ ) });
1190
+ };
1191
+ RadioButtonGroup2.displayName = "RadioButtonGroup";
1192
+
1193
+ // src/wrappers/SelectCascadeElement/SelectCascadeElement.tsx
1194
+
1195
+
1196
+
1197
+
1198
+ var Component5 = function SelectCascadeElement(props) {
1199
+ const {
1200
+ labelField = "Label",
1201
+ valueField = "Value",
1202
+ name,
1203
+ onBlur,
1204
+ onChange,
1205
+ disabled,
1206
+ options: optionsInput,
1207
+ control,
1208
+ loading = false,
1209
+ placeholder,
1210
+ label,
1211
+ dependsOn,
1212
+ textFieldProps = {},
1213
+ variant,
1214
+ isEdit = false,
1215
+ ...rest
1216
+ } = props;
1217
+ const { required, ...restTextProps } = textFieldProps;
1218
+ const options = _react.useMemo.call(void 0, () => optionsInput || [], [optionsInput]);
1219
+ const getOptionKey = _react.useCallback.call(void 0,
1220
+ (option) => {
1221
+ if (typeof option === "string" || typeof option === "number")
1222
+ return option;
1223
+ const key = option ? option[valueField] : void 0;
1224
+ return key !== void 0 && key !== null ? String(key) : "";
1225
+ },
1226
+ [valueField]
1227
+ );
1228
+ const getOptionLabel = _react.useCallback.call(void 0,
1229
+ (option) => {
1230
+ if (typeof option === "string") return option;
1231
+ return option ? String(option[labelField]) : "";
1232
+ },
1233
+ [labelField]
1234
+ );
1235
+ const isOptionEqualToValue = (option, value) => getOptionKey(option) === getOptionKey(value);
1236
+ const {
1237
+ field,
1238
+ fieldState: { error }
1239
+ } = _reacthookform.useController.call(void 0, {
1240
+ name,
1241
+ control
1242
+ });
1243
+ const { field: dependentField } = _reacthookform.useController.call(void 0, {
1244
+ name: dependsOn,
1245
+ control
1246
+ });
1247
+ const parentValueRef = _react.useRef.call(void 0, _nullishCoalesce(dependentField.value, () => ( null)));
1248
+ const hasAutoSelected = _react.useRef.call(void 0, false);
1249
+ _react.useEffect.call(void 0, () => {
1250
+ if (_optionalChain([parentValueRef, 'optionalAccess', _21 => _21.current]) !== dependentField.value) {
1251
+ hasAutoSelected.current = false;
1252
+ }
1253
+ if (!!field.value && _optionalChain([parentValueRef, 'optionalAccess', _22 => _22.current]) !== dependentField.value) {
1254
+ field.onChange(null);
1255
+ }
1256
+ }, [dependentField.value]);
1257
+ _react.useEffect.call(void 0, () => {
1258
+ if (!isEdit && !disabled && options.length === 1 && !!dependentField.value && !hasAutoSelected.current && field.value == null) {
1259
+ field.onChange(getOptionKey(options[0]));
1260
+ hasAutoSelected.current = true;
1261
+ }
1262
+ console.log(
1263
+ !isEdit,
1264
+ !disabled,
1265
+ options.length === 1,
1266
+ !!dependentField.value,
1267
+ !hasAutoSelected,
1268
+ field.value
1269
+ );
1270
+ }, [
1271
+ options,
1272
+ field.value,
1273
+ field.onChange,
1274
+ hasAutoSelected,
1275
+ isEdit,
1276
+ disabled,
1277
+ field,
1278
+ getOptionKey,
1279
+ dependentField.onChange
1280
+ ]);
1281
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1282
+ _material.Autocomplete,
1283
+ {
1284
+ ...rest,
1285
+ value: options.map((option) => getOptionKey(option) === field.value ? option : null).find(Boolean) || null,
1286
+ loading,
1287
+ options,
1288
+ getOptionKey,
1289
+ getOptionLabel,
1290
+ isOptionEqualToValue,
1291
+ ref: field.ref,
1292
+ disabled: dependentField.value == null || disabled,
1293
+ onChange: (event, newValue, reason) => {
1294
+ field.onChange(newValue ? getOptionKey(newValue) : null);
1295
+ if (onChange && typeof onChange === "function") {
1296
+ onChange(event, newValue, reason);
1297
+ }
1298
+ },
1299
+ onBlur: (event) => {
1300
+ field.onBlur();
1301
+ if (typeof onBlur === "function") {
1302
+ onBlur(event);
1303
+ }
1304
+ },
1305
+ fullWidth: true,
1306
+ renderInput: (params) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1307
+ _material.TextField,
1308
+ {
1309
+ ...params,
1310
+ ...restTextProps,
1311
+ fullWidth: true,
1312
+ error: !!error,
1313
+ required: required || options.length == 0,
1314
+ helperText: error ? error.message : "",
1315
+ placeholder,
1316
+ label,
1317
+ variant: variant ? variant : "outlined"
1318
+ }
1319
+ )
1320
+ }
1321
+ );
1322
+ };
1323
+ var SelectCascadeElement2 = ({
1324
+ gridProps = {},
1325
+ ...props
1326
+ }) => {
1327
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Grid, { size: 12, ...gridProps, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Component5, { ...props }) });
1328
+ };
1329
+ SelectCascadeElement2.displayName = "SelectCascadeElement";
1330
+
1331
+ // src/wrappers/SelectElement/SelectElement.tsx
1332
+
1333
+
1334
+
1335
+
1336
+
1337
+
1338
+
1339
+
1340
+
1341
+ var Component6 = function SelectElement(props) {
1342
+ const {
1343
+ name,
1344
+ control,
1345
+ onChange,
1346
+ isEdit,
1347
+ options: optionsInput,
1348
+ label,
1349
+ labelKey,
1350
+ placeholder,
1351
+ placeholderKey,
1352
+ namespace,
1353
+ variant,
1354
+ disabled,
1355
+ labelField = "Label",
1356
+ valueField = "Value",
1357
+ textFieldProps = {},
1358
+ ...rest
1359
+ } = props;
1360
+ const { required, ...restTextProps } = textFieldProps;
1361
+ const options = _react.useMemo.call(void 0, () => optionsInput || [], [optionsInput]);
1362
+ const ignoreAutoSelectRef = _react.useRef.call(void 0, null);
1363
+ const {
1364
+ field,
1365
+ fieldState: { error }
1366
+ } = _reacthookform.useController.call(void 0, {
1367
+ name,
1368
+ control
1369
+ });
1370
+ const { resolveLabel } = _chunkEYXPJMEFcjs.useFormI18n.call(void 0, );
1371
+ const resolvedLabel = resolveLabel(label, labelKey, namespace);
1372
+ const resolvedPlaceholder = resolveLabel(
1373
+ placeholder,
1374
+ placeholderKey,
1375
+ namespace
1376
+ );
1377
+ const getOptionValue = _react.useCallback.call(void 0,
1378
+ (option) => {
1379
+ if (typeof option === "string") return option;
1380
+ return option ? option[valueField] : null;
1381
+ },
1382
+ [valueField]
1383
+ );
1384
+ const getOptionLabel = _react.useCallback.call(void 0,
1385
+ (option) => {
1386
+ if (typeof option === "string") return option;
1387
+ return option ? String(option[labelField]) : "";
1388
+ },
1389
+ [labelField]
1390
+ );
1391
+ const handleChange = (event, newValue, reason) => {
1392
+ const option = newValue;
1393
+ if (reason === "clear" && options.length === 1) {
1394
+ ignoreAutoSelectRef.current = getOptionValue(options[0]);
1395
+ } else {
1396
+ ignoreAutoSelectRef.current = null;
1397
+ }
1398
+ field.onChange(option ? getOptionValue(option) : null);
1399
+ _optionalChain([onChange, 'optionalCall', _23 => _23(event, newValue, reason)]);
1400
+ };
1401
+ _react.useEffect.call(void 0, () => {
1402
+ if (!isEdit && options.length === 1 && (field.value == null || field.value == void 0 || field.value === "")) {
1403
+ const defaultOption = options[0];
1404
+ const defaultValue = getOptionValue(defaultOption);
1405
+ if (ignoreAutoSelectRef.current !== defaultValue) {
1406
+ field.onChange(defaultValue);
1407
+ }
1408
+ }
1409
+ }, [options]);
1410
+ const autocompleteValue = _react.useMemo.call(void 0,
1411
+ () => _nullishCoalesce(options.find((option) => getOptionValue(option) === field.value), () => ( null)),
1412
+ [field.value, options, getOptionValue]
1413
+ );
1414
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1415
+ _material.Autocomplete,
1416
+ {
1417
+ ...rest,
1418
+ filterSelectedOptions: false,
1419
+ options,
1420
+ value: autocompleteValue,
1421
+ onChange: handleChange,
1422
+ disabled: disabled || options.length == 0,
1423
+ getOptionLabel: (option) => getOptionLabel(option),
1424
+ ref: field.ref,
1425
+ isOptionEqualToValue: (option, value) => getOptionValue(option) === getOptionValue(value),
1426
+ renderInput: (params) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1427
+ _material.TextField,
1428
+ {
1429
+ ...params,
1430
+ ...restTextProps,
1431
+ fullWidth: true,
1432
+ required,
1433
+ error: !!error,
1434
+ helperText: error ? error.message : "",
1435
+ label: resolvedLabel,
1436
+ placeholder: resolvedPlaceholder,
1437
+ variant: variant ? variant : "outlined"
1438
+ }
1439
+ )
1440
+ }
1441
+ );
1442
+ };
1443
+ var SelectElement2 = ({
1444
+ gridProps = {},
1445
+ ...props
1446
+ }) => {
1447
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Grid, { size: 12, ...gridProps, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Component6, { ...props }) });
1448
+ };
1449
+ SelectElement2.displayName = "SelectElement";
1450
+
1451
+ // src/wrappers/SelectMultiElement/SelectMultiElement.tsx
1452
+ var _CheckBox = require('@mui/icons-material/CheckBox'); var _CheckBox2 = _interopRequireDefault(_CheckBox);
1453
+ var _CheckBoxOutlineBlank = require('@mui/icons-material/CheckBoxOutlineBlank'); var _CheckBoxOutlineBlank2 = _interopRequireDefault(_CheckBoxOutlineBlank);
1454
+
1455
+
1456
+
1457
+
1458
+
1459
+
1460
+
1461
+
1462
+
1463
+
1464
+ var Component7 = function SelectMultiElement(props) {
1465
+ const {
1466
+ name,
1467
+ control,
1468
+ onBlur,
1469
+ disabled,
1470
+ options: optionsInput,
1471
+ loading = false,
1472
+ placeholder,
1473
+ label,
1474
+ variant,
1475
+ labelField = "Label",
1476
+ valueField = "Value",
1477
+ ...rest
1478
+ } = props;
1479
+ const options = _react.useMemo.call(void 0, () => optionsInput || [], [optionsInput]);
1480
+ const {
1481
+ field,
1482
+ fieldState: { error }
1483
+ } = _reacthookform.useController.call(void 0, {
1484
+ name,
1485
+ control
1486
+ });
1487
+ const getOptionValue = (option) => {
1488
+ if (typeof option === "string") return option;
1489
+ return option ? option[valueField] : null;
1490
+ };
1491
+ const getOptionLabel = (option) => {
1492
+ if (typeof option === "string") return option;
1493
+ return option ? option[labelField] : "";
1494
+ };
1495
+ const selectedValue = field.value && Array.isArray(field.value) ? options.filter((option) => field.value.includes(getOptionValue(option))) : [];
1496
+ const handleChange = (_, selectedOptions, reason) => {
1497
+ if (reason === "clear") {
1498
+ field.onChange([]);
1499
+ } else if (reason === "selectOption" || reason === "removeOption") {
1500
+ const newValues = selectedOptions.map((option) => getOptionValue(option));
1501
+ field.onChange(newValues);
1502
+ }
1503
+ };
1504
+ const icon = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _CheckBoxOutlineBlank2.default, { fontSize: "small" });
1505
+ const checkedIcon = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _CheckBox2.default, { fontSize: "small" });
1506
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1507
+ _material.Autocomplete,
1508
+ {
1509
+ multiple: true,
1510
+ value: selectedValue,
1511
+ loading,
1512
+ options,
1513
+ getOptionLabel,
1514
+ isOptionEqualToValue: (option, value) => getOptionValue(option) === getOptionValue(value),
1515
+ filterSelectedOptions: true,
1516
+ disableCloseOnSelect: true,
1517
+ ref: field.ref,
1518
+ disabled: _nullishCoalesce(_nullishCoalesce(disabled, () => ( field.disabled)), () => ( options.length == 0)),
1519
+ onChange: handleChange,
1520
+ onBlur: (event) => {
1521
+ field.onBlur();
1522
+ if (typeof onBlur === "function") {
1523
+ onBlur(event);
1524
+ }
1525
+ },
1526
+ fullWidth: true,
1527
+ renderOption: (props1, option, { selected }) => {
1528
+ const { key, ...optionProps } = props1;
1529
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "li", { ...optionProps, children: [
1530
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1531
+ _material.Checkbox,
1532
+ {
1533
+ icon,
1534
+ checkedIcon,
1535
+ checked: selected
1536
+ }
1537
+ ),
1538
+ getOptionLabel(option)
1539
+ ] }, key);
1540
+ },
1541
+ renderInput: (params) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1542
+ _material.TextField,
1543
+ {
1544
+ ...params,
1545
+ label,
1546
+ error: !!error,
1547
+ helperText: error ? error.message : "",
1548
+ placeholder,
1549
+ slotProps: {
1550
+ input: {
1551
+ ...params.InputProps,
1552
+ endAdornment: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react.Fragment, { children: [
1553
+ loading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.CircularProgress, { color: "inherit", size: 20 }) : null,
1554
+ params.InputProps.endAdornment
1555
+ ] })
1556
+ }
1557
+ },
1558
+ variant: variant ? variant : "outlined"
1559
+ }
1560
+ ),
1561
+ ...rest
1562
+ }
1563
+ );
1564
+ };
1565
+ var SelectMultiElement2 = ({
1566
+ gridProps = {},
1567
+ ...props
1568
+ }) => {
1569
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Grid, { size: 12, ...gridProps, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Component7, { ...props }) });
1570
+ };
1571
+ SelectMultiElement2.displayName = "SelectMultiElement";
1572
+
1573
+ // src/wrappers/TextFieldElement/TextFieldElement.tsx
1574
+
1575
+
1576
+
1577
+ var Component8 = function TextFieldElement(props) {
1578
+ const {
1579
+ parseError,
1580
+ name,
1581
+ control,
1582
+ component: TextFieldComponent = _material.TextField,
1583
+ transform,
1584
+ fieldType = "text",
1585
+ // Default to text type
1586
+ defaultValue,
1587
+ label,
1588
+ labelKey,
1589
+ placeholder,
1590
+ placeholderKey,
1591
+ namespace,
1592
+ textFieldProps = {},
1593
+ variant,
1594
+ onChange: customOnChange,
1595
+ enableWarnings = process.env.NODE_ENV === "development",
1596
+ ...rest
1597
+ } = props;
1598
+ const { resolveLabel } = _chunkEYXPJMEFcjs.useFormI18n.call(void 0, );
1599
+ const resolvedLabel = resolveLabel(label, labelKey, namespace);
1600
+ const resolvedPlaceholder = resolveLabel(placeholder, placeholderKey, namespace);
1601
+ const {
1602
+ type,
1603
+ required,
1604
+ helperText,
1605
+ inputRef,
1606
+ onInput,
1607
+ onBlur,
1608
+ disabled,
1609
+ ...restTextProps
1610
+ } = textFieldProps;
1611
+ const {
1612
+ field,
1613
+ fieldState: { error }
1614
+ } = _reacthookform.useController.call(void 0, {
1615
+ name,
1616
+ control
1617
+ });
1618
+ const { value, onChange } = _chunkY3QTSDLJcjs.useEnhancedTransform.call(void 0,
1619
+ {
1620
+ value: field.value,
1621
+ onChange: field.onChange,
1622
+ transform: transform ? {
1623
+ input: transform.input,
1624
+ output: transform.output
1625
+ } : void 0,
1626
+ fieldType: !transform ? type === "number" ? "number" : fieldType : void 0,
1627
+ // Auto-detect number type
1628
+ defaultValue,
1629
+ enableWarnings
1630
+ }
1631
+ );
1632
+ const handleInputRef = _material.useForkRef.call(void 0, field.ref, inputRef);
1633
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1634
+ TextFieldComponent,
1635
+ {
1636
+ ...rest,
1637
+ ...restTextProps,
1638
+ name: field.name,
1639
+ value,
1640
+ onChange: (event) => {
1641
+ const input = event.target.value;
1642
+ if (input === "") {
1643
+ field.onChange(null);
1644
+ } else {
1645
+ onChange(event);
1646
+ }
1647
+ if (typeof customOnChange === "function") {
1648
+ customOnChange(event);
1649
+ }
1650
+ return;
1651
+ },
1652
+ onBlur: (event) => {
1653
+ field.onBlur();
1654
+ if (typeof onBlur === "function") {
1655
+ onBlur(event);
1656
+ }
1657
+ },
1658
+ onInput: (event) => {
1659
+ if (typeof onInput === "function") {
1660
+ onInput(event);
1661
+ }
1662
+ },
1663
+ disabled,
1664
+ label: resolvedLabel,
1665
+ placeholder: resolvedPlaceholder,
1666
+ fullWidth: true,
1667
+ required,
1668
+ type,
1669
+ error: !!error,
1670
+ helperText: error ? parseError ? parseError(error) : error.message : helperText,
1671
+ inputRef: handleInputRef,
1672
+ variant: variant ? variant : "outlined"
1673
+ }
1674
+ );
1675
+ };
1676
+ var TextFieldElement2 = ({
1677
+ gridProps = {},
1678
+ ...props
1679
+ }) => {
1680
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Grid, { size: 12, ...gridProps, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Component8, { ...props }) });
1681
+ };
1682
+
1683
+ // src/wrappers/TimePickerElement/TimePickerElement.tsx
1684
+
1685
+
1686
+
1687
+
1688
+
1689
+ var Component9 = function TimePickerElement(props) {
1690
+ const {
1691
+ name,
1692
+ required,
1693
+ inputProps,
1694
+ control,
1695
+ textReadOnly,
1696
+ label,
1697
+ labelKey,
1698
+ placeholder,
1699
+ placeholderKey,
1700
+ namespace,
1701
+ slotProps,
1702
+ timePickerProps = {},
1703
+ transform,
1704
+ ...rest
1705
+ } = props;
1706
+ const adapter = _internals.useLocalizationContext.call(void 0, );
1707
+ const { resolveLabel } = _chunkEYXPJMEFcjs.useFormI18n.call(void 0, );
1708
+ const resolvedLabel = resolveLabel(label, labelKey, namespace);
1709
+ const resolvedPlaceholder = resolveLabel(placeholder, placeholderKey, namespace);
1710
+ const { disabled, inputRef, onClose, ...restTimePickerProps } = timePickerProps;
1711
+ const {
1712
+ field,
1713
+ fieldState: { error }
1714
+ } = _reacthookform.useController.call(void 0, {
1715
+ name,
1716
+ control,
1717
+ defaultValue: null
1718
+ });
1719
+ const { value, onChange } = _chunkY3QTSDLJcjs.useTransform.call(void 0, {
1720
+ value: field.value,
1721
+ onChange: field.onChange,
1722
+ transform: {
1723
+ input: typeof _optionalChain([transform, 'optionalAccess', _24 => _24.input]) === "function" ? transform.input : (newValue) => _chunkLUW7V5GIcjs.readValueAsDate.call(void 0, adapter, newValue),
1724
+ output: (eventOrValue, value2) => {
1725
+ const actualValue = value2 !== void 0 ? value2 : eventOrValue;
1726
+ if (actualValue === null) return null;
1727
+ return actualValue;
1728
+ }
1729
+ }
1730
+ });
1731
+ const handleInputRef = _material.useForkRef.call(void 0, field.ref, inputRef);
1732
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1733
+ _xdatepickers.TimePicker,
1734
+ {
1735
+ ...rest,
1736
+ ...restTimePickerProps,
1737
+ ...field,
1738
+ value,
1739
+ label: resolvedLabel,
1740
+ disabled,
1741
+ ...timePickerProps,
1742
+ inputRef: handleInputRef,
1743
+ onClose: (...args) => {
1744
+ field.onBlur();
1745
+ if (onClose) {
1746
+ onClose(...args);
1747
+ }
1748
+ },
1749
+ onChange: (newValue, context) => {
1750
+ onChange(newValue, context);
1751
+ if (typeof timePickerProps.onChange === "function") {
1752
+ timePickerProps.onChange(newValue, context);
1753
+ }
1754
+ },
1755
+ slotProps: {
1756
+ ...slotProps,
1757
+ actionBar: {
1758
+ actions: ["clear", "cancel", "accept"]
1759
+ },
1760
+ textField: {
1761
+ ...inputProps,
1762
+ required,
1763
+ placeholder: resolvedPlaceholder,
1764
+ fullWidth: true,
1765
+ onBlur: (event) => {
1766
+ field.onBlur();
1767
+ if (typeof _optionalChain([inputProps, 'optionalAccess', _25 => _25.onBlur]) === "function") {
1768
+ inputProps.onBlur(event);
1769
+ }
1770
+ },
1771
+ error: !!error,
1772
+ helperText: error ? error.message : _optionalChain([inputProps, 'optionalAccess', _26 => _26.helperText]) || rest.helperText,
1773
+ inputProps: {
1774
+ readOnly: !!textReadOnly,
1775
+ ..._optionalChain([inputProps, 'optionalAccess', _27 => _27.inputProps])
1776
+ }
1777
+ }
1778
+ }
1779
+ }
1780
+ );
1781
+ };
1782
+ var TimePickerElement2 = ({
1783
+ gridProps = {},
1784
+ ...props
1785
+ }) => {
1786
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Grid, { size: 12, ...gridProps, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Component9, { ...props }) });
1787
+ };
1788
+ TimePickerElement2.displayName = "TimePickerElement";
1789
+
1790
+ // src/wrappers/OTPInputElement/OTPInputElement.tsx
1791
+
1792
+
1793
+
1794
+ var _muionetimepasswordinput = require('mui-one-time-password-input');
1795
+
1796
+
1797
+ // src/wrappers/OTPInputElement/HelperText.tsx
1798
+ var _FormHelperText = require('@mui/material/FormHelperText'); var _FormHelperText2 = _interopRequireDefault(_FormHelperText);
1799
+
1800
+ function HelperText({
1801
+ sx,
1802
+ helperText,
1803
+ errorMessage,
1804
+ disableGutters,
1805
+ ...other
1806
+ }) {
1807
+ if (errorMessage || helperText) {
1808
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1809
+ _FormHelperText2.default,
1810
+ {
1811
+ error: !!errorMessage,
1812
+ sx: [
1813
+ {
1814
+ mx: disableGutters ? 0 : 1.75
1815
+ },
1816
+ ...Array.isArray(sx) ? sx : [sx]
1817
+ ],
1818
+ ...other,
1819
+ children: errorMessage || helperText
1820
+ }
1821
+ );
1822
+ }
1823
+ return null;
1824
+ }
1825
+
1826
+ // src/wrappers/OTPInputElement/OTPInputElement.tsx
1827
+
1828
+ var Component10 = function OTPInputElement(props) {
1829
+ const {
1830
+ // parseError,
1831
+ name,
1832
+ control,
1833
+ slotProps,
1834
+ helperText,
1835
+ maxSize = 56,
1836
+ placeholder = "-",
1837
+ ...rest
1838
+ } = props;
1839
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1840
+ _reacthookform.Controller,
1841
+ {
1842
+ name,
1843
+ control,
1844
+ render: ({ field, fieldState: { error } }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1845
+ _material.Box,
1846
+ {
1847
+ ..._optionalChain([slotProps, 'optionalAccess', _28 => _28.wrapper]),
1848
+ sx: [
1849
+ {
1850
+ display: "flex",
1851
+ justifyContent: "center",
1852
+ [`& .${_material.inputBaseClasses.input}`]: {
1853
+ p: 0,
1854
+ height: "auto",
1855
+ aspectRatio: "1/1",
1856
+ maxWidth: maxSize
1857
+ }
1858
+ },
1859
+ ...Array.isArray(_optionalChain([slotProps, 'optionalAccess', _29 => _29.wrapper, 'optionalAccess', _30 => _30.sx])) ? _nullishCoalesce(_optionalChain([slotProps, 'optionalAccess', _31 => _31.wrapper, 'optionalAccess', _32 => _32.sx]), () => ( [])) : [_optionalChain([slotProps, 'optionalAccess', _33 => _33.wrapper, 'optionalAccess', _34 => _34.sx])]
1860
+ ],
1861
+ children: [
1862
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1863
+ _muionetimepasswordinput.MuiOtpInput,
1864
+ {
1865
+ ...field,
1866
+ autoFocus: true,
1867
+ gap: 1.5,
1868
+ length: 4,
1869
+ TextFieldsProps: {
1870
+ placeholder,
1871
+ error: !!error,
1872
+ ..._optionalChain([slotProps, 'optionalAccess', _35 => _35.textfield])
1873
+ },
1874
+ ...rest
1875
+ }
1876
+ ),
1877
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1878
+ HelperText,
1879
+ {
1880
+ ..._optionalChain([slotProps, 'optionalAccess', _36 => _36.helperText]),
1881
+ errorMessage: _optionalChain([error, 'optionalAccess', _37 => _37.message]),
1882
+ helperText
1883
+ }
1884
+ )
1885
+ ]
1886
+ }
1887
+ )
1888
+ }
1889
+ );
1890
+ };
1891
+ var OTPInputElement2 = ({
1892
+ gridProps = {},
1893
+ ...props
1894
+ }) => {
1895
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Grid, { size: 12, ...gridProps, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Component10, { ...props }) });
1896
+ };
1897
+
1898
+ // src/wrappers/AsyncSelect/index.tsx
1899
+
1900
+
1901
+
1902
+
1903
+
1904
+
1905
+ var _utils = require('@mui/material/utils');
1906
+
1907
+
1908
+
1909
+
1910
+
1911
+
1912
+
1913
+
1914
+
1915
+
1916
+
1917
+
1918
+
1919
+ var Component11 = function AsyncSelectElement(props) {
1920
+ const {
1921
+ name,
1922
+ disabled,
1923
+ control,
1924
+ placeholder,
1925
+ initialValue,
1926
+ label,
1927
+ queryFn,
1928
+ variant,
1929
+ labelField = "Label",
1930
+ valueField = "Value",
1931
+ ...rest
1932
+ } = props;
1933
+ const {
1934
+ field,
1935
+ fieldState: { error }
1936
+ } = _reacthookform.useController.call(void 0, {
1937
+ name,
1938
+ control
1939
+ });
1940
+ const [loading, setLoading] = _react.useState.call(void 0, false);
1941
+ const [selectedOption, setSelectedOption] = _react.useState.call(void 0, null);
1942
+ const [inputValue, setInputValue] = _react.useState.call(void 0, "");
1943
+ const inputValue2 = _react.useMemo.call(void 0, () => inputValue, [inputValue]);
1944
+ const setInputValue2 = _react.useCallback.call(void 0,
1945
+ (newValue) => setInputValue(newValue),
1946
+ []
1947
+ );
1948
+ const [options, setOptions] = _react.useState.call(void 0, []);
1949
+ const initialValueLoaded = _react.useRef.call(void 0,
1950
+ !initialValue ? true : !(initialValue != null)
1951
+ );
1952
+ const fieldValue = _react.useRef.call(void 0, field.value);
1953
+ const fetchData = _react.useMemo.call(void 0,
1954
+ () => _utils.debounce.call(void 0,
1955
+ (payload, callback) => {
1956
+ queryFn(payload).then((c) => callback(c));
1957
+ },
1958
+ 400
1959
+ ),
1960
+ [queryFn]
1961
+ );
1962
+ const fillOptions = _react.useCallback.call(void 0,
1963
+ (results) => {
1964
+ let newOptions = [];
1965
+ if (selectedOption) {
1966
+ newOptions = [selectedOption];
1967
+ }
1968
+ if (results) {
1969
+ newOptions = [...newOptions, ...results];
1970
+ }
1971
+ setOptions(newOptions);
1972
+ setLoading(false);
1973
+ },
1974
+ [selectedOption]
1975
+ );
1976
+ _react.useEffect.call(void 0, () => {
1977
+ if (initialValueLoaded.current) return void 0;
1978
+ let active = true;
1979
+ const payload = {
1980
+ query: null,
1981
+ initialValue
1982
+ };
1983
+ setLoading(true);
1984
+ fetchData(payload, (results) => {
1985
+ if (active) {
1986
+ if (!!results && results.length > 0) {
1987
+ fillOptions(_optionalChain([results, 'optionalAccess', _38 => _38.filter, 'call', _39 => _39((c) => c[valueField] == initialValue)]));
1988
+ setSelectedOption(results[0]);
1989
+ field.onChange(results[0][valueField]);
1990
+ fieldValue.current = results[0][valueField];
1991
+ }
1992
+ initialValueLoaded.current = true;
1993
+ setLoading(false);
1994
+ }
1995
+ });
1996
+ return () => {
1997
+ active = false;
1998
+ };
1999
+ }, [initialValue, fetchData, field, fillOptions, valueField]);
2000
+ React4.useEffect(() => {
2001
+ let active = true;
2002
+ if (inputValue2 === "" || initialValueLoaded.current === false) {
2003
+ setOptions(selectedOption ? [selectedOption] : []);
2004
+ setLoading(false);
2005
+ return void 0;
2006
+ }
2007
+ if (fieldValue.current) {
2008
+ if (field.value === fieldValue.current) {
2009
+ return void 0;
2010
+ }
2011
+ }
2012
+ setLoading(true);
2013
+ const payload = {
2014
+ query: inputValue2,
2015
+ initialValue: null
2016
+ };
2017
+ fetchData(payload, (results) => {
2018
+ if (active) {
2019
+ fillOptions(results);
2020
+ }
2021
+ });
2022
+ return () => {
2023
+ active = false;
2024
+ };
2025
+ }, [
2026
+ initialValue,
2027
+ inputValue2,
2028
+ fetchData,
2029
+ field.value,
2030
+ fillOptions,
2031
+ selectedOption
2032
+ ]);
2033
+ const selectRef = _react.useRef.call(void 0, null);
2034
+ const handleChange = (_, newSelectedOption, reason) => {
2035
+ if (reason === "clear") {
2036
+ setSelectedOption(null);
2037
+ field.onChange(null);
2038
+ setLoading(false);
2039
+ } else if (reason === "selectOption" || reason === "removeOption") {
2040
+ if (newSelectedOption) {
2041
+ setSelectedOption(newSelectedOption);
2042
+ field.onChange(newSelectedOption[valueField]);
2043
+ fieldValue.current = newSelectedOption[valueField];
2044
+ setLoading(false);
2045
+ }
2046
+ }
2047
+ setOptions([]);
2048
+ setLoading(false);
2049
+ };
2050
+ _react.useEffect.call(void 0, () => {
2051
+ if (!field.value) {
2052
+ setInputValue("");
2053
+ setSelectedOption(null);
2054
+ setLoading(false);
2055
+ }
2056
+ }, [field.value]);
2057
+ const getOptionValue = (option) => {
2058
+ return option ? String(option[valueField]) : "";
2059
+ };
2060
+ const getOptionLabel = (option) => {
2061
+ return option ? String(option[labelField]) : "";
2062
+ };
2063
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2064
+ _material.Autocomplete,
2065
+ {
2066
+ ...rest,
2067
+ ref: selectRef,
2068
+ fullWidth: true,
2069
+ loading,
2070
+ getOptionLabel,
2071
+ getOptionKey: getOptionValue,
2072
+ isOptionEqualToValue: (option, value) => getOptionValue(option) === getOptionValue(value),
2073
+ autoComplete: true,
2074
+ disabled,
2075
+ includeInputInList: true,
2076
+ options,
2077
+ filterOptions: (x) => x,
2078
+ value: selectedOption,
2079
+ filterSelectedOptions: true,
2080
+ onChange: handleChange,
2081
+ onInputChange: (_, newInputValue) => {
2082
+ setInputValue2(newInputValue);
2083
+ },
2084
+ noOptionsText: "Type Something...",
2085
+ renderInput: (params) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2086
+ _material.TextField,
2087
+ {
2088
+ ...params,
2089
+ label,
2090
+ error: !!error,
2091
+ helperText: error ? error.message : "",
2092
+ placeholder,
2093
+ slotProps: {
2094
+ input: {
2095
+ ...params.InputProps,
2096
+ endAdornment: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react.Fragment, { children: [
2097
+ loading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.CircularProgress, { color: "inherit", size: 20 }) : null,
2098
+ params.InputProps.endAdornment
2099
+ ] })
2100
+ }
2101
+ },
2102
+ variant: variant ? variant : "outlined"
2103
+ }
2104
+ ),
2105
+ renderOption: (renderProps, option) => {
2106
+ const { key, ...optionProps } = renderProps;
2107
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "li", { ...optionProps, children: option[labelField] }, key);
2108
+ }
2109
+ }
2110
+ );
2111
+ };
2112
+ var AsyncSelectElement2 = ({
2113
+ gridProps = {},
2114
+ ...props
2115
+ }) => {
2116
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Grid, { size: 12, ...gridProps, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2117
+ Component11,
2118
+ {
2119
+ ...props
2120
+ }
2121
+ ) });
2122
+ };
2123
+ AsyncSelectElement2.displayName = "AsyncSelectElement";
2124
+
2125
+ // src/wrappers/NumberFieldElement/NumberFieldElement.tsx
2126
+
2127
+
2128
+
2129
+ var Component12 = function NumberFieldElement(props) {
2130
+ const {
2131
+ parseError,
2132
+ name,
2133
+ control,
2134
+ component: TextFieldComponent = _material.TextField,
2135
+ transform,
2136
+ fieldType = "text",
2137
+ // Default to text type
2138
+ defaultValue,
2139
+ label,
2140
+ placeholder,
2141
+ textFieldProps = {},
2142
+ variant,
2143
+ onChange: customOnChange,
2144
+ enableWarnings = process.env.NODE_ENV === "development",
2145
+ ...rest
2146
+ } = props;
2147
+ const {
2148
+ type = "number",
2149
+ required,
2150
+ helperText,
2151
+ inputRef,
2152
+ onInput,
2153
+ onBlur,
2154
+ disabled,
2155
+ ...restTextProps
2156
+ } = textFieldProps;
2157
+ const {
2158
+ field,
2159
+ fieldState: { error }
2160
+ } = _reacthookform.useController.call(void 0, {
2161
+ name,
2162
+ control
2163
+ });
2164
+ const { value, onChange } = _chunkY3QTSDLJcjs.useEnhancedTransform.call(void 0,
2165
+ {
2166
+ value: field.value,
2167
+ onChange: field.onChange,
2168
+ transform: transform ? {
2169
+ input: transform.input,
2170
+ output: transform.output
2171
+ } : void 0,
2172
+ fieldType: !transform ? type === "number" ? "number" : fieldType : void 0,
2173
+ // Auto-detect number type
2174
+ defaultValue,
2175
+ enableWarnings
2176
+ }
2177
+ );
2178
+ const handleInputRef = _material.useForkRef.call(void 0, field.ref, inputRef);
2179
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2180
+ TextFieldComponent,
2181
+ {
2182
+ ...rest,
2183
+ ...restTextProps,
2184
+ name: field.name,
2185
+ value,
2186
+ onChange: (event) => {
2187
+ const input = event.target.value;
2188
+ if (input === "") {
2189
+ field.onChange(null);
2190
+ }
2191
+ onChange(event);
2192
+ if (typeof customOnChange === "function") {
2193
+ customOnChange(event);
2194
+ }
2195
+ },
2196
+ onBlur: (event) => {
2197
+ field.onBlur();
2198
+ if (typeof onBlur === "function") {
2199
+ onBlur(event);
2200
+ }
2201
+ },
2202
+ onInput: (event) => {
2203
+ if (typeof onInput === "function") {
2204
+ onInput(event);
2205
+ }
2206
+ },
2207
+ onWheel: (e) => {
2208
+ e.target.blur();
2209
+ },
2210
+ onKeyDown: (e) => {
2211
+ if (["e", "E", "ArrowDown", "ArrowUp"].includes(e.key)) {
2212
+ e.preventDefault();
2213
+ }
2214
+ },
2215
+ disabled,
2216
+ label,
2217
+ placeholder,
2218
+ fullWidth: true,
2219
+ required,
2220
+ type,
2221
+ error: !!error,
2222
+ helperText: error ? parseError ? parseError(error) : error.message : helperText,
2223
+ inputRef: handleInputRef,
2224
+ variant: variant ? variant : "outlined"
2225
+ }
2226
+ );
2227
+ };
2228
+ var NumberFieldElement2 = ({
2229
+ gridProps = {},
2230
+ ...props
2231
+ }) => {
2232
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Grid, { size: 12, ...gridProps, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Component12, { ...props }) });
2233
+ };
2234
+
2235
+ // src/wrappers/Field/index.ts
2236
+ var Field = {
2237
+ Text: TextFieldElement2,
2238
+ Number: NumberFieldElement2,
2239
+ Checkbox: CheckboxElement2,
2240
+ Date: DatePickerElement,
2241
+ RadioGroup: RadioButtonGroup2,
2242
+ Password: PasswordElement,
2243
+ Time: TimePickerElement2,
2244
+ Select: SelectElement2,
2245
+ SelectMulti: SelectMultiElement2,
2246
+ SelectCascade: SelectCascadeElement2,
2247
+ AsyncSelect: AsyncSelectElement2,
2248
+ AsyncMultiSelect: AsyncMultiSelect2,
2249
+ CheckboxGroup: CheckboxGroup2,
2250
+ OTPInput: OTPInputElement2
2251
+ };
2252
+
2253
+
2254
+
2255
+
2256
+
2257
+
2258
+
2259
+
2260
+
2261
+
2262
+
2263
+
2264
+
2265
+
2266
+
2267
+
2268
+
2269
+
2270
+
2271
+
2272
+
2273
+
2274
+
2275
+
2276
+
2277
+
2278
+
2279
+
2280
+ exports.isValidOption = isValidOption; exports.normalizeOptions = normalizeOptions; exports.AsyncMultiSelect2 = AsyncMultiSelect2; exports.CheckboxElement = CheckboxElement2; exports.CheckboxGroup = CheckboxGroup2; exports.readDatePickerValueAsDate = readDatePickerValueAsDate; exports.useDatePickerValue = useDatePickerValue; exports.useDatePickerValidation = useDatePickerValidation; exports.useDatePickerStyles = useDatePickerStyles; exports.DatePickerElementCore = DatePickerElementCore; exports.DatePickerElement = DatePickerElement; exports.isValidDate = isValidDate; exports.isParsableDateString = isParsableDateString; exports.createDateInputTransform = createDateInputTransform; exports.createDateOutputTransform = createDateOutputTransform; exports.createDefaultDatePickerConfig = createDefaultDatePickerConfig; exports.extractErrorMessage = extractErrorMessage; exports.createStableKey = createStableKey; exports.PasswordElement = PasswordElement; exports.RadioButtonGroup = RadioButtonGroup2; exports.SelectCascadeElement = SelectCascadeElement2; exports.SelectElement = SelectElement2; exports.SelectMultiElement = SelectMultiElement2; exports.TextFieldElement = TextFieldElement2; exports.TimePickerElement = TimePickerElement2; exports.Field = Field;
2281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImM6XFxVdHRhbVxcUHJvamVjdHNcXEdOV2ViU29mdC5VSVxccGFja2FnZXNcXHVpXFxkaXN0XFxjaHVuay1ES0Q3M0FESy5janMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDRTtBQUNBO0FBQ0Ysd0RBQTZCO0FBQzdCO0FBQ0U7QUFDRix3REFBNkI7QUFDN0I7QUFDRTtBQUNGLHdEQUE2QjtBQUM3QjtBQUNBO0FBQ0EsU0FBUyxhQUFhLENBQUMsS0FBSyxFQUFFO0FBQzlCLEVBQUUsT0FBTyxPQUFPLE1BQU0sSUFBSSxTQUFTLEdBQUcsTUFBTSxJQUFJLEtBQUssR0FBRyxRQUFRLEdBQUcsTUFBTSxHQUFHLFFBQVEsR0FBRyxNQUFNLEdBQUcsT0FBTyxLQUFLLENBQUMsTUFBTSxJQUFJLFNBQVMsR0FBRyxDQUFDLE9BQU8sS0FBSyxDQUFDLE1BQU0sSUFBSSxTQUFTLEdBQUcsT0FBTyxLQUFLLENBQUMsTUFBTSxJQUFJLFNBQVMsR0FBRyxPQUFPLEtBQUssQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDO0FBQzNPO0FBQ0EsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9FLEVBQUUsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUNsQyxJQUFJLEtBQUssRUFBRSxNQUFNLGtCQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUUsVUFBRyxJQUFFLENBQUM7QUFDM0MsSUFBSSxLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUM3QixJQUFJLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVE7QUFDckMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0U7QUFDQTtBQUNBO0FBQ0E7QUFDRix5Q0FBc0I7QUFDdEIsZ0NBQWlDO0FBQ2pDLDRFQUFtRTtBQUNuRSxnREFBK0M7QUFDL0Ms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QUNuQixZQUFZLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVM7QUFDMUMsWUFBWSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7QUFDL0IsWUFBWSxPQUFPLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQzFELFlBQVksUUFBUSxFQUFFO0FBQ3RCLFVBQVU7QUFDVixRQUFRO0FBQ1IsTUFBTSxDQUFDO0FBQ1AsTUFBTSxDQUFDLEVBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQTtBQUNBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQTtBQUNBLEVBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQTtBQUNBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0E7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0E7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxZQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxZQUFBO0FBQ0EsWUFBQTtBQUNBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0E7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBO0FBQ0EsUUFBQTtBQUNBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0E7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFlBQUE7QUFDQSxZQUFBO0FBQ0EsWUFBQTtBQUNBLFlBQUE7QUFDQSxVQUFBO0FBQ0E7QUFDQSxVQUFBO0FBQ0EsWUFBQTtBQUNBLGNBQUE7QUFDQSxjQUFBO0FBQ0EsWUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0E7QUFDQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQTtBQUNBO0FBQ0EsRUFBQTtBQUNBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0E7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQTtBQUNBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsWUFBQTtBQUNBLFlBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0E7QUFDQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0E7QUFDQSxFQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxvQkFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsWUFBQTtBQUNBLFlBQUE7QUFDQSxjQUFBO0FBQ0EsY0FBQTtBQUNBLFlBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxZQUFBO0FBQ0EsWUFBQTtBQUNBLGNBQUE7QUFDQSxjQUFBO0FBQ0EsZ0JBQUE7QUFDQSxnQkFBQTtBQUNBLGdCQUFBO0FBQ0EsY0FBQTtBQUNBLFlBQUE7QUFDQSxZQUFBO0FBQ0EsWUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQTtBQUNBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxvQkFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLDBCQUFBO0FBQ0EsWUFBQTtBQUNBLFlBQUE7QUFDQSxjQUFBO0FBQ0EsY0FBQTtBQUNBLGNBQUE7QUFDQSxZQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFlBQUE7QUFDQSxjQUFBO0FBQ0EsY0FBQTtBQUNBLGdCQUFBO0FBQ0EsZ0JBQUE7QUFDQSxjQUFBO0FBQ0EsWUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQTtBQUNBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQTtBQUNBLEVBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0E7QUFDQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0E7QUFDQSxFQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFlBQUE7QUFDQSxZQUFBO0FBQ0EsY0FBQTtBQUNBLFlBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsWUFBQTtBQUNBLFlBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFlBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBQTtBQUNBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsWUFBQTtBQUNBLGNBQUE7QUFDQSxjQUFBO0FBQ0EsY0FBQTtBQUNBLGdCQUFBO0FBQ0EsZ0JBQUE7QUFDQSxnQkFBQTtBQUNBLGdCQUFBO0FBQ0EsY0FBQTtBQUNBLFlBQUE7QUFDQSxZQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSw0QkFBQTtBQUNBLGNBQUE7QUFDQSxjQUFBO0FBQ0EsZ0JBQUE7QUFDQSxnQkFBQTtBQUNBLGdCQUFBO0FBQ0EsZ0JBQUE7QUFDQSxnQkFBQTtBQUNBLGtCQUFBO0FBQ0Esa0JBQUE7QUFDQSxrQkFBQTtBQUNBLGdCQUFBO0FBQ0EsZ0JBQUE7QUFDQSxjQUFBO0FBQ0EsWUFBQTtBQUNBLDRCQUFBO0FBQ0EsY0FBQTtBQUNBLGNBQUE7QUFDQSxnQkFBQTtBQUNBLGdCQUFBO0FBQ0EsZ0JBQUE7QUFDQSxjQUFBO0FBQ0EsWUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0E7QUFDQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0E7QUFDQSxFQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxVQUFBO0FBQ0EsWUFBQTtBQUNBLGNBQUE7QUFDQSxjQUFBO0FBQ0EsZ0JBQUE7QUFDQSxnQkFBQTtBQUNBLGNBQUE7QUFDQSxZQUFBO0FBQ0EsVUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsSUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLElBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0E7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLElBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxJQUFBO0FBQ0EsSUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsVUFBQTtBQUNBLFFBQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLFFBQUE7QUFDQSxVQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsUUFBQTtBQUNBLFVBQUE7QUFDQSxRQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxJQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBO0FBQ0EsRUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQSxFQUFBO0FBQ0EsRUFBQTtBQUNBLEVBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiQzpcXFV0dGFtXFxQcm9qZWN0c1xcR05XZWJTb2Z0LlVJXFxwYWNrYWdlc1xcdWlcXGRpc3RcXGNodW5rLURLRDczQURLLmNqcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF19