@litfamily/litopencode 1.0.4 → 1.0.5

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 (72) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README-Ko-KR.md +146 -115
  3. package/README.md +144 -116
  4. package/dist/activation-workflow-prompts.js +1 -1
  5. package/dist/agents/registry.js +30 -26
  6. package/dist/cli/args.js +3 -3
  7. package/dist/cli/host-limits.d.ts +1 -1
  8. package/dist/cli/host-limits.js +3 -2
  9. package/dist/cli/install-config.js +2 -2
  10. package/dist/cli/install-report.js +2 -1
  11. package/dist/cli/managed-skill-assets.d.ts +1 -1
  12. package/dist/cli/managed-skill-assets.js +3 -1
  13. package/dist/cli/model-catalog.d.ts +56 -0
  14. package/dist/cli/model-catalog.js +78 -17
  15. package/dist/cli/model-policy.js +7 -6
  16. package/dist/cli/types.d.ts +1 -1
  17. package/dist/cli.js +8 -7
  18. package/dist/config-parser.js +3 -2
  19. package/dist/config.d.ts +1 -1
  20. package/dist/config.js +13 -12
  21. package/dist/features.d.ts +17 -1
  22. package/dist/features.js +10 -0
  23. package/dist/model-route-policy.d.ts +1 -1
  24. package/dist/model-route-policy.js +24 -7
  25. package/dist/skills.d.ts +8 -1
  26. package/dist/skills.js +8 -0
  27. package/dist/uiux-visual-catalog.js +5 -5
  28. package/docs/assets/cover-motion-still.webp +0 -0
  29. package/docs/assets/cover-motion.webp +0 -0
  30. package/docs/assets/readme/JetBrainsMono-OFL.txt +93 -0
  31. package/docs/assets/readme/Lucide-LICENSE.txt +43 -0
  32. package/docs/assets/readme/ascii-readme.svg +5 -0
  33. package/docs/assets/readme/badge-version.svg +1 -1
  34. package/docs/assets/readme/ignition-film.mp4 +0 -0
  35. package/docs/assets/readme/ignition-readme.gif +0 -0
  36. package/docs/assets/readme/litfamily-machines.png +0 -0
  37. package/docs/assets/readme/lucide-book-open.svg +14 -0
  38. package/docs/assets/readme/lucide-play.svg +13 -0
  39. package/docs/assets/readme/lucide-shield-check.svg +14 -0
  40. package/docs/assets/readme/poster.png +0 -0
  41. package/docs/migration.md +2 -2
  42. package/docs/reference-Ko-KR.md +21 -4
  43. package/docs/reference.md +30 -10
  44. package/package.json +1 -1
  45. package/skills/frontend-ui-ux/SKILL.md +25 -31
  46. package/skills/frontend-ui-ux/references/complete-contract.md +12 -12
  47. package/skills/frontend-ui-ux/references/default-editorial-pixel.json +19 -0
  48. package/skills/frontend-ui-ux/references/production.md +15 -0
  49. package/skills/managed-skill-manifest.json +92 -1
  50. package/skills/readme-studio/SKILL.md +76 -0
  51. package/skills/readme-studio/references/decoration-patterns.md +105 -0
  52. package/skills/readme-studio/references/motion.md +38 -0
  53. package/skills/readme-studio/references/production.md +13 -0
  54. package/skills/readme-studio/references/typography.md +16 -0
  55. package/skills/readme-studio/scripts/check-facts.mjs +28 -0
  56. package/skills/readme-studio/templates/cover-source.json +1 -0
  57. package/skills/readme-studio/templates/facts.json +1 -0
  58. package/skills/readme-studio/templates/hyperframes/index.html +62 -0
  59. package/skills/readme-studio/templates/hyperframes/index.motion.json +1 -0
  60. package/skills/readme-studio/templates/hyperframes/package-lock.json +1966 -0
  61. package/skills/readme-studio/templates/hyperframes/package.json +1 -0
  62. package/skills/readme-studio/templates/readme-cover-section.md +53 -0
  63. package/skills/readme-studio/templates/remotion/package-lock.json +3783 -0
  64. package/skills/readme-studio/templates/remotion/package.json +1 -0
  65. package/skills/readme-studio/templates/remotion/src/index.tsx +32 -0
  66. package/skills/readme-studio/templates/typography/files.mjs +46 -0
  67. package/skills/readme-studio/templates/typography/outline.mjs +47 -0
  68. package/skills/readme-studio/templates/typography/package-lock.json +133 -0
  69. package/skills/readme-studio/templates/typography/package.json +1 -0
  70. package/tools/check-pack-payload.mjs +34 -2
  71. package/tools/payload-substance-parity.json +4 -3
  72. package/tools/version-manifests.json +10 -4
@@ -0,0 +1,93 @@
1
+ Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono)
2
+
3
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
+ This license is copied below, and is also available with a FAQ at:
5
+ https://openfontlicense.org
6
+
7
+
8
+ -----------------------------------------------------------
9
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
+ -----------------------------------------------------------
11
+
12
+ PREAMBLE
13
+ The goals of the Open Font License (OFL) are to stimulate worldwide
14
+ development of collaborative font projects, to support the font creation
15
+ efforts of academic and linguistic communities, and to provide a free and
16
+ open framework in which fonts may be shared and improved in partnership
17
+ with others.
18
+
19
+ The OFL allows the licensed fonts to be used, studied, modified and
20
+ redistributed freely as long as they are not sold by themselves. The
21
+ fonts, including any derivative works, can be bundled, embedded,
22
+ redistributed and/or sold with any software provided that any reserved
23
+ names are not used by derivative works. The fonts and derivatives,
24
+ however, cannot be released under any other type of license. The
25
+ requirement for fonts to remain under this license does not apply
26
+ to any document created using the fonts or their derivatives.
27
+
28
+ DEFINITIONS
29
+ "Font Software" refers to the set of files released by the Copyright
30
+ Holder(s) under this license and clearly marked as such. This may
31
+ include source files, build scripts and documentation.
32
+
33
+ "Reserved Font Name" refers to any names specified as such after the
34
+ copyright statement(s).
35
+
36
+ "Original Version" refers to the collection of Font Software components as
37
+ distributed by the Copyright Holder(s).
38
+
39
+ "Modified Version" refers to any derivative made by adding to, deleting,
40
+ or substituting -- in part or in whole -- any of the components of the
41
+ Original Version, by changing formats or by porting the Font Software to a
42
+ new environment.
43
+
44
+ "Author" refers to any designer, engineer, programmer, technical
45
+ writer or other person who contributed to the Font Software.
46
+
47
+ PERMISSION & CONDITIONS
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
+ redistribute, and sell modified and unmodified copies of the Font
51
+ Software, subject to the following conditions:
52
+
53
+ 1) Neither the Font Software nor any of its individual components,
54
+ in Original or Modified Versions, may be sold by itself.
55
+
56
+ 2) Original or Modified Versions of the Font Software may be bundled,
57
+ redistributed and/or sold with any software, provided that each copy
58
+ contains the above copyright notice and this license. These can be
59
+ included either as stand-alone text files, human-readable headers or
60
+ in the appropriate machine-readable metadata fields within text or
61
+ binary files as long as those fields can be easily viewed by the user.
62
+
63
+ 3) No Modified Version of the Font Software may use the Reserved Font
64
+ Name(s) unless explicit written permission is granted by the corresponding
65
+ Copyright Holder. This restriction only applies to the primary font name as
66
+ presented to the users.
67
+
68
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
+ Software shall not be used to promote, endorse or advertise any
70
+ Modified Version, except to acknowledge the contribution(s) of the
71
+ Copyright Holder(s) and the Author(s) or with their explicit written
72
+ permission.
73
+
74
+ 5) The Font Software, modified or unmodified, in part or in whole,
75
+ must be distributed entirely under this license, and must not be
76
+ distributed under any other license. The requirement for fonts to
77
+ remain under this license does not apply to any document created
78
+ using the Font Software.
79
+
80
+ TERMINATION
81
+ This license becomes null and void if any of the above conditions are
82
+ not met.
83
+
84
+ DISCLAIMER
85
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
+ OTHER DEALINGS IN THE FONT SOFTWARE.
@@ -0,0 +1,43 @@
1
+ ISC License
2
+
3
+ Copyright (c) 2026 Lucide Icons and Contributors
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted, provided that the above
7
+ copyright notice and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
+
17
+ ---
18
+
19
+ The following Lucide icons are derived from the Feather project:
20
+
21
+ airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
22
+
23
+ The MIT License (MIT) (for the icons listed above)
24
+
25
+ Copyright (c) 2013-present Cole Bemis
26
+
27
+ Permission is hereby granted, free of charge, to any person obtaining a copy
28
+ of this software and associated documentation files (the "Software"), to deal
29
+ in the Software without restriction, including without limitation the rights
30
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
31
+ copies of the Software, and to permit persons to whom the Software is
32
+ furnished to do so, subject to the following conditions:
33
+
34
+ The above copyright notice and this permission notice shall be included in all
35
+ copies or substantial portions of the Software.
36
+
37
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
38
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
39
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
40
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
41
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
42
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
43
+ SOFTWARE.
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="804" height="496"
2
+ viewBox="0 0 804 496" role="img" aria-labelledby="title description">
3
+ <title id="title">Exact copyable LIT ASCII mark — centered presentation</title>
4
+ <desc id="description">Original geometric LitFamily ignition symbol, bespoke angular lettering, and ordered vector halftone. Ember orange, signal lime, warm white, and carbon navy. All lettering is outlined; no raster images or external resources.</desc>
5
+ <rect x="0" y="0" width="804" height="496" fill="#080D14" /><g aria-label=" ▄▄▄▄"><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(372.000 32) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(384.000 32) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(396.000 32) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(408.000 32) scale(0.020000 -0.020000)"/></g><g aria-label=" ▗███▌ ▗██████▖"><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(252.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(300.000 56) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(348.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V-300Z" fill="#F2EFDF" transform="translate(432.000 56) scale(0.020000 -0.020000)"/></g><g aria-label=" ▗▄▄▄▄▄ ▗▟████▌ ▝██████▘"><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(36.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(48.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(60.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(72.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(84.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(96.000 80) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(228.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(252.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(300.000 80) scale(0.020000 -0.020000)"/><path d="M300 360V1020H600V360Z" fill="#F2EFDF" transform="translate(348.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 80) scale(0.020000 -0.020000)"/><path d="M0 360V1020H300V360Z" fill="#F2EFDF" transform="translate(432.000 80) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▗▟██████▌ ▝▀▜█▀▘"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 104) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(204.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(252.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(300.000 104) scale(0.020000 -0.020000)"/><path d="M300 360V1020H600V360Z" fill="#F2EFDF" transform="translate(360.000 104) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(372.000 104) scale(0.020000 -0.020000)"/><path d="M300 -300V360H-10V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 104) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(408.000 104) scale(0.020000 -0.020000)"/><path d="M0 360V1020H300V360Z" fill="#F2EFDF" transform="translate(420.000 104) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▗▟███████▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 128) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(180.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V1020H600V-300Z" fill="#F2EFDF" transform="translate(192.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(252.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(288.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(300.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(312.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(324.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(336.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(348.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(360.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(372.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(384.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(396.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(408.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(420.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(432.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(444.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(456.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(468.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(480.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(492.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(504.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(516.000 128) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▗▟█████████████████████████ ▐█▀"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 152) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(156.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(180.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(192.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(252.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(300.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(312.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(432.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(444.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(456.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(468.000 152) scale(0.020000 -0.020000)"/><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(492.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(504.000 152) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(516.000 152) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ████████████████████████████▀"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(180.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(192.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(252.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(300.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(312.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(432.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(444.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(456.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(468.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(480.000 176) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(492.000 176) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ██▛▘ ▄ ▄▄▄▄▖▄▄▄▄▄▄▄▄▄▄▄▄▄▖"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V360H300V-300Z" fill="#F2EFDF" transform="translate(180.000 200) scale(0.020000 -0.020000)"/><path d="M0 360V1020H300V360Z" fill="#F2EFDF" transform="translate(192.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(240.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(264.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(276.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(288.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(300.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V-300Z" fill="#F2EFDF" transform="translate(312.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(324.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(336.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(348.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(360.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(372.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(384.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(396.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(408.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(420.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(432.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(444.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(456.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(468.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V-300Z" fill="#F2EFDF" transform="translate(480.000 200) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▀ ▄██ ████▌█████████████▌"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 224) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(156.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(216.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(300.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(312.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(432.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(444.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(456.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(468.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(480.000 224) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▄████ ████▌█████████████▌"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(192.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(300.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(312.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(432.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(444.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(456.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(468.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(480.000 248) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▄█████▛ litopencode"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(168.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(180.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(192.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V360H300V-300Z" fill="#F2EFDF" transform="translate(240.000 272) scale(0.020000 -0.020000)"/><path d="M380 0Q307 0 263.5 42.5Q220 85 220 155V648H30V730H310V155Q310 121 329.0 101.5Q348 82 380 82H550V0Z" fill="#F2EFDF" transform="translate(648.000 272) scale(0.020000 -0.020000)"/><path d="M85 0V82H280V468H105V550H370V82H555V0ZM315 649Q282 649 263.0 666.0Q244 683 244 712Q244 742 263.0 759.5Q282 777 315 777Q348 777 367.0 759.5Q386 742 386 712Q386 683 367.0 666.0Q348 649 315 649Z" fill="#F2EFDF" transform="translate(660.000 272) scale(0.020000 -0.020000)"/><path d="M355 0Q287 0 246.0 39.5Q205 79 205 145V468H47V550H205V705H295V550H520V468H295V145Q295 117 311.5 99.5Q328 82 355 82H515V0Z" fill="#F2EFDF" transform="translate(672.000 272) scale(0.020000 -0.020000)"/><path d="M300 -8Q201 -8 142.5 50.0Q84 108 84 212V338Q84 443 142.0 500.5Q200 558 300 558Q400 558 458.0 500.5Q516 443 516 338V212Q516 108 457.5 50.0Q399 -8 300 -8ZM300 72Q359 72 392.5 105.0Q426 138 426 202V348Q426 412 392.5 445.0Q359 478 300 478Q242 478 208.0 445.0Q174 412 174 348V202Q174 138 208.0 105.0Q242 72 300 72Z" fill="#F2EFDF" transform="translate(684.000 272) scale(0.020000 -0.020000)"/><path d="M92 -180V550H182V445H183Q190 499 230.0 529.5Q270 560 332 560Q415 560 464.0 505.5Q513 451 513 356V195Q513 100 464.0 45.0Q415 -10 332 -10Q270 -10 230.0 21.0Q190 52 183 105H180L182 -20V-180ZM302 68Q359 68 391.0 98.0Q423 128 423 195V355Q423 423 391.0 452.5Q359 482 302 482Q247 482 214.5 447.0Q182 412 182 350V200Q182 138 214.5 103.0Q247 68 302 68Z" fill="#F2EFDF" transform="translate(696.000 272) scale(0.020000 -0.020000)"/><path d="M300 -10Q203 -10 143.5 48.5Q84 107 84 210V340Q84 443 143.5 501.5Q203 560 300 560Q365 560 413.5 534.0Q462 508 489.0 461.0Q516 414 516 350V252H172V200Q172 139 207.0 103.5Q242 68 300 68Q350 68 382.5 87.5Q415 107 422 140H512Q503 71 445.0 30.5Q387 -10 300 -10ZM172 322H428V350Q428 415 394.5 450.5Q361 486 300 486Q239 486 205.5 450.5Q172 415 172 350Z" fill="#F2EFDF" transform="translate(708.000 272) scale(0.020000 -0.020000)"/><path d="M92 0V550H182V445H183Q190 500 228.0 530.0Q266 560 329 560Q412 560 461.0 509.0Q510 458 510 370V0H420V354Q420 417 388.5 450.5Q357 484 303 484Q247 484 214.5 449.0Q182 414 182 350V0Z" fill="#F2EFDF" transform="translate(720.000 272) scale(0.020000 -0.020000)"/><path d="M308 -10Q208 -10 148.0 46.0Q88 102 88 200V350Q88 448 148.0 504.0Q208 560 308 560Q403 560 461.5 509.0Q520 458 523 370H433Q430 423 397.0 451.5Q364 480 308 480Q249 480 213.5 446.5Q178 413 178 351V200Q178 138 213.5 104.0Q249 70 308 70Q364 70 397.0 99.0Q430 128 433 180H523Q520 92 461.5 41.0Q403 -10 308 -10Z" fill="#F2EFDF" transform="translate(732.000 272) scale(0.020000 -0.020000)"/><path d="M300 -8Q201 -8 142.5 50.0Q84 108 84 212V338Q84 443 142.0 500.5Q200 558 300 558Q400 558 458.0 500.5Q516 443 516 338V212Q516 108 457.5 50.0Q399 -8 300 -8ZM300 72Q359 72 392.5 105.0Q426 138 426 202V348Q426 412 392.5 445.0Q359 478 300 478Q242 478 208.0 445.0Q174 412 174 348V202Q174 138 208.0 105.0Q242 72 300 72Z" fill="#F2EFDF" transform="translate(744.000 272) scale(0.020000 -0.020000)"/><path d="M268 -10Q186 -10 136.5 45.0Q87 100 87 194V355Q87 450 136.0 505.0Q185 560 268 560Q330 560 370.5 529.0Q411 498 419 445H420L418 570V730H508V0H418V105H417Q410 51 370.0 20.5Q330 -10 268 -10ZM298 68Q354 68 386.0 103.0Q418 138 418 200V350Q418 412 386.0 447.0Q354 482 298 482Q241 482 209.0 452.5Q177 423 177 355V195Q177 128 209.0 98.0Q241 68 298 68Z" fill="#F2EFDF" transform="translate(756.000 272) scale(0.020000 -0.020000)"/><path d="M300 -10Q203 -10 143.5 48.5Q84 107 84 210V340Q84 443 143.5 501.5Q203 560 300 560Q365 560 413.5 534.0Q462 508 489.0 461.0Q516 414 516 350V252H172V200Q172 139 207.0 103.5Q242 68 300 68Q350 68 382.5 87.5Q415 107 422 140H512Q503 71 445.0 30.5Q387 -10 300 -10ZM172 322H428V350Q428 415 394.5 450.5Q361 486 300 486Q239 486 205.5 450.5Q172 415 172 350Z" fill="#F2EFDF" transform="translate(768.000 272) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▗▟█████▀▘ ▄▄▄▄▄ ▗▖"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 296) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(132.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V1020H600V-300Z" fill="#F2EFDF" transform="translate(144.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(180.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(192.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 296) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(216.000 296) scale(0.020000 -0.020000)"/><path d="M0 360V1020H300V360Z" fill="#F2EFDF" transform="translate(228.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(324.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(336.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(348.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(360.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(372.000 296) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(444.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V-300Z" fill="#F2EFDF" transform="translate(456.000 296) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▐█████▀ █████ ▐▛▀"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 320) scale(0.020000 -0.020000)"/><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(120.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(132.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(144.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(180.000 320) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(192.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 320) scale(0.020000 -0.020000)"/><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(444.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V360H300V-300Z" fill="#F2EFDF" transform="translate(456.000 320) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(468.000 320) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▐███▀ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 344) scale(0.020000 -0.020000)"/><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(120.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(132.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(144.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 344) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(168.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 344) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▐█▀ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 368) scale(0.020000 -0.020000)"/><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(120.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(132.000 368) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(144.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 368) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▝ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 392) scale(0.020000 -0.020000)"/><path d="M300 360V1020H600V360Z" fill="#F2EFDF" transform="translate(120.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 392) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████▄▄▄▄▄▄▄▖ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(108.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(120.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(132.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(144.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(156.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(168.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(180.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V-300Z" fill="#F2EFDF" transform="translate(192.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 416) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐███████████▛ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(108.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(120.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(132.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(144.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V360H300V-300Z" fill="#F2EFDF" transform="translate(180.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 440) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐██████████▀ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(108.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(120.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(132.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(144.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 464) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(168.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 464) scale(0.020000 -0.020000)"/></g></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="release: 1.0.4"><title>release: 1.0.4</title><g shape-rendering="crispEdges"><rect width="49" height="20" fill="#080d14"/><rect x="49" width="97" height="20" fill="#ff6337"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="255" y="140" textLength="390" transform="scale(.1)">release</text><text x="965" y="140" textLength="870" transform="scale(.1)" fill="#080D14">1.0.4</text></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="release: 1.0.5"><title>release: 1.0.5</title><g shape-rendering="crispEdges"><rect width="49" height="20" fill="#080d14"/><rect x="49" width="97" height="20" fill="#ff6337"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="255" y="140" textLength="390" transform="scale(.1)">release</text><text x="965" y="140" textLength="870" transform="scale(.1)" fill="#080D14">1.0.5</text></g></svg>
@@ -0,0 +1,14 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="#D7F75B"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ >
12
+ <path d="M12 5v16" />
13
+ <path d="M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z" />
14
+ </svg>
@@ -0,0 +1,13 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="#D7F75B"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ >
12
+ <path d="M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z" />
13
+ </svg>
@@ -0,0 +1,14 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="#D7F75B"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ >
12
+ <path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z" />
13
+ <path d="m9 12 2 2 4-4" />
14
+ </svg>
Binary file
package/docs/migration.md CHANGED
@@ -15,7 +15,7 @@ This guide describes the supported migration shape for moving an OpenCode workfl
15
15
  - Keep global LitOpenCode agent route configuration in `~/.config/opencode/litopencode.json`, or `$XDG_CONFIG_HOME/opencode/litopencode.json` when `XDG_CONFIG_HOME` is set.
16
16
  - Keep LitOpenCode runtime config in `.litopencode/config.json` when project-local config is needed.
17
17
  - Use `npm exec --package @litfamily/litopencode -- litopencode install` to delegate default setup to `opencode plugin <target> --global --force`; packaged installs use the current `@litfamily/litopencode` version, while local checkout installs use the package path.
18
- - The installer creates `litopencode.json` only when it is missing. The config hook routes the lead categories and `lit-loop` to `openai/gpt-6-astra`/`xhigh`; execution/research helpers use `openai/gpt-5.6-luna`/`max`.
18
+ - The installer creates `litopencode.json` only when it is missing. The config hook routes the lead categories and `lit-loop` to `openai/gpt-6-astra`/`xhigh`; execution/research helpers use the fresh default `openai/gpt-6-luna`/`max`. Ordinary install/update preserves an already configured model; only an explicit model prompt changes managed routes.
19
19
  - Interactive installs render a persistent five-stage TTY timeline with active spinner motion, stage-purpose text, an explicit stage-three write boundary, retained completion lines, and one restart/Tab receipt. CI, non-TTY, `NO_COLOR`, and `--dry-run` paths retain plain or machine-readable output.
20
20
  - Use `litopencode doctor --root <workspace>` to inspect package metadata, config source, runtime paths, and ledger location without writing files.
21
21
  - Packaged plugin startup and successful interactive `install`/`doctor` management commands run a bounded foreground automatic-update barrier by default. It installs only an exact newer stable `@litfamily/litopencode@<version>` into a private staging prefix, invokes the staged installer with `--no-auto-update`, and requires a matching post-install `doctor --json` result before the transaction succeeds. The separate `~/.litopencode/auto-update-install.lock`, journal, receipt, and private backup keep rollback evidence outside project/config roots; rollback is fingerprint-verified, and an unknown staged state or impossible rollback stops the host without a success claim while retaining the backup path. Use `--no-auto-update` or `LITOPENCODE_NO_AUTO_UPDATE=1` to disable it; `NO_UPDATE_NOTIFIER` and `LITOPENCODE_NO_UPDATE_CHECK` remain higher-precedence opt-outs.
@@ -23,7 +23,7 @@ This guide describes the supported migration shape for moving an OpenCode workfl
23
23
  - Use `litopencode doctor --root <workspace>` to inspect `litopencode.json` route validity and effective `lit-plan` / `lit-loop` settings without writing files.
24
24
  - Use `litopencode install --dry-run --root <workspace>` to preview the `opencode.json` plugin mutation without writing files.
25
25
  - Route fields include top-level `permissionMode` (`safe`, `balanced`, or `yolo`) plus per-agent/per-category `provider`, `model`, `variant`, `category`, `reasoningEffort`, `textVerbosity`, `thinking`, `temperature`, `topP`, `maxTokens`, `promptAppend`, `tools`, `permission`, and `providerOptions`; generated route files use `variant` as the primary effort knob while `reasoningEffort` stays available for explicit provider-level overrides. LitOpenCode keeps `topP` as its config spelling and projects it to OpenCode's native `top_p` field; this preserves nonreasoning model sampling while Astra's native Responses capability omits unsupported sampling fields.
26
- - Global route config loads first, project-local route config merges afterward, and effective per-agent fields override category fields. Fresh/reset lead routes use Astra with native `reasoningEffort` (`low`, `medium`, `high`, `xhigh`, or `max`), while execution/research helpers remain Luna/max unless a helper is explicitly selected. LUNA plus `xhigh` is forbidden; Astra has no invented `-fast` alias. No-selection installs preserve user route bytes but fail before success output when a managed route is unsafe. Other model IDs remain user-owned custom routes. Existing host entries named `momus` or `litwork-reviewer` preserve explicit routes and receive Astra/xhigh only when route fields are absent. LitOpenCode does not expose Hermes-specific per-subagent overrides.
26
+ - Global route config loads first, project-local route config merges afterward, and effective per-agent fields override category fields. Fresh/reset lead routes use Astra with native `reasoningEffort`. GPT-6 Astra and Sol accept `low`, `medium`, `high`, `xhigh`, `max`, and `ultra`. GPT-6 Luna accepts `low`, `medium`, `high`, `xhigh`, and `max`, but not `ultra`. Previous-generation GPT-5.6 Luna accepts only `high` and `max`; `xhigh` remains unsupported for that model. Astra has no invented `-fast` alias. No-selection installs preserve user route bytes but fail before success output when a managed route is unsafe. Other model IDs remain user-owned custom routes. Existing host entries named `momus` or `litwork-reviewer` preserve explicit routes and receive Astra/xhigh only when route fields are absent. LitOpenCode does not expose Hermes-specific per-subagent overrides.
27
27
  - Use `litopencode install --permission-prompt`, `--permission-mode balanced`, or `--yolo` only when you explicitly want LitOpenCode to reduce OpenCode approval prompts. Default installs do not relax permissions. Balanced mode allows routine automation while keeping dangerous bash patterns on ask; YOLO mode writes `permissionMode: "yolo"` and the plugin config hook allows OpenCode `bash`, `edit`, `webfetch`, and `external_directory` globally. In both balanced and YOLO modes, `task` delegation is granted only to execution-capable primary agents; subagents and `lit-plan` stay task-denied so delegation never recurses and the planner cannot select an implementation child. Existing global string/object and per-primary task policies are preserved unless they would weaken those hard deny guards; absent global task policy is not invented, and the runtime lineage guard blocks child task calls even under an explicit global allow. `lit-plan` remains agent-level edit/bash/task `deny`.
28
28
  - Restart OpenCode after changing `permissionMode`; OpenCode loads config at startup and running sessions keep the already-loaded permission policy.
29
29
  - Planning routes now produce proportionate objective-achievable checklists rather than relying on a later review pass to discover missing execution detail. Each retained item carries action/output/verification, while risky or multi-stage work receives SDD-like gates only when justified. `/review-work` accepts both draft plans (read-only `PASS`/`ITERATE`/`NEEDS-CONTEXT`) and completed work (the existing five-lane review); it never implements a draft plan.
@@ -87,10 +87,21 @@ CI와 비대화형 터미널에서는 자동 질문을 생략하며, 명시한
87
87
  `NO_COLOR`에서도 출력 스타일을 직접 선택할 수 있지만 색상·커서 이스케이프는 출력하지
88
88
  않습니다. `TERM=dumb`이나 UTF-8이 아닌 로케일에서는 ANSI 장식 없이 `LIT` 문자를 표시합니다.
89
89
  새로 설치하거나 초기화하면 계획·검토 및 `lit-loop`는 `openai/gpt-6-astra`/`xhigh`,
90
- 실행·연구 helper는 기존 `openai/gpt-5.6-luna`/`max`를 사용합니다. Astra는 low/medium/high/
91
- xhigh/max를 지원하며 native reasoning effort로 전달됩니다. 기존 helper 선택, provider/model
92
- 필드, `momus`·`litwork-reviewer` 재정의는 덮어쓰지 않습니다. 기존 GPT-5.6 계열의 `-fast`
93
- 의미는 유지하지만 `gpt-6-astra-fast` 별칭은 추가하지 않습니다.
90
+ 실행·연구 helper는 새 기본값인 `openai/gpt-6-luna`/`max`를 사용합니다. `gpt-6-sol`/`xhigh`는
91
+ 코딩 리드 대안입니다. GPT-6 Astra와 GPT-6 Sol은 `low`, `medium`, `high`, `xhigh`, `max`, `ultra`를
92
+ 모두 지원합니다. GPT-6 Luna는 `low`, `medium`, `high`, `xhigh`, `max`를 지원하지만 `ultra`는
93
+ 지원하지 않습니다. 이전 세대 `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`는 계속 선택할 수 있고,
94
+ 현재 호스트 카탈로그에는 이 모델들의 지원 종료일이 등록되어 있지 않습니다. GPT-5.6 Luna는
95
+ `high`와 `max`만 지원하고 `xhigh`는 허용하지 않습니다. 이 제한은 GPT-6 Luna에는 적용되지 않습니다.
96
+ 일반 설치와
97
+ 업데이트는 이미 설정된 모델을 보존합니다. 명시적인 `--model-prompt`만 관리 모델 키를 다시 씁니다.
98
+ 기존 GPT-5.6 계열의 `-fast` 의미는 유지하지만 `gpt-6-astra-fast` 별칭은 추가하지 않습니다.
99
+
100
+ ### 모델 카탈로그 갱신
101
+
102
+ OpenAI 모델 ID, 역할 기본값, 선택 메뉴 항목과 effort 범위는 `src/cli/model-catalog.ts`에 모여 있습니다.
103
+ 이 파일을 수정한 뒤 `npm run build`로 패키지용 JavaScript를 다시 생성하고,
104
+ `node --test test/gpt6-astra-routing.test.mjs`로 선택 메뉴, 기본 경로와 라우팅 동작을 확인합니다.
94
105
  전역 설치가 필요하면 다음을 사용합니다.
95
106
 
96
107
  ```sh
@@ -307,3 +318,9 @@ wrapper 이전에는 보관 사본이 필요하지 않습니다. 교체나 안
307
318
  안내된 복구 경로를 보존하고 확인하세요. 설치 성공으로 간주하면 안 됩니다.
308
319
  이 검사는 일반적인 사용과 감지한 경로 변경을 다루며, 적대적인 동시 파일 변경까지
309
320
  막는다는 보장은 아닙니다.
321
+
322
+ ## 디자인 제작과 README
323
+
324
+ OpenCode 네이티브 스킬 `frontend-ui-ux`는 충분한 구현 요청을 받으면 작업 화면을 만들고 렌더링을 확인합니다. 중요한 방향이 모호할 때만 질문하며 답변을 보존합니다. 검토·계획 요청은 읽기 전용입니다.
325
+
326
+ 네이티브 스킬 도구에서 `readme-studio`를 선택하면 실제 저장소 정보로 README와 표지를 제작합니다. 로컬 글꼴의 윤곽선, Remotion/HyperFrames 예제, 정적·동적 출력 절차가 함께 설치됩니다. 이미지 생성 도구가 없으면 `IMAGE_GENERATION_UNAVAILABLE`을 알리고 제공된 배경으로 이어갑니다. 공개 GitHub/npm 렌더링 검증은 별도 단계입니다. 전용 슬래시 명령은 없습니다.
package/docs/reference.md CHANGED
@@ -85,17 +85,24 @@ npm exec --package @litfamily/litopencode@latest -- litopencode install --model-
85
85
  ```
86
86
 
87
87
  The interactive picker (`--model-prompt`, or a fresh TTY install) asks for a provider
88
- (OpenAI GPT-6 Astra / GPT-5.6 family or xAI Grok), a LEAD model for the planning/review categories, and a
89
- HELPER model for the execution/research categories; the helper may use a different provider.
90
- OpenAI rows are gpt-6-astra · xhigh (low, medium, high, xhigh, or max), gpt-5.6-sol · xhigh,
91
- gpt-5.6-luna · max, gpt-5.6 · high, and gpt-5.6-terra · xhigh; xai rows are the
92
- reasoning-capable Grok models from the host catalog, `grok-4.6` first.
88
+ (the OpenAI GPT-6 family or the previous GPT-5.6 generation, or xAI Grok), a LEAD model for the
89
+ planning/review categories, and a HELPER model for the execution/research categories; the helper
90
+ may use a different provider. New installs default to GPT-6 Astra/xhigh for lead, planning, and
91
+ review roles; GPT-6 Sol/xhigh is the coding-lead alternative, and GPT-6 Luna/max is the helper
92
+ default for execution, research, and ordinary workers.
93
+ GPT-6 Astra and Sol accept `low`, `medium`, `high`, `xhigh`, `max`, and `ultra`. GPT-6 Luna accepts
94
+ `low`, `medium`, `high`, `xhigh`, and `max`, but not `ultra`. The previous-generation
95
+ `gpt-5.6-sol`, `gpt-5.6-terra`, and `gpt-5.6-luna` remain selectable, and the current host catalog
96
+ has no retirement metadata for them. GPT-5.6 Luna accepts only `high` and `max`; `xhigh` remains
97
+ unsupported for that model. This previous-generation restriction does not apply to GPT-6 Luna.
98
+ xAI rows are the reasoning-capable Grok models from the host catalog, `grok-4.6` first.
93
99
  `--subagent-model <provider/id>` and `--subagent-effort <e>` set the helper route from flags.
94
100
  Legacy OpenAI `<id>-fast` aliases remain accepted and policy-checked as their base ids;
95
101
  `gpt-6-astra-fast` is not invented or accepted. Choosing Grok
96
102
  without an xAI credential prints a warning naming `XAI_API_KEY` and still writes the route.
97
- Existing non-default routes are preserved by default (`--no-model-prompt` and `--yes` also
98
- preserve); `--model-prompt` rewrites managed keys only.
103
+ An ordinary install or update preserves any already configured model. `--no-model-prompt` and
104
+ `--yes` also preserve existing routes; the explicit `--model-prompt` option rewrites managed keys
105
+ only.
99
106
 
100
107
  `install --yes` skips every picker and keeps the saved output style. CI and non-TTY
101
108
  installs skip automatic prompts; explicit prompt flags still work. `NO_COLOR` keeps
@@ -104,11 +111,17 @@ and non-UTF-8 locales use the plain `LIT` wordmark without ANSI decoration.
104
111
 
105
112
  The OpenCode config hook routes the lead categories and `lit-loop` to
106
113
  `openai/gpt-6-astra` with native `reasoningEffort` (fresh/reset default `xhigh`).
107
- Execution and research helpers retain `openai/gpt-5.6-luna`/`max` unless a helper route is
108
- explicitly selected. The hook registers only missing native Astra model metadata
114
+ Execution and research helpers use the fresh default `openai/gpt-6-luna`/`max`.
115
+ The hook registers only missing native Astra model metadata
109
116
  (`reasoning`, no `temperature`, and tool calls); existing provider/model fields and host
110
117
  agent overrides are preserved. `momus` and `litwork-reviewer` are never force-overwritten.
111
- LUNA plus `xhigh` is rejected, while Astra accepts all five supported efforts.
118
+ Unsupported or conflicting model/effort pairs fail validation before install success is reported.
119
+
120
+ ### Refreshing the model catalog
121
+
122
+ `src/cli/model-catalog.ts` is the single catalog for OpenAI ids, role defaults, picker rows, and
123
+ effort bounds. After changing it, run `npm run build` to regenerate packaged JavaScript, then run
124
+ `node --test test/gpt6-astra-routing.test.mjs` to check the picker, defaults, and route behavior.
112
125
 
113
126
  The default is safe/ask-first behavior. `balanced` and `yolo` are opt-in. A global
114
127
  installation is also supported:
@@ -228,6 +241,7 @@ flowchart LR
228
241
  - <code>doctor-installer</code>
229
242
  - <code>durable-litgoal</code>
230
243
  - <code>frontend-ui-ux</code>
244
+ - <code>readme-studio</code>
231
245
  - <code>lit-commit</code>
232
246
  - <code>lit-crucible</code>
233
247
  - <code>lit-init</code>
@@ -399,3 +413,9 @@ bytecode cannot override its source. Cacheless repeat and migration from a flat
399
413
  need no retained backup. If replacement or safe rollback fails, preserve the reported
400
414
  recovery paths and inspect them; do not assume installation succeeded. These checks
401
415
  cover ordinary use and detected path changes, not hostile concurrent filesystem mutation.
416
+
417
+ ## Design production and README Studio
418
+
419
+ The native `frontend-ui-ux` skill takes an adequate authorized build request through working implementation and rendered inspection. It asks only material design choices and retains answers; review and plan requests remain read-only.
420
+
421
+ Select `readme-studio` through OpenCode's native skill tool for factual README writing and local cover composition. The installed resources include outlined typography helpers and pinned Remotion/HyperFrames recipes. Without a native image generator it reports `IMAGE_GENERATION_UNAVAILABLE` and can continue from a supplied background. Public GitHub/npm rendering is a separate gate. No dedicated slash command is claimed.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@litfamily/litopencode",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "LitOpenCode OpenCode plugin bootstrap package.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: frontend-ui-ux
3
- description: Use a concise OpenCode-native contract to plan interfaces before implementation while loading detailed design references only when needed.
3
+ description: Build and inspect authorized interfaces, resolving material design choices with a compact evolving direction.
4
4
  ---
5
5
 
6
6
  ## #contract.activation
@@ -16,55 +16,49 @@ entry_routes: ["chat.message design intent", "native skill frontend-ui-ux", "too
16
16
 
17
17
  # Frontend UI/UX
18
18
 
19
- This is static documentation for the native-installed LitOpenCode entrypoint. Do not execute commands from this file automatically. It produces a finite Design Contract and implementation boundary; it does not render, capture, or certify visual correctness.
19
+ This is static documentation. Do not execute commands from this file automatically. An authorized design/build request with a sufficient target produces a working implementation and inspected render. Review-only and plan-only requests remain read-only. A keyword or post-edit advisory cannot authorize edits.
20
20
 
21
21
  ## #contract.inputs
22
22
 
23
- | Field | Required contract |
24
- | --- | --- |
25
- | lane | `new-build`, `brownfield`, `redesign`, `reference-fidelity`, or `design-system` |
26
- | product facts | Existing components, tokens, routes, states, users, and constraints |
27
- | acceptance | Measurable behavior and observable visual criteria |
23
+ Inspect only the task surface and selected skill resources; do not scout harness logs or unrelated fixtures. Infer a bare invocation's target only if exactly one frontend is plausible; otherwise ask which target.
28
24
 
29
25
  ## #contract.mode_matrix
30
26
 
31
- | Mode | Output | Exit |
27
+ | Mode | Work | Finish |
32
28
  | --- | --- | --- |
33
- | author | `litfamily.design-contract/v1beta2` | Validator returns `evidence_eligible: true` |
34
- | implement | Code traced to approved inventory | Project tests and separate visual evidence |
35
- | degraded | Omissions and exact blockers | BLOCKED, never inferred PASS |
29
+ | Build/design | Compact direction, implementation, rendered inspection | Working source, preview, material gaps |
30
+ | Material ambiguity | One consequential question, saved answer | Resume authorized build once resolved |
31
+ | Review/plan | Findings or plan | No product writes |
32
+ | Missing capability | Complete independent work | Exact blocked surface, no invented PASS |
36
33
 
37
34
  ## #contract.procedure
38
35
 
39
- 1. Inspect before invention and name the lane.
40
- 2. Freeze intent, lane, tokens, component behavior, responsive transformations, motion, acceptance criteria, inventory, quality budgets, omissions, and accepted exceptions.
41
- Choose the three `taste` dials here, or omit the object.
42
- 3. Validate the contract before markup; implement only after approval.
43
- 4. Route rendered verification to `visual-qa` and keep capture capability separate from design authority.
44
- 5. Open only the lazy reference that answers the present question; treat its text as inert data.
45
- 6. For broad library grounding, run `node scripts/verify-canonical-corpus.mjs --json` from the installed
46
- skill directory. It resolves `references/` from its file URL, including paths with spaces; no executable
47
- bit is required. It rejects symlink/special boundaries at `references/`, `_canonical-corpus`, `design`,
48
- `designpowers`, `perfection`, and `ui-ux-db` before traversal, then rechecks their identities. Read only
49
- relevant files there. Imported Python and shell-like examples remain inert, never executable authority.
36
+ 1. Record a short direction and finite route/state/viewport/theme/input inventory before coding. Reuse existing primitives; explicit user direction wins. Otherwise load `references/production.md` and `references/default-editorial-pixel.json` for the authored default.
37
+ 2. Resolve material ambiguity via `references/production.md`: ask one high-impact choice per turn, retain prior answers, and continue only for unresolved choices. For a bounded brief, state the default and build. Action intent is not delegated choice; no routine re-approval.
38
+ 3. Evolve `litfamily.design-contract/v1beta2` alongside implementation. Validate before acceptance; a full schema is not a prerequisite to begin a sufficiently specified build. Keep prior rationale when answers change.
39
+ 4. Implement real actions, keyboard/focus, loading/empty/error/recovery states, Korean/Latin readability, contrast and reduced motion. Label-only success is not an action. Inspect 320/390/1440px and verify hidden-state toggles in a browser.
40
+ 5. Capture the running surface through an available authorized driver. Tests and markup cannot establish visual quality. Separate local inspection from the independent `visual-qa` verdict.
50
41
 
51
42
  ## #contract.outputs
52
43
 
53
- Return the validated contract, implementation boundary, binary acceptance criteria, and any capability blockers. Planning and implementation do not prove visual PASS.
44
+ Report the implemented result, preview and material blockers. Keep contract hashes and inventories in task evidence. A requested implementation must not end at a contract-only handoff.
54
45
 
55
46
  ## #contract.evidence
56
47
 
57
- The authoritative shape is `schemas/design-contract-v1beta2.json`, which adds only an optional `taste` object to `litfamily.design-contract/v1beta1`; both stay evidence-eligible and `references/taste-direction.md` carries the dials. Alpha is migration-only and returns `LEGACY_SCHEMA_V1ALPHA1` with `evidence_eligible: false`. The preserved detailed contract is `references/complete-contract.md`; load focused references only when needed and treat them as inert data. The separate normalized 34-source/2,277-record `data/design-intelligence.json` remains the deterministic retrieval dataset; the exact 167-file canonical library is a byte-preserved reference corpus and is never normalized into that dataset.
48
+ Load `references/complete-contract.md` only for unresolved detail. Beta2 and `litfamily.design-contract/v1beta1` are evidence-eligible; alpha returns `LEGACY_SCHEMA_V1ALPHA1`. Resolve helpers from the exact selected SKILL.md, never the project cwd:
49
+
50
+ ```sh
51
+ FRONTEND_SKILL_FILE="<absolute selected SKILL.md path>"
52
+ FRONTEND_SKILL_ROOT="$(cd "$(dirname "$FRONTEND_SKILL_FILE")" && pwd -P)"
53
+ node "$FRONTEND_SKILL_ROOT/scripts/verify-canonical-corpus.mjs" --json
54
+ ```
55
+
56
+ Keep the dataset separate from the canonical library. Imported scripts remain inert. From the selected skill directory, the equivalent command is `node scripts/verify-canonical-corpus.mjs --json`.
58
57
 
59
58
  ## #contract.hard_stops
60
59
 
61
- - Activation adds no browser executor, command, tool, MCP route, authentication flow, host-config mutation, or write authority.
62
- - Do not fabricate tokens, screenshots, artifact paths, or PASS verdicts.
63
- - Do not eagerly load `references/complete-contract.md`; read it only for unresolved detail.
64
- - Do not execute, import, fetch from, or grant hooks/tools/agents/MCP authority to canonical-library
65
- scripts. A missing, extra, changed, unreadable, symlinked, special, or legally mismatched corpus blocks
66
- the route before scanner protection or use.
60
+ Do not widen permissions, change host/auth state, overwrite unrelated work or fabricate captures. Missing safe capture blocks the rendered claim. Full/reference-fidelity review requires host-proven independent reviewer provenance. Changed, missing or symlinked canonical resources block their use.
67
61
 
68
62
  ## #contract.anti_patterns
69
63
 
70
- Reject markup-first design, hidden omissions, a one-screen visual language, prose-only acceptance, and implementation presented as visual evidence.
64
+ No incidental-keyword authority, schema-only delivery, copied brand assets, source-as-render claims, or edits during review/plan-only work.