@vertesia/tools-sdk 0.81.1 → 0.81.2-dev.20260204.135023Z

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.
Files changed (80) hide show
  1. package/package.json +4 -4
  2. package/lib/cjs/InteractionCollection.js +0 -164
  3. package/lib/cjs/InteractionCollection.js.map +0 -1
  4. package/lib/cjs/SkillCollection.js +0 -318
  5. package/lib/cjs/SkillCollection.js.map +0 -1
  6. package/lib/cjs/ToolCollection.js +0 -192
  7. package/lib/cjs/ToolCollection.js.map +0 -1
  8. package/lib/cjs/ToolRegistry.js +0 -44
  9. package/lib/cjs/ToolRegistry.js.map +0 -1
  10. package/lib/cjs/auth.js +0 -89
  11. package/lib/cjs/auth.js.map +0 -1
  12. package/lib/cjs/build/validate.js +0 -7
  13. package/lib/cjs/build/validate.js.map +0 -1
  14. package/lib/cjs/copy-assets.js +0 -84
  15. package/lib/cjs/copy-assets.js.map +0 -1
  16. package/lib/cjs/index.js +0 -30
  17. package/lib/cjs/index.js.map +0 -1
  18. package/lib/cjs/package.json +0 -3
  19. package/lib/cjs/server.js +0 -327
  20. package/lib/cjs/server.js.map +0 -1
  21. package/lib/cjs/site/styles.js +0 -621
  22. package/lib/cjs/site/styles.js.map +0 -1
  23. package/lib/cjs/site/templates.js +0 -932
  24. package/lib/cjs/site/templates.js.map +0 -1
  25. package/lib/cjs/types.js +0 -3
  26. package/lib/cjs/types.js.map +0 -1
  27. package/lib/cjs/utils.js +0 -7
  28. package/lib/cjs/utils.js.map +0 -1
  29. package/lib/esm/InteractionCollection.js +0 -125
  30. package/lib/esm/InteractionCollection.js.map +0 -1
  31. package/lib/esm/SkillCollection.js +0 -311
  32. package/lib/esm/SkillCollection.js.map +0 -1
  33. package/lib/esm/ToolCollection.js +0 -154
  34. package/lib/esm/ToolCollection.js.map +0 -1
  35. package/lib/esm/ToolRegistry.js +0 -39
  36. package/lib/esm/ToolRegistry.js.map +0 -1
  37. package/lib/esm/auth.js +0 -82
  38. package/lib/esm/auth.js.map +0 -1
  39. package/lib/esm/build/validate.js +0 -4
  40. package/lib/esm/build/validate.js.map +0 -1
  41. package/lib/esm/copy-assets.js +0 -81
  42. package/lib/esm/copy-assets.js.map +0 -1
  43. package/lib/esm/index.js +0 -10
  44. package/lib/esm/index.js.map +0 -1
  45. package/lib/esm/server.js +0 -323
  46. package/lib/esm/server.js.map +0 -1
  47. package/lib/esm/site/styles.js +0 -618
  48. package/lib/esm/site/styles.js.map +0 -1
  49. package/lib/esm/site/templates.js +0 -920
  50. package/lib/esm/site/templates.js.map +0 -1
  51. package/lib/esm/types.js +0 -2
  52. package/lib/esm/types.js.map +0 -1
  53. package/lib/esm/utils.js +0 -4
  54. package/lib/esm/utils.js.map +0 -1
  55. package/lib/types/InteractionCollection.d.ts +0 -48
  56. package/lib/types/InteractionCollection.d.ts.map +0 -1
  57. package/lib/types/SkillCollection.d.ts +0 -111
  58. package/lib/types/SkillCollection.d.ts.map +0 -1
  59. package/lib/types/ToolCollection.d.ts +0 -61
  60. package/lib/types/ToolCollection.d.ts.map +0 -1
  61. package/lib/types/ToolRegistry.d.ts +0 -15
  62. package/lib/types/ToolRegistry.d.ts.map +0 -1
  63. package/lib/types/auth.d.ts +0 -20
  64. package/lib/types/auth.d.ts.map +0 -1
  65. package/lib/types/build/validate.d.ts +0 -2
  66. package/lib/types/build/validate.d.ts.map +0 -1
  67. package/lib/types/copy-assets.d.ts +0 -14
  68. package/lib/types/copy-assets.d.ts.map +0 -1
  69. package/lib/types/index.d.ts +0 -10
  70. package/lib/types/index.d.ts.map +0 -1
  71. package/lib/types/server.d.ts +0 -72
  72. package/lib/types/server.d.ts.map +0 -1
  73. package/lib/types/site/styles.d.ts +0 -5
  74. package/lib/types/site/styles.d.ts.map +0 -1
  75. package/lib/types/site/templates.d.ts +0 -54
  76. package/lib/types/site/templates.d.ts.map +0 -1
  77. package/lib/types/types.d.ts +0 -262
  78. package/lib/types/types.d.ts.map +0 -1
  79. package/lib/types/utils.d.ts +0 -2
  80. package/lib/types/utils.d.ts.map +0 -1
@@ -1,621 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.baseStyles = void 0;
4
- /**
5
- * Shared CSS styles for the tools server HTML pages
6
- */
7
- exports.baseStyles = `
8
- :root {
9
- color-scheme: light dark;
10
- }
11
-
12
- body {
13
- font-family: system-ui, -apple-system, sans-serif;
14
- margin: 0;
15
- padding: 2.5rem 1.75rem;
16
- background:
17
- radial-gradient(circle at 0 0, rgba(56, 189, 248, 0.10), transparent 55%),
18
- radial-gradient(circle at 100% 0, rgba(129, 140, 248, 0.12), transparent 55%),
19
- #f9fafb;
20
- color: #0f172a;
21
- line-height: 1.5;
22
- }
23
-
24
- .page {
25
- max-width: 1120px;
26
- margin: 0 auto;
27
- }
28
-
29
- .hero {
30
- display: flex;
31
- justify-content: space-between;
32
- align-items: flex-start;
33
- gap: 2.25rem;
34
- padding: 1.75rem 2rem;
35
- margin-bottom: 2.5rem;
36
- border-radius: 1.25rem;
37
- background: linear-gradient(135deg, #ffffff, #f3f4ff);
38
- border: 1px solid #e5e7eb;
39
- box-shadow:
40
- 0 18px 40px rgba(15, 23, 42, 0.08),
41
- 0 0 0 1px rgba(248, 250, 252, 0.8);
42
- }
43
-
44
- .hero-main {
45
- display: flex;
46
- gap: 1.5rem;
47
- align-items: center;
48
- }
49
-
50
- .hero-logo {
51
- display: flex;
52
- align-items: center;
53
- justify-content: center;
54
- width: 56px;
55
- height: 56px;
56
- border-radius: 999px;
57
- background: radial-gradient(circle at 30% 0, #38bdf8, #6366f1);
58
- box-shadow:
59
- 0 0 0 1px rgba(15, 23, 42, 0.85),
60
- 0 12px 30px rgba(37, 99, 235, 0.6);
61
- }
62
-
63
- .hero-logo-initial {
64
- font-size: 1.1rem;
65
- font-weight: 650;
66
- letter-spacing: 0.08em;
67
- text-transform: uppercase;
68
- color: #eff6ff;
69
- }
70
-
71
- .hero-logo img {
72
- display: block;
73
- max-width: 80%;
74
- max-height: 60%;
75
- }
76
-
77
- .logo-dark {
78
- display: none;
79
- }
80
-
81
- .hero-meta {
82
- display: flex;
83
- flex-direction: column;
84
- gap: 0.5rem;
85
- }
86
-
87
- .hero-eyebrow {
88
- font-size: 0.75rem;
89
- letter-spacing: 0.12em;
90
- text-transform: uppercase;
91
- color: #6b7280;
92
- }
93
-
94
- .hero-title {
95
- font-size: 1.9rem;
96
- font-weight: 650;
97
- letter-spacing: -0.03em;
98
- color: #0f172a;
99
- margin: 0;
100
- }
101
-
102
- .hero-tagline {
103
- font-size: 0.95rem;
104
- color: #4b5563;
105
- margin: 0.1rem 0 0 0;
106
- }
107
-
108
- .hero-summary {
109
- display: flex;
110
- flex-wrap: wrap;
111
- gap: 0.5rem;
112
- margin-top: 0.75rem;
113
- font-size: 0.8rem;
114
- color: #6b7280;
115
- }
116
-
117
- .hero-summary span {
118
- display: inline-flex;
119
- align-items: center;
120
- gap: 0.35rem;
121
- padding: 0.15rem 0.55rem;
122
- border-radius: 999px;
123
- background: #f9fafb;
124
- border: 1px solid #e5e7eb;
125
- }
126
-
127
- .hero-summary dot {
128
- width: 6px;
129
- height: 6px;
130
- border-radius: 999px;
131
- display: inline-block;
132
- background: #22c55e;
133
- }
134
-
135
- .search-bar {
136
- display: flex;
137
- flex-direction: column;
138
- gap: 0.4rem;
139
- margin: 0 0 1.75rem 0;
140
- }
141
-
142
- .search-input {
143
- max-width: 360px;
144
- padding: 0.55rem 0.75rem;
145
- border-radius: 999px;
146
- border: 1px solid #e5e7eb;
147
- background: #ffffff;
148
- color: #111827;
149
- font-size: 0.9rem;
150
- font-family: inherit;
151
- box-shadow: 0 4px 10px rgba(15, 23, 42, 0.04);
152
- }
153
-
154
- .search-input::placeholder {
155
- color: #9ca3af;
156
- }
157
-
158
- .search-input:focus {
159
- outline: none;
160
- border-color: #60a5fa;
161
- box-shadow:
162
- 0 0 0 1px rgba(59, 130, 246, 0.4),
163
- 0 6px 18px rgba(37, 99, 235, 0.18);
164
- }
165
-
166
- .search-hint {
167
- font-size: 0.75rem;
168
- color: #9ca3af;
169
- }
170
-
171
- .search-empty {
172
- margin-top: 1rem;
173
- font-size: 0.85rem;
174
- color: #9ca3af;
175
- }
176
-
177
- .hero-panel {
178
- min-width: 220px;
179
- max-width: 260px;
180
- padding: 1.25rem 1.4rem;
181
- border-radius: 1rem;
182
- background: radial-gradient(circle at 0 0, rgba(59, 130, 246, 0.10), transparent 70%),
183
- #eff6ff;
184
- border: 1px solid #bfdbfe;
185
- box-shadow: 0 16px 34px rgba(15, 23, 42, 0.10);
186
- font-size: 0.8rem;
187
- }
188
-
189
- .hero-panel-label {
190
- font-size: 0.7rem;
191
- letter-spacing: 0.13em;
192
- text-transform: uppercase;
193
- color: #1d4ed8;
194
- margin-bottom: 0.5rem;
195
- }
196
-
197
- .hero-panel-endpoint {
198
- display: inline-flex;
199
- align-items: center;
200
- padding: 0.3rem 0.6rem;
201
- border-radius: 0.5rem;
202
- background: #f9fafb;
203
- border: 1px solid #e5e7eb;
204
- font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
205
- font-size: 0.82rem;
206
- color: #111827;
207
- }
208
-
209
- .hero-panel-hint {
210
- margin-top: 0.6rem;
211
- color: #6b7280;
212
- line-height: 1.4;
213
- }
214
-
215
- .hero-panel-hint strong {
216
- color: #111827;
217
- }
218
-
219
- h1, h2 {
220
- margin: 0 0 1rem 0;
221
- color: #0f172a;
222
- }
223
-
224
- h1 { font-size: 1.875rem; }
225
- h2 {
226
- font-size: 1.4rem;
227
- margin-top: 2rem;
228
- letter-spacing: 0.03em;
229
- text-transform: uppercase;
230
- color: #6b7280;
231
- }
232
-
233
- a {
234
- color: #2563eb;
235
- text-decoration: none;
236
- }
237
- a:hover {
238
- text-decoration: underline;
239
- }
240
-
241
- hr {
242
- border: none;
243
- border-top: 1px solid #e5e7eb;
244
- margin: 2rem 0;
245
- }
246
-
247
- .card-grid {
248
- display: grid;
249
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
250
- gap: 1.5rem;
251
- }
252
-
253
- .card {
254
- background: radial-gradient(circle at 0 0, rgba(56, 189, 248, 0.12), transparent 75%),
255
- #ffffff;
256
- padding: 1.25rem 1.35rem;
257
- border-radius: 14px;
258
- box-shadow:
259
- 0 14px 30px rgba(15, 23, 42, 0.06),
260
- 0 0 0 1px rgba(248, 250, 252, 0.9);
261
- border: 1px solid #e5e7eb;
262
- transition: transform 0.15s, box-shadow 0.15s;
263
- text-decoration: none;
264
- color: inherit;
265
- display: block;
266
- }
267
-
268
- .card:hover {
269
- transform: translateY(-3px);
270
- box-shadow:
271
- 0 18px 40px rgba(15, 23, 42, 0.10),
272
- 0 0 0 1px rgba(59, 130, 246, 0.6);
273
- }
274
-
275
- .card-icon {
276
- width: 48px;
277
- height: 48px;
278
- margin-bottom: 0.75rem;
279
- }
280
-
281
- .card-icon svg {
282
- width: 100%;
283
- height: 100%;
284
- }
285
-
286
- .card-title {
287
- font-weight: 600;
288
- font-size: 1.1rem;
289
- margin-bottom: 0.25rem;
290
- color: #0f172a;
291
- }
292
-
293
- .card-desc {
294
- font-size: 0.925rem;
295
- color: #6b7280;
296
- }
297
-
298
- .card-meta {
299
- margin-top: 0.45rem;
300
- font-size: 0.75rem;
301
- text-transform: uppercase;
302
- letter-spacing: 0.08em;
303
- color: #9ca3af;
304
- }
305
-
306
- .item-list {
307
- display: flex;
308
- flex-direction: column;
309
- gap: 1rem;
310
- }
311
-
312
- .item-card {
313
- background: #ffffff;
314
- padding: 1rem 1.25rem;
315
- border-radius: 10px;
316
- border-left: 4px solid #6366f1;
317
- box-shadow:
318
- 0 10px 24px rgba(15, 23, 42, 0.06),
319
- 0 0 0 1px rgba(248, 250, 252, 0.9);
320
- }
321
-
322
- .item-card.skill {
323
- border-left-color: #10b981;
324
- }
325
-
326
- .item-card.interaction {
327
- border-left-color: #f59e0b;
328
- }
329
-
330
- .item-name {
331
- font-weight: 600;
332
- font-size: 1.05rem;
333
- }
334
-
335
- .item-desc {
336
- font-size: 0.9rem;
337
- color: #6b7280;
338
- margin-top: 0.25rem;
339
- }
340
-
341
- .item-meta {
342
- font-size: 0.8rem;
343
- color: #9ca3af;
344
- margin-top: 0.5rem;
345
- }
346
-
347
- .item-schema {
348
- margin-top: 0.75rem;
349
- font-size: 0.8rem;
350
- font-family: ui-monospace, monospace;
351
- background: #f3f4f6;
352
- padding: 0.75rem;
353
- border-radius: 6px;
354
- overflow-x: auto;
355
- white-space: pre-wrap;
356
- color: #374151;
357
- }
358
-
359
- .header {
360
- display: flex;
361
- align-items: center;
362
- gap: 1rem;
363
- margin-bottom: 1.5rem;
364
- }
365
-
366
- .header-icon {
367
- width: 64px;
368
- height: 64px;
369
- }
370
-
371
- .header-icon svg {
372
- width: 100%;
373
- height: 100%;
374
- }
375
-
376
- .section-header {
377
- display: flex;
378
- align-items: baseline;
379
- justify-content: space-between;
380
- gap: 1rem;
381
- margin-bottom: 0.75rem;
382
- }
383
-
384
- .section-subtitle {
385
- font-size: 0.8rem;
386
- color: #6b7280;
387
- }
388
-
389
- .endpoint-url {
390
- font-size: 0.85rem;
391
- color: #6b7280;
392
- margin-top: 0.25rem;
393
- }
394
-
395
- .endpoint-url code {
396
- background: #f3f4f6;
397
- padding: 0.125rem 0.375rem;
398
- border-radius: 4px;
399
- font-family: ui-monospace, monospace;
400
- }
401
-
402
- .badge {
403
- display: inline-block;
404
- font-size: 0.75rem;
405
- padding: 0.125rem 0.5rem;
406
- border-radius: 9999px;
407
- background: #f9fafb;
408
- color: #374151;
409
- border: 1px solid #e5e7eb;
410
- margin-right: 0.25rem;
411
- }
412
-
413
- .badge.python { background: #fef3c7; color: #92400e; border-color: #facc15; }
414
- .badge.typescript { background: #dbeafe; color: #1e40af; border-color: #60a5fa; }
415
- .badge.javascript { background: #fef9c3; color: #854d0e; border-color: #facc15; }
416
-
417
- @media (max-width: 768px) {
418
- body {
419
- padding: 1.75rem 1.25rem;
420
- }
421
-
422
- .hero {
423
- flex-direction: column;
424
- padding: 1.5rem 1.35rem;
425
- }
426
-
427
- .hero-panel {
428
- max-width: 100%;
429
- width: 100%;
430
- }
431
- }
432
-
433
- @media (prefers-color-scheme: dark) {
434
- body {
435
- background:
436
- radial-gradient(circle at 0 0, rgba(56, 189, 248, 0.18), transparent 55%),
437
- radial-gradient(circle at 100% 0, rgba(129, 140, 248, 0.25), transparent 55%),
438
- #020617;
439
- color: #e5e7eb;
440
- }
441
-
442
- .hero {
443
- background: linear-gradient(135deg, rgba(15, 23, 42, 0.98), rgba(15, 23, 42, 0.92));
444
- border: 1px solid rgba(148, 163, 184, 0.45);
445
- box-shadow:
446
- 0 24px 60px rgba(15, 23, 42, 0.85),
447
- 0 0 0 1px rgba(15, 23, 42, 0.75);
448
- }
449
-
450
- .hero-eyebrow {
451
- color: #9ca3af;
452
- }
453
-
454
- .hero-title {
455
- color: #f9fafb;
456
- }
457
-
458
- .hero-tagline {
459
- color: #cbd5f5;
460
- }
461
-
462
- .hero-summary {
463
- color: #9ca3af;
464
- }
465
-
466
- .hero-summary span {
467
- background: rgba(15, 23, 42, 0.95);
468
- border-color: rgba(148, 163, 184, 0.45);
469
- }
470
-
471
- .hero-panel {
472
- background: radial-gradient(circle at 0 0, rgba(56, 189, 248, 0.16), transparent 70%),
473
- rgba(15, 23, 42, 0.96);
474
- border: 1px solid rgba(59, 130, 246, 0.6);
475
- box-shadow: 0 20px 40px rgba(15, 23, 42, 0.85);
476
- }
477
-
478
- .hero-panel-label {
479
- color: #93c5fd;
480
- }
481
-
482
- .hero-panel-endpoint {
483
- background: rgba(15, 23, 42, 0.98);
484
- border-color: rgba(148, 163, 184, 0.6);
485
- color: #e5e7eb;
486
- }
487
-
488
- .hero-panel-hint {
489
- color: #9ca3af;
490
- }
491
-
492
- .hero-panel-hint strong {
493
- color: #e5e7eb;
494
- }
495
-
496
- .search-input {
497
- background: rgba(15, 23, 42, 0.96);
498
- border-color: rgba(55, 65, 81, 0.9);
499
- color: #e5e7eb;
500
- box-shadow:
501
- 0 6px 16px rgba(15, 23, 42, 0.9),
502
- 0 0 0 1px rgba(15, 23, 42, 0.9);
503
- }
504
-
505
- .search-input::placeholder {
506
- color: #6b7280;
507
- }
508
-
509
- .search-input:focus {
510
- border-color: #60a5fa;
511
- box-shadow:
512
- 0 0 0 1px rgba(59, 130, 246, 0.7),
513
- 0 10px 26px rgba(30, 64, 175, 0.7);
514
- }
515
-
516
- .search-hint,
517
- .search-empty {
518
- color: #9ca3af;
519
- }
520
-
521
- h1, h2 {
522
- color: #e5e7eb;
523
- }
524
-
525
- h2 {
526
- color: #9ca3af;
527
- }
528
-
529
- a {
530
- color: #60a5fa;
531
- }
532
-
533
- hr {
534
- border-top-color: rgba(148, 163, 184, 0.4);
535
- }
536
-
537
- .card {
538
- background: radial-gradient(circle at 0 0, rgba(56, 189, 248, 0.12), transparent 75%),
539
- rgba(15, 23, 42, 0.9);
540
- box-shadow:
541
- 0 14px 30px rgba(15, 23, 42, 0.8),
542
- 0 0 0 1px rgba(15, 23, 42, 0.85);
543
- border-color: rgba(148, 163, 184, 0.5);
544
- }
545
-
546
- .card:hover {
547
- box-shadow:
548
- 0 18px 40px rgba(15, 23, 42, 0.9),
549
- 0 0 0 1px rgba(59, 130, 246, 0.8);
550
- }
551
-
552
- .card-title {
553
- color: #e5e7eb;
554
- }
555
-
556
- .card-desc {
557
- color: #9ca3af;
558
- }
559
-
560
- .card-meta {
561
- color: #6b7280;
562
- }
563
-
564
- .item-card {
565
- background: rgba(15, 23, 42, 0.9);
566
- box-shadow:
567
- 0 10px 24px rgba(15, 23, 42, 0.9),
568
- 0 0 0 1px rgba(15, 23, 42, 0.9);
569
- }
570
-
571
- .item-desc,
572
- .item-meta {
573
- color: #9ca3af;
574
- }
575
-
576
- .item-schema {
577
- background: rgba(15, 23, 42, 0.95);
578
- color: #e5e7eb;
579
- }
580
-
581
- .endpoint-url {
582
- color: #9ca3af;
583
- }
584
-
585
- .endpoint-url code {
586
- background: rgba(15, 23, 42, 0.95);
587
- }
588
-
589
- .badge {
590
- background: rgba(15, 23, 42, 0.96);
591
- color: #e5e7eb;
592
- border-color: rgba(148, 163, 184, 0.6);
593
- }
594
-
595
- .badge.python {
596
- background: rgba(252, 211, 77, 0.12);
597
- color: #facc15;
598
- border-color: rgba(250, 204, 21, 0.5);
599
- }
600
-
601
- .badge.typescript {
602
- background: rgba(59, 130, 246, 0.12);
603
- color: #93c5fd;
604
- border-color: rgba(59, 130, 246, 0.7);
605
- }
606
-
607
- .badge.javascript {
608
- background: rgba(251, 191, 36, 0.12);
609
- color: #fbbf24;
610
- border-color: rgba(251, 191, 36, 0.55);
611
- }
612
-
613
- .logo-light {
614
- display: none;
615
- }
616
- .logo-dark {
617
- display: block;
618
- }
619
- }
620
- `;
621
- //# sourceMappingURL=styles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/site/styles.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,UAAU,GAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqmBhC,CAAC"}