aizek-chatbot 1.0.21 → 1.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs ADDED
@@ -0,0 +1,2114 @@
1
+ import { useRef, useState, useEffect } from 'react';
2
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
3
+ import ReactMarkdown from 'react-markdown';
4
+ import remarkGfm from 'remark-gfm';
5
+
6
+ // src/styles/index.scss
7
+ var css = `@charset "UTF-8";
8
+ .message-container {
9
+ display: flex;
10
+ flex-direction: column;
11
+ width: 100%;
12
+ }
13
+ .message-container.user {
14
+ align-items: flex-end;
15
+ }
16
+ .message-container.assistant {
17
+ align-items: flex-start;
18
+ }
19
+
20
+ .message-bubble {
21
+ max-width: 80%;
22
+ padding: 12px 16px;
23
+ margin-bottom: 8px;
24
+ word-wrap: break-word;
25
+ line-height: 1.4;
26
+ font-size: 14px;
27
+ position: relative;
28
+ }
29
+ .message-bubble.user {
30
+ border-radius: 18px 18px 4px 18px;
31
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
32
+ color: #ffffff;
33
+ margin-left: auto;
34
+ margin-right: 0;
35
+ }
36
+ .message-bubble.assistant {
37
+ border-radius: 18px 18px 18px 4px;
38
+ background: #f8fafc;
39
+ color: #334155;
40
+ border: 1px solid #e2e8f0;
41
+ margin-left: 0;
42
+ margin-right: auto;
43
+ }
44
+ .message-bubble .message-typing-indicator {
45
+ display: inline-flex;
46
+ align-items: center;
47
+ margin-left: 8px;
48
+ }
49
+
50
+ .message-time {
51
+ font-size: 11px;
52
+ opacity: 0.7;
53
+ margin-top: 4px;
54
+ }
55
+
56
+ .message-time.user {
57
+ text-align: right;
58
+ }
59
+
60
+ .message-time.assistant {
61
+ text-align: left;
62
+ }
63
+
64
+ .markdown-content {
65
+ line-height: 1.6;
66
+ word-break: break-word;
67
+ }
68
+ .markdown-content + .generative-ui-container {
69
+ margin-top: 16px;
70
+ }
71
+ .markdown-content p {
72
+ margin: 0 0 12px 0;
73
+ line-height: 1.6;
74
+ }
75
+ .markdown-content p:last-child {
76
+ margin-bottom: 0;
77
+ }
78
+ .markdown-content p:first-child {
79
+ margin-top: 0;
80
+ }
81
+ .markdown-content a {
82
+ color: #667eea;
83
+ text-decoration: none;
84
+ transition: all 0.15s ease;
85
+ font-weight: 500;
86
+ border-bottom: 1px solid transparent;
87
+ }
88
+ .markdown-content a:hover {
89
+ color: #764ba2;
90
+ border-bottom-color: #764ba2;
91
+ }
92
+ .markdown-content ul,
93
+ .markdown-content ol {
94
+ margin: 12px 0;
95
+ padding-left: 20px;
96
+ }
97
+ .markdown-content ul {
98
+ list-style: none;
99
+ padding-left: 0;
100
+ }
101
+ .markdown-content ol {
102
+ list-style: decimal;
103
+ }
104
+ .markdown-content li {
105
+ margin-bottom: 8px;
106
+ line-height: 1.6;
107
+ position: relative;
108
+ padding-left: 20px;
109
+ }
110
+ .markdown-content li:last-child {
111
+ margin-bottom: 0;
112
+ }
113
+ .markdown-content li::before {
114
+ content: "\u2022";
115
+ position: absolute;
116
+ left: 0;
117
+ color: #667eea;
118
+ font-weight: bold;
119
+ font-size: 16px;
120
+ }
121
+ .markdown-content li ul,
122
+ .markdown-content li ol {
123
+ margin-top: 4px;
124
+ margin-bottom: 4px;
125
+ }
126
+ .markdown-content ol li {
127
+ padding-left: 0;
128
+ }
129
+ .markdown-content ol li::before {
130
+ content: none;
131
+ }
132
+ .markdown-content code {
133
+ background: rgba(102, 126, 234, 0.1);
134
+ color: #764ba2;
135
+ padding: 2px 6px;
136
+ border-radius: 4px;
137
+ font-family: "Monaco", "Menlo", "Ubuntu Mono", "Courier New", monospace;
138
+ font-size: 0.9em;
139
+ border: 1px solid rgba(102, 126, 234, 0.2);
140
+ }
141
+ .markdown-content pre {
142
+ background: #f8fafc;
143
+ padding: 12px 16px;
144
+ border-radius: 8px;
145
+ overflow-x: auto;
146
+ margin: 12px 0;
147
+ border: 1px solid #e2e8f0;
148
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
149
+ }
150
+ .markdown-content pre code {
151
+ background: none;
152
+ padding: 0;
153
+ border: none;
154
+ color: #1e293b;
155
+ font-size: 12px;
156
+ line-height: 1.5;
157
+ }
158
+ .markdown-content strong,
159
+ .markdown-content b {
160
+ font-weight: 600;
161
+ color: inherit;
162
+ }
163
+ .markdown-content em,
164
+ .markdown-content i {
165
+ font-style: italic;
166
+ }
167
+ .markdown-content h1,
168
+ .markdown-content h2,
169
+ .markdown-content h3,
170
+ .markdown-content h4,
171
+ .markdown-content h5,
172
+ .markdown-content h6 {
173
+ margin: 16px 0 8px 0;
174
+ font-weight: 600;
175
+ line-height: 1.4;
176
+ color: inherit;
177
+ }
178
+ .markdown-content h1:first-child,
179
+ .markdown-content h2:first-child,
180
+ .markdown-content h3:first-child,
181
+ .markdown-content h4:first-child,
182
+ .markdown-content h5:first-child,
183
+ .markdown-content h6:first-child {
184
+ margin-top: 0;
185
+ }
186
+ .markdown-content h1 {
187
+ font-size: 18px;
188
+ border-bottom: 2px solid #e2e8f0;
189
+ padding-bottom: 8px;
190
+ }
191
+ .markdown-content h2 {
192
+ font-size: 16px;
193
+ }
194
+ .markdown-content h3 {
195
+ font-size: 15px;
196
+ }
197
+ .markdown-content h4,
198
+ .markdown-content h5,
199
+ .markdown-content h6 {
200
+ font-size: 14px;
201
+ }
202
+ .markdown-content blockquote {
203
+ border-left: 3px solid #667eea;
204
+ padding-left: 12px;
205
+ margin: 12px 0;
206
+ color: inherit;
207
+ opacity: 0.9;
208
+ font-style: italic;
209
+ background: rgba(102, 126, 234, 0.05);
210
+ padding: 8px 12px;
211
+ border-radius: 0 4px 4px 0;
212
+ }
213
+ .markdown-content blockquote p {
214
+ margin: 0;
215
+ }
216
+ .markdown-content hr {
217
+ border: none;
218
+ border-top: 1px solid #e2e8f0;
219
+ margin: 16px 0;
220
+ }
221
+ .markdown-content table {
222
+ border-collapse: collapse;
223
+ width: 100%;
224
+ margin: 12px 0;
225
+ font-size: 12px;
226
+ border-radius: 8px;
227
+ overflow: hidden;
228
+ border: 1px solid #e2e8f0;
229
+ }
230
+ .markdown-content th,
231
+ .markdown-content td {
232
+ padding: 10px 12px;
233
+ text-align: left;
234
+ border-bottom: 1px solid #e2e8f0;
235
+ }
236
+ .markdown-content th {
237
+ background: #f1f5f9;
238
+ font-weight: 600;
239
+ color: #1e293b;
240
+ border-bottom: 2px solid #cbd5e1;
241
+ }
242
+ .markdown-content tr:last-child td {
243
+ border-bottom: none;
244
+ }
245
+ .markdown-content tbody tr {
246
+ transition: background-color 0.15s ease;
247
+ }
248
+ .markdown-content tbody tr:hover {
249
+ background-color: rgba(102, 126, 234, 0.05);
250
+ }
251
+ .markdown-content img {
252
+ max-width: 100%;
253
+ height: auto;
254
+ border-radius: 8px;
255
+ margin: 8px 0;
256
+ }
257
+ .markdown-content input[type=checkbox] {
258
+ margin-right: 6px;
259
+ }
260
+
261
+ .message-bubble.user .markdown-content {
262
+ color: #ffffff;
263
+ }
264
+ .message-bubble.user .markdown-content a {
265
+ color: #ffffff;
266
+ border-bottom-color: rgba(255, 255, 255, 0.4);
267
+ font-weight: 600;
268
+ }
269
+ .message-bubble.user .markdown-content a:hover {
270
+ border-bottom-color: #ffffff;
271
+ }
272
+ .message-bubble.user .markdown-content li::before {
273
+ color: #ffffff;
274
+ }
275
+ .message-bubble.user .markdown-content code {
276
+ background: rgba(255, 255, 255, 0.2);
277
+ color: #ffffff;
278
+ border-color: rgba(255, 255, 255, 0.3);
279
+ }
280
+ .message-bubble.user .markdown-content pre {
281
+ background: rgba(255, 255, 255, 0.1);
282
+ border-color: rgba(255, 255, 255, 0.2);
283
+ }
284
+ .message-bubble.user .markdown-content pre code {
285
+ color: #ffffff;
286
+ }
287
+ .message-bubble.user .markdown-content h1 {
288
+ border-bottom-color: rgba(255, 255, 255, 0.3);
289
+ }
290
+ .message-bubble.user .markdown-content blockquote {
291
+ border-left-color: #ffffff;
292
+ background: rgba(255, 255, 255, 0.1);
293
+ color: #ffffff;
294
+ }
295
+ .message-bubble.user .markdown-content hr {
296
+ border-top-color: rgba(255, 255, 255, 0.3);
297
+ }
298
+ .message-bubble.user .markdown-content table {
299
+ border-color: rgba(255, 255, 255, 0.3);
300
+ }
301
+ .message-bubble.user .markdown-content th,
302
+ .message-bubble.user .markdown-content td {
303
+ border-bottom-color: rgba(255, 255, 255, 0.2);
304
+ }
305
+ .message-bubble.user .markdown-content th {
306
+ background: rgba(255, 255, 255, 0.15);
307
+ color: #ffffff;
308
+ border-bottom-color: rgba(255, 255, 255, 0.3);
309
+ }
310
+ .message-bubble.user .markdown-content tbody tr:hover {
311
+ background-color: rgba(255, 255, 255, 0.1);
312
+ }
313
+
314
+ .message-bubble.assistant .markdown-content {
315
+ color: #334155;
316
+ }
317
+ .message-bubble.assistant .markdown-content a {
318
+ color: #667eea;
319
+ }
320
+ .message-bubble.assistant .markdown-content a:hover {
321
+ color: #764ba2;
322
+ }
323
+ .message-bubble.assistant .markdown-content li::before {
324
+ color: #667eea;
325
+ }
326
+ .message-bubble.assistant .markdown-content code {
327
+ background: rgba(102, 126, 234, 0.1);
328
+ color: #764ba2;
329
+ border-color: rgba(102, 126, 234, 0.2);
330
+ }
331
+ .message-bubble.assistant .markdown-content pre {
332
+ background: #ffffff;
333
+ border-color: #e2e8f0;
334
+ }
335
+ .message-bubble.assistant .markdown-content pre code {
336
+ color: #1e293b;
337
+ }
338
+ .message-bubble.assistant .markdown-content h1,
339
+ .message-bubble.assistant .markdown-content h2,
340
+ .message-bubble.assistant .markdown-content h3,
341
+ .message-bubble.assistant .markdown-content h4,
342
+ .message-bubble.assistant .markdown-content h5,
343
+ .message-bubble.assistant .markdown-content h6 {
344
+ color: #1e293b;
345
+ }
346
+ .message-bubble.assistant .markdown-content h1 {
347
+ border-bottom-color: #e2e8f0;
348
+ }
349
+ .message-bubble.assistant .markdown-content strong,
350
+ .message-bubble.assistant .markdown-content b {
351
+ color: #0f172a;
352
+ }
353
+ .message-bubble.assistant .markdown-content blockquote {
354
+ border-left-color: #667eea;
355
+ background: rgba(102, 126, 234, 0.05);
356
+ color: #334155;
357
+ }
358
+ .message-bubble.assistant .markdown-content th {
359
+ background: #f1f5f9;
360
+ color: #1e293b;
361
+ }
362
+ .message-bubble.assistant .markdown-content tbody tr:hover {
363
+ background-color: rgba(102, 126, 234, 0.05);
364
+ }
365
+
366
+ .input-container {
367
+ display: flex;
368
+ align-items: flex-end;
369
+ gap: 12px;
370
+ padding: 16px;
371
+ background: #ffffff;
372
+ border-top: 1px solid #e2e8f0;
373
+ border-radius: 0 0 12px 12px;
374
+ }
375
+
376
+ .textarea {
377
+ flex: 1;
378
+ min-height: 44px;
379
+ max-height: 120px;
380
+ padding: 12px 16px;
381
+ border: 1px solid #e2e8f0;
382
+ border-radius: 22px;
383
+ font-size: 14px;
384
+ line-height: 1.4;
385
+ resize: none;
386
+ outline: none;
387
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
388
+ font-family: inherit;
389
+ background: #f8fafc;
390
+ color: #334155;
391
+ }
392
+ .textarea:disabled {
393
+ opacity: 0.6;
394
+ cursor: not-allowed;
395
+ }
396
+ .textarea:focus:not(:disabled) {
397
+ border-color: #3b82f6;
398
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
399
+ }
400
+
401
+ .send-button {
402
+ width: 44px;
403
+ height: 44px;
404
+ border-radius: 50%;
405
+ border: none;
406
+ color: #ffffff;
407
+ cursor: pointer;
408
+ display: flex;
409
+ align-items: center;
410
+ justify-content: center;
411
+ transition: all 0.2s ease;
412
+ font-size: 16px;
413
+ }
414
+ .send-button:disabled {
415
+ background: #e2e8f0;
416
+ cursor: not-allowed;
417
+ }
418
+ .send-button:not(:disabled) {
419
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
420
+ }
421
+ .send-button:not(:disabled):hover {
422
+ transform: scale(1.05);
423
+ }
424
+
425
+ .header {
426
+ padding: 16px 20px;
427
+ color: #ffffff;
428
+ display: flex;
429
+ align-items: center;
430
+ gap: 12px;
431
+ }
432
+
433
+ .logo-container {
434
+ width: 40px;
435
+ height: 40px;
436
+ border-radius: 50%;
437
+ background: rgba(255, 255, 255, 0.2);
438
+ display: flex;
439
+ align-items: center;
440
+ justify-content: center;
441
+ font-size: 18px;
442
+ overflow: hidden;
443
+ }
444
+
445
+ .logo-image {
446
+ width: 100%;
447
+ height: 100%;
448
+ object-fit: cover;
449
+ border-radius: 50%;
450
+ }
451
+
452
+ .logo-text {
453
+ font-size: 16px;
454
+ font-weight: bold;
455
+ }
456
+
457
+ .company-name {
458
+ margin: 0;
459
+ font-size: 16px;
460
+ font-weight: 600;
461
+ }
462
+
463
+ .status-text {
464
+ margin: 0;
465
+ font-size: 12px;
466
+ opacity: 0.8;
467
+ }
468
+
469
+ .button-sizes.small {
470
+ width: 50px;
471
+ height: 50px;
472
+ font-size: 20px;
473
+ }
474
+ .button-sizes.medium {
475
+ width: 60px;
476
+ height: 60px;
477
+ font-size: 24px;
478
+ }
479
+ .button-sizes.large {
480
+ width: 70px;
481
+ height: 70px;
482
+ font-size: 28px;
483
+ }
484
+
485
+ .floating-button {
486
+ position: fixed;
487
+ bottom: 20px;
488
+ border-radius: 50%;
489
+ border: none;
490
+ color: #ffffff;
491
+ cursor: pointer;
492
+ display: flex;
493
+ align-items: center;
494
+ justify-content: center;
495
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
496
+ transition: all 0.3s ease;
497
+ z-index: 1000;
498
+ }
499
+ .floating-button.bottom-left {
500
+ left: 20px;
501
+ }
502
+ .floating-button.bottom-right {
503
+ right: 20px;
504
+ }
505
+ .floating-button.is-open {
506
+ transform: scale(0.9);
507
+ }
508
+ .floating-button:hover {
509
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);
510
+ }
511
+
512
+ .chat-container {
513
+ position: fixed;
514
+ bottom: 90px;
515
+ z-index: 9999999;
516
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
517
+ }
518
+ .chat-container.bottom-left {
519
+ left: 20px;
520
+ transform-origin: bottom left;
521
+ }
522
+ .chat-container.bottom-right {
523
+ right: 20px;
524
+ transform-origin: bottom right;
525
+ }
526
+ .chat-container.is-open {
527
+ transform: translateY(0) scale(1);
528
+ opacity: 1;
529
+ visibility: visible;
530
+ }
531
+ .chat-container:not(.is-open) {
532
+ transform: translateY(20px) scale(0.95);
533
+ opacity: 0;
534
+ visibility: hidden;
535
+ }
536
+
537
+ .overlay {
538
+ position: fixed;
539
+ top: 0;
540
+ left: 0;
541
+ right: 0;
542
+ bottom: 0;
543
+ background: rgba(0, 0, 0, 0.1);
544
+ z-index: 998;
545
+ transition: all 0.3s ease;
546
+ }
547
+ .overlay.is-open {
548
+ opacity: 1;
549
+ visibility: visible;
550
+ }
551
+ .overlay:not(.is-open) {
552
+ opacity: 0;
553
+ visibility: hidden;
554
+ }
555
+
556
+ .chatbot-container {
557
+ display: flex;
558
+ flex-direction: column;
559
+ height: 100%;
560
+ background: #ffffff;
561
+ border-radius: 12px;
562
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
563
+ border: 1px solid #e2e8f0;
564
+ overflow: hidden;
565
+ }
566
+
567
+ .messages-container {
568
+ flex: 1;
569
+ overflow-y: auto;
570
+ padding: 16px;
571
+ display: flex;
572
+ flex-direction: column;
573
+ gap: 4px;
574
+ background: #f8fafc;
575
+ }
576
+
577
+ .empty-state {
578
+ display: flex;
579
+ flex-direction: column;
580
+ align-items: center;
581
+ justify-content: center;
582
+ height: 100%;
583
+ color: #64748b;
584
+ text-align: center;
585
+ padding: 40px 20px;
586
+ }
587
+ .empty-state .empty-state-icon {
588
+ font-size: 48px;
589
+ margin-bottom: 16px;
590
+ }
591
+ .empty-state .empty-state-title {
592
+ margin: 0 0 8px 0;
593
+ font-size: 18px;
594
+ }
595
+ .empty-state .empty-state-description {
596
+ margin: 0;
597
+ font-size: 14px;
598
+ opacity: 0.8;
599
+ }
600
+
601
+ @keyframes spin {
602
+ from {
603
+ transform: rotate(0deg);
604
+ }
605
+ to {
606
+ transform: rotate(360deg);
607
+ }
608
+ }
609
+ .loading-spinner {
610
+ width: 16px;
611
+ height: 16px;
612
+ border: 2px solid transparent;
613
+ border-top: 2px solid currentColor;
614
+ border-radius: 50%;
615
+ animation: spin 1s linear infinite;
616
+ }
617
+
618
+ @keyframes slideDown {
619
+ from {
620
+ opacity: 0;
621
+ transform: translateY(-10px);
622
+ }
623
+ to {
624
+ opacity: 1;
625
+ transform: translateY(0);
626
+ }
627
+ }
628
+ .alert-container {
629
+ border-radius: 12px;
630
+ padding: 14px 16px;
631
+ margin: 12px 16px;
632
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
633
+ color: #ffffff;
634
+ font-size: 13px;
635
+ display: flex;
636
+ align-items: flex-start;
637
+ gap: 12px;
638
+ position: relative;
639
+ animation: slideDown 0.3s ease ease-out;
640
+ }
641
+ .alert-container.error {
642
+ background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
643
+ border: 1px solid #dc2626;
644
+ box-shadow: 0 4px 12px rgba(239, 68, 68, 0.2);
645
+ }
646
+ .alert-container.warning {
647
+ background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
648
+ border: 1px solid #d97706;
649
+ box-shadow: 0 4px 12px rgba(245, 158, 11, 0.2);
650
+ }
651
+ .alert-container.success {
652
+ background: linear-gradient(135deg, #10b981 0%, #059669 100%);
653
+ border: 1px solid #059669;
654
+ box-shadow: 0 4px 12px rgba(16, 185, 129, 0.2);
655
+ }
656
+
657
+ .alert-icon-container {
658
+ display: flex;
659
+ align-items: center;
660
+ justify-content: center;
661
+ width: 24px;
662
+ height: 24px;
663
+ flex-shrink: 0;
664
+ margin-top: 2px;
665
+ }
666
+
667
+ .alert-content {
668
+ flex: 1;
669
+ display: flex;
670
+ flex-direction: column;
671
+ gap: 8px;
672
+ }
673
+
674
+ .alert-title {
675
+ font-weight: 600;
676
+ font-size: 14px;
677
+ margin: 0;
678
+ line-height: 1.4;
679
+ }
680
+
681
+ .alert-message {
682
+ margin: 0;
683
+ line-height: 1.5;
684
+ opacity: 0.95;
685
+ }
686
+
687
+ .alert-list {
688
+ margin: 8px 0 0 0;
689
+ padding-left: 20px;
690
+ list-style: none;
691
+ }
692
+
693
+ .alert-list-item {
694
+ margin-bottom: 4px;
695
+ position: relative;
696
+ padding-left: 12px;
697
+ line-height: 1.4;
698
+ }
699
+ .alert-list-item li > span {
700
+ position: "absolute";
701
+ left: 0;
702
+ top: 2px;
703
+ font-weight: bold;
704
+ }
705
+ .alert-list-item li > code {
706
+ background: rgba(255, 255, 255, 0.2);
707
+ padding: 2px 6px;
708
+ border-radius: 4px;
709
+ font-size: 12px;
710
+ }
711
+
712
+ .alert-close-button {
713
+ position: absolute;
714
+ top: 12px;
715
+ right: 12px;
716
+ background: rgba(255, 255, 255, 0.2);
717
+ border: none;
718
+ border-radius: 6px;
719
+ width: 24px;
720
+ height: 24px;
721
+ display: flex;
722
+ align-items: center;
723
+ justify-content: center;
724
+ cursor: pointer;
725
+ color: #ffffff;
726
+ transition: all 0.2s ease;
727
+ padding: 0;
728
+ }
729
+ .alert-close-button:hover {
730
+ background: rgba(255, 255, 255, 0.3);
731
+ }
732
+
733
+ .ui-renderer {
734
+ display: flex;
735
+ flex-direction: column;
736
+ gap: 16px;
737
+ width: 100%;
738
+ }
739
+
740
+ .form-component {
741
+ width: 100%;
742
+ max-width: 500px;
743
+ border: 1px solid #e0e0e0;
744
+ border-radius: 12px;
745
+ padding: 24px;
746
+ background-color: #ffffff;
747
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
748
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
749
+ }
750
+
751
+ .form-title {
752
+ font-weight: 600;
753
+ font-size: 16px;
754
+ margin-bottom: 20px;
755
+ color: #1a1a1a;
756
+ margin-top: 0;
757
+ }
758
+
759
+ .form-fields {
760
+ display: flex;
761
+ flex-direction: column;
762
+ gap: 20px;
763
+ }
764
+
765
+ .form-field {
766
+ display: flex;
767
+ flex-direction: column;
768
+ gap: 8px;
769
+ }
770
+
771
+ .form-label {
772
+ font-weight: 500;
773
+ font-size: 13px;
774
+ color: #475569;
775
+ display: flex;
776
+ align-items: center;
777
+ gap: 4px;
778
+ }
779
+ .form-label span {
780
+ color: #ef4444;
781
+ font-size: 12px;
782
+ }
783
+
784
+ .form-input,
785
+ .form-select {
786
+ border: 1px solid #d1d5db;
787
+ border-radius: 8px;
788
+ padding: 10px 12px;
789
+ font-size: 13px;
790
+ color: #1a1a1a;
791
+ background-color: #ffffff;
792
+ font-family: inherit;
793
+ outline: none;
794
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
795
+ cursor: pointer;
796
+ }
797
+ .form-input:focus,
798
+ .form-select:focus {
799
+ border-color: #3b82f6;
800
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
801
+ }
802
+
803
+ .form-select {
804
+ cursor: pointer;
805
+ }
806
+
807
+ .form-submit-button {
808
+ margin-top: 24px;
809
+ display: inline-flex;
810
+ align-items: center;
811
+ justify-content: center;
812
+ border-radius: 8px;
813
+ padding: 12px 24px;
814
+ font-size: 13px;
815
+ font-weight: 500;
816
+ background-color: #3b82f6;
817
+ color: #ffffff;
818
+ border: none;
819
+ cursor: pointer;
820
+ transition: background-color 0.15s ease, transform 0.1s ease;
821
+ font-family: inherit;
822
+ }
823
+ .form-submit-button:hover {
824
+ background-color: #2563eb;
825
+ }
826
+ .form-submit-button:active {
827
+ transform: scale(0.98);
828
+ }
829
+
830
+ .buttons-component {
831
+ display: flex;
832
+ gap: 12px;
833
+ flex-wrap: wrap;
834
+ }
835
+
836
+ .button-component {
837
+ border-radius: 8px;
838
+ padding: 10px 20px;
839
+ font-size: 13px;
840
+ font-weight: 500;
841
+ border: 1px solid #e0e0e0;
842
+ background-color: #ffffff;
843
+ color: #475569;
844
+ cursor: pointer;
845
+ transition: all 0.15s ease;
846
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
847
+ outline: none;
848
+ }
849
+ .button-component.primary {
850
+ background-color: #3b82f6;
851
+ color: #ffffff;
852
+ border-color: #3b82f6;
853
+ }
854
+ .button-component.primary:hover {
855
+ background-color: #2563eb;
856
+ border-color: #2563eb;
857
+ }
858
+ .button-component.secondary {
859
+ background-color: #f3f4f6;
860
+ color: #475569;
861
+ border-color: #d1d5db;
862
+ }
863
+ .button-component.secondary:hover {
864
+ background-color: #e5e7eb;
865
+ border-color: #9ca3af;
866
+ }
867
+ .button-component.danger {
868
+ background-color: #ef4444;
869
+ color: #ffffff;
870
+ border-color: #ef4444;
871
+ }
872
+ .button-component.danger:hover {
873
+ background-color: #dc2626;
874
+ border-color: #dc2626;
875
+ }
876
+ .button-component:not(.primary):not(.secondary):not(.danger):hover {
877
+ background-color: #f9fafb;
878
+ border-color: #d1d5db;
879
+ }
880
+ .button-component:active {
881
+ transform: scale(0.97);
882
+ }
883
+
884
+ .table-component {
885
+ border: 1px solid #e0e0e0;
886
+ border-radius: 12px;
887
+ overflow: hidden;
888
+ font-size: 13px;
889
+ background-color: #ffffff;
890
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
891
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
892
+ }
893
+
894
+ .table-caption {
895
+ padding: 16px 20px;
896
+ font-weight: 600;
897
+ font-size: 14px;
898
+ border-bottom: 1px solid #e0e0e0;
899
+ background-color: #f8f9fa;
900
+ color: #1a1a1a;
901
+ }
902
+
903
+ .table-wrapper {
904
+ overflow-x: auto;
905
+ }
906
+
907
+ .table {
908
+ width: 100%;
909
+ border-collapse: collapse;
910
+ min-width: 100%;
911
+ }
912
+
913
+ .table-header {
914
+ background-color: #f8f9fa;
915
+ }
916
+
917
+ .table-th {
918
+ border-bottom: 2px solid #e0e0e0;
919
+ padding: 14px 20px;
920
+ text-align: left;
921
+ font-weight: 600;
922
+ font-size: 12px;
923
+ color: #4a5568;
924
+ text-transform: uppercase;
925
+ letter-spacing: 0.5px;
926
+ white-space: nowrap;
927
+ }
928
+
929
+ .table-tbody tr {
930
+ background-color: #ffffff;
931
+ transition: background-color 0.15s ease;
932
+ }
933
+ .table-tbody tr:nth-child(even) {
934
+ background-color: #fafbfc;
935
+ }
936
+ .table-tbody tr:hover {
937
+ background-color: #f0f4f8;
938
+ }
939
+
940
+ .table-td {
941
+ border-bottom: 1px solid #e8e8e8;
942
+ padding: 16px 20px;
943
+ font-size: 13px;
944
+ vertical-align: middle;
945
+ }
946
+ .table-td > span {
947
+ color: #a0a0a0;
948
+ font-style: italic;
949
+ }
950
+
951
+ .table-cell-image {
952
+ display: flex;
953
+ align-items: center;
954
+ }
955
+
956
+ .table-image {
957
+ width: 40px;
958
+ height: 40px;
959
+ border-radius: 8px;
960
+ object-fit: cover;
961
+ border: 1px solid #e0e0e0;
962
+ }
963
+
964
+ .table-cell-text {
965
+ color: #2d3748;
966
+ line-height: 1.5;
967
+ }
968
+
969
+ .table-empty {
970
+ padding: 40px;
971
+ text-align: center;
972
+ color: #9ca3af;
973
+ font-size: 13px;
974
+ }
975
+
976
+ .card-component {
977
+ border: 1px solid #e5e7eb;
978
+ border-radius: 16px;
979
+ padding: 16px;
980
+ background-color: #ffffff;
981
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1);
982
+ overflow: hidden;
983
+ margin-bottom: 12px;
984
+ }
985
+
986
+ .card-content {
987
+ display: flex;
988
+ gap: 12px;
989
+ }
990
+
991
+ .card-image {
992
+ width: 64px;
993
+ height: 64px;
994
+ border-radius: 8px;
995
+ object-fit: cover;
996
+ flex-shrink: 0;
997
+ }
998
+
999
+ .card-info {
1000
+ flex: 1;
1001
+ min-width: 0;
1002
+ }
1003
+
1004
+ .card-title {
1005
+ font-weight: 600;
1006
+ font-size: 14px;
1007
+ margin-bottom: 8px;
1008
+ overflow: hidden;
1009
+ text-overflow: ellipsis;
1010
+ white-space: nowrap;
1011
+ }
1012
+
1013
+ .card-subtitle {
1014
+ color: #64748b;
1015
+ font-size: 12px;
1016
+ margin-bottom: 4px;
1017
+ margin: 0;
1018
+ }
1019
+
1020
+ .card-status {
1021
+ display: flex;
1022
+ gap: 8px;
1023
+ font-size: 12px;
1024
+ margin-bottom: 4px;
1025
+ }
1026
+
1027
+ .card-status-label {
1028
+ color: #64748b;
1029
+ font-weight: 500;
1030
+ }
1031
+
1032
+ .card-status-value {
1033
+ color: #475569;
1034
+ }
1035
+
1036
+ .card-fields {
1037
+ display: flex;
1038
+ flex-direction: column;
1039
+ gap: 4px;
1040
+ }
1041
+
1042
+ .card-field {
1043
+ display: flex;
1044
+ gap: 8px;
1045
+ font-size: 12px;
1046
+ }
1047
+
1048
+ .card-field-label {
1049
+ color: #64748b;
1050
+ font-weight: 500;
1051
+ }
1052
+
1053
+ .card-field-value {
1054
+ color: #475569;
1055
+ }
1056
+
1057
+ .card-description {
1058
+ color: #64748b;
1059
+ font-size: 12px;
1060
+ margin-top: 8px;
1061
+ margin: 0;
1062
+ }
1063
+
1064
+ .card-list {
1065
+ width: 100%;
1066
+ }
1067
+
1068
+ .card-list-title {
1069
+ font-weight: 600;
1070
+ margin-bottom: 12px;
1071
+ font-size: 14px;
1072
+ color: #1a1a1a;
1073
+ margin-top: 0;
1074
+ }
1075
+
1076
+ .card-list-description {
1077
+ color: #64748b;
1078
+ margin-bottom: 12px;
1079
+ font-size: 12px;
1080
+ margin-top: 0;
1081
+ }
1082
+
1083
+ .card-grid {
1084
+ display: grid;
1085
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
1086
+ gap: 12px;
1087
+ }
1088
+
1089
+ .card-item {
1090
+ font-size: 12px;
1091
+ border: 1px solid #e0e0e0;
1092
+ border-radius: 12px;
1093
+ padding: 16px;
1094
+ background-color: #ffffff;
1095
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
1096
+ overflow: hidden;
1097
+ }
1098
+
1099
+ .card-item-content {
1100
+ display: flex;
1101
+ gap: 12px;
1102
+ }
1103
+
1104
+ .card-item-image {
1105
+ width: 64px;
1106
+ height: 64px;
1107
+ border-radius: 8px;
1108
+ object-fit: cover;
1109
+ flex-shrink: 0;
1110
+ }
1111
+
1112
+ .card-item-info {
1113
+ flex: 1;
1114
+ min-width: 0;
1115
+ }
1116
+
1117
+ .card-item-title {
1118
+ font-weight: 600;
1119
+ font-size: 14px;
1120
+ margin-bottom: 4px;
1121
+ overflow: hidden;
1122
+ text-overflow: ellipsis;
1123
+ white-space: nowrap;
1124
+ color: #1a1a1a;
1125
+ margin-top: 0;
1126
+ }
1127
+
1128
+ .card-item-subtitle {
1129
+ color: #64748b;
1130
+ font-size: 12px;
1131
+ margin: 0;
1132
+ }
1133
+
1134
+ .card-item-legacy {
1135
+ display: flex;
1136
+ justify-content: space-between;
1137
+ gap: 8px;
1138
+ font-size: 12px;
1139
+ }
1140
+
1141
+ .card-item-legacy-label {
1142
+ color: #64748b;
1143
+ margin: 0;
1144
+ }
1145
+
1146
+ .card-item-legacy-value {
1147
+ font-weight: 500;
1148
+ color: #1a1a1a;
1149
+ margin: 0;
1150
+ }
1151
+
1152
+ .field-image {
1153
+ width: 24px;
1154
+ height: 24px;
1155
+ border-radius: 999px;
1156
+ object-fit: cover;
1157
+ }
1158
+
1159
+ .field-link {
1160
+ text-decoration: underline;
1161
+ }
1162
+
1163
+ .field-badge {
1164
+ display: inline-block;
1165
+ padding: 2px 6px;
1166
+ border-radius: 999px;
1167
+ font-size: 10px;
1168
+ font-weight: 500;
1169
+ }
1170
+ .field-badge.success {
1171
+ background-color: #e0fce5;
1172
+ color: #1a7f36;
1173
+ }
1174
+ .field-badge.warning {
1175
+ background-color: #fff7d6;
1176
+ color: #8a6a00;
1177
+ }
1178
+ .field-badge.danger {
1179
+ background-color: #ffe4e4;
1180
+ color: #b42318;
1181
+ }
1182
+ .field-badge:not(.success):not(.warning):not(.danger) {
1183
+ background-color: #f2f2f2;
1184
+ color: #333;
1185
+ }
1186
+
1187
+ .field-list {
1188
+ margin: 0;
1189
+ padding-left: 16px;
1190
+ }
1191
+
1192
+ .generative-ui-container {
1193
+ display: flex;
1194
+ flex-direction: column;
1195
+ gap: 16px;
1196
+ width: 100%;
1197
+ }
1198
+
1199
+ .generative-ui-header {
1200
+ margin-bottom: 12px;
1201
+ }
1202
+
1203
+ .generative-ui-title {
1204
+ font-size: 18px;
1205
+ font-weight: 600;
1206
+ color: #0f172a;
1207
+ margin: 0 0 8px 0;
1208
+ }
1209
+
1210
+ .generative-ui-description {
1211
+ font-size: 14px;
1212
+ color: #475569;
1213
+ margin: 0;
1214
+ line-height: 1.5;
1215
+ }
1216
+
1217
+ .gen-ui-text {
1218
+ font-size: 13px;
1219
+ color: #1e293b;
1220
+ line-height: 1.6;
1221
+ margin: 0;
1222
+ }
1223
+
1224
+ .gen-ui-input-wrapper {
1225
+ display: flex;
1226
+ flex-direction: column;
1227
+ gap: 8px;
1228
+ }
1229
+
1230
+ .gen-ui-input-label {
1231
+ font-size: 12px;
1232
+ font-weight: 500;
1233
+ color: #334155;
1234
+ margin: 0;
1235
+ }
1236
+
1237
+ .gen-ui-input,
1238
+ .gen-ui-textarea {
1239
+ width: 100%;
1240
+ padding: 10px 12px;
1241
+ border: 1px solid #cbd5e1;
1242
+ border-radius: 8px;
1243
+ font-size: 13px;
1244
+ color: #0f172a;
1245
+ background-color: #ffffff;
1246
+ outline: none;
1247
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
1248
+ font-family: inherit;
1249
+ }
1250
+ .gen-ui-input::placeholder,
1251
+ .gen-ui-textarea::placeholder {
1252
+ color: #94a3b8;
1253
+ }
1254
+ .gen-ui-input:focus,
1255
+ .gen-ui-textarea:focus {
1256
+ border-color: #3b82f6;
1257
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1258
+ }
1259
+ .gen-ui-input:disabled,
1260
+ .gen-ui-textarea:disabled {
1261
+ background-color: #f1f5f9;
1262
+ cursor: not-allowed;
1263
+ opacity: 0.6;
1264
+ }
1265
+
1266
+ .gen-ui-textarea {
1267
+ min-height: 80px;
1268
+ resize: vertical;
1269
+ }
1270
+
1271
+ .gen-ui-select-wrapper {
1272
+ display: flex;
1273
+ flex-direction: column;
1274
+ gap: 8px;
1275
+ }
1276
+
1277
+ .gen-ui-select-label {
1278
+ font-size: 12px;
1279
+ font-weight: 500;
1280
+ color: #334155;
1281
+ margin: 0;
1282
+ }
1283
+
1284
+ .gen-ui-select {
1285
+ width: 100%;
1286
+ padding: 10px 12px;
1287
+ border: 1px solid #cbd5e1;
1288
+ border-radius: 8px;
1289
+ font-size: 13px;
1290
+ color: #0f172a;
1291
+ background-color: #ffffff;
1292
+ outline: none;
1293
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
1294
+ cursor: pointer;
1295
+ font-family: inherit;
1296
+ }
1297
+ .gen-ui-select:focus {
1298
+ border-color: #3b82f6;
1299
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1300
+ }
1301
+ .gen-ui-select:disabled {
1302
+ background-color: #f1f5f9;
1303
+ cursor: not-allowed;
1304
+ opacity: 0.6;
1305
+ }
1306
+
1307
+ .gen-ui-button {
1308
+ display: inline-flex;
1309
+ align-items: center;
1310
+ justify-content: center;
1311
+ padding: 10px 16px;
1312
+ border-radius: 8px;
1313
+ font-size: 13px;
1314
+ font-weight: 500;
1315
+ border: none;
1316
+ cursor: pointer;
1317
+ transition: all 0.2s ease;
1318
+ font-family: inherit;
1319
+ outline: none;
1320
+ background: #2563eb;
1321
+ color: #ffffff;
1322
+ }
1323
+ .gen-ui-button:hover {
1324
+ background: #1d4ed8;
1325
+ }
1326
+ .gen-ui-button:active {
1327
+ transform: scale(0.98);
1328
+ }
1329
+ .gen-ui-button:disabled {
1330
+ background: #cbd5e1;
1331
+ cursor: not-allowed;
1332
+ opacity: 0.6;
1333
+ }
1334
+
1335
+ .gen-ui-card {
1336
+ border: 1px solid #e2e8f0;
1337
+ border-radius: 12px;
1338
+ padding: 16px;
1339
+ background-color: #ffffff;
1340
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
1341
+ transition: box-shadow 0.2s ease;
1342
+ }
1343
+ .gen-ui-card:hover {
1344
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
1345
+ }
1346
+
1347
+ .gen-ui-card-title {
1348
+ font-size: 16px;
1349
+ font-weight: 600;
1350
+ color: #0f172a;
1351
+ margin: 0 0 8px 0;
1352
+ }
1353
+
1354
+ .gen-ui-card-content {
1355
+ font-size: 13px;
1356
+ color: #334155;
1357
+ margin: 0;
1358
+ line-height: 1.5;
1359
+ }
1360
+
1361
+ .gen-ui-list {
1362
+ list-style-type: disc;
1363
+ padding-left: 20px;
1364
+ margin: 0;
1365
+ }
1366
+
1367
+ .gen-ui-list-item {
1368
+ font-size: 13px;
1369
+ color: #1e293b;
1370
+ line-height: 1.6;
1371
+ margin-bottom: 4px;
1372
+ }
1373
+ .gen-ui-list-item:last-child {
1374
+ margin-bottom: 0;
1375
+ }
1376
+
1377
+ .gen-ui-image {
1378
+ max-width: 100%;
1379
+ height: auto;
1380
+ border-radius: 8px;
1381
+ display: block;
1382
+ }
1383
+
1384
+ .gen-ui-link {
1385
+ color: #2563eb;
1386
+ text-decoration: none;
1387
+ font-size: 13px;
1388
+ transition: color 0.2s ease;
1389
+ }
1390
+ .gen-ui-link:hover {
1391
+ color: #1d4ed8;
1392
+ text-decoration: underline;
1393
+ }
1394
+ .gen-ui-link:visited {
1395
+ color: #2563eb;
1396
+ }
1397
+
1398
+ .gen-ui-table-wrapper {
1399
+ width: 100%;
1400
+ overflow-x: auto;
1401
+ border: 1px solid #e2e8f0;
1402
+ border-radius: 12px;
1403
+ background-color: #ffffff;
1404
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
1405
+ }
1406
+
1407
+ .gen-ui-table {
1408
+ width: 100%;
1409
+ border-collapse: collapse;
1410
+ min-width: 100%;
1411
+ }
1412
+
1413
+ .gen-ui-table-header {
1414
+ background-color: #f8fafc;
1415
+ }
1416
+
1417
+ .gen-ui-table-th {
1418
+ padding: 12px 16px;
1419
+ text-align: left;
1420
+ font-size: 12px;
1421
+ font-weight: 600;
1422
+ color: #334155;
1423
+ border-bottom: 2px solid #e2e8f0;
1424
+ white-space: nowrap;
1425
+ }
1426
+
1427
+ .gen-ui-table-body tr {
1428
+ transition: background-color 0.2s ease;
1429
+ }
1430
+ .gen-ui-table-body tr:hover {
1431
+ background-color: #f8fafc;
1432
+ }
1433
+ .gen-ui-table-body tr:not(:last-child) {
1434
+ border-bottom: 1px solid #e2e8f0;
1435
+ }
1436
+
1437
+ .gen-ui-table-td {
1438
+ padding: 12px 16px;
1439
+ font-size: 13px;
1440
+ color: #1e293b;
1441
+ vertical-align: middle;
1442
+ }
1443
+
1444
+ .gen-ui-form {
1445
+ display: flex;
1446
+ flex-direction: column;
1447
+ gap: 16px;
1448
+ width: 100%;
1449
+ }
1450
+ /*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiQzpcXENhbGlzbWFsYXJcXHpla2FpXFxhaXplay13aWRnZXRcXHNyY1xcc3R5bGVzIiwic291cmNlcyI6WyJtZXNzYWdlU3R5bGVzLnNjc3MiLCJ2YXJpYWJsZXMuc2NzcyIsImlucHV0U3R5bGVzLnNjc3MiLCJoZWFkZXJTdHlsZXMuc2NzcyIsImNvbnRhaW5lclN0eWxlcy5zY3NzIiwibG9hZGluZ1N0eWxlcy5zY3NzIiwiYWxlcnRTdHlsZXMuc2NzcyIsInVpUmVuZGVyZXIuc2NzcyIsImdlbmVyYXRpdmVVSS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQTtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUdGO0VBQ0U7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdDMkJRO0VEMUJSOztBQUVBO0VBQ0U7RUFDQSxZQzFCZTtFRDJCZixPQ3hCSTtFRHlCSjtFQUNBOztBQUdGO0VBQ0U7RUFDQSxZQzdCTTtFRDhCTixPQ3ZCTztFRHdCUDtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUtKO0VBQ0UsV0NMUTtFRE1SO0VBQ0EsWUN0Qlc7OztBRHlCYjtFQUNFOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFJRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFOztBQUtKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBS0o7QUFBQTtFQUVFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUlGO0FBQUE7RUFFRTtFQUNBOztBQUlKO0VBQ0U7O0FBRUE7RUFDRTs7QUFLSjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVDdEhRO0VEdUhSO0VBQ0E7RUFDQTs7QUFJRjtFQUNFLFlDL0pNO0VEZ0tOO0VBQ0EsZUMvSFE7RURnSVI7RUFDQTtFQUNBO0VBQ0EsWUNoSFE7O0FEa0hSO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsT0NuS0s7RURvS0wsV0NuSUk7RURvSUo7O0FBS0o7QUFBQTtFQUVFO0VBQ0E7O0FBSUY7QUFBQTtFQUVFOztBQUlGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQU1FO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQUNFOztBQUlKO0VBQ0UsV0NuS007RURvS047RUFDQTs7QUFHRjtFQUNFLFdDMUtNOztBRDZLUjtFQUNFOztBQUdGO0FBQUE7QUFBQTtFQUdFLFdDckxNOztBRHlMUjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUtKO0VBQ0U7RUFDQTtFQUNBOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsV0N2Tk07RUR3Tk4sZUMvTlE7RURnT1I7RUFDQTs7QUFHRjtBQUFBO0VBRUU7RUFDQTtFQUNBOztBQUdGO0VBQ0UsWUM3UU87RUQ4UVA7RUFDQSxPQ3hRTztFRHlRUDs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBRUE7RUFDRTs7QUFLSjtFQUNFO0VBQ0E7RUFDQSxlQ2xRUTtFRG1RUjs7QUFJRjtFQUNFOzs7QUFNRjtFQUNFLE9DblRJOztBRHNUSjtFQUNFLE9DdlRFO0VEd1RGO0VBQ0E7O0FBRUE7RUFDRSxxQkM1VEE7O0FEaVVKO0VBQ0UsT0NsVUU7O0FEc1VKO0VBQ0U7RUFDQSxPQ3hVRTtFRHlVRjs7QUFJRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRSxPQ2xWQTs7QUR1Vko7RUFDRTs7QUFJRjtFQUNFLG1CQzdWRTtFRDhWRjtFQUNBLE9DL1ZFOztBRG1XSjtFQUNFOztBQUlGO0VBQ0U7O0FBR0Y7QUFBQTtFQUVFOztBQUdGO0VBQ0U7RUFDQSxPQ25YRTtFRG9YRjs7QUFHRjtFQUNFOzs7QUFPSjtFQUNFLE9DdlhPOztBRDBYUDtFQUNFOztBQUVBO0VBQ0U7O0FBS0o7RUFDRTs7QUFJRjtFQUNFO0VBQ0E7RUFDQTs7QUFJRjtFQUNFLFlDelpFO0VEMFpGLGNDdFpLOztBRHdaTDtFQUNFLE9DblpHOztBRHdaUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFNRSxPQzlaSzs7QURpYVA7RUFDRSxxQkN4YUs7O0FENGFQO0FBQUE7RUFFRSxPQ3ZhSzs7QUQyYVA7RUFDRTtFQUNBO0VBQ0EsT0NoYks7O0FEb2JQO0VBQ0UsWUMzYks7RUQ0YkwsT0NyYks7O0FEd2JQO0VBQ0U7OztBRXJjTjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFNENEJXO0VDM0JYLFlESE07RUNJTjtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdEOEJRO0VDN0JSO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZRG5CUTtFQ29CUixPRGJTOztBQ2VUO0VBQ0U7RUFDQTs7QUFHRjtFQUNFLGNEaEJPO0VDaUJQOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQSxlRENZO0VDQVo7RUFDQSxPRHhDTTtFQ3lDTjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRSxZRDdDTztFQzhDUDs7QUFHRjtFQUNFLFlEekRlOztBQzJEZjtFQUNFOzs7QUMzRE47RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQSxlRjhCWTtFRTdCWjtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdGaUNRO0VFaENSOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVGaUJZOzs7QUVkZDtFQUNFLFdGb0JRO0VFbkJSOzs7QUFHRjtFQUNFO0VBQ0EsV0ZjUTtFRWJSOzs7QUFHRjtFQUNFO0VBQ0EsV0ZLUTtFRUpSOzs7QUN4Q0E7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQSxRSFdXO0VHVlgsZUhrQlk7RUdqQlo7RUFDQSxPSHZCTTtFR3dCTjtFQUNBO0VBQ0E7RUFDQTtFQUNBLFlINkJVO0VHNUJWO0VBQ0E7O0FBRUE7RUFDRSxNSEZTOztBR0tYO0VBQ0UsT0hOUzs7QUdTWDtFQUNFOztBQUdGO0VBQ0UsWUhhUTs7O0FHVFo7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFLE1IekJTO0VHMEJUOztBQUdGO0VBQ0UsT0g5QlM7RUcrQlQ7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFlIdkdNO0VHd0dOLGVIbkVVO0VHb0VWO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsU0huRlc7RUdvRlg7RUFDQTtFQUNBLEtIekZXO0VHMEZYLFlIbkhROzs7QUdzSFY7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT0h2SFM7RUd3SFQ7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUNqSko7RUFDRTtJQUNFOztFQUVGO0lBQ0U7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxlSjJCWTtFSTFCWjs7O0FDZkY7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOzs7QUFJSjtFQUNFLGVMMEJVO0VLekJWO0VBQ0E7RUFDQTtFQUNBLE9MZk07RUtnQk4sV0w0QlU7RUszQlY7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQSxLTDVCVzs7O0FLK0JiO0VBQ0U7RUFDQSxXTGhCUTtFS2lCUjtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBLGNMM0NXO0VLNENYOzs7QUFHRjtFQUNFLGVMcERXO0VLcURYO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT0xqSE07RUtrSE47RUFDQTs7QUFFQTtFQUNFOzs7QUN4SEo7RUFDRTtFQUNBO0VBQ0EsS042Qlc7RU01Qlg7OztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsZU4yQlU7RU0xQlYsU05xQlk7RU1wQlosa0JOWk07RU1hTixZTjJDVTtFTTFDVjs7O0FBR0Y7RUFDRTtFQUNBLFdOMkJRO0VNMUJSLGVOV1c7RU1WWCxPTnBCTTtFTXFCTjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsS05HVzs7O0FNQWI7RUFDRTtFQUNBO0VBQ0EsS05OVzs7O0FNU2I7RUFDRTtFQUNBLFdOS1U7RU1KVixPTmhDUztFTWlDVDtFQUNBO0VBQ0EsS05oQlc7O0FNa0JYO0VBQ0UsT04zQkk7RU00QkosV05KTTs7O0FNUVY7QUFBQTtFQUVFO0VBQ0EsZU5sQlU7RU1tQlY7RUFDQSxXTlpVO0VNYVYsT054RE07RU15RE4sa0JOMURNO0VNMkROO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0FBQUE7RUFDRSxjTm5ETztFTW9EUDs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRSxZTjNDWTtFTTRDWjtFQUNBO0VBQ0E7RUFDQSxlTjNDVTtFTTRDVjtFQUNBLFdOckNVO0VNc0NWO0VBQ0Esa0JOckVTO0VNc0VULE9OcEZNO0VNcUZOO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0Usa0JONUVPOztBTStFVDtFQUNFOzs7QUFLSjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRSxlTnZFVTtFTXdFVjtFQUNBLFdOakVVO0VNa0VWO0VBQ0E7RUFDQSxrQk5oSE07RU1pSE4sT056R1M7RU0wR1Q7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRSxrQk4xR087RU0yR1AsT056SEk7RU0wSEosY041R087O0FNOEdQO0VBQ0Usa0JOOUdLO0VNK0dMLGNOL0dLOztBTW1IVDtFQUNFO0VBQ0EsT041SE87RU02SFA7O0FBRUE7RUFDRTtFQUNBOztBQUlKO0VBQ0Usa0JOM0hJO0VNNEhKLE9OL0lJO0VNZ0pKLGNON0hJOztBTStISjtFQUNFLGtCTi9ITztFTWdJUCxjTmhJTzs7QU1vSVg7RUFDRTtFQUNBOztBQUdGO0VBQ0U7OztBQUtKO0VBQ0U7RUFDQSxlTmhJVTtFTWlJVjtFQUNBLFdOM0hVO0VNNEhWLGtCTnhLTTtFTXlLTixZTmpIVTtFTWtIVjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsV05uSVE7RU1vSVI7RUFDQTtFQUNBLE9ObExNOzs7QU1xTFI7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxXTjlKUTtFTStKUjtFQUNBO0VBQ0E7RUFDQTs7O0FBSUE7RUFDRSxrQk5sTkk7RU1tTko7O0FBRUE7RUFDRTs7QUFHRjtFQUNFOzs7QUFLTjtFQUNFO0VBQ0E7RUFDQSxXTnRMVTtFTXVMVjs7QUFFQTtFQUNFO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsZU4vTVU7RU1nTlY7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFdOck5VOzs7QU15Tlo7RUFDRTtFQUNBLGVOak9VO0VNa09WLFNOMU9XO0VNMk9YLGtCTnpRTTtFTTBRTjtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsZU5uUFU7RU1vUFY7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0EsV050UFE7RU11UFIsZU54UVc7RU15UVg7RUFDQTtFQUNBOzs7QUFHRjtFQUNFLE9OcFNTO0VNcVNULFdOalFRO0VNa1FSLGVObFJXO0VNbVJYOzs7QUFHRjtFQUNFO0VBQ0EsS052Ulc7RU13UlgsV056UVE7RU0wUVIsZU4xUlc7OztBTTZSYjtFQUNFLE9ObFRTO0VNbVRUOzs7QUFHRjtFQUNFLE9OdFRTOzs7QU15VFg7RUFDRTtFQUNBO0VBQ0EsS056U1c7OztBTTRTYjtFQUNFO0VBQ0EsS043U1c7RU04U1gsV04vUlE7OztBTWtTVjtFQUNFLE9OdlVTO0VNd1VUOzs7QUFHRjtFQUNFLE9OM1VTOzs7QU04VVg7RUFDRSxPTmhWUztFTWlWVCxXTjdTUTtFTThTUixZTjdUVztFTThUWDs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsV052VFE7RU13VFIsT05wV007RU1xV047OztBQUdGO0VBQ0UsT05uV1M7RU1vV1Q7RUFDQSxXTmpVUTtFTWtVUjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0UsV041VVE7RU02VVI7RUFDQSxlTnBWVTtFTXFWVixTTjVWVztFTTZWWCxrQk4zWE07RU00WE4sWU5wVVU7RU1xVVY7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsZU5wV1U7RU1xV1Y7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0EsV052V1E7RU13V1I7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPTnhaTTtFTXlaTjs7O0FBR0Y7RUFDRSxPTnZaUztFTXdaVCxXTnBYUTtFTXFYUjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsS04xWVc7RU0yWVgsV041WFE7OztBTStYVjtFQUNFLE9OcGFTO0VNcWFUOzs7QUFHRjtFQUNFO0VBQ0EsT05oYk07RU1pYk47OztBQVFGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTs7O0FDcmVGO0VBQ0U7RUFDQTtFQUNBLEtQNkJXO0VPNUJYOzs7QUFLRjtFQUNFLGVQcUJXOzs7QU9sQmI7RUFDRSxXUG1DUTtFT2xDUjtFQUNBLE9QSFM7RU9JVDs7O0FBR0Y7RUFDRSxXUDBCUTtFT3pCUixPUFpTO0VPYVQ7RUFDQTs7O0FBSUY7RUFDRSxXUGlCVTtFT2hCVixPUGxCUztFT21CVDtFQUNBOzs7QUFJRjtFQUNFO0VBQ0E7RUFDQSxLUFRXOzs7QU9ZYjtFQUNFLFdQRVE7RU9EUjtFQUNBLE9QbENTO0VPbUNUOzs7QUFHRjtBQUFBO0VBRUU7RUFDQTtFQUNBO0VBQ0EsZVBoQlU7RU9pQlYsV1BUVTtFT1VWLE9QM0NTO0VPNENULGtCUHZETTtFT3dETjtFQUNBO0VBQ0E7O0FBRUE7QUFBQTtFQUNFLE9QdkRPOztBTzBEVDtBQUFBO0VBQ0UsY1BuRE87RU9vRFA7O0FBR0Y7QUFBQTtFQUNFLGtCUG5FTztFT29FUDtFQUNBOzs7QUFJSjtFQUNFO0VBQ0E7OztBQUlGO0VBQ0U7RUFDQTtFQUNBLEtQekRXOzs7QU80RGI7RUFDRSxXUDlDUTtFTytDUjtFQUNBLE9QbEZTO0VPbUZUOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVQL0RVO0VPZ0VWLFdQeERVO0VPeURWLE9QMUZTO0VPMkZULGtCUHRHTTtFT3VHTjtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFLGNQL0ZPO0VPZ0dQOztBQUdGO0VBQ0Usa0JQL0dPO0VPZ0hQO0VBQ0E7OztBQUtKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxlUDFGVTtFTzJGVixXUG5GVTtFT29GVjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZUHZIUztFT3dIVCxPUHZJTTs7QU95SU47RUFDRSxZUDFITzs7QU82SFQ7RUFDRTs7QUFHRjtFQUNFLFlQN0lPO0VPOElQO0VBQ0E7OztBQUtKO0VBQ0U7RUFDQSxlUHRIVTtFT3VIVixTUDlIVztFTytIWCxrQlA3Sk07RU84Sk4sWVB2R1U7RU93R1Y7O0FBRUE7RUFDRSxZUDFHUTs7O0FPOEdaO0VBQ0UsV1B6SFE7RU8wSFI7RUFDQSxPUDlKUztFTytKVDs7O0FBR0Y7RUFDRSxXUGxJVTtFT21JVixPUHRLUztFT3VLVDtFQUNBOzs7QUFJRjtFQUNFO0VBQ0EsY1B4Slc7RU95Slg7OztBQUdGO0VBQ0UsV1BoSlU7RU9pSlYsT1BuTFM7RU9vTFQ7RUFDQSxlUHBLVzs7QU9zS1g7RUFDRTs7O0FBS0o7RUFDRTtFQUNBO0VBQ0EsZVB0S1U7RU91S1Y7OztBQUlGO0VBQ0UsT1BqTVM7RU9rTVQ7RUFDQSxXUHRLVTtFT3VLVjs7QUFFQTtFQUNFLE9QdE1PO0VPdU1QOztBQUdGO0VBQ0UsT1A1TU87OztBT2lOWDtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVQL0xVO0VPZ01WLGtCUHJPTTtFT3NPTixZUC9LVTs7O0FPa0xaO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFLGtCUDlPUTs7O0FPaVBWO0VBQ0U7RUFDQTtFQUNBLFdQM01RO0VPNE1SO0VBQ0EsT1AvT1M7RU9nUFQ7RUFDQTs7O0FBSUE7RUFDRTs7QUFFQTtFQUNFLGtCUGhRSTs7QU9tUU47RUFDRTs7O0FBS047RUFDRTtFQUNBLFdQak9VO0VPa09WLE9QcFFTO0VPcVFUOzs7QUFJRjtFQUNFO0VBQ0E7RUFDQSxLUHhQVztFT3lQWCIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4vdmFyaWFibGVzLnNjc3MnIGFzICo7XHJcblxyXG4ubWVzc2FnZS1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgJi51c2VyIHtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICB9XHJcblxyXG4gICYuYXNzaXN0YW50IHtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gIH1cclxufVxyXG5cclxuLm1lc3NhZ2UtYnViYmxlIHtcclxuICBtYXgtd2lkdGg6IDgwJTtcclxuICBwYWRkaW5nOiAxMnB4IDE2cHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xyXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICBsaW5lLWhlaWdodDogMS40O1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbWQ7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAmLnVzZXIge1xyXG4gICAgYm9yZGVyLXJhZGl1czogMThweCAxOHB4IDRweCAxOHB4O1xyXG4gICAgYmFja2dyb3VuZDogJHByaW1hcnktZ3JhZGllbnQ7XHJcbiAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgfVxyXG5cclxuICAmLmFzc2lzdGFudCB7XHJcbiAgICBib3JkZXItcmFkaXVzOiAxOHB4IDE4cHggMThweCA0cHg7XHJcbiAgICBiYWNrZ3JvdW5kOiAkZ3JheS01MDtcclxuICAgIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICB9XHJcblxyXG4gIC5tZXNzYWdlLXR5cGluZy1pbmRpY2F0b3Ige1xyXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcclxuICB9XHJcblxyXG59XHJcblxyXG4ubWVzc2FnZS10aW1lIHtcclxuICBmb250LXNpemU6ICR0ZXh0LXhzO1xyXG4gIG9wYWNpdHk6IDAuNztcclxuICBtYXJnaW4tdG9wOiAkc3BhY2luZy14cztcclxufVxyXG5cclxuLm1lc3NhZ2UtdGltZS51c2VyIHtcclxuICB0ZXh0LWFsaWduOiByaWdodDtcclxufVxyXG5cclxuLm1lc3NhZ2UtdGltZS5hc3Npc3RhbnQge1xyXG4gIHRleHQtYWxpZ246IGxlZnQ7XHJcbn1cclxuXHJcbi5tYXJrZG93bi1jb250ZW50IHtcclxuICBsaW5lLWhlaWdodDogMS42O1xyXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XHJcblxyXG4gICYrLmdlbmVyYXRpdmUtdWktY29udGFpbmVyIHtcclxuICAgIG1hcmdpbi10b3A6IDE2cHg7XHJcbiAgfVxyXG5cclxuICAvLyBQYXJhZ3JhZmxhclxyXG4gIHAge1xyXG4gICAgbWFyZ2luOiAwIDAgMTJweCAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcclxuXHJcbiAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG5cclxuICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGlua2xlclxyXG4gIGEge1xyXG4gICAgY29sb3I6ICM2NjdlZWE7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tZmFzdDtcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiAjNzY0YmEyO1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjNzY0YmEyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGlzdGVsZXJcclxuICB1bCxcclxuICBvbCB7XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuICB9XHJcblxyXG4gIHVsIHtcclxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgfVxyXG5cclxuICBvbCB7XHJcbiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsO1xyXG4gIH1cclxuXHJcbiAgbGkge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuXHJcbiAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEJ1bGxldCBwb2ludCBpw6dpblxyXG4gICAgJjo6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCLigKJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgICBjb2xvcjogIzY2N2VlYTtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBOZXN0ZWQgbGlzdCBpw6dpbiBkYWhhIGl5aSBnw7Zyw7xuw7xtXHJcbiAgICB1bCxcclxuICAgIG9sIHtcclxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbCBsaSB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcblxyXG4gICAgJjo6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIElubGluZSBrb2RcclxuICBjb2RlIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKTtcclxuICAgIGNvbG9yOiAjNzY0YmEyO1xyXG4gICAgcGFkZGluZzogMnB4IDZweDtcclxuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtc207XHJcbiAgICBmb250LWZhbWlseTogJ01vbmFjbycsICdNZW5sbycsICdVYnVudHUgTW9ubycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcclxuICAgIGZvbnQtc2l6ZTogMC45ZW07XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMik7XHJcbiAgfVxyXG5cclxuICAvLyBLb2QgYmxva2xhcsSxXHJcbiAgcHJlIHtcclxuICAgIGJhY2tncm91bmQ6ICRncmF5LTUwO1xyXG4gICAgcGFkZGluZzogMTJweCAxNnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1tZDtcclxuICAgIG92ZXJmbG93LXg6IGF1dG87XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICAgIGJveC1zaGFkb3c6ICRzaGFkb3ctc207XHJcblxyXG4gICAgY29kZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgY29sb3I6ICRncmF5LTgwMDtcclxuICAgICAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFZ1cmd1IG1ldG5pXHJcbiAgc3Ryb25nLFxyXG4gIGIge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGNvbG9yOiBpbmhlcml0O1xyXG4gIH1cclxuXHJcbiAgLy8gxLB0YWxpayBtZXRpblxyXG4gIGVtLFxyXG4gIGkge1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gIH1cclxuXHJcbiAgLy8gQmHFn2zEsWtsYXJcclxuICBoMSxcclxuICBoMixcclxuICBoMyxcclxuICBoNCxcclxuICBoNSxcclxuICBoNiB7XHJcbiAgICBtYXJnaW46IDE2cHggMCA4cHggMDtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMS40O1xyXG4gICAgY29sb3I6IGluaGVyaXQ7XHJcblxyXG4gICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoMSB7XHJcbiAgICBmb250LXNpemU6ICR0ZXh0LXhsO1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRncmF5LTIwMDtcclxuICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XHJcbiAgfVxyXG5cclxuICBoMiB7XHJcbiAgICBmb250LXNpemU6ICR0ZXh0LWxnO1xyXG4gIH1cclxuXHJcbiAgaDMge1xyXG4gICAgZm9udC1zaXplOiAxNXB4O1xyXG4gIH1cclxuXHJcbiAgaDQsXHJcbiAgaDUsXHJcbiAgaDYge1xyXG4gICAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICB9XHJcblxyXG4gIC8vIEFsxLFudMSxbGFyXHJcbiAgYmxvY2txdW90ZSB7XHJcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICM2NjdlZWE7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIGNvbG9yOiBpbmhlcml0O1xyXG4gICAgb3BhY2l0eTogMC45O1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gICAgYmFja2dyb3VuZDogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjA1KTtcclxuICAgIHBhZGRpbmc6IDhweCAxMnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMCAkcmFkaXVzLXNtICRyYWRpdXMtc20gMDtcclxuXHJcbiAgICBwIHtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gWWF0YXkgw6dpemdpXHJcbiAgaHIge1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICAgIG1hcmdpbjogMTZweCAwO1xyXG4gIH1cclxuXHJcbiAgLy8gVGFibG9sYXJcclxuICB0YWJsZSB7XHJcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICB9XHJcblxyXG4gIHRoLFxyXG4gIHRkIHtcclxuICAgIHBhZGRpbmc6IDEwcHggMTJweDtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyYXktMjAwO1xyXG4gIH1cclxuXHJcbiAgdGgge1xyXG4gICAgYmFja2dyb3VuZDogJGdyYXktMTAwO1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGNvbG9yOiAkZ3JheS04MDA7XHJcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgJGdyYXktMzAwO1xyXG4gIH1cclxuXHJcbiAgdHI6bGFzdC1jaGlsZCB0ZCB7XHJcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xyXG4gIH1cclxuXHJcbiAgdGJvZHkgdHIge1xyXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAkdHJhbnNpdGlvbi1mYXN0O1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMDUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gR8O2cnNlbGxlclxyXG4gIGltZyB7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gICAgbWFyZ2luOiA4cHggMDtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrYm94IGxpc3RlbGVyIChHaXRIdWIgc3R5bGUpXHJcbiAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcclxuICAgIG1hcmdpbi1yaWdodDogNnB4O1xyXG4gIH1cclxufVxyXG5cclxuLy8gVXNlciBtZXNzYWdlIHNwZWNpZmljIHN0eWxlc1xyXG4ubWVzc2FnZS1idWJibGUudXNlciB7XHJcbiAgLm1hcmtkb3duLWNvbnRlbnQge1xyXG4gICAgY29sb3I6ICR3aGl0ZTtcclxuXHJcbiAgICAvLyBMaW5rbGVyXHJcbiAgICBhIHtcclxuICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xyXG4gICAgICBmb250LXdlaWdodDogNjAwO1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHdoaXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQnVsbGV0IHBvaW50c1xyXG4gICAgbGk6OmJlZm9yZSB7XHJcbiAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5saW5lIGtvZFxyXG4gICAgY29kZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gS29kIGJsb2tsYXLEsVxyXG4gICAgcHJlIHtcclxuICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xyXG4gICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuXHJcbiAgICAgIGNvZGUge1xyXG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBCYcWfbMSxa2xhclxyXG4gICAgaDEge1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQWzEsW50xLFsYXJcclxuICAgIGJsb2NrcXVvdGUge1xyXG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJHdoaXRlO1xyXG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XHJcbiAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gWWF0YXkgw6dpemdpXHJcbiAgICBociB7XHJcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUYWJsb2xhclxyXG4gICAgdGFibGUge1xyXG4gICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcclxuICAgIH1cclxuXHJcbiAgICB0aCxcclxuICAgIHRkIHtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoIHtcclxuICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcclxuICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRib2R5IHRyOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gQXNzaXN0YW50IG1lc3NhZ2Ugc3BlY2lmaWMgc3R5bGVzXHJcbi5tZXNzYWdlLWJ1YmJsZS5hc3Npc3RhbnQge1xyXG4gIC5tYXJrZG93bi1jb250ZW50IHtcclxuICAgIGNvbG9yOiAkZ3JheS03MDA7XHJcblxyXG4gICAgLy8gTGlua2xlclxyXG4gICAgYSB7XHJcbiAgICAgIGNvbG9yOiAjNjY3ZWVhO1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgY29sb3I6ICM3NjRiYTI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBCdWxsZXQgcG9pbnRzXHJcbiAgICBsaTo6YmVmb3JlIHtcclxuICAgICAgY29sb3I6ICM2NjdlZWE7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5saW5lIGtvZFxyXG4gICAgY29kZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKTtcclxuICAgICAgY29sb3I6ICM3NjRiYTI7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEtvZCBibG9rbGFyxLFcclxuICAgIHByZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAkZ3JheS0yMDA7XHJcblxyXG4gICAgICBjb2RlIHtcclxuICAgICAgICBjb2xvcjogJGdyYXktODAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQmHFn2zEsWtsYXJcclxuICAgIGgxLFxyXG4gICAgaDIsXHJcbiAgICBoMyxcclxuICAgIGg0LFxyXG4gICAgaDUsXHJcbiAgICBoNiB7XHJcbiAgICAgIGNvbG9yOiAkZ3JheS04MDA7XHJcbiAgICB9XHJcblxyXG4gICAgaDEge1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkZ3JheS0yMDA7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVnVyZ3VcclxuICAgIHN0cm9uZyxcclxuICAgIGIge1xyXG4gICAgICBjb2xvcjogJGdyYXktOTAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFsxLFudMSxbGFyXHJcbiAgICBibG9ja3F1b3RlIHtcclxuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICM2NjdlZWE7XHJcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4wNSk7XHJcbiAgICAgIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGFibG9sYXJcclxuICAgIHRoIHtcclxuICAgICAgYmFja2dyb3VuZDogJGdyYXktMTAwO1xyXG4gICAgICBjb2xvcjogJGdyYXktODAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRib2R5IHRyOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjA1KTtcclxuICAgIH1cclxuICB9XHJcbn0iLCIvLyBDb2xvciBWYXJpYWJsZXNcclxuJHByaW1hcnktZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2NjdlZWEgMCUsICM3NjRiYTIgMTAwJSk7XHJcbiRidXR0b24tZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2NjdlZWEgMCUsICM3NjRiYTIgMTAwJSk7XHJcblxyXG4kd2hpdGU6ICNmZmZmZmY7XHJcbiRibGFjazogIzFhMWExYTtcclxuJGdyYXktNTA6ICNmOGZhZmM7XHJcbiRncmF5LTEwMDogI2YxZjVmOTtcclxuJGdyYXktMjAwOiAjZTJlOGYwO1xyXG4kZ3JheS0zMDA6ICNjYmQ1ZTE7XHJcbiRncmF5LTQwMDogIzk0YTNiODtcclxuJGdyYXktNTAwOiAjNjQ3NDhiO1xyXG4kZ3JheS02MDA6ICM0NzU1Njk7XHJcbiRncmF5LTcwMDogIzMzNDE1NTtcclxuJGdyYXktODAwOiAjMWUyOTNiO1xyXG4kZ3JheS05MDA6ICMwZjE3MmE7XHJcblxyXG4vLyBCcmFuZCBDb2xvcnNcclxuJGJsdWUtNTAwOiAjM2I4MmY2O1xyXG4kYmx1ZS02MDA6ICMyNTYzZWI7XHJcbiRibHVlLTcwMDogIzFkNGVkODtcclxuXHJcbi8vIFN0YXR1cyBDb2xvcnNcclxuJGVycm9yOiAjZWY0NDQ0O1xyXG4kZXJyb3ItZGFyazogI2RjMjYyNjtcclxuJHdhcm5pbmc6ICNmNTllMGI7XHJcbiR3YXJuaW5nLWRhcms6ICNkOTc3MDY7XHJcbiRzdWNjZXNzOiAjMTBiOTgxO1xyXG4kc3VjY2Vzcy1kYXJrOiAjMDU5NjY5O1xyXG5cclxuLy8gU3BhY2luZ1xyXG4kc3BhY2luZy14czogNHB4O1xyXG4kc3BhY2luZy1zbTogOHB4O1xyXG4kc3BhY2luZy1tZDogMTJweDtcclxuJHNwYWNpbmctbGc6IDE2cHg7XHJcbiRzcGFjaW5nLXhsOiAyMHB4O1xyXG4kc3BhY2luZy0yeGw6IDI0cHg7XHJcblxyXG4vLyBCb3JkZXIgUmFkaXVzXHJcbiRyYWRpdXMtc206IDRweDtcclxuJHJhZGl1cy1tZDogOHB4O1xyXG4kcmFkaXVzLWxnOiAxMnB4O1xyXG4kcmFkaXVzLXhsOiAxNnB4O1xyXG4kcmFkaXVzLWZ1bGw6IDUwJTtcclxuXHJcbi8vIEZvbnQgU2l6ZXNcclxuJHRleHQteHM6IDExcHg7XHJcbiR0ZXh0LXNtOiAxMnB4O1xyXG4kdGV4dC1iYXNlOiAxM3B4O1xyXG4kdGV4dC1tZDogMTRweDtcclxuJHRleHQtbGc6IDE2cHg7XHJcbiR0ZXh0LXhsOiAxOHB4O1xyXG5cclxuLy8gVHJhbnNpdGlvbnNcclxuJHRyYW5zaXRpb24tZmFzdDogMC4xNXMgZWFzZTtcclxuJHRyYW5zaXRpb24tYmFzZTogMC4ycyBlYXNlO1xyXG4kdHJhbnNpdGlvbi1zbG93OiAwLjNzIGVhc2U7XHJcblxyXG4vLyBTaGFkb3dzXHJcbiRzaGFkb3ctc206IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xyXG4kc2hhZG93LW1kOiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcclxuJHNoYWRvdy1sZzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xyXG4kc2hhZG93LXhsOiAwIDZweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcblxyXG4iLCJAdXNlICcuL3ZhcmlhYmxlcy5zY3NzJyBhcyAqO1xyXG5cclxuLmlucHV0LWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAgZ2FwOiAxMnB4O1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQ6ICR3aGl0ZTtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgJGdyYXktMjAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAgMCAkcmFkaXVzLWxnICRyYWRpdXMtbGc7XHJcbn1cclxuXHJcbi50ZXh0YXJlYSB7XHJcbiAgZmxleDogMTtcclxuICBtaW4taGVpZ2h0OiA0NHB4O1xyXG4gIG1heC1oZWlnaHQ6IDEyMHB4O1xyXG4gIHBhZGRpbmc6IDEycHggJHNwYWNpbmctbGc7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgJGdyYXktMjAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDIycHg7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICBsaW5lLWhlaWdodDogMS40O1xyXG4gIHJlc2l6ZTogbm9uZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbi1iYXNlLCBib3gtc2hhZG93ICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcbiAgYmFja2dyb3VuZDogJGdyYXktNTA7XHJcbiAgY29sb3I6ICRncmF5LTcwMDtcclxuXHJcbiAgJjpkaXNhYmxlZCB7XHJcbiAgICBvcGFjaXR5OiAwLjY7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gIH1cclxuXHJcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XHJcbiAgICBib3JkZXItY29sb3I6ICRibHVlLTUwMDtcclxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDU5LCAxMzAsIDI0NiwgMC4xKTtcclxuICB9XHJcbn1cclxuXHJcbi5zZW5kLWJ1dHRvbiB7XHJcbiAgd2lkdGg6IDQ0cHg7XHJcbiAgaGVpZ2h0OiA0NHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtZnVsbDtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIHRyYW5zaXRpb246IGFsbCAkdHJhbnNpdGlvbi1iYXNlO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbGc7XHJcblxyXG4gICY6ZGlzYWJsZWQge1xyXG4gICAgYmFja2dyb3VuZDogJGdyYXktMjAwO1xyXG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICB9XHJcblxyXG4gICY6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgYmFja2dyb3VuZDogJHByaW1hcnktZ3JhZGllbnQ7XHJcbiAgICBcclxuICAgICY6aG92ZXIge1xyXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuIiwiQHVzZSAnLi92YXJpYWJsZXMuc2NzcycgYXMgKjtcclxuXHJcbi5oZWFkZXIge1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnICRzcGFjaW5nLXhsO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMTJweDtcclxufVxyXG5cclxuLmxvZ28tY29udGFpbmVyIHtcclxuICB3aWR0aDogNDBweDtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1mdWxsO1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgZm9udC1zaXplOiAkdGV4dC14bDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4ubG9nby1pbWFnZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtZnVsbDtcclxufVxyXG5cclxuLmxvZ28tdGV4dCB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1sZztcclxuICBmb250LXdlaWdodDogYm9sZDtcclxufVxyXG5cclxuLmNvbXBhbnktbmFtZSB7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbGc7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuLnN0YXR1cy10ZXh0IHtcclxuICBtYXJnaW46IDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBvcGFjaXR5OiAwLjg7XHJcbn1cclxuXHJcbiIsIkB1c2UgJy4vdmFyaWFibGVzLnNjc3MnIGFzICo7XHJcblxyXG4uYnV0dG9uLXNpemVzIHtcclxuICAmLnNtYWxsIHtcclxuICAgIHdpZHRoOiA1MHB4O1xyXG4gICAgaGVpZ2h0OiA1MHB4O1xyXG4gICAgZm9udC1zaXplOiAyMHB4O1xyXG4gIH1cclxuXHJcbiAgJi5tZWRpdW0ge1xyXG4gICAgd2lkdGg6IDYwcHg7XHJcbiAgICBoZWlnaHQ6IDYwcHg7XHJcbiAgICBmb250LXNpemU6IDI0cHg7XHJcbiAgfVxyXG5cclxuICAmLmxhcmdlIHtcclxuICAgIHdpZHRoOiA3MHB4O1xyXG4gICAgaGVpZ2h0OiA3MHB4O1xyXG4gICAgZm9udC1zaXplOiAyOHB4O1xyXG4gIH1cclxufVxyXG5cclxuLmZsb2F0aW5nLWJ1dHRvbiB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJvdHRvbTogJHNwYWNpbmcteGw7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1mdWxsO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBjb2xvcjogJHdoaXRlO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYm94LXNoYWRvdzogJHNoYWRvdy1sZztcclxuICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tc2xvdztcclxuICB6LWluZGV4OiAxMDAwO1xyXG5cclxuICAmLmJvdHRvbS1sZWZ0IHtcclxuICAgIGxlZnQ6ICRzcGFjaW5nLXhsO1xyXG4gIH1cclxuXHJcbiAgJi5ib3R0b20tcmlnaHQge1xyXG4gICAgcmlnaHQ6ICRzcGFjaW5nLXhsO1xyXG4gIH1cclxuXHJcbiAgJi5pcy1vcGVuIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTtcclxuICB9XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgYm94LXNoYWRvdzogJHNoYWRvdy14bDtcclxuICB9XHJcbn1cclxuXHJcbi5jaGF0LWNvbnRhaW5lciB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJvdHRvbTogOTBweDtcclxuICB6LWluZGV4OiA5OTk5OTk5O1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XHJcblxyXG4gICYuYm90dG9tLWxlZnQge1xyXG4gICAgbGVmdDogJHNwYWNpbmcteGw7XHJcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gbGVmdDtcclxuICB9XHJcblxyXG4gICYuYm90dG9tLXJpZ2h0IHtcclxuICAgIHJpZ2h0OiAkc3BhY2luZy14bDtcclxuICAgIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSByaWdodDtcclxuICB9XHJcblxyXG4gICYuaXMtb3BlbiB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICB9XHJcblxyXG4gICY6bm90KC5pcy1vcGVuKSB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCkgc2NhbGUoMC45NSk7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIH1cclxufVxyXG5cclxuLm92ZXJsYXkge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICByaWdodDogMDtcclxuICBib3R0b206IDA7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gIHotaW5kZXg6IDk5ODtcclxuICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tc2xvdztcclxuXHJcbiAgJi5pcy1vcGVuIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgJjpub3QoLmlzLW9wZW4pIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgfVxyXG59XHJcblxyXG4uY2hhdGJvdC1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbGc7XHJcbiAgYm94LXNoYWRvdzogMCA0cHggNnB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4ubWVzc2FnZXMtY29udGFpbmVyIHtcclxuICBmbGV4OiAxO1xyXG4gIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgcGFkZGluZzogJHNwYWNpbmctbGc7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmcteHM7XHJcbiAgYmFja2dyb3VuZDogJGdyYXktNTA7XHJcbn1cclxuXHJcbi5lbXB0eS1zdGF0ZSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGNvbG9yOiAkZ3JheS01MDA7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIHBhZGRpbmc6IDQwcHggJHNwYWNpbmcteGw7XHJcblxyXG4gIC5lbXB0eS1zdGF0ZS1pY29uIHtcclxuICAgIGZvbnQtc2l6ZTogNDhweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XHJcbiAgfVxyXG5cclxuICAuZW1wdHktc3RhdGUtdGl0bGUge1xyXG4gICAgbWFyZ2luOiAwIDAgOHB4IDA7XHJcbiAgICBmb250LXNpemU6IDE4cHg7XHJcbiAgfVxyXG5cclxuICAuZW1wdHktc3RhdGUtZGVzY3JpcHRpb24ge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgb3BhY2l0eTogMC44O1xyXG4gIH1cclxufSIsIkB1c2UgJy4vdmFyaWFibGVzLnNjc3MnIGFzICo7XHJcblxyXG5Aa2V5ZnJhbWVzIHNwaW4ge1xyXG4gIGZyb20ge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XHJcbiAgfVxyXG59XHJcblxyXG4ubG9hZGluZy1zcGlubmVyIHtcclxuICB3aWR0aDogMTZweDtcclxuICBoZWlnaHQ6IDE2cHg7XHJcbiAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWZ1bGw7XHJcbiAgYW5pbWF0aW9uOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTtcclxufVxyXG5cclxuIiwiQHVzZSAnLi92YXJpYWJsZXMuc2NzcycgYXMgKjtcclxuXHJcbkBrZXlmcmFtZXMgc2xpZGVEb3duIHtcclxuICBmcm9tIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xyXG4gIH1cclxuXHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcclxuICB9XHJcbn1cclxuXHJcbi5hbGVydC1jb250YWluZXIge1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbGc7XHJcbiAgcGFkZGluZzogMTRweCAkc3BhY2luZy1sZztcclxuICBtYXJnaW46IDEycHggJHNwYWNpbmctbGc7XHJcbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMik7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBnYXA6IDEycHg7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGFuaW1hdGlvbjogc2xpZGVEb3duICR0cmFuc2l0aW9uLXNsb3cgZWFzZS1vdXQ7XHJcblxyXG4gICYuZXJyb3Ige1xyXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJGVycm9yIDAlLCAkZXJyb3ItZGFyayAxMDAlKTtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRlcnJvci1kYXJrO1xyXG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDIzOSwgNjgsIDY4LCAwLjIpO1xyXG4gIH1cclxuXHJcbiAgJi53YXJuaW5nIHtcclxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICR3YXJuaW5nIDAlLCAkd2FybmluZy1kYXJrIDEwMCUpO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgJHdhcm5pbmctZGFyaztcclxuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgyNDUsIDE1OCwgMTEsIDAuMik7XHJcbiAgfVxyXG5cclxuICAmLnN1Y2Nlc3Mge1xyXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJHN1Y2Nlc3MgMCUsICRzdWNjZXNzLWRhcmsgMTAwJSk7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkc3VjY2Vzcy1kYXJrO1xyXG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDE2LCAxODUsIDEyOSwgMC4yKTtcclxuICB9XHJcbn1cclxuXHJcbi5hbGVydC1pY29uLWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIHdpZHRoOiAyNHB4O1xyXG4gIGhlaWdodDogMjRweDtcclxuICBmbGV4LXNocmluazogMDtcclxuICBtYXJnaW4tdG9wOiAycHg7XHJcbn1cclxuXHJcbi5hbGVydC1jb250ZW50IHtcclxuICBmbGV4OiAxO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG59XHJcblxyXG4uYWxlcnQtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICBtYXJnaW46IDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNDtcclxufVxyXG5cclxuLmFsZXJ0LW1lc3NhZ2Uge1xyXG4gIG1hcmdpbjogMDtcclxuICBsaW5lLWhlaWdodDogMS41O1xyXG4gIG9wYWNpdHk6IDAuOTU7XHJcbn1cclxuXHJcbi5hbGVydC1saXN0IHtcclxuICBtYXJnaW46ICRzcGFjaW5nLXNtIDAgMCAwO1xyXG4gIHBhZGRpbmctbGVmdDogJHNwYWNpbmcteGw7XHJcbiAgbGlzdC1zdHlsZTogbm9uZTtcclxufVxyXG5cclxuLmFsZXJ0LWxpc3QtaXRlbSB7XHJcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmcteHM7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHBhZGRpbmctbGVmdDogMTJweDtcclxuICBsaW5lLWhlaWdodDogMS40O1xyXG5cclxuICBsaT5zcGFuIHtcclxuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCI7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgdG9wOiAycHg7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuXHJcbiAgfVxyXG5cclxuICBsaT5jb2RlIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICAgIHBhZGRpbmc6IDJweCA2cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBmb250LXNpemU6IDEycHg7XHJcbiAgfVxyXG59XHJcblxyXG4uYWxlcnQtY2xvc2UtYnV0dG9uIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAxMnB4O1xyXG4gIHJpZ2h0OiAxMnB4O1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gIHdpZHRoOiAyNHB4O1xyXG4gIGhlaWdodDogMjRweDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgdHJhbnNpdGlvbjogYWxsICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgcGFkZGluZzogMDtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgfVxyXG59IiwiQHVzZSAnLi92YXJpYWJsZXMuc2NzcycgYXMgKjtcclxuXHJcbi51aS1yZW5kZXJlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmctbGc7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi8vIEZvcm0gQ29tcG9uZW50XHJcbi5mb3JtLWNvbXBvbmVudCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWF4LXdpZHRoOiA1MDBweDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjZTBlMGUwO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbGc7XHJcbiAgcGFkZGluZzogJHNwYWNpbmctMnhsO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG4uZm9ybS10aXRsZSB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LWxnO1xyXG4gIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLXhsO1xyXG4gIGNvbG9yOiAkYmxhY2s7XHJcbiAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmZvcm0tZmllbGRzIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAkc3BhY2luZy14bDtcclxufVxyXG5cclxuLmZvcm0tZmllbGQge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG59XHJcblxyXG4uZm9ybS1sYWJlbCB7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgY29sb3I6ICRncmF5LTYwMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiAkc3BhY2luZy14cztcclxuXHJcbiAgc3BhbiB7XHJcbiAgICBjb2xvcjogJGVycm9yO1xyXG4gICAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICB9XHJcbn1cclxuXHJcbi5mb3JtLWlucHV0LFxyXG4uZm9ybS1zZWxlY3Qge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1tZDtcclxuICBwYWRkaW5nOiAxMHB4IDEycHg7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGNvbG9yOiAkYmxhY2s7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xyXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yICR0cmFuc2l0aW9uLWZhc3QsIGJveC1zaGFkb3cgJHRyYW5zaXRpb24tZmFzdDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICY6Zm9jdXMge1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkYmx1ZS01MDA7XHJcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg1OSwgMTMwLCAyNDYsIDAuMSk7XHJcbiAgfVxyXG59XHJcblxyXG4uZm9ybS1zZWxlY3Qge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmZvcm0tc3VibWl0LWJ1dHRvbiB7XHJcbiAgbWFyZ2luLXRvcDogJHNwYWNpbmctMnhsO1xyXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1tZDtcclxuICBwYWRkaW5nOiAxMnB4ICRzcGFjaW5nLTJ4bDtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZS01MDA7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb24tZmFzdCwgdHJhbnNmb3JtIDAuMXMgZWFzZTtcclxuICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZS02MDA7XHJcbiAgfVxyXG5cclxuICAmOmFjdGl2ZSB7XHJcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpO1xyXG4gIH1cclxufVxyXG5cclxuLy8gQnV0dG9ucyBDb21wb25lbnRcclxuLmJ1dHRvbnMtY29tcG9uZW50IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogMTJweDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbn1cclxuXHJcbi5idXR0b24tY29tcG9uZW50IHtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIHBhZGRpbmc6IDEwcHggJHNwYWNpbmcteGw7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XHJcbiAgY29sb3I6ICRncmF5LTYwMDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYWxsICR0cmFuc2l0aW9uLWZhc3Q7XHJcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuXHJcbiAgJi5wcmltYXJ5IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRibHVlLTUwMDtcclxuICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICBib3JkZXItY29sb3I6ICRibHVlLTUwMDtcclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJsdWUtNjAwO1xyXG4gICAgICBib3JkZXItY29sb3I6ICRibHVlLTYwMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYuc2Vjb25kYXJ5IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2Y0ZjY7XHJcbiAgICBjb2xvcjogJGdyYXktNjAwO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAjZDFkNWRiO1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlN2ViO1xyXG4gICAgICBib3JkZXItY29sb3I6ICM5Y2EzYWY7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmRhbmdlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXJyb3I7XHJcbiAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkZXJyb3I7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRlcnJvci1kYXJrO1xyXG4gICAgICBib3JkZXItY29sb3I6ICRlcnJvci1kYXJrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpub3QoLnByaW1hcnkpOm5vdCguc2Vjb25kYXJ5KTpub3QoLmRhbmdlcik6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZmFmYjtcclxuICAgIGJvcmRlci1jb2xvcjogI2QxZDVkYjtcclxuICB9XHJcblxyXG4gICY6YWN0aXZlIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nyk7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBUYWJsZSBDb21wb25lbnRcclxuLnRhYmxlLWNvbXBvbmVudCB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWxnO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG4udGFibGUtY2FwdGlvbiB7XHJcbiAgcGFkZGluZzogJHNwYWNpbmctbGcgJHNwYWNpbmcteGw7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LW1kO1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTBlMGUwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XHJcbiAgY29sb3I6ICRibGFjaztcclxufVxyXG5cclxuLnRhYmxlLXdyYXBwZXIge1xyXG4gIG92ZXJmbG93LXg6IGF1dG87XHJcbn1cclxuXHJcbi50YWJsZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuICBtaW4td2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi50YWJsZS1oZWFkZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XHJcbn1cclxuXHJcbi50YWJsZS10aCB7XHJcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNlMGUwZTA7XHJcbiAgcGFkZGluZzogMTRweCAkc3BhY2luZy14bDtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBjb2xvcjogIzRhNTU2ODtcclxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gIGxldHRlci1zcGFjaW5nOiAwLjVweDtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG59XHJcblxyXG4udGFibGUtdGJvZHkge1xyXG4gIHRyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb24tZmFzdDtcclxuXHJcbiAgICAmOm50aC1jaGlsZChldmVuKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZiZmM7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGY0Zjg7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4udGFibGUtdGQge1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZThlOGU4O1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnICRzcGFjaW5nLXhsO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cclxuICA+c3BhbiB7XHJcbiAgICBjb2xvcjogI2EwYTBhMDtcclxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcclxuICB9XHJcbn1cclxuXHJcbi50YWJsZS1jZWxsLWltYWdlIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi50YWJsZS1pbWFnZSB7XHJcbiAgd2lkdGg6IDQwcHg7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbWQ7XHJcbiAgb2JqZWN0LWZpdDogY292ZXI7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxufVxyXG5cclxuLnRhYmxlLWNlbGwtdGV4dCB7XHJcbiAgY29sb3I6ICMyZDM3NDg7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNTtcclxufVxyXG5cclxuLnRhYmxlLWVtcHR5IHtcclxuICBwYWRkaW5nOiA0MHB4O1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBjb2xvcjogIzljYTNhZjtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbn1cclxuXHJcbi8vIENhcmQgQ29tcG9uZW50XHJcbi5jYXJkLWNvbXBvbmVudCB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2U1ZTdlYjtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLXhsO1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xyXG59XHJcblxyXG4uY2FyZC1jb250ZW50IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogMTJweDtcclxufVxyXG5cclxuLmNhcmQtaW1hZ2Uge1xyXG4gIHdpZHRoOiA2NHB4O1xyXG4gIGhlaWdodDogNjRweDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG59XHJcblxyXG4uY2FyZC1pbmZvIHtcclxuICBmbGV4OiAxO1xyXG4gIG1pbi13aWR0aDogMDtcclxufVxyXG5cclxuLmNhcmQtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy1zbTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbn1cclxuXHJcbi5jYXJkLXN1YnRpdGxlIHtcclxuICBjb2xvcjogJGdyYXktNTAwO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmcteHM7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4uY2FyZC1zdGF0dXMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZ2FwOiAkc3BhY2luZy1zbTtcclxuICBmb250LXNpemU6ICR0ZXh0LXNtO1xyXG4gIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLXhzO1xyXG59XHJcblxyXG4uY2FyZC1zdGF0dXMtbGFiZWwge1xyXG4gIGNvbG9yOiAkZ3JheS01MDA7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxufVxyXG5cclxuLmNhcmQtc3RhdHVzLXZhbHVlIHtcclxuICBjb2xvcjogJGdyYXktNjAwO1xyXG59XHJcblxyXG4uY2FyZC1maWVsZHMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXhzO1xyXG59XHJcblxyXG4uY2FyZC1maWVsZCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbn1cclxuXHJcbi5jYXJkLWZpZWxkLWxhYmVsIHtcclxuICBjb2xvcjogJGdyYXktNTAwO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbn1cclxuXHJcbi5jYXJkLWZpZWxkLXZhbHVlIHtcclxuICBjb2xvcjogJGdyYXktNjAwO1xyXG59XHJcblxyXG4uY2FyZC1kZXNjcmlwdGlvbiB7XHJcbiAgY29sb3I6ICRncmF5LTUwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LXNtO1xyXG4gIG1hcmdpbi10b3A6ICRzcGFjaW5nLXNtO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmNhcmQtbGlzdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5jYXJkLWxpc3QtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcclxuICBmb250LXNpemU6ICR0ZXh0LW1kO1xyXG4gIGNvbG9yOiAkYmxhY2s7XHJcbiAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmNhcmQtbGlzdC1kZXNjcmlwdGlvbiB7XHJcbiAgY29sb3I6ICRncmF5LTUwMDtcclxuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmNhcmQtZ3JpZCB7XHJcbiAgZGlzcGxheTogZ3JpZDtcclxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI1MHB4LCAxZnIpKTtcclxuICBnYXA6IDEycHg7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0ge1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWxnO1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6IDEycHg7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0taW1hZ2Uge1xyXG4gIHdpZHRoOiA2NHB4O1xyXG4gIGhlaWdodDogNjRweDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG59XHJcblxyXG4uY2FyZC1pdGVtLWluZm8ge1xyXG4gIGZsZXg6IDE7XHJcbiAgbWluLXdpZHRoOiAwO1xyXG59XHJcblxyXG4uY2FyZC1pdGVtLXRpdGxlIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbWQ7XHJcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBjb2xvcjogJGJsYWNrO1xyXG4gIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tc3VidGl0bGUge1xyXG4gIGNvbG9yOiAkZ3JheS01MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBtYXJnaW46IDA7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tbGVnYWN5IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tbGVnYWN5LWxhYmVsIHtcclxuICBjb2xvcjogJGdyYXktNTAwO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmNhcmQtaXRlbS1sZWdhY3ktdmFsdWUge1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgY29sb3I6ICRibGFjaztcclxuICBtYXJnaW46IDA7XHJcbn1cclxuXHJcbi8vIEZpZWxkIHJlbmRlcmVyXHJcbi5maWVsZC10ZXh0IHtcclxuICAvLyBUZXh0IGZpZWxkIHN0eWxlcyBpZiBuZWVkZWRcclxufVxyXG5cclxuLmZpZWxkLWltYWdlIHtcclxuICB3aWR0aDogMjRweDtcclxuICBoZWlnaHQ6IDI0cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogOTk5cHg7XHJcbiAgb2JqZWN0LWZpdDogY292ZXI7XHJcbn1cclxuXHJcbi5maWVsZC1saW5rIHtcclxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxufVxyXG5cclxuLmZpZWxkLWJhZGdlIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgcGFkZGluZzogMnB4IDZweDtcclxuICBib3JkZXItcmFkaXVzOiA5OTlweDtcclxuICBmb250LXNpemU6IDEwcHg7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuXHJcbiAgJi5zdWNjZXNzIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGZjZTU7XHJcbiAgICBjb2xvcjogIzFhN2YzNjtcclxuICB9XHJcblxyXG4gICYud2FybmluZyB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmN2Q2O1xyXG4gICAgY29sb3I6ICM4YTZhMDA7XHJcbiAgfVxyXG5cclxuICAmLmRhbmdlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlNGU0O1xyXG4gICAgY29sb3I6ICNiNDIzMTg7XHJcbiAgfVxyXG5cclxuICAmOm5vdCguc3VjY2Vzcyk6bm90KC53YXJuaW5nKTpub3QoLmRhbmdlcikge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjtcclxuICAgIGNvbG9yOiAjMzMzO1xyXG4gIH1cclxufVxyXG5cclxuLmZpZWxkLWxpc3Qge1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nLWxlZnQ6IDE2cHg7XHJcbn0iLCJAdXNlICcuL3ZhcmlhYmxlcy5zY3NzJyBhcyAqO1xyXG5cclxuLmdlbmVyYXRpdmUtdWktY29udGFpbmVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAkc3BhY2luZy1sZztcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgIFxyXG59XHJcblxyXG4uZ2VuZXJhdGl2ZS11aS1oZWFkZXIge1xyXG4gIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLW1kO1xyXG59XHJcblxyXG4uZ2VuZXJhdGl2ZS11aS10aXRsZSB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC14bDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGNvbG9yOiAkZ3JheS05MDA7XHJcbiAgbWFyZ2luOiAwIDAgJHNwYWNpbmctc20gMDtcclxufVxyXG5cclxuLmdlbmVyYXRpdmUtdWktZGVzY3JpcHRpb24ge1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbWQ7XHJcbiAgY29sb3I6ICRncmF5LTYwMDtcclxuICBtYXJnaW46IDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNTtcclxufVxyXG5cclxuLy8gVGV4dCBDb21wb25lbnRcclxuLmdlbi11aS10ZXh0IHtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgY29sb3I6ICRncmF5LTgwMDtcclxuICBsaW5lLWhlaWdodDogMS42O1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLy8gSW5wdXQgQ29tcG9uZW50XHJcbi5nZW4tdWktaW5wdXQtd3JhcHBlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmctc207XHJcbn1cclxuXHJcbi5nZW4tdWktaW5wdXQtbGFiZWwge1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBjb2xvcjogJGdyYXktNzAwO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmdlbi11aS1pbnB1dCxcclxuLmdlbi11aS10ZXh0YXJlYSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZzogMTBweCAxMnB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTMwMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICBjb2xvcjogJGdyYXktOTAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbi1iYXNlLCBib3gtc2hhZG93ICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcblxyXG4gICY6OnBsYWNlaG9sZGVyIHtcclxuICAgIGNvbG9yOiAkZ3JheS00MDA7XHJcbiAgfVxyXG5cclxuICAmOmZvY3VzIHtcclxuICAgIGJvcmRlci1jb2xvcjogJGJsdWUtNTAwO1xyXG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpO1xyXG4gIH1cclxuXHJcbiAgJjpkaXNhYmxlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS0xMDA7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgb3BhY2l0eTogMC42O1xyXG4gIH1cclxufVxyXG5cclxuLmdlbi11aS10ZXh0YXJlYSB7XHJcbiAgbWluLWhlaWdodDogODBweDtcclxuICByZXNpemU6IHZlcnRpY2FsO1xyXG59XHJcblxyXG4vLyBTZWxlY3QgQ29tcG9uZW50XHJcbi5nZW4tdWktc2VsZWN0LXdyYXBwZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG59XHJcblxyXG4uZ2VuLXVpLXNlbGVjdC1sYWJlbCB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG4gIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4uZ2VuLXVpLXNlbGVjdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZzogMTBweCAxMnB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTMwMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICBjb2xvcjogJGdyYXktOTAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbi1iYXNlLCBib3gtc2hhZG93ICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cclxuICAmOmZvY3VzIHtcclxuICAgIGJvcmRlci1jb2xvcjogJGJsdWUtNTAwO1xyXG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpO1xyXG4gIH1cclxuXHJcbiAgJjpkaXNhYmxlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS0xMDA7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgb3BhY2l0eTogMC42O1xyXG4gIH1cclxufVxyXG5cclxuLy8gQnV0dG9uIENvbXBvbmVudFxyXG4uZ2VuLXVpLWJ1dHRvbiB7XHJcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBwYWRkaW5nOiAxMHB4ICRzcGFjaW5nLWxnO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbWQ7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tYmFzZTtcclxuICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGJhY2tncm91bmQ6ICRibHVlLTYwMDtcclxuICBjb2xvcjogJHdoaXRlO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQ6ICRibHVlLTcwMDtcclxuICB9XHJcblxyXG4gICY6YWN0aXZlIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7XHJcbiAgfVxyXG5cclxuICAmOmRpc2FibGVkIHtcclxuICAgIGJhY2tncm91bmQ6ICRncmF5LTMwMDtcclxuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICBvcGFjaXR5OiAwLjY7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBDYXJkIENvbXBvbmVudFxyXG4uZ2VuLXVpLWNhcmQge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWxnO1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LXNtO1xyXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgJHRyYW5zaXRpb24tYmFzZTtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIH1cclxufVxyXG5cclxuLmdlbi11aS1jYXJkLXRpdGxlIHtcclxuICBmb250LXNpemU6ICR0ZXh0LWxnO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgY29sb3I6ICRncmF5LTkwMDtcclxuICBtYXJnaW46IDAgMCAkc3BhY2luZy1zbSAwO1xyXG59XHJcblxyXG4uZ2VuLXVpLWNhcmQtY29udGVudCB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbn1cclxuXHJcbi8vIExpc3QgQ29tcG9uZW50XHJcbi5nZW4tdWktbGlzdCB7XHJcbiAgbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xyXG4gIHBhZGRpbmctbGVmdDogJHNwYWNpbmcteGw7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4uZ2VuLXVpLWxpc3QtaXRlbSB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGNvbG9yOiAkZ3JheS04MDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNjtcclxuICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy14cztcclxuXHJcbiAgJjpsYXN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBJbWFnZSBDb21wb25lbnRcclxuLmdlbi11aS1pbWFnZSB7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogYXV0bztcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4vLyBMaW5rIENvbXBvbmVudFxyXG4uZ2VuLXVpLWxpbmsge1xyXG4gIGNvbG9yOiAkYmx1ZS02MDA7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICB0cmFuc2l0aW9uOiBjb2xvciAkdHJhbnNpdGlvbi1iYXNlO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGNvbG9yOiAkYmx1ZS03MDA7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICB9XHJcblxyXG4gICY6dmlzaXRlZCB7XHJcbiAgICBjb2xvcjogJGJsdWUtNjAwO1xyXG4gIH1cclxufVxyXG5cclxuLy8gVGFibGUgQ29tcG9uZW50XHJcbi5nZW4tdWktdGFibGUtd3JhcHBlciB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgb3ZlcmZsb3cteDogYXV0bztcclxuICBib3JkZXI6IDFweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1sZztcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XHJcbiAgYm94LXNoYWRvdzogJHNoYWRvdy1zbTtcclxufVxyXG5cclxuLmdlbi11aS10YWJsZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuICBtaW4td2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5nZW4tdWktdGFibGUtaGVhZGVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS01MDtcclxufVxyXG5cclxuLmdlbi11aS10YWJsZS10aCB7XHJcbiAgcGFkZGluZzogMTJweCAkc3BhY2luZy1sZztcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBjb2xvcjogJGdyYXktNzAwO1xyXG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxufVxyXG5cclxuLmdlbi11aS10YWJsZS1ib2R5IHtcclxuICB0ciB7XHJcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yICR0cmFuc2l0aW9uLWJhc2U7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmF5LTUwO1xyXG4gICAgfVxyXG5cclxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uZ2VuLXVpLXRhYmxlLXRkIHtcclxuICBwYWRkaW5nOiAxMnB4ICRzcGFjaW5nLWxnO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICBjb2xvcjogJGdyYXktODAwO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbn1cclxuXHJcbi8vIEZvcm0gQ29tcG9uZW50XHJcbi5nZW4tdWktZm9ybSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmctbGc7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbiJdfQ== */`;
1451
+ document.head.appendChild(document.createElement("style")).appendChild(document.createTextNode(css));
1452
+
1453
+ // src/utils/cx.ts
1454
+ function validateHeaders(headers, authConfig, opts = {}) {
1455
+ if (headers && (!authConfig || Object.keys(authConfig).length === 0)) {
1456
+ return {
1457
+ isValid: false,
1458
+ missingKeys: [],
1459
+ extraKeys: [],
1460
+ emptyValueKeys: [],
1461
+ warning: "Auth config bo\u015F ya da tan\u0131ms\u0131z, header do\u011Frulamas\u0131 yap\u0131lam\u0131yor."
1462
+ };
1463
+ }
1464
+ const { caseSensitive = false, allowExtra = false } = opts;
1465
+ const normalize = (s) => caseSensitive ? s : s.toLowerCase();
1466
+ const headerEntries = Object.entries(headers).map(([k, v]) => [normalize(k), v.trim()]);
1467
+ const authEntries = Object.entries(authConfig).map(([k, v]) => [normalize(k), v.trim()]);
1468
+ const headerKeys = headerEntries.map(([k]) => k);
1469
+ const authKeys = authEntries.map(([k]) => k);
1470
+ const requiredSet = new Set(authKeys);
1471
+ const missingKeys = authKeys.filter((k) => !headerKeys.includes(k));
1472
+ const extraKeys = headerKeys.filter((k) => !requiredSet.has(k));
1473
+ const hasAllRequired = missingKeys.length === 0;
1474
+ const hasExtraKeys = extraKeys.length > 0 && !allowExtra;
1475
+ const emptyValueKeys = authKeys.filter((k) => {
1476
+ const val = headerEntries.find(([key]) => key === k)?.[1];
1477
+ return !val || val.length === 0;
1478
+ });
1479
+ const isValid = hasAllRequired && !hasExtraKeys && emptyValueKeys.length === 0;
1480
+ return { isValid, missingKeys, extraKeys, emptyValueKeys };
1481
+ }
1482
+ var HeaderAlert = ({ headerValidation, showAlert, setShowAlert }) => {
1483
+ if (!headerValidation || !showAlert) return null;
1484
+ const { isValid, missingKeys, extraKeys, emptyValueKeys, warning } = headerValidation;
1485
+ if (isValid && missingKeys.length === 0 && extraKeys.length === 0 && emptyValueKeys.length === 0 && !warning) {
1486
+ return null;
1487
+ }
1488
+ const hasErrors = missingKeys.length > 0 || emptyValueKeys.length > 0;
1489
+ const hasWarnings = extraKeys.length > 0 || !!warning;
1490
+ const alertType = hasErrors ? "error" : "warning";
1491
+ const getAlertIcon = () => {
1492
+ if (hasErrors) {
1493
+ return /* @__PURE__ */ jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z" }) });
1494
+ }
1495
+ return /* @__PURE__ */ jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z" }) });
1496
+ };
1497
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: `alert-container ${alertType}`, children: [
1498
+ /* @__PURE__ */ jsx("div", { className: "alert-icon-container", children: getAlertIcon() }),
1499
+ /* @__PURE__ */ jsxs("div", { className: "alert-content", children: [
1500
+ /* @__PURE__ */ jsx("h4", { className: "alert-title", children: hasErrors ? "Header Do\u011Frulama Hatas\u0131" : "Header Uyar\u0131s\u0131" }),
1501
+ /* @__PURE__ */ jsx("p", { className: "alert-message", children: hasErrors && hasWarnings ? "Header yap\u0131land\u0131rman\u0131zda hatalar ve uyar\u0131lar bulundu." : hasErrors ? "Header yap\u0131land\u0131rman\u0131zda hatalar bulundu." : "Header yap\u0131land\u0131rman\u0131zda fazla anahtarlar bulundu." }),
1502
+ missingKeys.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
1503
+ /* @__PURE__ */ jsx("strong", { children: "Eksik Header'lar:" }),
1504
+ /* @__PURE__ */ jsx("ul", { className: "alert-list", children: missingKeys.map((key, index) => /* @__PURE__ */ jsxs("li", { className: "alert-list-item", children: [
1505
+ /* @__PURE__ */ jsx("span", { children: "\u2022" }),
1506
+ /* @__PURE__ */ jsx("code", { children: key })
1507
+ ] }, index)) })
1508
+ ] }),
1509
+ emptyValueKeys.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
1510
+ /* @__PURE__ */ jsx("strong", { children: "Bo\u015F De\u011Ferli Header'lar:" }),
1511
+ /* @__PURE__ */ jsx("ul", { className: "alert-list", children: emptyValueKeys.map((key, index) => /* @__PURE__ */ jsxs("li", { className: "alert-list-item", children: [
1512
+ /* @__PURE__ */ jsx("span", { children: "\u2022" }),
1513
+ /* @__PURE__ */ jsx("code", { children: key }),
1514
+ /* @__PURE__ */ jsx("span", { children: "(de\u011Fer bo\u015F olamaz)" })
1515
+ ] }, index)) })
1516
+ ] }),
1517
+ extraKeys.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
1518
+ /* @__PURE__ */ jsx("strong", { children: "Fazla Header'lar:" }),
1519
+ /* @__PURE__ */ jsx("ul", { className: "alert-list", children: extraKeys.map((key, index) => /* @__PURE__ */ jsxs("li", { className: "alert-list-item", children: [
1520
+ /* @__PURE__ */ jsx("span", { children: "\u2022" }),
1521
+ /* @__PURE__ */ jsx("code", { children: key })
1522
+ ] }, index)) })
1523
+ ] }),
1524
+ warning && /* @__PURE__ */ jsxs("div", { children: [
1525
+ /* @__PURE__ */ jsx("strong", { children: "Uyar\u0131:" }),
1526
+ /* @__PURE__ */ jsx("p", { className: "alert-message", children: warning })
1527
+ ] })
1528
+ ] }),
1529
+ /* @__PURE__ */ jsx(
1530
+ "button",
1531
+ {
1532
+ onClick: () => setShowAlert(false),
1533
+ className: "alert-close-button",
1534
+ "aria-label": "Uyar\u0131y\u0131 kapat",
1535
+ children: /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) })
1536
+ }
1537
+ )
1538
+ ] }) });
1539
+ };
1540
+ var LoadingSpinner = () => {
1541
+ return /* @__PURE__ */ jsx("div", { className: "loading-spinner" });
1542
+ };
1543
+ var ChatInput = ({ isLoading, placeholder, handleSendMessage }) => {
1544
+ const [message, setMessage] = useState("");
1545
+ const textareaRef = useRef(null);
1546
+ const handleSubmit = (e) => {
1547
+ e.preventDefault();
1548
+ if (message.trim() && !isLoading) {
1549
+ handleSendMessage(message.trim());
1550
+ setMessage("");
1551
+ if (textareaRef.current) {
1552
+ textareaRef.current.style.height = "auto";
1553
+ }
1554
+ }
1555
+ };
1556
+ const handleKeyDown = (e) => {
1557
+ if (e.key === "Enter" && !e.shiftKey) {
1558
+ e.preventDefault();
1559
+ handleSubmit(e);
1560
+ }
1561
+ };
1562
+ const handleInputChange = (e) => {
1563
+ setMessage(e.target.value);
1564
+ const textarea = e.target;
1565
+ textarea.style.height = "auto";
1566
+ textarea.style.height = Math.min(textarea.scrollHeight, 120) + "px";
1567
+ };
1568
+ return /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "input-container", children: [
1569
+ /* @__PURE__ */ jsx(
1570
+ "textarea",
1571
+ {
1572
+ ref: textareaRef,
1573
+ value: message,
1574
+ onChange: handleInputChange,
1575
+ onKeyDown: handleKeyDown,
1576
+ placeholder,
1577
+ disabled: isLoading,
1578
+ className: "textarea"
1579
+ }
1580
+ ),
1581
+ /* @__PURE__ */ jsx(
1582
+ "button",
1583
+ {
1584
+ type: "submit",
1585
+ disabled: isLoading || !message.trim(),
1586
+ className: "send-button",
1587
+ children: isLoading ? /* @__PURE__ */ jsx(LoadingSpinner, {}) : /* @__PURE__ */ jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" }) })
1588
+ }
1589
+ )
1590
+ ] });
1591
+ };
1592
+ var GenericUIRenderer = ({ uiData, onInteraction }) => {
1593
+ const containerRef = useRef(null);
1594
+ if (!uiData || !uiData.components) return null;
1595
+ const collectFormValues = () => {
1596
+ if (!containerRef.current) return {};
1597
+ const formData = {};
1598
+ const inputs = containerRef.current.querySelectorAll("input, textarea, select");
1599
+ inputs.forEach((element) => {
1600
+ const name = element.getAttribute("name");
1601
+ if (name) {
1602
+ if (element instanceof HTMLInputElement && element.type === "checkbox") {
1603
+ formData[name] = element.checked;
1604
+ } else if (element instanceof HTMLInputElement && element.type === "radio") {
1605
+ if (element.checked) {
1606
+ formData[name] = element.value;
1607
+ }
1608
+ } else {
1609
+ formData[name] = element.value;
1610
+ }
1611
+ }
1612
+ });
1613
+ return formData;
1614
+ };
1615
+ const renderComponent = (comp) => {
1616
+ switch (comp.type) {
1617
+ case "text":
1618
+ return /* @__PURE__ */ jsx("p", { className: "gen-ui-text", children: comp.value ?? comp.label }, comp.id);
1619
+ case "input":
1620
+ return /* @__PURE__ */ jsxs("div", { className: "gen-ui-input-wrapper", children: [
1621
+ comp.label && /* @__PURE__ */ jsx("label", { className: "gen-ui-input-label", children: comp.label }),
1622
+ comp.fieldType === "textarea" ? /* @__PURE__ */ jsx(
1623
+ "textarea",
1624
+ {
1625
+ name: comp.id,
1626
+ placeholder: comp.placeholder,
1627
+ className: "gen-ui-textarea"
1628
+ }
1629
+ ) : /* @__PURE__ */ jsx(
1630
+ "input",
1631
+ {
1632
+ name: comp.id,
1633
+ type: comp.fieldType || "text",
1634
+ placeholder: comp.placeholder,
1635
+ className: "gen-ui-input"
1636
+ }
1637
+ )
1638
+ ] }, comp.id);
1639
+ case "select":
1640
+ return /* @__PURE__ */ jsxs("div", { className: "gen-ui-select-wrapper", children: [
1641
+ comp.label && /* @__PURE__ */ jsx("label", { className: "gen-ui-select-label", children: comp.label }),
1642
+ /* @__PURE__ */ jsx("select", { name: comp.id, className: "gen-ui-select", children: comp.options?.map((opt) => /* @__PURE__ */ jsx("option", { value: opt, children: opt }, opt)) })
1643
+ ] }, comp.id);
1644
+ case "button":
1645
+ return /* @__PURE__ */ jsx(
1646
+ "button",
1647
+ {
1648
+ onClick: () => {
1649
+ const formValues = collectFormValues();
1650
+ onInteraction({
1651
+ action: comp.label,
1652
+ buttonId: comp.buttonType,
1653
+ formData: formValues
1654
+ });
1655
+ },
1656
+ className: "gen-ui-button",
1657
+ children: comp.label
1658
+ },
1659
+ comp.id
1660
+ );
1661
+ case "card":
1662
+ return /* @__PURE__ */ jsxs("div", { className: "gen-ui-card", children: [
1663
+ comp.label && /* @__PURE__ */ jsx("h2", { className: "gen-ui-card-title", children: comp.label }),
1664
+ comp.value && /* @__PURE__ */ jsx("p", { className: "gen-ui-card-content", children: comp.value })
1665
+ ] }, comp.id);
1666
+ case "list":
1667
+ return /* @__PURE__ */ jsx("ul", { className: "gen-ui-list", children: comp.items?.map((item) => /* @__PURE__ */ jsx("li", { className: "gen-ui-list-item", children: item.label ?? String(item.value ?? "") }, item.id)) }, comp.id);
1668
+ case "image":
1669
+ return /* @__PURE__ */ jsx(
1670
+ "img",
1671
+ {
1672
+ src: comp.url,
1673
+ alt: comp.label || "",
1674
+ className: "gen-ui-image"
1675
+ },
1676
+ comp.id
1677
+ );
1678
+ case "link":
1679
+ return /* @__PURE__ */ jsx(
1680
+ "a",
1681
+ {
1682
+ href: comp.url,
1683
+ className: "gen-ui-link",
1684
+ children: comp.label || comp.url
1685
+ },
1686
+ comp.id
1687
+ );
1688
+ case "table":
1689
+ return /* @__PURE__ */ jsx("div", { className: "gen-ui-table-wrapper", children: /* @__PURE__ */ jsxs("table", { className: "gen-ui-table", children: [
1690
+ comp.columns && /* @__PURE__ */ jsx("thead", { className: "gen-ui-table-header", children: /* @__PURE__ */ jsx("tr", { children: comp.columns.map((col) => /* @__PURE__ */ jsx("th", { className: "gen-ui-table-th", children: col }, col)) }) }),
1691
+ comp.rows && /* @__PURE__ */ jsx("tbody", { className: "gen-ui-table-body", children: comp.rows.map((row, ridx) => /* @__PURE__ */ jsx("tr", { children: row.map((cell, cidx) => /* @__PURE__ */ jsx("td", { className: "gen-ui-table-td", children: cell }, cidx)) }, ridx)) })
1692
+ ] }) }, comp.id);
1693
+ case "form":
1694
+ return /* @__PURE__ */ jsx("form", { className: "gen-ui-form", children: comp.items?.map((field) => renderComponent(field)) }, comp.id);
1695
+ default:
1696
+ return null;
1697
+ }
1698
+ };
1699
+ return /* @__PURE__ */ jsxs("div", { className: "generative-ui-container", ref: containerRef, children: [
1700
+ (uiData.title || uiData.description) && /* @__PURE__ */ jsxs("div", { className: "generative-ui-header", children: [
1701
+ uiData.title && /* @__PURE__ */ jsx("h1", { className: "generative-ui-title", children: uiData.title }),
1702
+ uiData.description && /* @__PURE__ */ jsx("p", { className: "generative-ui-description", children: uiData.description })
1703
+ ] }),
1704
+ uiData.components.map((comp) => renderComponent(comp))
1705
+ ] });
1706
+ };
1707
+ var MessageBubble = ({ message, onAction }) => {
1708
+ console.log("MESSAGE", message);
1709
+ const isUser = message.role === "user";
1710
+ const approval = message.role === "approval";
1711
+ if (approval) {
1712
+ return /* @__PURE__ */ jsx(Fragment, {});
1713
+ }
1714
+ return /* @__PURE__ */ jsxs("div", { className: `message-container ${isUser ? "user" : "assistant"}`, children: [
1715
+ /* @__PURE__ */ jsx("div", { className: `message-bubble ${isUser ? "user" : "assistant"}`, children: isUser ? message.text && /* @__PURE__ */ jsx("div", { className: "markdown-content", children: message.text }) : /* @__PURE__ */ jsxs(Fragment, { children: [
1716
+ message.text && /* @__PURE__ */ jsx("div", { className: "markdown-content", children: /* @__PURE__ */ jsx(ReactMarkdown, { remarkPlugins: [remarkGfm], children: message.text }) }),
1717
+ message.ui && /* @__PURE__ */ jsx(
1718
+ GenericUIRenderer,
1719
+ {
1720
+ uiData: message.ui,
1721
+ onInteraction: (event) => {
1722
+ console.log("event", event);
1723
+ if (event.buttonId === "submit") {
1724
+ onAction(JSON.stringify(event.formData), true);
1725
+ } else {
1726
+ onAction(event.action, true);
1727
+ }
1728
+ }
1729
+ }
1730
+ )
1731
+ ] }) }),
1732
+ /* @__PURE__ */ jsx("div", { className: `message-time ${isUser ? "user" : "assistant"}`, children: message.timestamp.toLocaleTimeString("tr-TR", {
1733
+ hour: "2-digit",
1734
+ minute: "2-digit"
1735
+ }) })
1736
+ ] });
1737
+ };
1738
+ var TypingDots = () => {
1739
+ const [dots, setDots] = useState("");
1740
+ useEffect(() => {
1741
+ const interval = setInterval(() => {
1742
+ setDots((prev) => {
1743
+ if (prev === "...") return "";
1744
+ return prev + ".";
1745
+ });
1746
+ }, 500);
1747
+ return () => clearInterval(interval);
1748
+ }, []);
1749
+ return /* @__PURE__ */ jsx("div", { className: "message-container assistant", children: /* @__PURE__ */ jsx("div", { className: "message-bubble assistant", children: /* @__PURE__ */ jsx("div", { className: "message-typing-indicator", children: /* @__PURE__ */ jsx("span", { children: dots }) }) }) });
1750
+ };
1751
+
1752
+ // src/utils/chatbot.ts
1753
+ var extractUIJsonFromText = (text) => {
1754
+ const regex = /```ui-component([\s\S]*?)```/g;
1755
+ let cleaned = text;
1756
+ let match;
1757
+ let uiData = null;
1758
+ while ((match = regex.exec(text)) !== null) {
1759
+ const block = match[1].trim();
1760
+ try {
1761
+ const parsed = JSON.parse(block);
1762
+ if (parsed && parsed.components && Array.isArray(parsed.components)) {
1763
+ parsed.components = parsed.components.map((comp, index) => {
1764
+ if (!comp.id || typeof comp.id !== "string" || !comp.id.trim()) {
1765
+ comp.id = `ui-comp-${index}-${Date.now()}`;
1766
+ }
1767
+ if (comp.type === "button") {
1768
+ if (!comp.buttonType) {
1769
+ comp.buttonType = "click";
1770
+ }
1771
+ }
1772
+ if (comp.type === "input") {
1773
+ if (!comp.fieldType) {
1774
+ comp.fieldType = "text";
1775
+ }
1776
+ }
1777
+ if (comp.type === "select") {
1778
+ if (comp.options && Array.isArray(comp.options)) {
1779
+ const firstOption = comp.options[0];
1780
+ if (typeof firstOption === "object" && firstOption !== null) {
1781
+ if ("label" in firstOption || "value" in firstOption) {
1782
+ comp.options = comp.options.map(
1783
+ (opt) => opt.label || opt.value || String(opt)
1784
+ );
1785
+ }
1786
+ }
1787
+ }
1788
+ }
1789
+ if (comp.type === "table") {
1790
+ if (comp.columns && Array.isArray(comp.columns)) {
1791
+ const firstCol = comp.columns[0];
1792
+ if (typeof firstCol === "object" && firstCol !== null) {
1793
+ comp.columns = comp.columns.map(
1794
+ (col) => col.label || col.id || String(col)
1795
+ );
1796
+ }
1797
+ }
1798
+ if (comp.rows && Array.isArray(comp.rows)) {
1799
+ const firstRow = comp.rows[0];
1800
+ if (typeof firstRow === "object" && !Array.isArray(firstRow)) {
1801
+ comp.rows = comp.rows.map((row) => {
1802
+ if (Array.isArray(row)) return row;
1803
+ return Object.values(row).map((val) => {
1804
+ if (typeof val === "object" && val !== null) {
1805
+ if (val.type === "image" && val.src) return val.src;
1806
+ if (val.value !== void 0) return String(val.value);
1807
+ }
1808
+ return String(val || "");
1809
+ });
1810
+ });
1811
+ }
1812
+ }
1813
+ }
1814
+ if (comp.type === "form" && comp.items && Array.isArray(comp.items)) {
1815
+ comp.items = comp.items.map((field, fieldIndex) => {
1816
+ if (!field.id || !field.id.trim()) {
1817
+ field.id = `field-${fieldIndex}-${Date.now()}`;
1818
+ }
1819
+ if (field.optional !== void 0) {
1820
+ field.requiredField = !field.optional;
1821
+ delete field.optional;
1822
+ }
1823
+ if (field.required !== void 0) {
1824
+ field.requiredField = field.required;
1825
+ delete field.required;
1826
+ }
1827
+ if (field.type === "input" && !field.fieldType) {
1828
+ field.fieldType = "text";
1829
+ }
1830
+ if (field.type === "select" && field.options && Array.isArray(field.options)) {
1831
+ const firstOpt = field.options[0];
1832
+ if (typeof firstOpt === "object" && firstOpt !== null) {
1833
+ field.options = field.options.map(
1834
+ (opt) => opt.label || opt.value || String(opt)
1835
+ );
1836
+ }
1837
+ }
1838
+ return field;
1839
+ });
1840
+ }
1841
+ if (comp.type === "list" && comp.items && Array.isArray(comp.items)) {
1842
+ comp.items = comp.items.map((item, itemIndex) => {
1843
+ if (typeof item === "string") {
1844
+ return {
1845
+ id: `list-item-${itemIndex}-${Date.now()}`,
1846
+ type: "text",
1847
+ value: item,
1848
+ label: item
1849
+ };
1850
+ }
1851
+ if (!item.id || !item.id.trim()) {
1852
+ item.id = `list-item-${itemIndex}-${Date.now()}`;
1853
+ }
1854
+ return item;
1855
+ });
1856
+ }
1857
+ return comp;
1858
+ });
1859
+ uiData = parsed;
1860
+ }
1861
+ cleaned = cleaned.replace(match[0], "").trim();
1862
+ break;
1863
+ } catch (e) {
1864
+ console.error("Invalid ui-component JSON:", e, block);
1865
+ }
1866
+ }
1867
+ return {
1868
+ cleanedText: cleaned,
1869
+ uiData
1870
+ };
1871
+ };
1872
+ var AizekChatBot = ({ clientId, headers, onMounted, onReady, onOpen, onClose, onMessage, onToolCall, onDisconnect }) => {
1873
+ const messagesEndRef = useRef(null);
1874
+ const [config, setConfig] = useState();
1875
+ const [messages, setMessages] = useState([]);
1876
+ const [isLoading, setIsLoading] = useState(false);
1877
+ const [isConfigLoading, setIsConfigLoading] = useState(true);
1878
+ const [isOpen, setIsOpen] = useState(false);
1879
+ const [headerValidation, setHeaderValidation] = useState(null);
1880
+ const [showAlert, setShowAlert] = useState(true);
1881
+ const loadConfig = async () => {
1882
+ try {
1883
+ setIsConfigLoading(true);
1884
+ const response = await fetch("https://proxy.aizek.ai/api/aizek-connect", {
1885
+ method: "POST",
1886
+ headers: {
1887
+ "Content-Type": "application/json",
1888
+ ...headers
1889
+ },
1890
+ body: JSON.stringify({ clientId }),
1891
+ credentials: "include"
1892
+ });
1893
+ const data = await response.json();
1894
+ if (data.success) {
1895
+ setIsOpen(data.data.chat_widget_settings.initial_open);
1896
+ setConfig(data.data);
1897
+ console.log(data.data);
1898
+ if (headers) {
1899
+ const validationResult = validateHeaders(
1900
+ headers,
1901
+ data.data.auth_config,
1902
+ {
1903
+ allowExtra: false,
1904
+ caseSensitive: true
1905
+ }
1906
+ );
1907
+ setHeaderValidation(validationResult);
1908
+ }
1909
+ onReady?.({ config: { ...data.data } });
1910
+ } else {
1911
+ setIsOpen(false);
1912
+ }
1913
+ } catch (error) {
1914
+ console.error("Failed to load chat widget config:", error);
1915
+ } finally {
1916
+ setIsConfigLoading(false);
1917
+ }
1918
+ };
1919
+ const disconnect = async () => {
1920
+ try {
1921
+ setIsConfigLoading(true);
1922
+ await fetch("http://localhost:3001/api/aizek-disconnect", {
1923
+ method: "POST",
1924
+ headers: {
1925
+ "Content-Type": "application/json",
1926
+ ...headers
1927
+ },
1928
+ credentials: "include"
1929
+ });
1930
+ onDisconnect?.();
1931
+ } catch (error) {
1932
+ console.error("Failed to load chat widget config:", error);
1933
+ } finally {
1934
+ setIsConfigLoading(false);
1935
+ }
1936
+ };
1937
+ useEffect(() => {
1938
+ onMounted?.();
1939
+ loadConfig();
1940
+ return () => {
1941
+ disconnect();
1942
+ };
1943
+ }, []);
1944
+ useEffect(() => {
1945
+ const newIsOpen = !isOpen;
1946
+ setIsOpen(newIsOpen);
1947
+ if (newIsOpen) onOpen?.();
1948
+ else onClose?.();
1949
+ }, [config?.chat_widget_settings.initial_open]);
1950
+ useEffect(() => {
1951
+ messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
1952
+ }, [messages]);
1953
+ const addMessage = (payload) => {
1954
+ const newMessage = {
1955
+ text: payload.text,
1956
+ ui: payload.ui,
1957
+ role: payload.role,
1958
+ timestamp: /* @__PURE__ */ new Date()
1959
+ };
1960
+ onMessage?.(newMessage);
1961
+ setMessages((prev) => [...prev, newMessage]);
1962
+ messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
1963
+ return newMessage;
1964
+ };
1965
+ const sendMessage = async (message, approval) => {
1966
+ if (!message.trim() || isLoading) return;
1967
+ const newMessage = {
1968
+ text: message,
1969
+ ui: void 0,
1970
+ role: approval ? "approval" : "user",
1971
+ timestamp: /* @__PURE__ */ new Date()
1972
+ };
1973
+ setMessages((prev) => [...prev, newMessage]);
1974
+ setIsLoading(true);
1975
+ try {
1976
+ const response = await fetch("https://proxy.aizek.ai/api/aizek-chat", {
1977
+ method: "POST",
1978
+ headers: {
1979
+ "Content-Type": "application/json"
1980
+ },
1981
+ body: JSON.stringify({ message }),
1982
+ credentials: "include"
1983
+ });
1984
+ if (!response.ok) {
1985
+ throw new Error(`HTTP error ${response.status}`);
1986
+ }
1987
+ if (!response.body) {
1988
+ throw new Error("Streaming desteklenmiyor (response.body yok)");
1989
+ }
1990
+ const reader = response.body.getReader();
1991
+ const decoder = new TextDecoder();
1992
+ let buffer = "";
1993
+ while (true) {
1994
+ const { value, done } = await reader.read();
1995
+ if (done) break;
1996
+ buffer += decoder.decode(value, { stream: true });
1997
+ const chunks = buffer.split("\n\n");
1998
+ buffer = chunks.pop() ?? "";
1999
+ for (const rawChunk of chunks) {
2000
+ const line = rawChunk.split("\n").find((l) => l.startsWith("data:"));
2001
+ if (!line) continue;
2002
+ const jsonStr = line.replace(/^data:\s*/, "").trim();
2003
+ if (!jsonStr) continue;
2004
+ const event = JSON.parse(jsonStr);
2005
+ if (event.type === "assistant_text" && event.content) {
2006
+ const { cleanedText, uiData } = extractUIJsonFromText(event.content);
2007
+ addMessage({
2008
+ text: cleanedText,
2009
+ ui: uiData,
2010
+ role: "assistant"
2011
+ });
2012
+ }
2013
+ if (event.type === "assistant_tool_result" && event.content) {
2014
+ const toolInfoParsed = JSON.parse(event.content);
2015
+ onToolCall?.(toolInfoParsed);
2016
+ }
2017
+ if (event.type === "error" && event.content) {
2018
+ const { cleanedText, uiData } = extractUIJsonFromText(event.content);
2019
+ addMessage({
2020
+ text: cleanedText,
2021
+ ui: uiData,
2022
+ role: "assistant"
2023
+ });
2024
+ }
2025
+ }
2026
+ }
2027
+ } catch (error) {
2028
+ console.error("Error sending message:", error);
2029
+ addMessage({ text: "\xDCzg\xFCn\xFCm, bir hata olu\u015Ftu. L\xFCtfen tekrar deneyin.", role: "assistant" });
2030
+ } finally {
2031
+ setIsLoading(false);
2032
+ }
2033
+ };
2034
+ const toggleChat = () => {
2035
+ const newIsOpen = !isOpen;
2036
+ setIsOpen(newIsOpen);
2037
+ if (newIsOpen) onOpen?.();
2038
+ else onClose?.();
2039
+ };
2040
+ return /* @__PURE__ */ jsx(Fragment, { children: isConfigLoading ? /* @__PURE__ */ jsx(
2041
+ "button",
2042
+ {
2043
+ className: "floating-button bottom-right button-sizes medium loading-state",
2044
+ style: { background: "#4f46e5" },
2045
+ "aria-label": "Y\xFCkleniyor",
2046
+ children: /* @__PURE__ */ jsx("div", { className: "loading-spinner" })
2047
+ }
2048
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
2049
+ isOpen && /* @__PURE__ */ jsx("div", { className: `overlay floating-chat-overlay ${isOpen ? "is-open" : ""}`, onClick: toggleChat }),
2050
+ /* @__PURE__ */ jsx("div", { className: `chat-container ${config?.chat_widget_settings.button_position} ${isOpen ? "is-open" : ""}`, style: { width: config?.chat_widget_settings.chat_width, height: config?.chat_widget_settings.chat_height }, children: /* @__PURE__ */ jsxs("div", { className: "chatbot-container", children: [
2051
+ /* @__PURE__ */ jsxs("div", { className: "header", style: { background: config?.chat_widget_settings.header_background }, children: [
2052
+ /* @__PURE__ */ jsx("div", { className: "logo-container", children: config?.chat_widget_settings.company_logo ? config?.chat_widget_settings.company_logo.startsWith("http") || config?.chat_widget_settings.company_logo.startsWith("data:") ? /* @__PURE__ */ jsx(
2053
+ "img",
2054
+ {
2055
+ src: config?.chat_widget_settings.company_logo,
2056
+ alt: "Company Logo",
2057
+ className: "logo-image"
2058
+ }
2059
+ ) : /* @__PURE__ */ jsx("span", { className: "logo-text", children: config?.chat_widget_settings.company_logo }) : "\u{1F916}" }),
2060
+ /* @__PURE__ */ jsxs("div", { children: [
2061
+ /* @__PURE__ */ jsx("h3", { className: "company-name", children: config?.chat_widget_settings.company_name }),
2062
+ /* @__PURE__ */ jsx("p", { className: "status-text", children: isLoading ? "Yaz\u0131yor..." : "\xC7evrimi\xE7i" })
2063
+ ] })
2064
+ ] }),
2065
+ /* @__PURE__ */ jsxs("div", { className: "messages-container", children: [
2066
+ /* @__PURE__ */ jsx(
2067
+ HeaderAlert,
2068
+ {
2069
+ headerValidation,
2070
+ setShowAlert,
2071
+ showAlert
2072
+ }
2073
+ ),
2074
+ messages.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "empty-state", children: [
2075
+ /* @__PURE__ */ jsx("div", { className: "empty-state-icon", children: "\u{1F4AC}" }),
2076
+ /* @__PURE__ */ jsx("h4", { className: "empty-state-title", children: config?.chat_widget_settings.welcome_message }),
2077
+ /* @__PURE__ */ jsx("p", { className: "empty-state-description", children: "A\u015Fa\u011F\u0131daki alana mesaj\u0131n\u0131z\u0131 yazarak ba\u015Flayabilirsiniz." })
2078
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
2079
+ messages.map((message, index) => /* @__PURE__ */ jsx(
2080
+ MessageBubble,
2081
+ {
2082
+ message,
2083
+ onAction: sendMessage
2084
+ },
2085
+ index
2086
+ )),
2087
+ config?.chat_widget_settings.show_typing_indicator && isLoading && /* @__PURE__ */ jsx(TypingDots, {})
2088
+ ] })
2089
+ ] }),
2090
+ /* @__PURE__ */ jsx(
2091
+ ChatInput,
2092
+ {
2093
+ handleSendMessage: sendMessage,
2094
+ isLoading,
2095
+ placeholder: config?.chat_widget_settings.placeholder ?? ""
2096
+ }
2097
+ )
2098
+ ] }) }),
2099
+ /* @__PURE__ */ jsx(
2100
+ "button",
2101
+ {
2102
+ onClick: toggleChat,
2103
+ className: `floating-button ${config?.chat_widget_settings.button_position} button-sizes ${config?.chat_widget_settings.button_size} ${isOpen ? "is-open" : ""}`,
2104
+ style: { background: config?.chat_widget_settings.button_background },
2105
+ "aria-label": isOpen ? "Chati kapat" : "Chati a\xE7",
2106
+ children: isOpen ? /* @__PURE__ */ jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) }) : /* @__PURE__ */ jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z" }) })
2107
+ }
2108
+ )
2109
+ ] }) });
2110
+ };
2111
+
2112
+ export { AizekChatBot };
2113
+ //# sourceMappingURL=index.mjs.map
2114
+ //# sourceMappingURL=index.mjs.map