pi-firecode 0.8.1 → 1.0.1

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 (79) hide show
  1. package/README.md +58 -24
  2. package/README.zh-CN.md +74 -0
  3. package/config.example.jsonc +47 -57
  4. package/dist/config.example.jsonc +90 -0
  5. package/dist/index.js +11464 -0
  6. package/dist/master/prompts/master.en.md +22 -0
  7. package/dist/master/prompts/master.zh.md +22 -0
  8. package/dist/master/prompts/worker.en.md +1 -0
  9. package/dist/master/prompts/worker.zh.md +1 -0
  10. package/{review → dist/review}/prompts/review.en.md +7 -6
  11. package/{review → dist/review}/prompts/review.zh.md +7 -6
  12. package/dist/watcher/prompts/watch.en.md +43 -0
  13. package/{watcher → dist/watcher}/prompts/watch.zh.md +1 -1
  14. package/package.json +10 -27
  15. package/config.ts +0 -474
  16. package/deliver.ts +0 -32
  17. package/flame-frames.ts +0 -460
  18. package/format.ts +0 -80
  19. package/header.ts +0 -92
  20. package/herdr-client.ts +0 -60
  21. package/index.ts +0 -62
  22. package/jsonc.ts +0 -34
  23. package/master/event-card.ts +0 -106
  24. package/master/event-format.ts +0 -52
  25. package/master/index.ts +0 -1200
  26. package/master/prompt.ts +0 -26
  27. package/master/prompts/master.zh.md +0 -17
  28. package/master/prompts/worker.zh.md +0 -1
  29. package/master/role.ts +0 -13
  30. package/master/spawn.ts +0 -193
  31. package/master/state.ts +0 -201
  32. package/provider/claude-sub.ts +0 -129
  33. package/provider/openai-native/index.ts +0 -8
  34. package/provider/openai-native/src/compact-client.ts +0 -362
  35. package/provider/openai-native/src/config.ts +0 -297
  36. package/provider/openai-native/src/extension.ts +0 -93
  37. package/provider/openai-native/src/native-compaction.ts +0 -151
  38. package/provider/openai-native/src/native-details.ts +0 -157
  39. package/provider/openai-native/src/native-replay.ts +0 -253
  40. package/provider/openai-native/src/native-runtime.ts +0 -144
  41. package/provider/openai-native/src/options.ts +0 -85
  42. package/provider/openai-native/src/request-pipeline.ts +0 -21
  43. package/provider/openai-native/src/responses-input.ts +0 -433
  44. package/review/advisor.ts +0 -112
  45. package/review/card.ts +0 -385
  46. package/review/checkpoint.ts +0 -384
  47. package/review/evidence.ts +0 -232
  48. package/review/index.ts +0 -1246
  49. package/review/outcome.ts +0 -74
  50. package/review/progress.ts +0 -324
  51. package/review/prompt.ts +0 -210
  52. package/review/reviewer.ts +0 -356
  53. package/review/session.ts +0 -129
  54. package/review/state.ts +0 -905
  55. package/review/ui.ts +0 -528
  56. package/session/bark.ts +0 -157
  57. package/session/herdr-display.ts +0 -87
  58. package/session/presets.ts +0 -257
  59. package/session/rename.ts +0 -46
  60. package/session/stats.ts +0 -310
  61. package/session/working-flame.ts +0 -116
  62. package/statusbar/index.ts +0 -118
  63. package/statusbar/quota-cache.ts +0 -60
  64. package/statusbar/quota-parse.ts +0 -85
  65. package/statusbar/quota.ts +0 -203
  66. package/statusbar/render.ts +0 -181
  67. package/statusbar/tps.ts +0 -87
  68. package/theme.ts +0 -84
  69. package/tools/grouping.ts +0 -233
  70. package/tools/index.ts +0 -183
  71. package/tools/line.ts +0 -194
  72. package/tools/parts.ts +0 -143
  73. package/tools/timing.ts +0 -22
  74. package/watcher/card.ts +0 -85
  75. package/watcher/index.ts +0 -204
  76. package/watcher/observer.ts +0 -75
  77. package/watcher/transcript.ts +0 -64
  78. /package/{review → dist/review}/prompts/advisor.en.md +0 -0
  79. /package/{review → dist/review}/prompts/advisor.zh.md +0 -0
package/flame-frames.ts DELETED
@@ -1,460 +0,0 @@
1
- // Generated flame frame asset for pi-flow activity boxes.
2
- // Bundled activity-frame asset.
3
-
4
- const FRAMES = [
5
- [
6
- " \u001b[0m",
7
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;27;13m++\u001b[38;2;166;93;65m+::\u001b[38;2;79;58;34m. \u001b[0m",
8
- " \u001b[38;2;166;93;65m:++\u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m++:\u001b[38;2;79;58;34m:. \u001b[0m",
9
- " \u001b[38;2;166;93;65m:++\u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m+:::\u001b[38;2;79;58;34m: \u001b[0m",
10
- " \u001b[38;2;39;33;36m.\u001b[38;2;255;25;5m++\u001b[38;2;255;141;9m##\u001b[38;2;255;25;5m*\u001b[38;2;166;93;65m:::\u001b[38;2;79;58;34m: \u001b[0m",
11
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;25;5m*\u001b[38;2;255;141;9m##\u001b[38;2;255;200;11m#\u001b[38;2;255;141;9m##\u001b[38;2;255;25;5m+\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m. \u001b[0m",
12
- " \u001b[38;2;255;25;5m+\u001b[38;2;255;141;9m#\u001b[38;2;255;200;11m@#\u001b[38;2;255;228;12m@\u001b[38;2;255;200;11m#\u001b[38;2;255;141;9m#\u001b[38;2;255;83;7m*\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m. \u001b[0m",
13
- " \u001b[38;2;255;141;9m#\u001b[38;2;255;228;12m#@@@\u001b[38;2;255;200;11m@\u001b[38;2;255;228;12m#\u001b[38;2;255;141;9m#\u001b[38;2;79;58;34m:. \u001b[0m",
14
- " \u001b[38;2;255;25;5m+\u001b[38;2;255;200;11m#\u001b[38;2;255;228;12m#\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;200;11m#\u001b[38;2;255;141;9m*\u001b[38;2;39;33;36m. \u001b[0m",
15
- " \u001b[38;2;255;141;9m#\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;200;11m#\u001b[38;2;255;141;9m#\u001b[38;2;79;58;34m: \u001b[0m",
16
- ],
17
- [
18
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m::\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m.. \u001b[0m",
19
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m::\u001b[38;2;166;93;65m+++:\u001b[38;2;79;58;34m:. \u001b[0m",
20
- " \u001b[38;2;79;58;34m.:\u001b[38;2;166;93;65m:++++:\u001b[38;2;79;58;34m.. \u001b[0m",
21
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m**+\u001b[38;2;166;93;65m::\u001b[38;2;79;58;34m:. \u001b[0m",
22
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;25;5m++\u001b[38;2;255;141;9m**\u001b[38;2;255;25;5m*\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m::. \u001b[0m",
23
- " \u001b[38;2;39;33;36m.\u001b[38;2;255;141;9m#####*\u001b[38;2;255;25;5m*\u001b[38;2;166;93;65m: \u001b[0m",
24
- " \u001b[38;2;255;141;9m##\u001b[38;2;255;200;11m####\u001b[38;2;255;141;9m#*\u001b[38;2;166;93;65m:\u001b[38;2;39;33;36m. \u001b[0m",
25
- " \u001b[38;2;255;141;9m#\u001b[38;2;255;200;11m###@\u001b[38;2;255;228;12m@\u001b[38;2;255;200;11m#\u001b[38;2;255;141;9m#\u001b[38;2;255;83;7m*\u001b[38;2;39;33;36m. \u001b[0m",
26
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;141;9m#\u001b[38;2;255;200;11m#\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;200;11m#\u001b[38;2;255;141;9m#\u001b[38;2;255;83;7m* \u001b[0m",
27
- " \u001b[38;2;255;25;5m+\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;141;9m##\u001b[38;2;255;83;7m* \u001b[0m",
28
- ],
29
- [
30
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:::\u001b[38;2;79;58;34m::\u001b[38;2;39;33;36m. \u001b[0m",
31
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m::\u001b[38;2;166;93;65m:\u001b[38;2;255;27;13m++\u001b[38;2;166;93;65m::\u001b[38;2;79;58;34m. \u001b[0m",
32
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m::\u001b[38;2;255;27;13m++\u001b[38;2;166;93;65m::\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m. \u001b[0m",
33
- " \u001b[38;2;39;33;36m.\u001b[38;2;255;27;13m++\u001b[38;2;255;83;7m**\u001b[38;2;255;25;5m+\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m::\u001b[38;2;39;33;36m. \u001b[0m",
34
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m+\u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m*#\u001b[38;2;255;25;5m+\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m. \u001b[0m",
35
- " \u001b[38;2;255;25;5m+\u001b[38;2;255;141;9m#\u001b[38;2;255;200;11m#\u001b[38;2;255;141;9m###*\u001b[38;2;255;25;5m+\u001b[38;2;166;93;65m:\u001b[38;2;39;33;36m. \u001b[0m",
36
- " \u001b[38;2;255;141;9m*\u001b[38;2;255;200;11m#####\u001b[38;2;255;141;9m#\u001b[38;2;255;83;7m*\u001b[38;2;39;33;36m.. \u001b[0m",
37
- " \u001b[38;2;255;25;5m+\u001b[38;2;255;141;9m#\u001b[38;2;255;200;11m##\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;83;7m*\u001b[38;2;39;33;36m. \u001b[0m",
38
- " \u001b[38;2;39;33;36m.\u001b[38;2;255;141;9m*\u001b[38;2;255;200;11m#\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;141;9m*\u001b[38;2;255;83;7m* \u001b[0m",
39
- " \u001b[38;2;255;27;13m+\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;141;9m**\u001b[38;2;255;83;7m* \u001b[0m",
40
- ],
41
- [
42
- " \u001b[38;2;39;33;36m..\u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:::\u001b[38;2;79;58;34m:.\u001b[38;2;39;33;36m. \u001b[0m",
43
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m::\u001b[38;2;166;93;65m::+:\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m. \u001b[0m",
44
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m.\u001b[38;2;166;93;65m:\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m+\u001b[38;2;166;93;65m+:\u001b[38;2;79;58;34m:.\u001b[38;2;39;33;36m. \u001b[0m",
45
- " \u001b[38;2;79;58;34m.\u001b[38;2;166;93;65m++\u001b[38;2;255;83;7m**\u001b[38;2;255;25;5m+\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m..\u001b[38;2;39;33;36m. \u001b[0m",
46
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m++\u001b[38;2;255;141;9m*##\u001b[38;2;255;83;7m*\u001b[38;2;255;27;13m+\u001b[38;2;39;33;36m. \u001b[0m",
47
- " \u001b[38;2;255;141;9m#####**\u001b[38;2;255;25;5m+\u001b[38;2;166;93;65m: \u001b[0m",
48
- " \u001b[38;2;255;141;9m####\u001b[38;2;255;200;11m##\u001b[38;2;255;141;9m#\u001b[38;2;255;83;7m*\u001b[38;2;39;33;36m. \u001b[0m",
49
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;141;9m#\u001b[38;2;255;200;11m#@\u001b[38;2;255;228;12m@@@@\u001b[38;2;255;83;7m*\u001b[38;2;255;27;13m+ \u001b[0m",
50
- " \u001b[38;2;39;33;36m:\u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;83;7m** \u001b[0m",
51
- " \u001b[38;2;255;27;13m+\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;83;7m**\u001b[38;2;255;27;13m: \u001b[0m",
52
- ],
53
- [
54
- " \u001b[38;2;39;33;36m..\u001b[38;2;79;58;34m::\u001b[38;2;166;93;65m::\u001b[38;2;79;58;34m:: \u001b[0m",
55
- " \u001b[38;2;39;33;36m..\u001b[38;2;79;58;34m::\u001b[38;2;166;93;65m:::\u001b[38;2;79;58;34m: \u001b[0m",
56
- " \u001b[38;2;39;33;36m.\u001b[38;2;166;93;65m::\u001b[38;2;255;27;13m+++\u001b[38;2;79;58;34m: \u001b[0m",
57
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m++\u001b[38;2;255;83;7m**\u001b[38;2;255;25;5m+\u001b[38;2;166;93;65m:: \u001b[0m",
58
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m+\u001b[38;2;255;25;5m+\u001b[38;2;255;83;7m*****\u001b[38;2;39;33;36m. \u001b[0m",
59
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m####*\u001b[38;2;255;83;7m**\u001b[38;2;255;27;13m+ \u001b[0m",
60
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m######\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m*\u001b[38;2;39;33;36m. \u001b[0m",
61
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#\u001b[38;2;255;228;12m@@\u001b[38;2;255;255;255m@@\u001b[38;2;255;228;12m@\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m* \u001b[0m",
62
- " \u001b[38;2;255;25;5m+\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m* \u001b[0m",
63
- " \u001b[38;2;166;93;65m+\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;83;7m*\u001b[38;2;255;27;13m+ \u001b[0m",
64
- ],
65
- [
66
- " \u001b[38;2;39;33;36m..\u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m::\u001b[38;2;79;58;34m:: \u001b[0m",
67
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:::\u001b[38;2;79;58;34m:: \u001b[0m",
68
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m::\u001b[38;2;255;25;5m*\u001b[38;2;255;83;7m*\u001b[38;2;255;27;13m+\u001b[38;2;79;58;34m: \u001b[0m",
69
- " \u001b[38;2;166;93;65m::+\u001b[38;2;255;83;7m***\u001b[38;2;255;25;5m*\u001b[38;2;255;27;13m+ \u001b[0m",
70
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;83;7m*******\u001b[38;2;166;93;65m: \u001b[0m",
71
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m*##*\u001b[38;2;255;83;7m**\u001b[38;2;255;25;5m*\u001b[38;2;255;27;13m+ \u001b[0m",
72
- " \u001b[38;2;255;25;5m+\u001b[38;2;255;141;9m*###\u001b[38;2;255;200;11m##\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m*\u001b[38;2;39;33;36m. \u001b[0m",
73
- " \u001b[38;2;255;27;13m:\u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#\u001b[38;2;255;228;12m@@@@@\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m* \u001b[0m",
74
- " \u001b[38;2;255;141;9m#\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;200;11m#\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m* \u001b[0m",
75
- " \u001b[38;2;255;141;9m#\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;83;7m*\u001b[38;2;255;27;13m+ \u001b[0m",
76
- ],
77
- [
78
- " \u001b[38;2;79;58;34m.\u001b[38;2;166;93;65m:::\u001b[38;2;79;58;34m: \u001b[0m",
79
- " \u001b[38;2;166;93;65m::\u001b[38;2;255;27;13m++\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m: \u001b[0m",
80
- " \u001b[38;2;166;93;65m:::\u001b[38;2;255;25;5m+*\u001b[38;2;255;27;13m+\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m. \u001b[0m",
81
- " \u001b[38;2;166;93;65m::\u001b[38;2;255;25;5m+\u001b[38;2;255;83;7m***\u001b[38;2;255;25;5m++\u001b[38;2;39;33;36m. \u001b[0m",
82
- " \u001b[38;2;255;27;13m+\u001b[38;2;255;83;7m*****\u001b[38;2;255;25;5m*+\u001b[38;2;79;58;34m: \u001b[0m",
83
- " \u001b[38;2;255;83;7m*******\u001b[38;2;255;25;5m*\u001b[38;2;255;27;13m+ \u001b[0m",
84
- " \u001b[38;2;255;25;5m+\u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m#\u001b[38;2;255;200;11m##\u001b[38;2;255;141;9m###\u001b[38;2;255;25;5m*+ \u001b[0m",
85
- " \u001b[38;2;255;27;13m+\u001b[38;2;255;255;255m@@@\u001b[38;2;255;228;12m@@\u001b[38;2;255;200;11m#\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m+ \u001b[0m",
86
- " \u001b[38;2;255;141;9m#\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;200;11m@\u001b[38;2;255;25;5m*+ \u001b[0m",
87
- " \u001b[38;2;255;27;13m+\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;83;7m*\u001b[38;2;39;33;36m. \u001b[0m",
88
- ],
89
- [
90
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:\u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m.: \u001b[0m",
91
- " \u001b[38;2;79;58;34m.\u001b[38;2;166;93;65m::\u001b[38;2;255;25;5m**\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m: \u001b[0m",
92
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m::\u001b[38;2;255;25;5m*\u001b[38;2;255;83;7m**\u001b[38;2;255;25;5m+\u001b[38;2;166;93;65m+ \u001b[0m",
93
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m+\u001b[38;2;255;83;7m****\u001b[38;2;255;25;5m**\u001b[38;2;79;58;34m: \u001b[0m",
94
- " \u001b[38;2;255;83;7m+******\u001b[38;2;255;25;5m+\u001b[38;2;255;27;13m+ \u001b[0m",
95
- " \u001b[38;2;255;27;13m+\u001b[38;2;255;83;7m*******\u001b[38;2;255;25;5m+\u001b[38;2;166;93;65m: \u001b[0m",
96
- " \u001b[38;2;255;27;13m+\u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m###\u001b[38;2;255;200;11m###\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m+ \u001b[0m",
97
- " \u001b[38;2;255;27;13m+\u001b[38;2;255;228;12m@@@\u001b[38;2;255;200;11m@@@\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m+ \u001b[0m",
98
- " \u001b[38;2;255;141;9m#\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;200;11m@\u001b[38;2;255;27;13m+\u001b[38;2;39;33;36m. \u001b[0m",
99
- " \u001b[38;2;255;141;9m*\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;200;11m# \u001b[0m",
100
- ],
101
- [
102
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m::+:\u001b[38;2;79;58;34m: \u001b[0m",
103
- " \u001b[38;2;79;58;34m.:\u001b[38;2;166;93;65m:\u001b[38;2;255;25;5m++\u001b[38;2;166;93;65m+\u001b[38;2;79;58;34m.. \u001b[0m",
104
- " \u001b[38;2;79;58;34m.:\u001b[38;2;255;25;5m++**\u001b[38;2;166;93;65m+\u001b[38;2;255;27;13m+\u001b[38;2;39;33;36m. \u001b[0m",
105
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;25;5m*****++\u001b[38;2;166;93;65m: \u001b[0m",
106
- " \u001b[38;2;255;25;5m+\u001b[38;2;255;83;7m*****\u001b[38;2;255;25;5m++\u001b[38;2;166;93;65m: \u001b[0m",
107
- " \u001b[38;2;255;27;13m+\u001b[38;2;255;83;7m*******\u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m: \u001b[0m",
108
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;25;5m+\u001b[38;2;255;141;9m#\u001b[38;2;255;228;12m#\u001b[38;2;255;141;9m#\u001b[38;2;255;200;11m###\u001b[38;2;255;83;7m*\u001b[38;2;255;27;13m+ \u001b[0m",
109
- " \u001b[38;2;255;141;9m#\u001b[38;2;255;228;12m@@@@\u001b[38;2;255;200;11m##\u001b[38;2;255;83;7m*\u001b[38;2;255;27;13m+ \u001b[0m",
110
- " \u001b[38;2;255;141;9m#\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;200;11m#\u001b[38;2;255;27;13m+\u001b[38;2;39;33;36m. \u001b[0m",
111
- " \u001b[38;2;255;141;9m#\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;141;9m# \u001b[0m",
112
- ],
113
- [
114
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m::\u001b[38;2;166;93;65m:::\u001b[38;2;79;58;34m: \u001b[0m",
115
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m::\u001b[38;2;255;27;13m++\u001b[38;2;166;93;65m:\u001b[38;2;255;27;13m++\u001b[38;2;39;33;36m. \u001b[0m",
116
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m++\u001b[38;2;255;25;5m+**\u001b[38;2;166;93;65m++: \u001b[0m",
117
- " \u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m*****++\u001b[38;2;166;93;65m: \u001b[0m",
118
- " \u001b[38;2;255;25;5m******++\u001b[38;2;166;93;65m+\u001b[38;2;39;33;36m. \u001b[0m",
119
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;25;5m*\u001b[38;2;255;141;9m###*##\u001b[38;2;255;25;5m+\u001b[38;2;255;27;13m+ \u001b[0m",
120
- " \u001b[38;2;255;141;9m##\u001b[38;2;255;200;11m#####\u001b[38;2;255;25;5m*\u001b[38;2;255;27;13m+ \u001b[0m",
121
- " \u001b[38;2;255;141;9m#\u001b[38;2;255;200;11m#\u001b[38;2;255;228;12m@@@\u001b[38;2;255;200;11m##\u001b[38;2;255;27;13m++ \u001b[0m",
122
- " \u001b[38;2;255;141;9m*\u001b[38;2;255;200;11m#\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@\u001b[38;2;255;228;12m@\u001b[38;2;255;141;9m#\u001b[38;2;39;33;36m. \u001b[0m",
123
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;141;9m# \u001b[0m",
124
- ],
125
- [
126
- " \u001b[38;2;79;58;34m::\u001b[38;2;255;27;13m++\u001b[38;2;166;93;65m:\u001b[38;2;39;33;36m:\u001b[38;2;79;58;34m. \u001b[0m",
127
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m++\u001b[38;2;255;27;13m++\u001b[38;2;79;58;34m. \u001b[0m",
128
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m++++\u001b[38;2;255;27;13m++\u001b[38;2;166;93;65m: \u001b[0m",
129
- " \u001b[38;2;255;25;5m+*****+\u001b[38;2;166;93;65m+\u001b[38;2;255;27;13m+\u001b[38;2;39;33;36m. \u001b[0m",
130
- " \u001b[38;2;255;25;5m+*****++\u001b[38;2;255;27;13m+\u001b[38;2;39;33;36m. \u001b[0m",
131
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;25;5m+\u001b[38;2;255;83;7m***\u001b[38;2;255;141;9m###\u001b[38;2;255;25;5m+\u001b[38;2;255;27;13m+ \u001b[0m",
132
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m####\u001b[38;2;255;141;9m##\u001b[38;2;255;25;5m+\u001b[38;2;255;27;13m+ \u001b[0m",
133
- " \u001b[38;2;255;141;9m*\u001b[38;2;255;200;11m#\u001b[38;2;255;228;12m@@@@\u001b[38;2;255;141;9m#\u001b[38;2;255;27;13m+\u001b[38;2;39;33;36m. \u001b[0m",
134
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;228;12m@@\u001b[38;2;255;255;255m@@@\u001b[38;2;255;141;9m# \u001b[0m",
135
- " \u001b[38;2;255;27;13m+\u001b[38;2;255;255;255m@@@@@@\u001b[38;2;255;27;13m+ \u001b[0m",
136
- ],
137
- [
138
- " \u001b[38;2;79;58;34m::\u001b[38;2;255;27;13m++\u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m+\u001b[38;2;255;27;13m+\u001b[38;2;39;33;36m. \u001b[0m",
139
- " \u001b[38;2;39;33;36m.\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m+++\u001b[38;2;166;93;65m+\u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m: \u001b[0m",
140
- " \u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m+++++\u001b[38;2;255;27;13m++\u001b[38;2;166;93;65m: \u001b[0m",
141
- " \u001b[38;2;255;25;5m+++++++\u001b[38;2;255;27;13m++\u001b[38;2;39;33;36m. \u001b[0m",
142
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;25;5m+++++++\u001b[38;2;166;93;65m:: \u001b[0m",
143
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m+\u001b[38;2;255;83;7m***\u001b[38;2;255;141;9m###*\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m: \u001b[0m",
144
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m######*\u001b[38;2;166;93;65m:\u001b[38;2;39;33;36m. \u001b[0m",
145
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#\u001b[38;2;255;228;12m@@@#\u001b[38;2;255;141;9m#\u001b[38;2;255;25;5m* \u001b[0m",
146
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;228;12m@@\u001b[38;2;255;255;255m@@@\u001b[38;2;255;200;11m#\u001b[38;2;166;93;65m: \u001b[0m",
147
- " \u001b[38;2;255;27;13m+\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;27;13m+ \u001b[0m",
148
- ],
149
- [
150
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m++\u001b[38;2;166;93;65m::\u001b[38;2;255;27;13m:\u001b[38;2;39;33;36m. \u001b[0m",
151
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;27;13m+++++\u001b[38;2;166;93;65m:\u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m: \u001b[0m",
152
- " \u001b[38;2;166;93;65m+\u001b[38;2;255;27;13m+++\u001b[38;2;166;93;65m+\u001b[38;2;255;25;5m+\u001b[38;2;255;27;13m++\u001b[38;2;166;93;65m:\u001b[38;2;39;33;36m. \u001b[0m",
153
- " \u001b[38;2;255;27;13m+++\u001b[38;2;255;25;5m+++\u001b[38;2;255;27;13m++\u001b[38;2;166;93;65m:\u001b[38;2;39;33;36m. \u001b[0m",
154
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;27;13m+++\u001b[38;2;255;25;5m+\u001b[38;2;255;27;13m+++\u001b[38;2;166;93;65m:: \u001b[0m",
155
- " \u001b[38;2;255;83;7m**\u001b[38;2;255;141;9m*#####\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m. \u001b[0m",
156
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m*\u001b[38;2;255;200;11m@@\u001b[38;2;255;141;9m###\u001b[38;2;255;83;7m*\u001b[38;2;166;93;65m:\u001b[38;2;39;33;36m. \u001b[0m",
157
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m#\u001b[38;2;255;200;11m@\u001b[38;2;255;228;12m@\u001b[38;2;255;200;11m@@\u001b[38;2;255;141;9m#\u001b[38;2;255;25;5m* \u001b[0m",
158
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@\u001b[38;2;255;200;11m#\u001b[38;2;166;93;65m: \u001b[0m",
159
- " \u001b[38;2;255;27;13m+\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;83;7m* \u001b[0m",
160
- ],
161
- [
162
- " \u001b[38;2;39;33;36m.\u001b[38;2;166;93;65m:\u001b[38;2;255;27;13m+++\u001b[38;2;166;93;65m::\u001b[38;2;79;58;34m: \u001b[0m",
163
- " \u001b[38;2;255;27;13m++++++\u001b[38;2;166;93;65m++\u001b[38;2;79;58;34m: \u001b[0m",
164
- " \u001b[38;2;255;27;13m+++++++\u001b[38;2;166;93;65m++\u001b[38;2;39;33;36m. \u001b[0m",
165
- " \u001b[38;2;255;27;13m++++++++\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m. \u001b[0m",
166
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m*\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m*\u001b[38;2;255;83;7m***\u001b[38;2;255;25;5m+\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m. \u001b[0m",
167
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;25;5m+\u001b[38;2;255;83;7m**\u001b[38;2;255;141;9m****\u001b[38;2;255;83;7m*\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m. \u001b[0m",
168
- " \u001b[38;2;255;83;7m**\u001b[38;2;255;200;11m###\u001b[38;2;255;141;9m**\u001b[38;2;255;83;7m*\u001b[38;2;79;58;34m: \u001b[0m",
169
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m#\u001b[38;2;255;200;11m####\u001b[38;2;255;83;7m*\u001b[38;2;166;93;65m: \u001b[0m",
170
- " \u001b[38;2;255;27;13m+\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;141;9m#\u001b[38;2;166;93;65m: \u001b[0m",
171
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;83;7m* \u001b[0m",
172
- ],
173
- [
174
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m+++++\u001b[38;2;166;93;65m::\u001b[38;2;79;58;34m: \u001b[0m",
175
- " \u001b[38;2;255;27;13m+++++++\u001b[38;2;166;93;65m::\u001b[38;2;39;33;36m. \u001b[0m",
176
- " \u001b[38;2;255;27;13m+++++++\u001b[38;2;166;93;65m::\u001b[38;2;39;33;36m. \u001b[0m",
177
- " \u001b[38;2;255;27;13m++++++++\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m: \u001b[0m",
178
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m***\u001b[38;2;255;83;7m***\u001b[38;2;255;25;5m+\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m. \u001b[0m",
179
- " \u001b[38;2;39;33;36m.\u001b[38;2;255;83;7m***\u001b[38;2;255;141;9m*\u001b[38;2;255;83;7m****\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m. \u001b[0m",
180
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;83;7m**\u001b[38;2;255;200;11m####\u001b[38;2;255;83;7m** \u001b[0m",
181
- " \u001b[38;2;39;33;36m.\u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#####\u001b[38;2;255;83;7m*\u001b[38;2;166;93;65m: \u001b[0m",
182
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;141;9m#\u001b[38;2;255;27;13m+\u001b[38;2;79;58;34m. \u001b[0m",
183
- " \u001b[38;2;255;27;13m+\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;25;5m*\u001b[38;2;166;93;65m+ \u001b[0m",
184
- ],
185
- [
186
- " \u001b[38;2;166;93;65m+++++:\u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m::\u001b[38;2;39;33;36m. \u001b[0m",
187
- " \u001b[38;2;166;93;65m+++++\u001b[38;2;255;27;13m++\u001b[38;2;166;93;65m::\u001b[38;2;79;58;34m: \u001b[0m",
188
- " \u001b[38;2;166;93;65m:++\u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m+++:\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m. \u001b[0m",
189
- " \u001b[38;2;166;93;65m:++++\u001b[38;2;255;25;5m*\u001b[38;2;166;93;65m++:\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m. \u001b[0m",
190
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m+\u001b[38;2;255;25;5m*+*\u001b[38;2;255;83;7m****\u001b[38;2;255;25;5m+\u001b[38;2;39;33;36m. \u001b[0m",
191
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;25;5m+*\u001b[38;2;255;200;11m##\u001b[38;2;255;141;9m*\u001b[38;2;255;83;7m***\u001b[38;2;166;93;65m: \u001b[0m",
192
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;25;5m*\u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m####\u001b[38;2;255;83;7m** \u001b[0m",
193
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m##@\u001b[38;2;255;228;12m@@\u001b[38;2;255;141;9m*\u001b[38;2;166;93;65m: \u001b[0m",
194
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;27;13m+\u001b[38;2;79;58;34m. \u001b[0m",
195
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;25;5m+\u001b[38;2;166;93;65m: \u001b[0m",
196
- ],
197
- [
198
- " \u001b[38;2;166;93;65m::+:+:+\u001b[38;2;79;58;34m::: \u001b[0m",
199
- " \u001b[38;2;166;93;65m:::++++\u001b[38;2;79;58;34m::: \u001b[0m",
200
- " \u001b[38;2;166;93;65m::++++::\u001b[38;2;79;58;34m:.\u001b[38;2;39;33;36m. \u001b[0m",
201
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:\u001b[38;2;255;25;5m+++*\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m**\u001b[38;2;166;93;65m:\u001b[38;2;39;33;36m. \u001b[0m",
202
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;25;5m++*\u001b[38;2;255;83;7m*****\u001b[38;2;255;27;13m+\u001b[38;2;39;33;36m. \u001b[0m",
203
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;25;5m+*\u001b[38;2;255;141;9m####\u001b[38;2;255;83;7m**\u001b[38;2;166;93;65m: \u001b[0m",
204
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;25;5m*\u001b[38;2;255;141;9m#####\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m+ \u001b[0m",
205
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m#\u001b[38;2;255;200;11m#\u001b[38;2;255;228;12m@@\u001b[38;2;255;200;11m@\u001b[38;2;255;83;7m*\u001b[38;2;79;58;34m: \u001b[0m",
206
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;25;5m*\u001b[38;2;166;93;65m: \u001b[0m",
207
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;255;255m@@@@@@\u001b[38;2;255;25;5m*\u001b[38;2;166;93;65m: \u001b[0m",
208
- ],
209
- [
210
- " \u001b[38;2;166;93;65m:::::::\u001b[38;2;79;58;34m::. \u001b[0m",
211
- " \u001b[38;2;166;93;65m::::::::\u001b[38;2;79;58;34m. \u001b[0m",
212
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:+++\u001b[38;2;255;25;5m++\u001b[38;2;166;93;65m:: \u001b[0m",
213
- " \u001b[38;2;79;58;34m.\u001b[38;2;166;93;65m:++\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m****\u001b[38;2;255;27;13m+ \u001b[0m",
214
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;27;13m++\u001b[38;2;255;25;5m+****** \u001b[0m",
215
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;25;5m+*\u001b[38;2;255;141;9m###*\u001b[38;2;255;25;5m**\u001b[38;2;166;93;65m: \u001b[0m",
216
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;25;5m+\u001b[38;2;255;141;9m####*\u001b[38;2;255;25;5m*+ \u001b[0m",
217
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;25;5m+\u001b[38;2;255;141;9m#\u001b[38;2;255;255;255m@@\u001b[38;2;255;228;12m@\u001b[38;2;255;200;11m@\u001b[38;2;255;83;7m*\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m. \u001b[0m",
218
- " \u001b[38;2;255;25;5m+\u001b[38;2;255;200;11m#\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;200;11m@\u001b[38;2;255;25;5m*\u001b[38;2;166;93;65m: \u001b[0m",
219
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;255;255m@@@@@@\u001b[38;2;255;25;5m*\u001b[38;2;166;93;65m: \u001b[0m",
220
- ],
221
- [
222
- " \u001b[38;2;166;93;65m:::::::\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m. \u001b[0m",
223
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m::::::\u001b[38;2;79;58;34m:. \u001b[0m",
224
- " \u001b[38;2;79;58;34m.:\u001b[38;2;255;27;13m+++\u001b[38;2;255;25;5m+\u001b[38;2;255;27;13m+\u001b[38;2;79;58;34m:: \u001b[0m",
225
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;27;13m++\u001b[38;2;255;25;5m++****\u001b[38;2;255;27;13m+ \u001b[0m",
226
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;27;13m++\u001b[38;2;255;25;5m*\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m****+ \u001b[0m",
227
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m+\u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m####\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m+\u001b[38;2;166;93;65m: \u001b[0m",
228
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m+\u001b[38;2;255;141;9m*#\u001b[38;2;255;200;11m###\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m* \u001b[0m",
229
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m*\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@\u001b[38;2;255;200;11m##\u001b[38;2;255;25;5m*\u001b[38;2;79;58;34m: \u001b[0m",
230
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;25;5m+\u001b[38;2;166;93;65m: \u001b[0m",
231
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;255;255m@@@@@@\u001b[38;2;166;93;65m:: \u001b[0m",
232
- ],
233
- [
234
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m::::::\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m. \u001b[0m",
235
- " \u001b[38;2;79;58;34m::\u001b[38;2;166;93;65m:::\u001b[38;2;255;27;13m++\u001b[38;2;79;58;34m:: \u001b[0m",
236
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m++++\u001b[38;2;255;25;5m+++\u001b[38;2;166;93;65m: \u001b[0m",
237
- " \u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m+\u001b[38;2;255;25;5m++++++\u001b[38;2;255;27;13m+ \u001b[0m",
238
- " \u001b[38;2;79;58;34m.\u001b[38;2;166;93;65m++\u001b[38;2;255;25;5m*\u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m*\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m++\u001b[38;2;255;27;13m+ \u001b[0m",
239
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m+\u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m***\u001b[38;2;255;83;7m**\u001b[38;2;255;25;5m+ \u001b[0m",
240
- " \u001b[38;2;39;33;36m.\u001b[38;2;255;27;13m+\u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m#\u001b[38;2;255;200;11m###\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m+ \u001b[0m",
241
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m#\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@\u001b[38;2;255;228;12m@\u001b[38;2;255;200;11m@#\u001b[38;2;255;25;5m+\u001b[38;2;166;93;65m: \u001b[0m",
242
- " \u001b[38;2;255;25;5m*\u001b[38;2;255;200;11m#\u001b[38;2;255;255;255m@@@\u001b[38;2;255;228;12m@@\u001b[38;2;255;25;5m+\u001b[38;2;166;93;65m: \u001b[0m",
243
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;228;12m@@\u001b[38;2;255;255;255m@@@@\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m. \u001b[0m",
244
- ],
245
- [
246
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m::::::::\u001b[38;2;39;33;36m. \u001b[0m",
247
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:++\u001b[38;2;255;27;13m++\u001b[38;2;79;58;34m:.\u001b[38;2;39;33;36m. \u001b[0m",
248
- " \u001b[38;2;166;93;65m:+++\u001b[38;2;255;27;13m+++\u001b[38;2;255;25;5m++ \u001b[0m",
249
- " \u001b[38;2;166;93;65m:++\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m+++++ \u001b[0m",
250
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;27;13m++\u001b[38;2;255;83;7m****\u001b[38;2;255;25;5m+\u001b[38;2;255;27;13m++ \u001b[0m",
251
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m+\u001b[38;2;255;83;7m*****\u001b[38;2;255;25;5m+\u001b[38;2;255;27;13m+ \u001b[0m",
252
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;25;5m*\u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m#\u001b[38;2;255;228;12m#@\u001b[38;2;255;141;9m#\u001b[38;2;255;25;5m*+\u001b[38;2;79;58;34m. \u001b[0m",
253
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;25;5m*\u001b[38;2;255;200;11m#\u001b[38;2;255;255;255m@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;141;9m#\u001b[38;2;255;25;5m+\u001b[38;2;79;58;34m: \u001b[0m",
254
- " \u001b[38;2;255;25;5m*\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;25;5m+\u001b[38;2;79;58;34m: \u001b[0m",
255
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;228;12m@@\u001b[38;2;255;255;255m@@@@ \u001b[0m",
256
- ],
257
- [
258
- " \u001b[38;2;39;33;36m.\u001b[38;2;166;93;65m:::::\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m.. \u001b[0m",
259
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:::\u001b[38;2;255;27;13m++\u001b[38;2;166;93;65m+\u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m: \u001b[0m",
260
- " \u001b[38;2;166;93;65m::\u001b[38;2;255;27;13m++++\u001b[38;2;166;93;65m+\u001b[38;2;255;27;13m++ \u001b[0m",
261
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:+\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m+\u001b[38;2;255;27;13m++++ \u001b[0m",
262
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:+\u001b[38;2;255;83;7m****\u001b[38;2;255;25;5m+\u001b[38;2;166;93;65m+\u001b[38;2;255;27;13m: \u001b[0m",
263
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m*\u001b[38;2;255;83;7m**\u001b[38;2;255;141;9m##\u001b[38;2;255;25;5m+\u001b[38;2;255;27;13m+ \u001b[0m",
264
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;25;5m*\u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m#\u001b[38;2;255;200;11m##\u001b[38;2;255;141;9m#*\u001b[38;2;255;27;13m+\u001b[38;2;79;58;34m. \u001b[0m",
265
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;25;5m*\u001b[38;2;255;141;9m#\u001b[38;2;255;255;255m@@@\u001b[38;2;255;228;12m#\u001b[38;2;255;200;11m#\u001b[38;2;255;25;5m*\u001b[38;2;79;58;34m. \u001b[0m",
266
- " \u001b[38;2;255;25;5m+\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@@\u001b[38;2;166;93;65m:\u001b[38;2;39;33;36m. \u001b[0m",
267
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@@ \u001b[0m",
268
- ],
269
- [
270
- " \u001b[38;2;79;58;34m.\u001b[38;2;166;93;65m:::++\u001b[38;2;79;58;34m: \u001b[0m",
271
- " \u001b[38;2;166;93;65m::\u001b[38;2;255;27;13m+++\u001b[38;2;166;93;65m+\u001b[38;2;255;27;13m+++ \u001b[0m",
272
- " \u001b[38;2;166;93;65m::\u001b[38;2;255;27;13m++\u001b[38;2;166;93;65m+\u001b[38;2;255;27;13m++++ \u001b[0m",
273
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:\u001b[38;2;255;25;5m+\u001b[38;2;255;83;7m***\u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m++ \u001b[0m",
274
- " \u001b[38;2;79;58;34m.\u001b[38;2;166;93;65m::\u001b[38;2;255;83;7m****\u001b[38;2;255;25;5m+\u001b[38;2;255;27;13m+\u001b[38;2;79;58;34m: \u001b[0m",
275
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:\u001b[38;2;255;25;5m+\u001b[38;2;255;83;7m**\u001b[38;2;255;141;9m##*\u001b[38;2;255;27;13m+ \u001b[0m",
276
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;25;5m+\u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m#\u001b[38;2;255;200;11m#@\u001b[38;2;255;141;9m##\u001b[38;2;255;25;5m+ \u001b[0m",
277
- " \u001b[38;2;255;25;5m+\u001b[38;2;255;200;11m#\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;200;11m@\u001b[38;2;255;141;9m# \u001b[0m",
278
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m@\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;25;5m+ \u001b[0m",
279
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m@\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;228;12m@ \u001b[0m",
280
- ],
281
- [
282
- " \u001b[38;2;79;58;34m.\u001b[38;2;166;93;65m::::::+: \u001b[0m",
283
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:+++\u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m++\u001b[38;2;255;27;13m+ \u001b[0m",
284
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m::\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m*+\u001b[38;2;166;93;65m+++: \u001b[0m",
285
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:\u001b[38;2;255;83;7m****\u001b[38;2;166;93;65m++: \u001b[0m",
286
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:\u001b[38;2;255;27;13m+\u001b[38;2;255;83;7m****\u001b[38;2;166;93;65m+:\u001b[38;2;79;58;34m: \u001b[0m",
287
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;25;5m+\u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m*##\u001b[38;2;255;83;7m**\u001b[38;2;255;27;13m+ \u001b[0m",
288
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;25;5m+\u001b[38;2;255;141;9m*#\u001b[38;2;255;200;11m###\u001b[38;2;255;141;9m*\u001b[38;2;255;83;7m* \u001b[0m",
289
- " \u001b[38;2;255;25;5m+\u001b[38;2;255;141;9m#\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;200;11m#\u001b[38;2;255;83;7m* \u001b[0m",
290
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;83;7m* \u001b[0m",
291
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;200;11m#\u001b[38;2;166;93;65m: \u001b[0m",
292
- ],
293
- [
294
- " \u001b[38;2;79;58;34m::::\u001b[38;2;166;93;65m:+:+: \u001b[0m",
295
- " \u001b[38;2;79;58;34m::\u001b[38;2;166;93;65m++:+++: \u001b[0m",
296
- " \u001b[38;2;79;58;34m.:\u001b[38;2;166;93;65m+\u001b[38;2;255;25;5m**+\u001b[38;2;166;93;65m+:: \u001b[0m",
297
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:\u001b[38;2;255;25;5m****\u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m: \u001b[0m",
298
- " \u001b[38;2;39;33;36m.\u001b[38;2;166;93;65m:+\u001b[38;2;255;25;5m****+\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m. \u001b[0m",
299
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m*\u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m##\u001b[38;2;255;83;7m**\u001b[38;2;255;25;5m+ \u001b[0m",
300
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;25;5m*\u001b[38;2;255;83;7m**\u001b[38;2;255;200;11m###\u001b[38;2;255;141;9m*\u001b[38;2;255;83;7m* \u001b[0m",
301
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;25;5m*\u001b[38;2;255;200;11m#\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@\u001b[38;2;255;200;11m#\u001b[38;2;255;83;7m* \u001b[0m",
302
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;83;7m* \u001b[0m",
303
- " \u001b[38;2;166;93;65m+\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;200;11m#\u001b[38;2;166;93;65m: \u001b[0m",
304
- ],
305
- [
306
- " \u001b[38;2;79;58;34m.:\u001b[38;2;166;93;65m::::::: \u001b[0m",
307
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m.\u001b[38;2;166;93;65m:\u001b[38;2;255;25;5m+\u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m:::: \u001b[0m",
308
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m.:\u001b[38;2;255;25;5m+*+*\u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m:: \u001b[0m",
309
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m****\u001b[38;2;166;93;65m++\u001b[38;2;79;58;34m: \u001b[0m",
310
- " \u001b[38;2;39;33;36m.\u001b[38;2;166;93;65m:\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m**\u001b[38;2;255;83;7m***\u001b[38;2;166;93;65m+\u001b[38;2;79;58;34m: \u001b[0m",
311
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m+\u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m##\u001b[38;2;255;141;9m*\u001b[38;2;255;83;7m** \u001b[0m",
312
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;25;5m*\u001b[38;2;255;83;7m*\u001b[38;2;255;228;12m#\u001b[38;2;255;200;11m####\u001b[38;2;255;83;7m* \u001b[0m",
313
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@\u001b[38;2;255;228;12m@@\u001b[38;2;255;83;7m* \u001b[0m",
314
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;228;12m@@\u001b[38;2;255;255;255m@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;83;7m* \u001b[0m",
315
- " \u001b[38;2;255;27;13m:\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;200;11m#\u001b[38;2;166;93;65m: \u001b[0m",
316
- ],
317
- [
318
- " \u001b[38;2;79;58;34m..\u001b[38;2;166;93;65m::::::: \u001b[0m",
319
- " \u001b[38;2;39;33;36m..\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m+++\u001b[38;2;166;93;65m::: \u001b[0m",
320
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m.\u001b[38;2;166;93;65m+\u001b[38;2;255;25;5m++++\u001b[38;2;255;27;13m+\u001b[38;2;79;58;34m:: \u001b[0m",
321
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m+\u001b[38;2;255;25;5m+++\u001b[38;2;166;93;65m++:\u001b[38;2;79;58;34m. \u001b[0m",
322
- " \u001b[38;2;39;33;36m.\u001b[38;2;166;93;65m:+\u001b[38;2;255;25;5m++***\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m. \u001b[0m",
323
- " \u001b[38;2;39;33;36m.\u001b[38;2;255;27;13m+\u001b[38;2;255;83;7m**\u001b[38;2;255;141;9m##*\u001b[38;2;255;83;7m*\u001b[38;2;255;25;5m+ \u001b[0m",
324
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;27;13m+\u001b[38;2;255;141;9m*\u001b[38;2;255;200;11m#\u001b[38;2;255;141;9m#\u001b[38;2;255;200;11m#\u001b[38;2;255;141;9m##\u001b[38;2;255;25;5m* \u001b[0m",
325
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#\u001b[38;2;255;228;12m@@@@@\u001b[38;2;255;25;5m* \u001b[0m",
326
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;25;5m+ \u001b[0m",
327
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;228;12m@\u001b[38;2;79;58;34m. \u001b[0m",
328
- ],
329
- [
330
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m++\u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m::: \u001b[0m",
331
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;25;5m++++\u001b[38;2;255;27;13m:\u001b[38;2;79;58;34m:: \u001b[0m",
332
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m++++\u001b[38;2;166;93;65m::\u001b[38;2;39;33;36m. \u001b[0m",
333
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m++\u001b[38;2;255;25;5m+++\u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m. \u001b[0m",
334
- " \u001b[38;2;255;27;13m++\u001b[38;2;255;25;5m+\u001b[38;2;255;83;7m**\u001b[38;2;255;25;5m*+\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m. \u001b[0m",
335
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m*\u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m###*\u001b[38;2;255;25;5m* \u001b[0m",
336
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m+\u001b[38;2;255;141;9m*\u001b[38;2;255;200;11m#####\u001b[38;2;255;25;5m* \u001b[0m",
337
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m#\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@\u001b[38;2;255;200;11m#\u001b[38;2;255;141;9m# \u001b[0m",
338
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@\u001b[38;2;255;200;11m#\u001b[38;2;255;25;5m+ \u001b[0m",
339
- " \u001b[38;2;255;25;5m*\u001b[38;2;255;255;255m@@@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;27;13m+ \u001b[0m",
340
- ],
341
- [
342
- " \u001b[38;2;39;33;36m.\u001b[38;2;166;93;65m:+\u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m+\u001b[38;2;79;58;34m::: \u001b[0m",
343
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m+\u001b[38;2;255;27;13m+\u001b[38;2;166;93;65m+++\u001b[38;2;79;58;34m:: \u001b[0m",
344
- " \u001b[38;2;79;58;34m.\u001b[38;2;166;93;65m:++++::\u001b[38;2;79;58;34m. \u001b[0m",
345
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:++\u001b[38;2;255;25;5m+++\u001b[38;2;166;93;65m:\u001b[38;2;79;58;34m: \u001b[0m",
346
- " \u001b[38;2;79;58;34m.\u001b[38;2;166;93;65m+\u001b[38;2;255;25;5m++\u001b[38;2;255;83;7m**\u001b[38;2;255;25;5m++\u001b[38;2;255;27;13m+ \u001b[0m",
347
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m+\u001b[38;2;255;25;5m*\u001b[38;2;255;141;9m*###*\u001b[38;2;255;25;5m+ \u001b[0m",
348
- " \u001b[38;2;79;58;34m:\u001b[38;2;255;25;5m*\u001b[38;2;255;200;11m##\u001b[38;2;255;228;12m@@\u001b[38;2;255;200;11m#@\u001b[38;2;255;83;7m* \u001b[0m",
349
- " \u001b[38;2;255;25;5m*\u001b[38;2;255;200;11m##\u001b[38;2;255;255;255m@@@\u001b[38;2;255;200;11m@\u001b[38;2;255;83;7m* \u001b[0m",
350
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m#\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@\u001b[38;2;255;141;9m#\u001b[38;2;166;93;65m: \u001b[0m",
351
- " \u001b[38;2;166;93;65m+\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;228;12m@\u001b[38;2;255;27;13m+ \u001b[0m",
352
- ],
353
- [
354
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;27;13m++++\u001b[38;2;39;33;36m.. \u001b[0m",
355
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;255;27;13m+++++\u001b[38;2;79;58;34m:\u001b[38;2;39;33;36m. \u001b[0m",
356
- " \u001b[38;2;79;58;34m.:\u001b[38;2;255;27;13m+++++\u001b[38;2;79;58;34m:. \u001b[0m",
357
- " \u001b[38;2;39;33;36m.\u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:\u001b[38;2;255;27;13m+\u001b[38;2;255;25;5m+*\u001b[38;2;255;27;13m++\u001b[38;2;79;58;34m:. \u001b[0m",
358
- " \u001b[38;2;79;58;34m:\u001b[38;2;166;93;65m:\u001b[38;2;255;27;13m++\u001b[38;2;255;83;7m*\u001b[38;2;255;141;9m*\u001b[38;2;255;25;5m+\u001b[38;2;255;27;13m++ \u001b[0m",
359
- " \u001b[38;2;79;58;34m.\u001b[38;2;255;27;13m+\u001b[38;2;255;141;9m**##**\u001b[38;2;255;25;5m+\u001b[38;2;39;33;36m. \u001b[0m",
360
- " \u001b[38;2;255;25;5m*\u001b[38;2;255;200;11m##\u001b[38;2;255;228;12m#@\u001b[38;2;255;200;11m##\u001b[38;2;255;83;7m* \u001b[0m",
361
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;200;11m##\u001b[38;2;255;255;255m@@\u001b[38;2;255;228;12m@\u001b[38;2;255;200;11m#\u001b[38;2;255;83;7m* \u001b[0m",
362
- " \u001b[38;2;255;83;7m*\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;141;9m#\u001b[38;2;79;58;34m: \u001b[0m",
363
- " \u001b[38;2;166;93;65m:\u001b[38;2;255;228;12m@\u001b[38;2;255;255;255m@@@@\u001b[38;2;255;200;11m#\u001b[38;2;255;27;13m+ \u001b[0m",
364
- ],
365
- ] as const;
366
- export const FLAME_FRAME_COUNT = FRAMES.length;
367
-
368
- const ESC = String.fromCharCode(27);
369
- const RESET = `${ESC}[0m`;
370
- const ANSI_RE = new RegExp(`${ESC}\\[[0-9;]*m`, "y");
371
-
372
- type Cell = { char: string; style: string };
373
-
374
- interface ScaledFrameCache {
375
- height: number;
376
- frames: string[][];
377
- width?: number;
378
- }
379
-
380
- let scaledFrameCache: ScaledFrameCache | undefined;
381
- const ANSI_GLOBAL = new RegExp(`${ESC}\\[[0-9;]*m`, "g");
382
-
383
- export function flameFrameLines(height: number, frameIndex: number): string[] {
384
- const frames = scaledFrames(height);
385
- const index = Number.isFinite(frameIndex) ? Math.floor(frameIndex) : 0;
386
- return frames[positiveModulo(index, frames.length)];
387
- }
388
-
389
- export function flameFrameWidth(height: number): number {
390
- const cache = scaledFrameCacheFor(height);
391
- if (cache.width !== undefined) return cache.width;
392
- cache.width = Math.max(
393
- ...cache.frames.flatMap((frame) =>
394
- frame.map((line) => line.replace(ANSI_GLOBAL, "").trimEnd().length),
395
- ),
396
- );
397
- return cache.width;
398
- }
399
-
400
- export function flameFrameCacheSize() {
401
- return scaledFrameCache ? 1 : 0;
402
- }
403
-
404
- function scaledFrames(height: number) {
405
- return scaledFrameCacheFor(height).frames;
406
- }
407
-
408
- function scaledFrameCacheFor(height: number) {
409
- const targetHeight = normalizeHeight(height);
410
- if (scaledFrameCache?.height === targetHeight) return scaledFrameCache;
411
- scaledFrameCache = {
412
- height: targetHeight,
413
- frames: FRAMES.map((frame) => scaleFrame(frame, targetHeight)),
414
- };
415
- return scaledFrameCache;
416
- }
417
-
418
- function normalizeHeight(height: number) {
419
- return Number.isFinite(height) ? Math.max(1, Math.floor(height)) : 1;
420
- }
421
-
422
- function lineCells(line: string): Cell[] {
423
- const cells: Cell[] = [];
424
- let style = "";
425
- for (let i = 0; i < line.length; ) {
426
- ANSI_RE.lastIndex = i;
427
- const ansi = ANSI_RE.exec(line);
428
- if (ansi) {
429
- style = ansi[0] === RESET ? "" : ansi[0];
430
- i = ANSI_RE.lastIndex;
431
- continue;
432
- }
433
- cells.push({ char: line[i], style });
434
- i += 1;
435
- }
436
- return cells;
437
- }
438
-
439
- function scaleFrame(frame: readonly string[], targetHeight: number): string[] {
440
- const rows = frame.map(lineCells);
441
- const scale = targetHeight / rows.length;
442
- const sourceWidth = Math.max(...rows.map((row) => row.length));
443
- const targetWidth = Math.ceil(sourceWidth * scale);
444
-
445
- return Array.from({ length: targetHeight }, (_, y) => {
446
- const sourceRow = rows[Math.floor(y / scale)];
447
- const cells = Array.from({ length: targetWidth }, (_, x) => {
448
- const cell = sourceRow[Math.floor(x / scale)];
449
- return cell ? `${cell.style}${cell.char}` : " ";
450
- });
451
- // 行尾空白格裁掉:可见宽度必须与 flameFrameWidth(trimEnd 计宽)一致,
452
- // 否则窄屏适配按小宽度放行、实际渲染却溢出。
453
- while (cells.length > 0 && (cells.at(-1) as string).endsWith(" ")) cells.pop();
454
- return `${cells.join("")}${RESET}`;
455
- });
456
- }
457
-
458
- function positiveModulo(value: number, modulo: number) {
459
- return ((value % modulo) + modulo) % modulo;
460
- }
package/format.ts DELETED
@@ -1,80 +0,0 @@
1
- /** 宽度、文本与数值格式化:状态栏与工具行共用。 */
2
- import { visibleWidth } from "@earendil-works/pi-tui";
3
-
4
- const ELLIPSIS = "…";
5
- const segmenter = new Intl.Segmenter(undefined, { granularity: "grapheme" });
6
-
7
- /** 压平换行与连续空白,用于把任意文本塞进单行 UI。 */
8
- export function oneLine(value = ""): string {
9
- return value
10
- .replace(/[\r\n\t]+/g, " ")
11
- .replace(/ {2,}/g, " ")
12
- .trim();
13
- }
14
-
15
- export type ClipSide = "start" | "end";
16
-
17
- /**
18
- * 按显示宽度截断,保留完整字素簇。
19
- * `from: "end"` 保留头部(命令),`from: "start"` 保留尾部(路径 basename)。
20
- */
21
- export function clip(
22
- text: string,
23
- width: number,
24
- from: ClipSide = "end",
25
- ellipsis: string = ELLIPSIS,
26
- ): string {
27
- if (width <= 0) return "";
28
- if (visibleWidth(text) <= width) return text;
29
- const target = Math.max(0, width - visibleWidth(ellipsis));
30
- const segments = [...segmenter.segment(text)].map((entry) => entry.segment);
31
- let output = "";
32
- let used = 0;
33
- if (from === "start") {
34
- for (let index = segments.length - 1; index >= 0; index--) {
35
- const segmentWidth = visibleWidth(segments[index]);
36
- if (used + segmentWidth > target) break;
37
- output = segments[index] + output;
38
- used += segmentWidth;
39
- }
40
- return ellipsis + output;
41
- }
42
- for (const segment of segments) {
43
- const segmentWidth = visibleWidth(segment);
44
- if (used + segmentWidth > target) break;
45
- output += segment;
46
- used += segmentWidth;
47
- }
48
- return output + ellipsis;
49
- }
50
-
51
- /** 1234 → 1.2k,1_500_000 → 1.5M;0 与 undefined 显示为 ?。 */
52
- export function formatTokens(tokens: number): string {
53
- if (tokens >= 1_000_000) {
54
- const value = tokens / 1_000_000;
55
- return value >= 10 ? `${Math.round(value)}M` : `${value.toFixed(1)}M`;
56
- }
57
- if (tokens >= 1_000) {
58
- const value = tokens / 1_000;
59
- return value >= 10 ? `${Math.round(value)}k` : `${value.toFixed(1)}k`;
60
- }
61
- return tokens ? `${tokens}` : "?";
62
- }
63
-
64
- /** 900 → 0.9s,12_400 → 12s,93_000 → 1m33s。 */
65
- export function formatDuration(milliseconds: number): string {
66
- if (milliseconds < 10_000) return `${(milliseconds / 1_000).toFixed(1)}s`;
67
- const totalSeconds = Math.round(milliseconds / 1_000);
68
- if (totalSeconds < 60) return `${totalSeconds}s`;
69
- const minutes = Math.floor(totalSeconds / 60);
70
- const seconds = totalSeconds % 60;
71
- return seconds ? `${minutes}m${seconds}s` : `${minutes}m`;
72
- }
73
-
74
- /** 去掉模型 id 的 provider 前缀与日期后缀。 */
75
- export function formatModelName(id: string | undefined): string {
76
- if (!id) return "no-model";
77
- return (id.split("/").pop() ?? id)
78
- .replace(/-\d{8}$/, "")
79
- .replace(/-\d{4}-\d{2}-\d{2}$/, "");
80
- }