@jjlmoya/utils-textiles 1.9.0 → 1.12.0

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 (53) hide show
  1. package/package.json +7 -4
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/category/index.ts +24 -25
  4. package/src/entries.ts +37 -0
  5. package/src/tool/burnTest/component.astro +0 -380
  6. package/src/tool/burnTest/entry.ts +30 -0
  7. package/src/tool/burnTest/index.ts +2 -32
  8. package/src/tool/burnTest/textile-burn-test.css +378 -0
  9. package/src/tool/clothingSizeConverter/clothing-size-converter.css +717 -0
  10. package/src/tool/clothingSizeConverter/component.astro +0 -719
  11. package/src/tool/clothingSizeConverter/entry.ts +30 -0
  12. package/src/tool/clothingSizeConverter/index.ts +2 -32
  13. package/src/tool/fabricProjectCalculator/component.astro +0 -540
  14. package/src/tool/fabricProjectCalculator/entry.ts +30 -0
  15. package/src/tool/fabricProjectCalculator/fabric-project-calculator.css +538 -0
  16. package/src/tool/fabricProjectCalculator/index.ts +2 -32
  17. package/src/tool/fabricTruth/component.astro +0 -428
  18. package/src/tool/fabricTruth/entry.ts +30 -0
  19. package/src/tool/fabricTruth/fabric-truthfulness.css +426 -0
  20. package/src/tool/fabricTruth/index.ts +2 -32
  21. package/src/tool/fiberPrep/component.astro +0 -652
  22. package/src/tool/fiberPrep/entry.ts +30 -0
  23. package/src/tool/fiberPrep/fiber-preparation-natural-dyeing.css +650 -0
  24. package/src/tool/fiberPrep/index.ts +2 -32
  25. package/src/tool/knittingGauge/component.astro +0 -458
  26. package/src/tool/knittingGauge/entry.ts +30 -0
  27. package/src/tool/knittingGauge/index.ts +2 -32
  28. package/src/tool/knittingGauge/knitting-gauge-calculator.css +456 -0
  29. package/src/tool/laundryGuide/component.astro +0 -317
  30. package/src/tool/laundryGuide/entry.ts +25 -0
  31. package/src/tool/laundryGuide/index.ts +2 -27
  32. package/src/tool/laundryGuide/laundry-guide.css +315 -0
  33. package/src/tool/needleConverter/component.astro +0 -344
  34. package/src/tool/needleConverter/entry.ts +30 -0
  35. package/src/tool/needleConverter/index.ts +2 -32
  36. package/src/tool/needleConverter/knitting-needle-converter.css +342 -0
  37. package/src/tool/sewingPatternScaler/component.astro +0 -314
  38. package/src/tool/sewingPatternScaler/entry.ts +30 -0
  39. package/src/tool/sewingPatternScaler/index.ts +2 -32
  40. package/src/tool/sewingPatternScaler/sewing-pattern-scaler.css +313 -0
  41. package/src/tool/shoeSizeConverter/component.astro +0 -255
  42. package/src/tool/shoeSizeConverter/entry.ts +30 -0
  43. package/src/tool/shoeSizeConverter/index.ts +2 -32
  44. package/src/tool/shoeSizeConverter/shoe-size-converter.css +253 -0
  45. package/src/tool/stainChemistry/component.astro +0 -479
  46. package/src/tool/stainChemistry/entry.ts +30 -0
  47. package/src/tool/stainChemistry/index.ts +2 -32
  48. package/src/tool/stainChemistry/stain-chemical-protocol.css +477 -0
  49. package/src/tool/yarnCalculator/component.astro +0 -446
  50. package/src/tool/yarnCalculator/entry.ts +30 -0
  51. package/src/tool/yarnCalculator/index.ts +2 -32
  52. package/src/tool/yarnCalculator/yarn-calculator.css +444 -0
  53. package/src/tools.ts +1 -1
@@ -0,0 +1,717 @@
1
+ .clothing-converter {
2
+ max-width: 900px;
3
+ margin: 0 auto;
4
+ padding: 1rem 1rem 4rem;
5
+ }
6
+
7
+ .converter-card {
8
+ background: var(--bg-surface);
9
+ border: 1px solid var(--border-color);
10
+ border-radius: 2.5rem;
11
+ padding: 2.5rem;
12
+ box-shadow: 0 20px 50px rgba(0, 0, 0, 0.05);
13
+ display: flex;
14
+ flex-direction: column;
15
+ gap: 2.5rem;
16
+ }
17
+
18
+ .theme-dark .converter-card {
19
+ box-shadow: 0 20px 50px rgba(0, 0, 0, 0.3);
20
+ }
21
+
22
+ .selector-section {
23
+ display: flex;
24
+ flex-direction: column;
25
+ gap: 1.5rem;
26
+ }
27
+
28
+ .selector-group {
29
+ display: flex;
30
+ flex-direction: column;
31
+ gap: 0.75rem;
32
+ }
33
+
34
+ .selector-label {
35
+ font-size: 0.75rem;
36
+ font-weight: 800;
37
+ color: var(--text-muted);
38
+ text-transform: uppercase;
39
+ letter-spacing: 0.1em;
40
+ }
41
+
42
+ .btn-group {
43
+ display: grid;
44
+ grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
45
+ gap: 0.75rem;
46
+ }
47
+
48
+ .cat-btn,
49
+ .gender-btn {
50
+ padding: 0.875rem;
51
+ border-radius: 1rem;
52
+ border: 2px solid transparent;
53
+ background: var(--bg-page);
54
+ cursor: pointer;
55
+ transition: all 0.3s;
56
+ display: flex;
57
+ flex-direction: column;
58
+ align-items: center;
59
+ gap: 0.5rem;
60
+ color: var(--text-muted);
61
+ font-weight: 600;
62
+ font-size: 0.875rem;
63
+ }
64
+
65
+ .cat-btn svg,
66
+ .gender-btn svg {
67
+ width: 1.5rem;
68
+ height: 1.5rem;
69
+ }
70
+
71
+ .cat-btn.active,
72
+ .gender-btn.active {
73
+ background: #3b82f6;
74
+ border-color: #1e40af;
75
+ color: white;
76
+ box-shadow: 0 8px 20px rgba(59, 130, 246, 0.3);
77
+ transform: translateY(-2px);
78
+ }
79
+
80
+ .cat-btn:hover,
81
+ .gender-btn:hover {
82
+ border-color: #3b82f6;
83
+ }
84
+
85
+ .tabs {
86
+ display: flex;
87
+ gap: 0.5rem;
88
+ border-bottom: 2px solid var(--border-color);
89
+ }
90
+
91
+ .tab-btn {
92
+ padding: 0.875rem 1.5rem;
93
+ border: none;
94
+ background: transparent;
95
+ cursor: pointer;
96
+ color: var(--text-muted);
97
+ font-weight: 600;
98
+ border-bottom: 3px solid transparent;
99
+ margin-bottom: -2px;
100
+ display: flex;
101
+ gap: 0.5rem;
102
+ align-items: center;
103
+ transition: color 0.2s;
104
+ }
105
+
106
+ .tab-btn svg {
107
+ width: 1.1rem;
108
+ height: 1.1rem;
109
+ }
110
+
111
+ .tab-btn.active {
112
+ color: #3b82f6;
113
+ border-bottom-color: #3b82f6;
114
+ }
115
+
116
+ .tab-content {
117
+ display: none;
118
+ }
119
+
120
+ .tab-content.active {
121
+ display: flex;
122
+ flex-direction: column;
123
+ gap: 2rem;
124
+ animation: tab-fade-in 0.3s ease;
125
+ }
126
+
127
+ @keyframes tab-fade-in {
128
+ from {
129
+ opacity: 0;
130
+ transform: translateY(8px);
131
+ }
132
+ to {
133
+ opacity: 1;
134
+ transform: translateY(0);
135
+ }
136
+ }
137
+
138
+ .control-row {
139
+ display: grid;
140
+ grid-template-columns: 1fr 1fr;
141
+ gap: 1.5rem;
142
+ }
143
+
144
+ .field-group {
145
+ display: flex;
146
+ flex-direction: column;
147
+ gap: 0.5rem;
148
+ }
149
+
150
+ .field-label {
151
+ font-size: 0.75rem;
152
+ font-weight: 800;
153
+ color: var(--text-muted);
154
+ text-transform: uppercase;
155
+ letter-spacing: 0.1em;
156
+ }
157
+
158
+ .select-wrap {
159
+ position: relative;
160
+ }
161
+
162
+ .select-wrap::after {
163
+ content: '▾';
164
+ position: absolute;
165
+ right: 1.25rem;
166
+ top: 50%;
167
+ transform: translateY(-50%);
168
+ pointer-events: none;
169
+ color: var(--text-muted);
170
+ }
171
+
172
+ .region-select,
173
+ .size-select {
174
+ appearance: none;
175
+ width: 100%;
176
+ background: var(--bg-page);
177
+ border: 1.5px solid var(--border-color);
178
+ border-radius: 1rem;
179
+ padding: 0.875rem 2.75rem 0.875rem 1.25rem;
180
+ font-size: 1rem;
181
+ font-weight: 600;
182
+ color: var(--text-main);
183
+ outline: none;
184
+ cursor: pointer;
185
+ transition: border-color 0.2s;
186
+ }
187
+
188
+ .region-select:focus,
189
+ .size-select:focus {
190
+ border-color: #3b82f6;
191
+ }
192
+
193
+ .results-grid {
194
+ display: grid;
195
+ grid-template-columns: repeat(3, 1fr);
196
+ gap: 1rem;
197
+ }
198
+
199
+ .result-card {
200
+ background: var(--bg-page);
201
+ border: 1px solid var(--border-color);
202
+ border-radius: 1.25rem;
203
+ padding: 1.5rem;
204
+ display: flex;
205
+ flex-direction: column;
206
+ align-items: center;
207
+ gap: 0.5rem;
208
+ transition: all 0.3s;
209
+ }
210
+
211
+ .result-card:hover {
212
+ transform: translateY(-2px);
213
+ border-color: #3b82f6;
214
+ }
215
+
216
+ .result-label {
217
+ font-size: 0.7rem;
218
+ font-weight: 800;
219
+ color: var(--text-muted);
220
+ text-transform: uppercase;
221
+ letter-spacing: 0.05em;
222
+ }
223
+
224
+ .result-value {
225
+ font-size: 2.5rem;
226
+ font-weight: 900;
227
+ color: #3b82f6;
228
+ line-height: 1;
229
+ }
230
+
231
+ .quick-grid-section {
232
+ border-top: 1px solid var(--border-color);
233
+ padding-top: 1.5rem;
234
+ }
235
+
236
+ .section-title {
237
+ font-size: 0.75rem;
238
+ font-weight: 800;
239
+ color: var(--text-muted);
240
+ text-transform: uppercase;
241
+ letter-spacing: 0.05em;
242
+ margin: 0 0 1rem;
243
+ }
244
+
245
+ .size-grid {
246
+ display: grid;
247
+ grid-template-columns: repeat(auto-fill, minmax(65px, 1fr));
248
+ gap: 0.75rem;
249
+ }
250
+
251
+ :global(.size-cell) {
252
+ aspect-ratio: 1;
253
+ display: flex;
254
+ align-items: center;
255
+ justify-content: center;
256
+ border-radius: 0.75rem;
257
+ background: var(--bg-surface);
258
+ border: 1.5px solid var(--border-color);
259
+ font-size: 0.875rem;
260
+ font-weight: 700;
261
+ color: var(--text-muted);
262
+ cursor: pointer;
263
+ transition: all 0.2s;
264
+ }
265
+
266
+ :global(.size-cell:hover) {
267
+ border-color: #3b82f6;
268
+ color: #3b82f6;
269
+ transform: scale(1.05);
270
+ }
271
+
272
+ :global(.size-cell.active) {
273
+ background: #3b82f6;
274
+ border-color: #1e40af;
275
+ color: white;
276
+ box-shadow: 0 5px 15px rgba(59, 130, 246, 0.35);
277
+ transform: scale(1.05);
278
+ }
279
+
280
+ .measurements-layout {
281
+ display: grid;
282
+ grid-template-columns: 1fr 1fr;
283
+ gap: 2rem;
284
+ }
285
+
286
+ .measurements-inputs {
287
+ display: flex;
288
+ flex-direction: column;
289
+ gap: 1.25rem;
290
+ }
291
+
292
+ .measurements-section-title {
293
+ font-size: 1.1rem;
294
+ font-weight: 800;
295
+ color: var(--text-main);
296
+ margin: 0;
297
+ }
298
+
299
+ .measure-field {
300
+ display: flex;
301
+ flex-direction: column;
302
+ gap: 0.5rem;
303
+ }
304
+
305
+ .measure-label {
306
+ font-size: 0.75rem;
307
+ font-weight: 700;
308
+ color: var(--text-muted);
309
+ text-transform: uppercase;
310
+ letter-spacing: 0.05em;
311
+ }
312
+
313
+ .measure-input {
314
+ width: 100%;
315
+ background: var(--bg-page);
316
+ border: 1.5px solid var(--border-color);
317
+ border-radius: 1rem;
318
+ padding: 0.875rem 1.25rem;
319
+ font-size: 1rem;
320
+ font-weight: 600;
321
+ color: var(--text-main);
322
+ outline: none;
323
+ transition: border-color 0.2s;
324
+ }
325
+
326
+ .measure-input:focus {
327
+ border-color: #3b82f6;
328
+ }
329
+
330
+ .btn-recommend {
331
+ padding: 1rem;
332
+ background: #10b981;
333
+ color: white;
334
+ border: none;
335
+ border-radius: 1rem;
336
+ font-weight: 700;
337
+ cursor: pointer;
338
+ transition: all 0.3s;
339
+ display: flex;
340
+ align-items: center;
341
+ justify-content: center;
342
+ gap: 0.75rem;
343
+ font-size: 1rem;
344
+ }
345
+
346
+ .btn-recommend:hover {
347
+ transform: translateY(-2px);
348
+ box-shadow: 0 8px 20px rgba(16, 185, 129, 0.3);
349
+ }
350
+
351
+ .btn-recommend svg {
352
+ width: 1.25rem;
353
+ height: 1.25rem;
354
+ }
355
+
356
+ .tips-card {
357
+ background: rgba(59, 130, 246, 0.05);
358
+ border: 1px solid rgba(59, 130, 246, 0.2);
359
+ border-radius: 1.25rem;
360
+ padding: 1.5rem;
361
+ color: #1e40af;
362
+ }
363
+
364
+ .theme-dark .tips-card {
365
+ background: rgba(59, 130, 246, 0.08);
366
+ color: #93c5fd;
367
+ }
368
+
369
+ .tips-title {
370
+ display: flex;
371
+ align-items: center;
372
+ gap: 0.5rem;
373
+ font-size: 0.9rem;
374
+ font-weight: 700;
375
+ margin: 0 0 1rem;
376
+ }
377
+
378
+ .tips-title svg {
379
+ width: 1.1rem;
380
+ height: 1.1rem;
381
+ flex-shrink: 0;
382
+ }
383
+
384
+ .tips-grid {
385
+ display: grid;
386
+ grid-template-columns: 1fr 1fr;
387
+ gap: 0.75rem;
388
+ }
389
+
390
+ .tip-item {
391
+ display: flex;
392
+ align-items: center;
393
+ gap: 0.75rem;
394
+ padding: 0.75rem;
395
+ background: rgba(59, 130, 246, 0.08);
396
+ border-radius: 0.75rem;
397
+ font-size: 0.8rem;
398
+ font-weight: 600;
399
+ }
400
+
401
+ .theme-dark .tip-item {
402
+ background: rgba(59, 130, 246, 0.12);
403
+ }
404
+
405
+ .tip-item svg {
406
+ width: 1rem;
407
+ height: 1rem;
408
+ flex-shrink: 0;
409
+ color: #3b82f6;
410
+ }
411
+
412
+ .recommendation-box {
413
+ display: none;
414
+ background: #ecfdf5;
415
+ border: 2px solid #10b981;
416
+ border-radius: 1.25rem;
417
+ padding: 1.5rem;
418
+ color: #047857;
419
+ animation: slide-down 0.3s ease;
420
+ }
421
+
422
+ .theme-dark .recommendation-box {
423
+ background: rgba(6, 78, 59, 0.3);
424
+ color: #6ee7b7;
425
+ }
426
+
427
+ @keyframes slide-down {
428
+ from {
429
+ opacity: 0;
430
+ transform: translateY(-8px);
431
+ }
432
+ to {
433
+ opacity: 1;
434
+ transform: translateY(0);
435
+ }
436
+ }
437
+
438
+ .recommend-header {
439
+ display: flex;
440
+ align-items: center;
441
+ gap: 0.75rem;
442
+ margin-bottom: 1rem;
443
+ }
444
+
445
+ .recommend-header svg {
446
+ width: 1.5rem;
447
+ height: 1.5rem;
448
+ flex-shrink: 0;
449
+ }
450
+
451
+ .recommend-header h4 {
452
+ margin: 0;
453
+ font-size: 1rem;
454
+ font-weight: 700;
455
+ }
456
+
457
+ :global(.rec-size-label) {
458
+ display: block;
459
+ font-size: 1rem;
460
+ margin-bottom: 0.5rem;
461
+ }
462
+
463
+ :global(.rec-size) {
464
+ color: #10b981;
465
+ font-style: normal;
466
+ font-size: 1.2em;
467
+ }
468
+
469
+ :global(.rec-info) {
470
+ display: block;
471
+ font-size: 0.875rem;
472
+ opacity: 0.85;
473
+ }
474
+
475
+ :global(.rec-error) {
476
+ color: #dc2626;
477
+ }
478
+
479
+ :global(.recommend-details) {
480
+ display: grid;
481
+ grid-template-columns: repeat(3, 1fr);
482
+ gap: 0.75rem;
483
+ margin-top: 1rem;
484
+ padding-top: 1rem;
485
+ border-top: 1px solid rgba(16, 185, 129, 0.3);
486
+ }
487
+
488
+ :global(.recommend-item) {
489
+ text-align: center;
490
+ display: flex;
491
+ flex-direction: column;
492
+ gap: 0.25rem;
493
+ }
494
+
495
+ :global(.rec-label) {
496
+ font-size: 0.7rem;
497
+ text-transform: uppercase;
498
+ opacity: 0.7;
499
+ }
500
+
501
+ :global(.recommend-item strong) {
502
+ font-weight: 700;
503
+ color: #10b981;
504
+ }
505
+
506
+ .fit-guide {
507
+ border-top: 1px solid var(--border-color);
508
+ padding-top: 1.5rem;
509
+ display: flex;
510
+ flex-direction: column;
511
+ gap: 1.25rem;
512
+ }
513
+
514
+ .fit-grid {
515
+ display: grid;
516
+ grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
517
+ gap: 1rem;
518
+ }
519
+
520
+ .fit-card {
521
+ background: var(--bg-page);
522
+ border: 2px solid var(--border-color);
523
+ border-radius: 1rem;
524
+ padding: 1.25rem;
525
+ display: flex;
526
+ flex-direction: column;
527
+ align-items: center;
528
+ gap: 0.5rem;
529
+ cursor: pointer;
530
+ transition: all 0.3s;
531
+ color: inherit;
532
+ text-align: center;
533
+ }
534
+
535
+ .fit-card:hover {
536
+ border-color: #3b82f6;
537
+ background: rgba(59, 130, 246, 0.04);
538
+ transform: translateY(-2px);
539
+ }
540
+
541
+ .fit-card.active {
542
+ border-color: #0284c7;
543
+ background: rgba(2, 132, 199, 0.08);
544
+ box-shadow: 0 4px 12px rgba(2, 132, 199, 0.15);
545
+ }
546
+
547
+ .theme-dark .fit-card.active {
548
+ background: rgba(2, 132, 199, 0.12);
549
+ }
550
+
551
+ .fit-brand {
552
+ font-weight: 700;
553
+ color: var(--text-main);
554
+ font-size: 0.95rem;
555
+ }
556
+
557
+ .fit-size-label {
558
+ font-size: 0.75rem;
559
+ color: var(--text-muted);
560
+ font-weight: 600;
561
+ }
562
+
563
+ .fit-notification {
564
+ display: none;
565
+ padding: 1.25rem;
566
+ background: rgba(3, 105, 161, 0.06);
567
+ border: 2px solid #0284c7;
568
+ border-radius: 1rem;
569
+ color: #0369a1;
570
+ font-size: 0.875rem;
571
+ line-height: 1.5;
572
+ }
573
+
574
+ .theme-dark .fit-notification {
575
+ background: rgba(3, 105, 161, 0.1);
576
+ color: #7dd3fc;
577
+ }
578
+
579
+ .fit-info {
580
+ display: flex;
581
+ align-items: center;
582
+ gap: 0.5rem;
583
+ font-size: 0.85rem;
584
+ color: var(--text-muted);
585
+ margin: 0;
586
+ }
587
+
588
+ .fit-info svg {
589
+ width: 1rem;
590
+ height: 1rem;
591
+ flex-shrink: 0;
592
+ }
593
+
594
+ .table-section {
595
+ border-top: 1px solid var(--border-color);
596
+ padding-top: 1.5rem;
597
+ }
598
+
599
+ .table-wrap {
600
+ overflow-x: auto;
601
+ border-radius: 1.25rem;
602
+ border: 1px solid var(--border-color);
603
+ margin-top: 1rem;
604
+ }
605
+
606
+ .conv-table {
607
+ width: 100%;
608
+ border-collapse: collapse;
609
+ background: var(--bg-surface);
610
+ }
611
+
612
+ .conv-table thead {
613
+ background: var(--bg-page);
614
+ border-bottom: 2px solid var(--border-color);
615
+ }
616
+
617
+ .conv-table th {
618
+ padding: 1rem 1.25rem;
619
+ text-align: left;
620
+ font-weight: 700;
621
+ color: var(--text-main);
622
+ font-size: 0.875rem;
623
+ text-transform: uppercase;
624
+ letter-spacing: 0.05em;
625
+ }
626
+
627
+ .conv-table td {
628
+ padding: 1rem 1.25rem;
629
+ border-bottom: 1px solid var(--border-color);
630
+ color: var(--text-muted);
631
+ font-weight: 500;
632
+ }
633
+
634
+ .conv-table tbody tr:hover td {
635
+ background: var(--bg-page);
636
+ }
637
+
638
+ :global(.eu-cell) {
639
+ font-weight: 700;
640
+ color: #3b82f6;
641
+ }
642
+
643
+ :global(.eu-cell.active) {
644
+ background: rgba(59, 130, 246, 0.1);
645
+ }
646
+
647
+ .info-banner {
648
+ display: flex;
649
+ align-items: flex-start;
650
+ gap: 1rem;
651
+ padding: 1.25rem;
652
+ background: rgba(59, 130, 246, 0.05);
653
+ border: 1px solid rgba(59, 130, 246, 0.2);
654
+ border-radius: 1.25rem;
655
+ color: #1e40af;
656
+ font-size: 0.875rem;
657
+ line-height: 1.5;
658
+ }
659
+
660
+ .theme-dark .info-banner {
661
+ background: rgba(59, 130, 246, 0.08);
662
+ color: #bfdbfe;
663
+ }
664
+
665
+ .info-banner svg {
666
+ width: 1.25rem;
667
+ height: 1.25rem;
668
+ flex-shrink: 0;
669
+ margin-top: 0.125rem;
670
+ }
671
+
672
+ .info-banner p {
673
+ margin: 0;
674
+ }
675
+
676
+ .info-banner strong {
677
+ display: block;
678
+ margin-bottom: 0.25rem;
679
+ }
680
+
681
+ @media (max-width: 640px) {
682
+ .converter-card {
683
+ padding: 1.5rem;
684
+ gap: 2rem;
685
+ border-radius: 1.5rem;
686
+ }
687
+
688
+ .btn-group {
689
+ grid-template-columns: repeat(2, 1fr);
690
+ }
691
+
692
+ .control-row {
693
+ grid-template-columns: 1fr;
694
+ }
695
+
696
+ .results-grid {
697
+ grid-template-columns: 1fr;
698
+ }
699
+
700
+ .measurements-layout {
701
+ grid-template-columns: 1fr;
702
+ }
703
+
704
+ .fit-grid {
705
+ grid-template-columns: repeat(3, 1fr);
706
+ }
707
+ }
708
+
709
+ @media (max-width: 400px) {
710
+ .btn-group {
711
+ grid-template-columns: 1fr;
712
+ }
713
+
714
+ .fit-grid {
715
+ grid-template-columns: repeat(2, 1fr);
716
+ }
717
+ }