groove-dev 0.26.15 → 0.26.17

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 (976) hide show
  1. package/node_modules/@groove-dev/daemon/src/index.js +34 -4
  2. package/node_modules/@groove-dev/daemon/src/process.js +62 -1
  3. package/node_modules/@groove-dev/gui/dist/assets/index-DAy5FSuv.css +1 -0
  4. package/node_modules/@groove-dev/gui/dist/assets/index-GisjgmsR.js +638 -0
  5. package/node_modules/@groove-dev/gui/dist/index.html +2 -2
  6. package/node_modules/@groove-dev/gui/src/app.css +16 -0
  7. package/node_modules/@groove-dev/gui/src/components/agents/agent-chat.jsx +2 -1
  8. package/node_modules/@groove-dev/gui/src/components/agents/agent-feed.jsx +2 -12
  9. package/node_modules/@groove-dev/gui/src/components/ui/thinking-indicator.jsx +49 -0
  10. package/node_modules/@groove-dev/gui/src/stores/groove.js +37 -14
  11. package/node_modules/@groove-dev/gui/src/views/agents.jsx +4 -2
  12. package/package.json +1 -1
  13. package/packages/daemon/src/index.js +34 -4
  14. package/packages/daemon/src/process.js +62 -1
  15. package/packages/gui/dist/assets/index-DAy5FSuv.css +1 -0
  16. package/packages/gui/dist/assets/index-GisjgmsR.js +638 -0
  17. package/packages/gui/dist/index.html +2 -2
  18. package/packages/gui/src/app.css +16 -0
  19. package/packages/gui/src/components/agents/agent-chat.jsx +2 -1
  20. package/packages/gui/src/components/agents/agent-feed.jsx +2 -12
  21. package/packages/gui/src/components/ui/thinking-indicator.jsx +49 -0
  22. package/packages/gui/src/stores/groove.js +37 -14
  23. package/packages/gui/src/views/agents.jsx +4 -2
  24. package/pitch-deck-groove/convert-slides.js +795 -0
  25. package/pitch-deck-groove/deck.pptx +0 -0
  26. package/pitch-deck-groove/node_modules/.package-lock.json +755 -0
  27. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/.github/workflows/codeql.yml +74 -0
  28. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/CHANGELOG.md +510 -0
  29. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/LICENSE +27 -0
  30. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/README.md +742 -0
  31. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/bin/node-pre-gyp +4 -0
  32. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/bin/node-pre-gyp.cmd +2 -0
  33. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/contributing.md +10 -0
  34. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/build.js +51 -0
  35. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/clean.js +31 -0
  36. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/configure.js +52 -0
  37. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/info.js +38 -0
  38. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/install.js +235 -0
  39. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/main.js +125 -0
  40. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/node-pre-gyp.js +309 -0
  41. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/package.js +73 -0
  42. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/pre-binding.js +34 -0
  43. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/publish.js +81 -0
  44. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/rebuild.js +20 -0
  45. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/reinstall.js +19 -0
  46. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/reveal.js +32 -0
  47. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/testbinary.js +79 -0
  48. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/testpackage.js +53 -0
  49. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/unpublish.js +41 -0
  50. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/util/abi_crosswalk.json +2602 -0
  51. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/util/compile.js +93 -0
  52. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/util/handle_gyp_opts.js +102 -0
  53. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/util/napi.js +205 -0
  54. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/index.html +26 -0
  55. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/package.json +9 -0
  56. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/util/s3_setup.js +163 -0
  57. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/util/versioning.js +335 -0
  58. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/package.json +62 -0
  59. package/pitch-deck-groove/node_modules/@types/node/LICENSE +21 -0
  60. package/pitch-deck-groove/node_modules/@types/node/README.md +15 -0
  61. package/pitch-deck-groove/node_modules/@types/node/assert/strict.d.ts +8 -0
  62. package/pitch-deck-groove/node_modules/@types/node/assert.d.ts +1005 -0
  63. package/pitch-deck-groove/node_modules/@types/node/async_hooks.d.ts +586 -0
  64. package/pitch-deck-groove/node_modules/@types/node/buffer.buffer.d.ts +457 -0
  65. package/pitch-deck-groove/node_modules/@types/node/buffer.d.ts +1901 -0
  66. package/pitch-deck-groove/node_modules/@types/node/child_process.d.ts +1453 -0
  67. package/pitch-deck-groove/node_modules/@types/node/cluster.d.ts +578 -0
  68. package/pitch-deck-groove/node_modules/@types/node/compatibility/disposable.d.ts +14 -0
  69. package/pitch-deck-groove/node_modules/@types/node/compatibility/index.d.ts +9 -0
  70. package/pitch-deck-groove/node_modules/@types/node/compatibility/indexable.d.ts +20 -0
  71. package/pitch-deck-groove/node_modules/@types/node/compatibility/iterators.d.ts +20 -0
  72. package/pitch-deck-groove/node_modules/@types/node/console.d.ts +452 -0
  73. package/pitch-deck-groove/node_modules/@types/node/constants.d.ts +21 -0
  74. package/pitch-deck-groove/node_modules/@types/node/crypto.d.ts +4504 -0
  75. package/pitch-deck-groove/node_modules/@types/node/dgram.d.ts +596 -0
  76. package/pitch-deck-groove/node_modules/@types/node/diagnostics_channel.d.ts +551 -0
  77. package/pitch-deck-groove/node_modules/@types/node/dns/promises.d.ts +477 -0
  78. package/pitch-deck-groove/node_modules/@types/node/dns.d.ts +860 -0
  79. package/pitch-deck-groove/node_modules/@types/node/domain.d.ts +170 -0
  80. package/pitch-deck-groove/node_modules/@types/node/events.d.ts +863 -0
  81. package/pitch-deck-groove/node_modules/@types/node/fs/promises.d.ts +1208 -0
  82. package/pitch-deck-groove/node_modules/@types/node/fs.d.ts +4332 -0
  83. package/pitch-deck-groove/node_modules/@types/node/globals.d.ts +170 -0
  84. package/pitch-deck-groove/node_modules/@types/node/globals.typedarray.d.ts +21 -0
  85. package/pitch-deck-groove/node_modules/@types/node/http.d.ts +1919 -0
  86. package/pitch-deck-groove/node_modules/@types/node/http2.d.ts +2580 -0
  87. package/pitch-deck-groove/node_modules/@types/node/https.d.ts +549 -0
  88. package/pitch-deck-groove/node_modules/@types/node/index.d.ts +92 -0
  89. package/pitch-deck-groove/node_modules/@types/node/inspector.generated.d.ts +2775 -0
  90. package/pitch-deck-groove/node_modules/@types/node/module.d.ts +503 -0
  91. package/pitch-deck-groove/node_modules/@types/node/net.d.ts +924 -0
  92. package/pitch-deck-groove/node_modules/@types/node/os.d.ts +480 -0
  93. package/pitch-deck-groove/node_modules/@types/node/package.json +145 -0
  94. package/pitch-deck-groove/node_modules/@types/node/path.d.ts +191 -0
  95. package/pitch-deck-groove/node_modules/@types/node/perf_hooks.d.ts +860 -0
  96. package/pitch-deck-groove/node_modules/@types/node/process.d.ts +1632 -0
  97. package/pitch-deck-groove/node_modules/@types/node/punycode.d.ts +117 -0
  98. package/pitch-deck-groove/node_modules/@types/node/querystring.d.ts +140 -0
  99. package/pitch-deck-groove/node_modules/@types/node/readline/promises.d.ts +154 -0
  100. package/pitch-deck-groove/node_modules/@types/node/readline.d.ts +715 -0
  101. package/pitch-deck-groove/node_modules/@types/node/repl.d.ts +430 -0
  102. package/pitch-deck-groove/node_modules/@types/node/stream/consumers.d.ts +38 -0
  103. package/pitch-deck-groove/node_modules/@types/node/stream/promises.d.ts +90 -0
  104. package/pitch-deck-groove/node_modules/@types/node/stream/web.d.ts +527 -0
  105. package/pitch-deck-groove/node_modules/@types/node/stream.d.ts +1680 -0
  106. package/pitch-deck-groove/node_modules/@types/node/string_decoder.d.ts +67 -0
  107. package/pitch-deck-groove/node_modules/@types/node/test.d.ts +1208 -0
  108. package/pitch-deck-groove/node_modules/@types/node/timers/promises.d.ts +108 -0
  109. package/pitch-deck-groove/node_modules/@types/node/timers.d.ts +286 -0
  110. package/pitch-deck-groove/node_modules/@types/node/tls.d.ts +1204 -0
  111. package/pitch-deck-groove/node_modules/@types/node/trace_events.d.ts +171 -0
  112. package/pitch-deck-groove/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +455 -0
  113. package/pitch-deck-groove/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +19 -0
  114. package/pitch-deck-groove/node_modules/@types/node/ts5.6/index.d.ts +92 -0
  115. package/pitch-deck-groove/node_modules/@types/node/tty.d.ts +206 -0
  116. package/pitch-deck-groove/node_modules/@types/node/url.d.ts +957 -0
  117. package/pitch-deck-groove/node_modules/@types/node/util.d.ts +2083 -0
  118. package/pitch-deck-groove/node_modules/@types/node/v8.d.ts +753 -0
  119. package/pitch-deck-groove/node_modules/@types/node/vm.d.ts +704 -0
  120. package/pitch-deck-groove/node_modules/@types/node/wasi.d.ts +160 -0
  121. package/pitch-deck-groove/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
  122. package/pitch-deck-groove/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  123. package/pitch-deck-groove/node_modules/@types/node/web-globals/events.d.ts +81 -0
  124. package/pitch-deck-groove/node_modules/@types/node/web-globals/fetch.d.ts +38 -0
  125. package/pitch-deck-groove/node_modules/@types/node/worker_threads.d.ts +698 -0
  126. package/pitch-deck-groove/node_modules/@types/node/zlib.d.ts +517 -0
  127. package/pitch-deck-groove/node_modules/abbrev/LICENSE +46 -0
  128. package/pitch-deck-groove/node_modules/abbrev/README.md +23 -0
  129. package/pitch-deck-groove/node_modules/abbrev/abbrev.js +61 -0
  130. package/pitch-deck-groove/node_modules/abbrev/package.json +21 -0
  131. package/pitch-deck-groove/node_modules/agent-base/README.md +145 -0
  132. package/pitch-deck-groove/node_modules/agent-base/dist/src/index.d.ts +78 -0
  133. package/pitch-deck-groove/node_modules/agent-base/dist/src/index.js +203 -0
  134. package/pitch-deck-groove/node_modules/agent-base/dist/src/index.js.map +1 -0
  135. package/pitch-deck-groove/node_modules/agent-base/dist/src/promisify.d.ts +4 -0
  136. package/pitch-deck-groove/node_modules/agent-base/dist/src/promisify.js +18 -0
  137. package/pitch-deck-groove/node_modules/agent-base/dist/src/promisify.js.map +1 -0
  138. package/pitch-deck-groove/node_modules/agent-base/package.json +64 -0
  139. package/pitch-deck-groove/node_modules/agent-base/src/index.ts +345 -0
  140. package/pitch-deck-groove/node_modules/agent-base/src/promisify.ts +33 -0
  141. package/pitch-deck-groove/node_modules/ansi-regex/index.d.ts +37 -0
  142. package/pitch-deck-groove/node_modules/ansi-regex/index.js +10 -0
  143. package/pitch-deck-groove/node_modules/ansi-regex/license +9 -0
  144. package/pitch-deck-groove/node_modules/ansi-regex/package.json +55 -0
  145. package/pitch-deck-groove/node_modules/ansi-regex/readme.md +78 -0
  146. package/pitch-deck-groove/node_modules/aproba/LICENSE +14 -0
  147. package/pitch-deck-groove/node_modules/aproba/README.md +94 -0
  148. package/pitch-deck-groove/node_modules/aproba/index.js +105 -0
  149. package/pitch-deck-groove/node_modules/aproba/package.json +35 -0
  150. package/pitch-deck-groove/node_modules/are-we-there-yet/LICENSE.md +18 -0
  151. package/pitch-deck-groove/node_modules/are-we-there-yet/README.md +208 -0
  152. package/pitch-deck-groove/node_modules/are-we-there-yet/lib/index.js +4 -0
  153. package/pitch-deck-groove/node_modules/are-we-there-yet/lib/tracker-base.js +11 -0
  154. package/pitch-deck-groove/node_modules/are-we-there-yet/lib/tracker-group.js +116 -0
  155. package/pitch-deck-groove/node_modules/are-we-there-yet/lib/tracker-stream.js +36 -0
  156. package/pitch-deck-groove/node_modules/are-we-there-yet/lib/tracker.js +32 -0
  157. package/pitch-deck-groove/node_modules/are-we-there-yet/package.json +53 -0
  158. package/pitch-deck-groove/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  159. package/pitch-deck-groove/node_modules/balanced-match/LICENSE.md +21 -0
  160. package/pitch-deck-groove/node_modules/balanced-match/README.md +97 -0
  161. package/pitch-deck-groove/node_modules/balanced-match/index.js +62 -0
  162. package/pitch-deck-groove/node_modules/balanced-match/package.json +48 -0
  163. package/pitch-deck-groove/node_modules/brace-expansion/LICENSE +21 -0
  164. package/pitch-deck-groove/node_modules/brace-expansion/README.md +129 -0
  165. package/pitch-deck-groove/node_modules/brace-expansion/index.js +203 -0
  166. package/pitch-deck-groove/node_modules/brace-expansion/package.json +50 -0
  167. package/pitch-deck-groove/node_modules/canvas/CHANGELOG.md +1052 -0
  168. package/pitch-deck-groove/node_modules/canvas/Readme.md +600 -0
  169. package/pitch-deck-groove/node_modules/canvas/binding.gyp +230 -0
  170. package/pitch-deck-groove/node_modules/canvas/browser.js +35 -0
  171. package/pitch-deck-groove/node_modules/canvas/build/Makefile +352 -0
  172. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/canvas-postbuild.node.d +1 -0
  173. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/canvas.node.d +1 -0
  174. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/Backends.o.d +490 -0
  175. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/Canvas.o.d +503 -0
  176. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasGradient.o.d +474 -0
  177. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasPattern.o.d +485 -0
  178. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasRenderingContext2d.o.d +496 -0
  179. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/Image.o.d +484 -0
  180. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/ImageData.o.d +152 -0
  181. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/backend/Backend.o.d +162 -0
  182. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/backend/ImageBackend.o.d +164 -0
  183. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/backend/PdfBackend.o.d +488 -0
  184. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/backend/SvgBackend.o.d +488 -0
  185. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/bmp/BMPParser.o.d +5 -0
  186. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/closure.o.d +483 -0
  187. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/color.o.d +4 -0
  188. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/init.o.d +520 -0
  189. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/register_font.o.d +357 -0
  190. package/pitch-deck-groove/node_modules/canvas/build/Release/canvas-postbuild.node +0 -0
  191. package/pitch-deck-groove/node_modules/canvas/build/Release/canvas.node +0 -0
  192. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/Backends.o +0 -0
  193. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/Canvas.o +0 -0
  194. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/CanvasGradient.o +0 -0
  195. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/CanvasPattern.o +0 -0
  196. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/CanvasRenderingContext2d.o +0 -0
  197. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/Image.o +0 -0
  198. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/ImageData.o +0 -0
  199. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/backend/Backend.o +0 -0
  200. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/backend/ImageBackend.o +0 -0
  201. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/backend/PdfBackend.o +0 -0
  202. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/backend/SvgBackend.o +0 -0
  203. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/bmp/BMPParser.o +0 -0
  204. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/closure.o +0 -0
  205. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/color.o +0 -0
  206. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/init.o +0 -0
  207. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/register_font.o +0 -0
  208. package/pitch-deck-groove/node_modules/canvas/build/binding.Makefile +6 -0
  209. package/pitch-deck-groove/node_modules/canvas/build/canvas-postbuild.target.mk +51 -0
  210. package/pitch-deck-groove/node_modules/canvas/build/canvas.target.mk +272 -0
  211. package/pitch-deck-groove/node_modules/canvas/build/gyp-mac-tool +772 -0
  212. package/pitch-deck-groove/node_modules/canvas/changes +19 -0
  213. package/pitch-deck-groove/node_modules/canvas/index.js +94 -0
  214. package/pitch-deck-groove/node_modules/canvas/lib/DOMMatrix.js +620 -0
  215. package/pitch-deck-groove/node_modules/canvas/lib/bindings.js +13 -0
  216. package/pitch-deck-groove/node_modules/canvas/lib/canvas.js +113 -0
  217. package/pitch-deck-groove/node_modules/canvas/lib/context2d.js +14 -0
  218. package/pitch-deck-groove/node_modules/canvas/lib/image.js +96 -0
  219. package/pitch-deck-groove/node_modules/canvas/lib/jpegstream.js +41 -0
  220. package/pitch-deck-groove/node_modules/canvas/lib/parse-font.js +101 -0
  221. package/pitch-deck-groove/node_modules/canvas/lib/pattern.js +17 -0
  222. package/pitch-deck-groove/node_modules/canvas/lib/pdfstream.js +35 -0
  223. package/pitch-deck-groove/node_modules/canvas/lib/pngstream.js +42 -0
  224. package/pitch-deck-groove/node_modules/canvas/package.json +72 -0
  225. package/pitch-deck-groove/node_modules/canvas/src/Backends.cc +18 -0
  226. package/pitch-deck-groove/node_modules/canvas/src/Backends.h +10 -0
  227. package/pitch-deck-groove/node_modules/canvas/src/Canvas.cc +965 -0
  228. package/pitch-deck-groove/node_modules/canvas/src/Canvas.h +96 -0
  229. package/pitch-deck-groove/node_modules/canvas/src/CanvasError.h +23 -0
  230. package/pitch-deck-groove/node_modules/canvas/src/CanvasGradient.cc +123 -0
  231. package/pitch-deck-groove/node_modules/canvas/src/CanvasGradient.h +22 -0
  232. package/pitch-deck-groove/node_modules/canvas/src/CanvasPattern.cc +136 -0
  233. package/pitch-deck-groove/node_modules/canvas/src/CanvasPattern.h +37 -0
  234. package/pitch-deck-groove/node_modules/canvas/src/CanvasRenderingContext2d.cc +3360 -0
  235. package/pitch-deck-groove/node_modules/canvas/src/CanvasRenderingContext2d.h +225 -0
  236. package/pitch-deck-groove/node_modules/canvas/src/Image.cc +1434 -0
  237. package/pitch-deck-groove/node_modules/canvas/src/Image.h +127 -0
  238. package/pitch-deck-groove/node_modules/canvas/src/ImageData.cc +146 -0
  239. package/pitch-deck-groove/node_modules/canvas/src/ImageData.h +27 -0
  240. package/pitch-deck-groove/node_modules/canvas/src/InstanceData.h +8 -0
  241. package/pitch-deck-groove/node_modules/canvas/src/JPEGStream.h +167 -0
  242. package/pitch-deck-groove/node_modules/canvas/src/PNG.h +292 -0
  243. package/pitch-deck-groove/node_modules/canvas/src/Point.h +11 -0
  244. package/pitch-deck-groove/node_modules/canvas/src/Util.h +9 -0
  245. package/pitch-deck-groove/node_modules/canvas/src/backend/Backend.cc +112 -0
  246. package/pitch-deck-groove/node_modules/canvas/src/backend/Backend.h +69 -0
  247. package/pitch-deck-groove/node_modules/canvas/src/backend/ImageBackend.cc +74 -0
  248. package/pitch-deck-groove/node_modules/canvas/src/backend/ImageBackend.h +26 -0
  249. package/pitch-deck-groove/node_modules/canvas/src/backend/PdfBackend.cc +53 -0
  250. package/pitch-deck-groove/node_modules/canvas/src/backend/PdfBackend.h +24 -0
  251. package/pitch-deck-groove/node_modules/canvas/src/backend/SvgBackend.cc +61 -0
  252. package/pitch-deck-groove/node_modules/canvas/src/backend/SvgBackend.h +24 -0
  253. package/pitch-deck-groove/node_modules/canvas/src/bmp/BMPParser.cc +457 -0
  254. package/pitch-deck-groove/node_modules/canvas/src/bmp/BMPParser.h +60 -0
  255. package/pitch-deck-groove/node_modules/canvas/src/bmp/LICENSE.md +24 -0
  256. package/pitch-deck-groove/node_modules/canvas/src/closure.cc +26 -0
  257. package/pitch-deck-groove/node_modules/canvas/src/closure.h +81 -0
  258. package/pitch-deck-groove/node_modules/canvas/src/color.cc +779 -0
  259. package/pitch-deck-groove/node_modules/canvas/src/color.h +30 -0
  260. package/pitch-deck-groove/node_modules/canvas/src/dll_visibility.h +20 -0
  261. package/pitch-deck-groove/node_modules/canvas/src/init.cc +94 -0
  262. package/pitch-deck-groove/node_modules/canvas/src/register_font.cc +408 -0
  263. package/pitch-deck-groove/node_modules/canvas/src/register_font.h +7 -0
  264. package/pitch-deck-groove/node_modules/canvas/types/Readme.md +3 -0
  265. package/pitch-deck-groove/node_modules/canvas/types/index.d.ts +484 -0
  266. package/pitch-deck-groove/node_modules/canvas/util/has_lib.js +119 -0
  267. package/pitch-deck-groove/node_modules/canvas/util/win_jpeg_lookup.js +21 -0
  268. package/pitch-deck-groove/node_modules/chownr/LICENSE +15 -0
  269. package/pitch-deck-groove/node_modules/chownr/README.md +3 -0
  270. package/pitch-deck-groove/node_modules/chownr/chownr.js +167 -0
  271. package/pitch-deck-groove/node_modules/chownr/package.json +32 -0
  272. package/pitch-deck-groove/node_modules/color-support/LICENSE +15 -0
  273. package/pitch-deck-groove/node_modules/color-support/README.md +129 -0
  274. package/pitch-deck-groove/node_modules/color-support/bin.js +3 -0
  275. package/pitch-deck-groove/node_modules/color-support/browser.js +14 -0
  276. package/pitch-deck-groove/node_modules/color-support/index.js +134 -0
  277. package/pitch-deck-groove/node_modules/color-support/package.json +36 -0
  278. package/pitch-deck-groove/node_modules/concat-map/.travis.yml +4 -0
  279. package/pitch-deck-groove/node_modules/concat-map/LICENSE +18 -0
  280. package/pitch-deck-groove/node_modules/concat-map/README.markdown +62 -0
  281. package/pitch-deck-groove/node_modules/concat-map/example/map.js +6 -0
  282. package/pitch-deck-groove/node_modules/concat-map/index.js +13 -0
  283. package/pitch-deck-groove/node_modules/concat-map/package.json +43 -0
  284. package/pitch-deck-groove/node_modules/concat-map/test/map.js +39 -0
  285. package/pitch-deck-groove/node_modules/console-control-strings/LICENSE +13 -0
  286. package/pitch-deck-groove/node_modules/console-control-strings/README.md +145 -0
  287. package/pitch-deck-groove/node_modules/console-control-strings/README.md~ +140 -0
  288. package/pitch-deck-groove/node_modules/console-control-strings/index.js +125 -0
  289. package/pitch-deck-groove/node_modules/console-control-strings/package.json +27 -0
  290. package/pitch-deck-groove/node_modules/core-util-is/LICENSE +19 -0
  291. package/pitch-deck-groove/node_modules/core-util-is/README.md +3 -0
  292. package/pitch-deck-groove/node_modules/core-util-is/lib/util.js +107 -0
  293. package/pitch-deck-groove/node_modules/core-util-is/package.json +38 -0
  294. package/pitch-deck-groove/node_modules/debug/LICENSE +20 -0
  295. package/pitch-deck-groove/node_modules/debug/README.md +481 -0
  296. package/pitch-deck-groove/node_modules/debug/package.json +64 -0
  297. package/pitch-deck-groove/node_modules/debug/src/browser.js +272 -0
  298. package/pitch-deck-groove/node_modules/debug/src/common.js +292 -0
  299. package/pitch-deck-groove/node_modules/debug/src/index.js +10 -0
  300. package/pitch-deck-groove/node_modules/debug/src/node.js +263 -0
  301. package/pitch-deck-groove/node_modules/decompress-response/index.d.ts +29 -0
  302. package/pitch-deck-groove/node_modules/decompress-response/index.js +40 -0
  303. package/pitch-deck-groove/node_modules/decompress-response/license +9 -0
  304. package/pitch-deck-groove/node_modules/decompress-response/package.json +50 -0
  305. package/pitch-deck-groove/node_modules/decompress-response/readme.md +52 -0
  306. package/pitch-deck-groove/node_modules/delegates/History.md +22 -0
  307. package/pitch-deck-groove/node_modules/delegates/License +20 -0
  308. package/pitch-deck-groove/node_modules/delegates/Makefile +8 -0
  309. package/pitch-deck-groove/node_modules/delegates/Readme.md +94 -0
  310. package/pitch-deck-groove/node_modules/delegates/index.js +121 -0
  311. package/pitch-deck-groove/node_modules/delegates/package.json +13 -0
  312. package/pitch-deck-groove/node_modules/delegates/test/index.js +94 -0
  313. package/pitch-deck-groove/node_modules/detect-libc/LICENSE +201 -0
  314. package/pitch-deck-groove/node_modules/detect-libc/README.md +163 -0
  315. package/pitch-deck-groove/node_modules/detect-libc/index.d.ts +14 -0
  316. package/pitch-deck-groove/node_modules/detect-libc/lib/detect-libc.js +313 -0
  317. package/pitch-deck-groove/node_modules/detect-libc/lib/elf.js +39 -0
  318. package/pitch-deck-groove/node_modules/detect-libc/lib/filesystem.js +51 -0
  319. package/pitch-deck-groove/node_modules/detect-libc/lib/process.js +24 -0
  320. package/pitch-deck-groove/node_modules/detect-libc/package.json +44 -0
  321. package/pitch-deck-groove/node_modules/emoji-regex/LICENSE-MIT.txt +20 -0
  322. package/pitch-deck-groove/node_modules/emoji-regex/README.md +73 -0
  323. package/pitch-deck-groove/node_modules/emoji-regex/es2015/index.js +6 -0
  324. package/pitch-deck-groove/node_modules/emoji-regex/es2015/text.js +6 -0
  325. package/pitch-deck-groove/node_modules/emoji-regex/index.d.ts +23 -0
  326. package/pitch-deck-groove/node_modules/emoji-regex/index.js +6 -0
  327. package/pitch-deck-groove/node_modules/emoji-regex/package.json +50 -0
  328. package/pitch-deck-groove/node_modules/emoji-regex/text.js +6 -0
  329. package/pitch-deck-groove/node_modules/fs-minipass/LICENSE +15 -0
  330. package/pitch-deck-groove/node_modules/fs-minipass/README.md +70 -0
  331. package/pitch-deck-groove/node_modules/fs-minipass/index.js +422 -0
  332. package/pitch-deck-groove/node_modules/fs-minipass/node_modules/minipass/LICENSE +15 -0
  333. package/pitch-deck-groove/node_modules/fs-minipass/node_modules/minipass/README.md +728 -0
  334. package/pitch-deck-groove/node_modules/fs-minipass/node_modules/minipass/index.d.ts +155 -0
  335. package/pitch-deck-groove/node_modules/fs-minipass/node_modules/minipass/index.js +649 -0
  336. package/pitch-deck-groove/node_modules/fs-minipass/node_modules/minipass/package.json +56 -0
  337. package/pitch-deck-groove/node_modules/fs-minipass/package.json +39 -0
  338. package/pitch-deck-groove/node_modules/fs.realpath/LICENSE +43 -0
  339. package/pitch-deck-groove/node_modules/fs.realpath/README.md +33 -0
  340. package/pitch-deck-groove/node_modules/fs.realpath/index.js +66 -0
  341. package/pitch-deck-groove/node_modules/fs.realpath/old.js +303 -0
  342. package/pitch-deck-groove/node_modules/fs.realpath/package.json +26 -0
  343. package/pitch-deck-groove/node_modules/gauge/CHANGELOG.md +163 -0
  344. package/pitch-deck-groove/node_modules/gauge/LICENSE +13 -0
  345. package/pitch-deck-groove/node_modules/gauge/README.md +402 -0
  346. package/pitch-deck-groove/node_modules/gauge/base-theme.js +14 -0
  347. package/pitch-deck-groove/node_modules/gauge/error.js +24 -0
  348. package/pitch-deck-groove/node_modules/gauge/has-color.js +4 -0
  349. package/pitch-deck-groove/node_modules/gauge/index.js +233 -0
  350. package/pitch-deck-groove/node_modules/gauge/package.json +66 -0
  351. package/pitch-deck-groove/node_modules/gauge/plumbing.js +48 -0
  352. package/pitch-deck-groove/node_modules/gauge/process.js +3 -0
  353. package/pitch-deck-groove/node_modules/gauge/progress-bar.js +35 -0
  354. package/pitch-deck-groove/node_modules/gauge/render-template.js +178 -0
  355. package/pitch-deck-groove/node_modules/gauge/set-immediate.js +7 -0
  356. package/pitch-deck-groove/node_modules/gauge/set-interval.js +3 -0
  357. package/pitch-deck-groove/node_modules/gauge/spin.js +5 -0
  358. package/pitch-deck-groove/node_modules/gauge/template-item.js +72 -0
  359. package/pitch-deck-groove/node_modules/gauge/theme-set.js +114 -0
  360. package/pitch-deck-groove/node_modules/gauge/themes.js +56 -0
  361. package/pitch-deck-groove/node_modules/gauge/wide-truncate.js +25 -0
  362. package/pitch-deck-groove/node_modules/glob/LICENSE +21 -0
  363. package/pitch-deck-groove/node_modules/glob/README.md +378 -0
  364. package/pitch-deck-groove/node_modules/glob/common.js +238 -0
  365. package/pitch-deck-groove/node_modules/glob/glob.js +790 -0
  366. package/pitch-deck-groove/node_modules/glob/package.json +55 -0
  367. package/pitch-deck-groove/node_modules/glob/sync.js +486 -0
  368. package/pitch-deck-groove/node_modules/has-unicode/LICENSE +14 -0
  369. package/pitch-deck-groove/node_modules/has-unicode/README.md +43 -0
  370. package/pitch-deck-groove/node_modules/has-unicode/index.js +16 -0
  371. package/pitch-deck-groove/node_modules/has-unicode/package.json +30 -0
  372. package/pitch-deck-groove/node_modules/https/package.json +15 -0
  373. package/pitch-deck-groove/node_modules/https-proxy-agent/README.md +137 -0
  374. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/agent.d.ts +30 -0
  375. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/agent.js +177 -0
  376. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/agent.js.map +1 -0
  377. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/index.d.ts +23 -0
  378. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/index.js +14 -0
  379. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/index.js.map +1 -0
  380. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +7 -0
  381. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/parse-proxy-response.js +66 -0
  382. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +1 -0
  383. package/pitch-deck-groove/node_modules/https-proxy-agent/package.json +56 -0
  384. package/pitch-deck-groove/node_modules/image-size/LICENSE +9 -0
  385. package/pitch-deck-groove/node_modules/image-size/Readme.md +184 -0
  386. package/pitch-deck-groove/node_modules/image-size/bin/image-size.js +53 -0
  387. package/pitch-deck-groove/node_modules/image-size/dist/detector.d.ts +2 -0
  388. package/pitch-deck-groove/node_modules/image-size/dist/detector.js +30 -0
  389. package/pitch-deck-groove/node_modules/image-size/dist/index.d.ts +10 -0
  390. package/pitch-deck-groove/node_modules/image-size/dist/index.js +129 -0
  391. package/pitch-deck-groove/node_modules/image-size/dist/types/bmp.d.ts +2 -0
  392. package/pitch-deck-groove/node_modules/image-size/dist/types/bmp.js +11 -0
  393. package/pitch-deck-groove/node_modules/image-size/dist/types/cur.d.ts +2 -0
  394. package/pitch-deck-groove/node_modules/image-size/dist/types/cur.js +17 -0
  395. package/pitch-deck-groove/node_modules/image-size/dist/types/dds.d.ts +2 -0
  396. package/pitch-deck-groove/node_modules/image-size/dist/types/dds.js +11 -0
  397. package/pitch-deck-groove/node_modules/image-size/dist/types/gif.d.ts +2 -0
  398. package/pitch-deck-groove/node_modules/image-size/dist/types/gif.js +12 -0
  399. package/pitch-deck-groove/node_modules/image-size/dist/types/heif.d.ts +2 -0
  400. package/pitch-deck-groove/node_modules/image-size/dist/types/heif.js +40 -0
  401. package/pitch-deck-groove/node_modules/image-size/dist/types/icns.d.ts +2 -0
  402. package/pitch-deck-groove/node_modules/image-size/dist/types/icns.js +101 -0
  403. package/pitch-deck-groove/node_modules/image-size/dist/types/ico.d.ts +2 -0
  404. package/pitch-deck-groove/node_modules/image-size/dist/types/ico.js +68 -0
  405. package/pitch-deck-groove/node_modules/image-size/dist/types/index.d.ts +23 -0
  406. package/pitch-deck-groove/node_modules/image-size/dist/types/index.js +46 -0
  407. package/pitch-deck-groove/node_modules/image-size/dist/types/interface.d.ts +13 -0
  408. package/pitch-deck-groove/node_modules/image-size/dist/types/interface.js +2 -0
  409. package/pitch-deck-groove/node_modules/image-size/dist/types/j2c.d.ts +2 -0
  410. package/pitch-deck-groove/node_modules/image-size/dist/types/j2c.js +12 -0
  411. package/pitch-deck-groove/node_modules/image-size/dist/types/jp2.d.ts +2 -0
  412. package/pitch-deck-groove/node_modules/image-size/dist/types/jp2.js +27 -0
  413. package/pitch-deck-groove/node_modules/image-size/dist/types/jpg.d.ts +2 -0
  414. package/pitch-deck-groove/node_modules/image-size/dist/types/jpg.js +123 -0
  415. package/pitch-deck-groove/node_modules/image-size/dist/types/jxl-stream.d.ts +2 -0
  416. package/pitch-deck-groove/node_modules/image-size/dist/types/jxl-stream.js +45 -0
  417. package/pitch-deck-groove/node_modules/image-size/dist/types/jxl.d.ts +2 -0
  418. package/pitch-deck-groove/node_modules/image-size/dist/types/jxl.js +59 -0
  419. package/pitch-deck-groove/node_modules/image-size/dist/types/ktx.d.ts +2 -0
  420. package/pitch-deck-groove/node_modules/image-size/dist/types/ktx.js +19 -0
  421. package/pitch-deck-groove/node_modules/image-size/dist/types/png.d.ts +2 -0
  422. package/pitch-deck-groove/node_modules/image-size/dist/types/png.js +35 -0
  423. package/pitch-deck-groove/node_modules/image-size/dist/types/pnm.d.ts +2 -0
  424. package/pitch-deck-groove/node_modules/image-size/dist/types/pnm.js +72 -0
  425. package/pitch-deck-groove/node_modules/image-size/dist/types/psd.d.ts +2 -0
  426. package/pitch-deck-groove/node_modules/image-size/dist/types/psd.js +11 -0
  427. package/pitch-deck-groove/node_modules/image-size/dist/types/svg.d.ts +2 -0
  428. package/pitch-deck-groove/node_modules/image-size/dist/types/svg.js +90 -0
  429. package/pitch-deck-groove/node_modules/image-size/dist/types/tga.d.ts +2 -0
  430. package/pitch-deck-groove/node_modules/image-size/dist/types/tga.js +15 -0
  431. package/pitch-deck-groove/node_modules/image-size/dist/types/tiff.d.ts +2 -0
  432. package/pitch-deck-groove/node_modules/image-size/dist/types/tiff.js +95 -0
  433. package/pitch-deck-groove/node_modules/image-size/dist/types/utils.d.ts +15 -0
  434. package/pitch-deck-groove/node_modules/image-size/dist/types/utils.js +75 -0
  435. package/pitch-deck-groove/node_modules/image-size/dist/types/webp.d.ts +2 -0
  436. package/pitch-deck-groove/node_modules/image-size/dist/types/webp.js +60 -0
  437. package/pitch-deck-groove/node_modules/image-size/dist/utils/bit-reader.d.ts +10 -0
  438. package/pitch-deck-groove/node_modules/image-size/dist/utils/bit-reader.js +44 -0
  439. package/pitch-deck-groove/node_modules/image-size/package.json +81 -0
  440. package/pitch-deck-groove/node_modules/immediate/LICENSE.txt +20 -0
  441. package/pitch-deck-groove/node_modules/immediate/README.md +93 -0
  442. package/pitch-deck-groove/node_modules/immediate/dist/immediate.js +75 -0
  443. package/pitch-deck-groove/node_modules/immediate/dist/immediate.min.js +1 -0
  444. package/pitch-deck-groove/node_modules/immediate/lib/browser.js +69 -0
  445. package/pitch-deck-groove/node_modules/immediate/lib/index.js +73 -0
  446. package/pitch-deck-groove/node_modules/immediate/package.json +42 -0
  447. package/pitch-deck-groove/node_modules/inflight/LICENSE +15 -0
  448. package/pitch-deck-groove/node_modules/inflight/README.md +37 -0
  449. package/pitch-deck-groove/node_modules/inflight/inflight.js +54 -0
  450. package/pitch-deck-groove/node_modules/inflight/package.json +29 -0
  451. package/pitch-deck-groove/node_modules/inherits/LICENSE +16 -0
  452. package/pitch-deck-groove/node_modules/inherits/README.md +42 -0
  453. package/pitch-deck-groove/node_modules/inherits/inherits.js +9 -0
  454. package/pitch-deck-groove/node_modules/inherits/inherits_browser.js +27 -0
  455. package/pitch-deck-groove/node_modules/inherits/package.json +29 -0
  456. package/pitch-deck-groove/node_modules/is-fullwidth-code-point/index.d.ts +17 -0
  457. package/pitch-deck-groove/node_modules/is-fullwidth-code-point/index.js +50 -0
  458. package/pitch-deck-groove/node_modules/is-fullwidth-code-point/license +9 -0
  459. package/pitch-deck-groove/node_modules/is-fullwidth-code-point/package.json +42 -0
  460. package/pitch-deck-groove/node_modules/is-fullwidth-code-point/readme.md +39 -0
  461. package/pitch-deck-groove/node_modules/isarray/.travis.yml +4 -0
  462. package/pitch-deck-groove/node_modules/isarray/Makefile +6 -0
  463. package/pitch-deck-groove/node_modules/isarray/README.md +60 -0
  464. package/pitch-deck-groove/node_modules/isarray/component.json +19 -0
  465. package/pitch-deck-groove/node_modules/isarray/index.js +5 -0
  466. package/pitch-deck-groove/node_modules/isarray/package.json +45 -0
  467. package/pitch-deck-groove/node_modules/isarray/test.js +20 -0
  468. package/pitch-deck-groove/node_modules/jszip/.codeclimate.yml +16 -0
  469. package/pitch-deck-groove/node_modules/jszip/.editorconfig +8 -0
  470. package/pitch-deck-groove/node_modules/jszip/.eslintrc.js +43 -0
  471. package/pitch-deck-groove/node_modules/jszip/.github/workflows/pr.yaml +58 -0
  472. package/pitch-deck-groove/node_modules/jszip/.jekyll-metadata +0 -0
  473. package/pitch-deck-groove/node_modules/jszip/.travis.yml +17 -0
  474. package/pitch-deck-groove/node_modules/jszip/CHANGES.md +204 -0
  475. package/pitch-deck-groove/node_modules/jszip/LICENSE.markdown +651 -0
  476. package/pitch-deck-groove/node_modules/jszip/README.markdown +33 -0
  477. package/pitch-deck-groove/node_modules/jszip/deps.js +37 -0
  478. package/pitch-deck-groove/node_modules/jszip/dist/jszip.js +11577 -0
  479. package/pitch-deck-groove/node_modules/jszip/dist/jszip.min.js +13 -0
  480. package/pitch-deck-groove/node_modules/jszip/graph.svg +601 -0
  481. package/pitch-deck-groove/node_modules/jszip/index.d.ts +330 -0
  482. package/pitch-deck-groove/node_modules/jszip/lib/base64.js +106 -0
  483. package/pitch-deck-groove/node_modules/jszip/lib/compressedObject.js +74 -0
  484. package/pitch-deck-groove/node_modules/jszip/lib/compressions.js +14 -0
  485. package/pitch-deck-groove/node_modules/jszip/lib/crc32.js +77 -0
  486. package/pitch-deck-groove/node_modules/jszip/lib/defaults.js +11 -0
  487. package/pitch-deck-groove/node_modules/jszip/lib/external.js +18 -0
  488. package/pitch-deck-groove/node_modules/jszip/lib/flate.js +85 -0
  489. package/pitch-deck-groove/node_modules/jszip/lib/generate/ZipFileWorker.js +539 -0
  490. package/pitch-deck-groove/node_modules/jszip/lib/generate/index.js +57 -0
  491. package/pitch-deck-groove/node_modules/jszip/lib/index.js +55 -0
  492. package/pitch-deck-groove/node_modules/jszip/lib/license_header.js +11 -0
  493. package/pitch-deck-groove/node_modules/jszip/lib/load.js +88 -0
  494. package/pitch-deck-groove/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js +74 -0
  495. package/pitch-deck-groove/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js +42 -0
  496. package/pitch-deck-groove/node_modules/jszip/lib/nodejsUtils.js +57 -0
  497. package/pitch-deck-groove/node_modules/jszip/lib/object.js +384 -0
  498. package/pitch-deck-groove/node_modules/jszip/lib/readable-stream-browser.js +10 -0
  499. package/pitch-deck-groove/node_modules/jszip/lib/reader/ArrayReader.js +57 -0
  500. package/pitch-deck-groove/node_modules/jszip/lib/reader/DataReader.js +116 -0
  501. package/pitch-deck-groove/node_modules/jszip/lib/reader/NodeBufferReader.js +19 -0
  502. package/pitch-deck-groove/node_modules/jszip/lib/reader/StringReader.js +38 -0
  503. package/pitch-deck-groove/node_modules/jszip/lib/reader/Uint8ArrayReader.js +22 -0
  504. package/pitch-deck-groove/node_modules/jszip/lib/reader/readerFor.js +28 -0
  505. package/pitch-deck-groove/node_modules/jszip/lib/signature.js +7 -0
  506. package/pitch-deck-groove/node_modules/jszip/lib/stream/ConvertWorker.js +26 -0
  507. package/pitch-deck-groove/node_modules/jszip/lib/stream/Crc32Probe.js +24 -0
  508. package/pitch-deck-groove/node_modules/jszip/lib/stream/DataLengthProbe.js +29 -0
  509. package/pitch-deck-groove/node_modules/jszip/lib/stream/DataWorker.js +116 -0
  510. package/pitch-deck-groove/node_modules/jszip/lib/stream/GenericWorker.js +263 -0
  511. package/pitch-deck-groove/node_modules/jszip/lib/stream/StreamHelper.js +214 -0
  512. package/pitch-deck-groove/node_modules/jszip/lib/support.js +38 -0
  513. package/pitch-deck-groove/node_modules/jszip/lib/utf8.js +275 -0
  514. package/pitch-deck-groove/node_modules/jszip/lib/utils.js +501 -0
  515. package/pitch-deck-groove/node_modules/jszip/lib/zipEntries.js +261 -0
  516. package/pitch-deck-groove/node_modules/jszip/lib/zipEntry.js +293 -0
  517. package/pitch-deck-groove/node_modules/jszip/lib/zipObject.js +133 -0
  518. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/.travis.yml +34 -0
  519. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  520. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/GOVERNANCE.md +136 -0
  521. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/LICENSE +47 -0
  522. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/README.md +58 -0
  523. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +60 -0
  524. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/duplex-browser.js +1 -0
  525. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/duplex.js +1 -0
  526. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/_stream_duplex.js +131 -0
  527. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/_stream_passthrough.js +47 -0
  528. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/_stream_readable.js +1019 -0
  529. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/_stream_transform.js +214 -0
  530. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/_stream_writable.js +685 -0
  531. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/internal/streams/BufferList.js +78 -0
  532. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/internal/streams/destroy.js +84 -0
  533. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  534. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  535. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/package.json +52 -0
  536. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/passthrough.js +1 -0
  537. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/readable-browser.js +7 -0
  538. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/readable.js +19 -0
  539. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/transform.js +1 -0
  540. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/writable-browser.js +1 -0
  541. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/writable.js +8 -0
  542. package/pitch-deck-groove/node_modules/jszip/node_modules/safe-buffer/LICENSE +21 -0
  543. package/pitch-deck-groove/node_modules/jszip/node_modules/safe-buffer/README.md +584 -0
  544. package/pitch-deck-groove/node_modules/jszip/node_modules/safe-buffer/index.d.ts +187 -0
  545. package/pitch-deck-groove/node_modules/jszip/node_modules/safe-buffer/index.js +62 -0
  546. package/pitch-deck-groove/node_modules/jszip/node_modules/safe-buffer/package.json +37 -0
  547. package/pitch-deck-groove/node_modules/jszip/node_modules/string_decoder/.travis.yml +50 -0
  548. package/pitch-deck-groove/node_modules/jszip/node_modules/string_decoder/LICENSE +48 -0
  549. package/pitch-deck-groove/node_modules/jszip/node_modules/string_decoder/README.md +47 -0
  550. package/pitch-deck-groove/node_modules/jszip/node_modules/string_decoder/lib/string_decoder.js +296 -0
  551. package/pitch-deck-groove/node_modules/jszip/node_modules/string_decoder/package.json +31 -0
  552. package/pitch-deck-groove/node_modules/jszip/package.json +67 -0
  553. package/pitch-deck-groove/node_modules/jszip/sponsors.md +21 -0
  554. package/pitch-deck-groove/node_modules/jszip/tsconfig.json +101 -0
  555. package/pitch-deck-groove/node_modules/jszip/vendor/FileSaver.js +247 -0
  556. package/pitch-deck-groove/node_modules/lie/README.md +62 -0
  557. package/pitch-deck-groove/node_modules/lie/dist/lie.js +350 -0
  558. package/pitch-deck-groove/node_modules/lie/dist/lie.min.js +1 -0
  559. package/pitch-deck-groove/node_modules/lie/dist/lie.polyfill.js +358 -0
  560. package/pitch-deck-groove/node_modules/lie/dist/lie.polyfill.min.js +1 -0
  561. package/pitch-deck-groove/node_modules/lie/lib/browser.js +273 -0
  562. package/pitch-deck-groove/node_modules/lie/lib/index.js +298 -0
  563. package/pitch-deck-groove/node_modules/lie/license.md +7 -0
  564. package/pitch-deck-groove/node_modules/lie/lie.d.ts +244 -0
  565. package/pitch-deck-groove/node_modules/lie/package.json +69 -0
  566. package/pitch-deck-groove/node_modules/lie/polyfill.js +4 -0
  567. package/pitch-deck-groove/node_modules/make-dir/index.d.ts +66 -0
  568. package/pitch-deck-groove/node_modules/make-dir/index.js +156 -0
  569. package/pitch-deck-groove/node_modules/make-dir/license +9 -0
  570. package/pitch-deck-groove/node_modules/make-dir/node_modules/semver/LICENSE +15 -0
  571. package/pitch-deck-groove/node_modules/make-dir/node_modules/semver/README.md +443 -0
  572. package/pitch-deck-groove/node_modules/make-dir/node_modules/semver/bin/semver.js +174 -0
  573. package/pitch-deck-groove/node_modules/make-dir/node_modules/semver/package.json +38 -0
  574. package/pitch-deck-groove/node_modules/make-dir/node_modules/semver/range.bnf +16 -0
  575. package/pitch-deck-groove/node_modules/make-dir/node_modules/semver/semver.js +1643 -0
  576. package/pitch-deck-groove/node_modules/make-dir/package.json +59 -0
  577. package/pitch-deck-groove/node_modules/make-dir/readme.md +125 -0
  578. package/pitch-deck-groove/node_modules/mimic-response/index.d.ts +17 -0
  579. package/pitch-deck-groove/node_modules/mimic-response/index.js +38 -0
  580. package/pitch-deck-groove/node_modules/mimic-response/license +9 -0
  581. package/pitch-deck-groove/node_modules/mimic-response/package.json +42 -0
  582. package/pitch-deck-groove/node_modules/mimic-response/readme.md +57 -0
  583. package/pitch-deck-groove/node_modules/minimatch/LICENSE +15 -0
  584. package/pitch-deck-groove/node_modules/minimatch/README.md +267 -0
  585. package/pitch-deck-groove/node_modules/minimatch/minimatch.js +1005 -0
  586. package/pitch-deck-groove/node_modules/minimatch/package.json +33 -0
  587. package/pitch-deck-groove/node_modules/minipass/LICENSE +15 -0
  588. package/pitch-deck-groove/node_modules/minipass/README.md +769 -0
  589. package/pitch-deck-groove/node_modules/minipass/index.d.ts +152 -0
  590. package/pitch-deck-groove/node_modules/minipass/index.js +702 -0
  591. package/pitch-deck-groove/node_modules/minipass/index.mjs +702 -0
  592. package/pitch-deck-groove/node_modules/minipass/package.json +76 -0
  593. package/pitch-deck-groove/node_modules/minizlib/LICENSE +26 -0
  594. package/pitch-deck-groove/node_modules/minizlib/README.md +60 -0
  595. package/pitch-deck-groove/node_modules/minizlib/constants.js +115 -0
  596. package/pitch-deck-groove/node_modules/minizlib/index.js +348 -0
  597. package/pitch-deck-groove/node_modules/minizlib/node_modules/minipass/LICENSE +15 -0
  598. package/pitch-deck-groove/node_modules/minizlib/node_modules/minipass/README.md +728 -0
  599. package/pitch-deck-groove/node_modules/minizlib/node_modules/minipass/index.d.ts +155 -0
  600. package/pitch-deck-groove/node_modules/minizlib/node_modules/minipass/index.js +649 -0
  601. package/pitch-deck-groove/node_modules/minizlib/node_modules/minipass/package.json +56 -0
  602. package/pitch-deck-groove/node_modules/minizlib/package.json +42 -0
  603. package/pitch-deck-groove/node_modules/mkdirp/CHANGELOG.md +15 -0
  604. package/pitch-deck-groove/node_modules/mkdirp/LICENSE +21 -0
  605. package/pitch-deck-groove/node_modules/mkdirp/bin/cmd.js +68 -0
  606. package/pitch-deck-groove/node_modules/mkdirp/index.js +31 -0
  607. package/pitch-deck-groove/node_modules/mkdirp/lib/find-made.js +29 -0
  608. package/pitch-deck-groove/node_modules/mkdirp/lib/mkdirp-manual.js +64 -0
  609. package/pitch-deck-groove/node_modules/mkdirp/lib/mkdirp-native.js +39 -0
  610. package/pitch-deck-groove/node_modules/mkdirp/lib/opts-arg.js +23 -0
  611. package/pitch-deck-groove/node_modules/mkdirp/lib/path-arg.js +29 -0
  612. package/pitch-deck-groove/node_modules/mkdirp/lib/use-native.js +10 -0
  613. package/pitch-deck-groove/node_modules/mkdirp/package.json +44 -0
  614. package/pitch-deck-groove/node_modules/mkdirp/readme.markdown +266 -0
  615. package/pitch-deck-groove/node_modules/ms/index.js +162 -0
  616. package/pitch-deck-groove/node_modules/ms/license.md +21 -0
  617. package/pitch-deck-groove/node_modules/ms/package.json +38 -0
  618. package/pitch-deck-groove/node_modules/ms/readme.md +59 -0
  619. package/pitch-deck-groove/node_modules/nan/.github/workflows/ci.yml +52 -0
  620. package/pitch-deck-groove/node_modules/nan/.pre-commit-config.yaml +8 -0
  621. package/pitch-deck-groove/node_modules/nan/CHANGELOG.md +599 -0
  622. package/pitch-deck-groove/node_modules/nan/CMakeLists.txt +138 -0
  623. package/pitch-deck-groove/node_modules/nan/LICENSE.md +9 -0
  624. package/pitch-deck-groove/node_modules/nan/README.md +456 -0
  625. package/pitch-deck-groove/node_modules/nan/doc/asyncworker.md +146 -0
  626. package/pitch-deck-groove/node_modules/nan/doc/buffers.md +54 -0
  627. package/pitch-deck-groove/node_modules/nan/doc/callback.md +76 -0
  628. package/pitch-deck-groove/node_modules/nan/doc/converters.md +41 -0
  629. package/pitch-deck-groove/node_modules/nan/doc/errors.md +226 -0
  630. package/pitch-deck-groove/node_modules/nan/doc/json.md +62 -0
  631. package/pitch-deck-groove/node_modules/nan/doc/maybe_types.md +583 -0
  632. package/pitch-deck-groove/node_modules/nan/doc/methods.md +689 -0
  633. package/pitch-deck-groove/node_modules/nan/doc/new.md +147 -0
  634. package/pitch-deck-groove/node_modules/nan/doc/node_misc.md +123 -0
  635. package/pitch-deck-groove/node_modules/nan/doc/object_wrappers.md +263 -0
  636. package/pitch-deck-groove/node_modules/nan/doc/persistent.md +296 -0
  637. package/pitch-deck-groove/node_modules/nan/doc/scopes.md +73 -0
  638. package/pitch-deck-groove/node_modules/nan/doc/script.md +58 -0
  639. package/pitch-deck-groove/node_modules/nan/doc/string_bytes.md +81 -0
  640. package/pitch-deck-groove/node_modules/nan/doc/v8_internals.md +199 -0
  641. package/pitch-deck-groove/node_modules/nan/doc/v8_misc.md +85 -0
  642. package/pitch-deck-groove/node_modules/nan/include_dirs.js +1 -0
  643. package/pitch-deck-groove/node_modules/nan/nan.h +3202 -0
  644. package/pitch-deck-groove/node_modules/nan/nan_callbacks.h +141 -0
  645. package/pitch-deck-groove/node_modules/nan/nan_callbacks_12_inl.h +690 -0
  646. package/pitch-deck-groove/node_modules/nan/nan_callbacks_pre_12_inl.h +524 -0
  647. package/pitch-deck-groove/node_modules/nan/nan_converters.h +72 -0
  648. package/pitch-deck-groove/node_modules/nan/nan_converters_43_inl.h +68 -0
  649. package/pitch-deck-groove/node_modules/nan/nan_converters_pre_43_inl.h +42 -0
  650. package/pitch-deck-groove/node_modules/nan/nan_define_own_property_helper.h +29 -0
  651. package/pitch-deck-groove/node_modules/nan/nan_implementation_12_inl.h +430 -0
  652. package/pitch-deck-groove/node_modules/nan/nan_implementation_pre_12_inl.h +263 -0
  653. package/pitch-deck-groove/node_modules/nan/nan_json.h +166 -0
  654. package/pitch-deck-groove/node_modules/nan/nan_maybe_43_inl.h +360 -0
  655. package/pitch-deck-groove/node_modules/nan/nan_maybe_pre_43_inl.h +268 -0
  656. package/pitch-deck-groove/node_modules/nan/nan_new.h +340 -0
  657. package/pitch-deck-groove/node_modules/nan/nan_object_wrap.h +156 -0
  658. package/pitch-deck-groove/node_modules/nan/nan_persistent_12_inl.h +132 -0
  659. package/pitch-deck-groove/node_modules/nan/nan_persistent_pre_12_inl.h +242 -0
  660. package/pitch-deck-groove/node_modules/nan/nan_private.h +73 -0
  661. package/pitch-deck-groove/node_modules/nan/nan_scriptorigin.h +97 -0
  662. package/pitch-deck-groove/node_modules/nan/nan_string_bytes.h +305 -0
  663. package/pitch-deck-groove/node_modules/nan/nan_typedarray_contents.h +96 -0
  664. package/pitch-deck-groove/node_modules/nan/nan_weak.h +453 -0
  665. package/pitch-deck-groove/node_modules/nan/package.json +38 -0
  666. package/pitch-deck-groove/node_modules/nan/tools/1to2.js +412 -0
  667. package/pitch-deck-groove/node_modules/nan/tools/README.md +14 -0
  668. package/pitch-deck-groove/node_modules/nan/tools/package.json +19 -0
  669. package/pitch-deck-groove/node_modules/node-fetch/LICENSE.md +22 -0
  670. package/pitch-deck-groove/node_modules/node-fetch/README.md +634 -0
  671. package/pitch-deck-groove/node_modules/node-fetch/browser.js +25 -0
  672. package/pitch-deck-groove/node_modules/node-fetch/lib/index.es.js +1777 -0
  673. package/pitch-deck-groove/node_modules/node-fetch/lib/index.js +1787 -0
  674. package/pitch-deck-groove/node_modules/node-fetch/lib/index.mjs +1775 -0
  675. package/pitch-deck-groove/node_modules/node-fetch/package.json +89 -0
  676. package/pitch-deck-groove/node_modules/nopt/CHANGELOG.md +58 -0
  677. package/pitch-deck-groove/node_modules/nopt/LICENSE +15 -0
  678. package/pitch-deck-groove/node_modules/nopt/README.md +213 -0
  679. package/pitch-deck-groove/node_modules/nopt/bin/nopt.js +54 -0
  680. package/pitch-deck-groove/node_modules/nopt/lib/nopt.js +441 -0
  681. package/pitch-deck-groove/node_modules/nopt/package.json +34 -0
  682. package/pitch-deck-groove/node_modules/npmlog/LICENSE +15 -0
  683. package/pitch-deck-groove/node_modules/npmlog/README.md +216 -0
  684. package/pitch-deck-groove/node_modules/npmlog/log.js +403 -0
  685. package/pitch-deck-groove/node_modules/npmlog/package.json +33 -0
  686. package/pitch-deck-groove/node_modules/object-assign/index.js +90 -0
  687. package/pitch-deck-groove/node_modules/object-assign/license +21 -0
  688. package/pitch-deck-groove/node_modules/object-assign/package.json +42 -0
  689. package/pitch-deck-groove/node_modules/object-assign/readme.md +61 -0
  690. package/pitch-deck-groove/node_modules/once/LICENSE +15 -0
  691. package/pitch-deck-groove/node_modules/once/README.md +79 -0
  692. package/pitch-deck-groove/node_modules/once/once.js +42 -0
  693. package/pitch-deck-groove/node_modules/once/package.json +33 -0
  694. package/pitch-deck-groove/node_modules/pako/CHANGELOG.md +164 -0
  695. package/pitch-deck-groove/node_modules/pako/LICENSE +21 -0
  696. package/pitch-deck-groove/node_modules/pako/README.md +191 -0
  697. package/pitch-deck-groove/node_modules/pako/dist/pako.js +6818 -0
  698. package/pitch-deck-groove/node_modules/pako/dist/pako.min.js +1 -0
  699. package/pitch-deck-groove/node_modules/pako/dist/pako_deflate.js +3997 -0
  700. package/pitch-deck-groove/node_modules/pako/dist/pako_deflate.min.js +1 -0
  701. package/pitch-deck-groove/node_modules/pako/dist/pako_inflate.js +3300 -0
  702. package/pitch-deck-groove/node_modules/pako/dist/pako_inflate.min.js +1 -0
  703. package/pitch-deck-groove/node_modules/pako/index.js +14 -0
  704. package/pitch-deck-groove/node_modules/pako/lib/deflate.js +400 -0
  705. package/pitch-deck-groove/node_modules/pako/lib/inflate.js +423 -0
  706. package/pitch-deck-groove/node_modules/pako/lib/utils/common.js +105 -0
  707. package/pitch-deck-groove/node_modules/pako/lib/utils/strings.js +187 -0
  708. package/pitch-deck-groove/node_modules/pako/lib/zlib/README +59 -0
  709. package/pitch-deck-groove/node_modules/pako/lib/zlib/adler32.js +51 -0
  710. package/pitch-deck-groove/node_modules/pako/lib/zlib/constants.js +68 -0
  711. package/pitch-deck-groove/node_modules/pako/lib/zlib/crc32.js +59 -0
  712. package/pitch-deck-groove/node_modules/pako/lib/zlib/deflate.js +1874 -0
  713. package/pitch-deck-groove/node_modules/pako/lib/zlib/gzheader.js +58 -0
  714. package/pitch-deck-groove/node_modules/pako/lib/zlib/inffast.js +345 -0
  715. package/pitch-deck-groove/node_modules/pako/lib/zlib/inflate.js +1556 -0
  716. package/pitch-deck-groove/node_modules/pako/lib/zlib/inftrees.js +343 -0
  717. package/pitch-deck-groove/node_modules/pako/lib/zlib/messages.js +32 -0
  718. package/pitch-deck-groove/node_modules/pako/lib/zlib/trees.js +1222 -0
  719. package/pitch-deck-groove/node_modules/pako/lib/zlib/zstream.js +47 -0
  720. package/pitch-deck-groove/node_modules/pako/package.json +44 -0
  721. package/pitch-deck-groove/node_modules/path-is-absolute/index.js +20 -0
  722. package/pitch-deck-groove/node_modules/path-is-absolute/license +21 -0
  723. package/pitch-deck-groove/node_modules/path-is-absolute/package.json +43 -0
  724. package/pitch-deck-groove/node_modules/path-is-absolute/readme.md +59 -0
  725. package/pitch-deck-groove/node_modules/pptxgenjs/LICENSE +21 -0
  726. package/pitch-deck-groove/node_modules/pptxgenjs/README.md +284 -0
  727. package/pitch-deck-groove/node_modules/pptxgenjs/dist/pptxgen.bundle.js +3 -0
  728. package/pitch-deck-groove/node_modules/pptxgenjs/dist/pptxgen.bundle.js.map +1 -0
  729. package/pitch-deck-groove/node_modules/pptxgenjs/dist/pptxgen.cjs.js +7445 -0
  730. package/pitch-deck-groove/node_modules/pptxgenjs/dist/pptxgen.es.js +7439 -0
  731. package/pitch-deck-groove/node_modules/pptxgenjs/dist/pptxgen.min.js +3 -0
  732. package/pitch-deck-groove/node_modules/pptxgenjs/dist/pptxgen.min.js.map +1 -0
  733. package/pitch-deck-groove/node_modules/pptxgenjs/package.json +89 -0
  734. package/pitch-deck-groove/node_modules/pptxgenjs/types/index.d.ts +2670 -0
  735. package/pitch-deck-groove/node_modules/process-nextick-args/index.js +45 -0
  736. package/pitch-deck-groove/node_modules/process-nextick-args/license.md +19 -0
  737. package/pitch-deck-groove/node_modules/process-nextick-args/package.json +25 -0
  738. package/pitch-deck-groove/node_modules/process-nextick-args/readme.md +18 -0
  739. package/pitch-deck-groove/node_modules/queue/LICENSE +8 -0
  740. package/pitch-deck-groove/node_modules/queue/index.d.ts +173 -0
  741. package/pitch-deck-groove/node_modules/queue/index.js +195 -0
  742. package/pitch-deck-groove/node_modules/queue/package.json +43 -0
  743. package/pitch-deck-groove/node_modules/queue/readme.md +221 -0
  744. package/pitch-deck-groove/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  745. package/pitch-deck-groove/node_modules/readable-stream/GOVERNANCE.md +136 -0
  746. package/pitch-deck-groove/node_modules/readable-stream/LICENSE +47 -0
  747. package/pitch-deck-groove/node_modules/readable-stream/README.md +106 -0
  748. package/pitch-deck-groove/node_modules/readable-stream/errors-browser.js +127 -0
  749. package/pitch-deck-groove/node_modules/readable-stream/errors.js +116 -0
  750. package/pitch-deck-groove/node_modules/readable-stream/experimentalWarning.js +17 -0
  751. package/pitch-deck-groove/node_modules/readable-stream/lib/_stream_duplex.js +126 -0
  752. package/pitch-deck-groove/node_modules/readable-stream/lib/_stream_passthrough.js +37 -0
  753. package/pitch-deck-groove/node_modules/readable-stream/lib/_stream_readable.js +1027 -0
  754. package/pitch-deck-groove/node_modules/readable-stream/lib/_stream_transform.js +190 -0
  755. package/pitch-deck-groove/node_modules/readable-stream/lib/_stream_writable.js +641 -0
  756. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/async_iterator.js +180 -0
  757. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/buffer_list.js +183 -0
  758. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/destroy.js +96 -0
  759. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +86 -0
  760. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
  761. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/from.js +52 -0
  762. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/pipeline.js +86 -0
  763. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/state.js +22 -0
  764. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  765. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  766. package/pitch-deck-groove/node_modules/readable-stream/package.json +68 -0
  767. package/pitch-deck-groove/node_modules/readable-stream/readable-browser.js +9 -0
  768. package/pitch-deck-groove/node_modules/readable-stream/readable.js +16 -0
  769. package/pitch-deck-groove/node_modules/rimraf/CHANGELOG.md +65 -0
  770. package/pitch-deck-groove/node_modules/rimraf/LICENSE +15 -0
  771. package/pitch-deck-groove/node_modules/rimraf/README.md +101 -0
  772. package/pitch-deck-groove/node_modules/rimraf/bin.js +68 -0
  773. package/pitch-deck-groove/node_modules/rimraf/package.json +32 -0
  774. package/pitch-deck-groove/node_modules/rimraf/rimraf.js +360 -0
  775. package/pitch-deck-groove/node_modules/safe-buffer/LICENSE +21 -0
  776. package/pitch-deck-groove/node_modules/safe-buffer/README.md +584 -0
  777. package/pitch-deck-groove/node_modules/safe-buffer/index.d.ts +187 -0
  778. package/pitch-deck-groove/node_modules/safe-buffer/index.js +65 -0
  779. package/pitch-deck-groove/node_modules/safe-buffer/package.json +51 -0
  780. package/pitch-deck-groove/node_modules/semver/LICENSE +15 -0
  781. package/pitch-deck-groove/node_modules/semver/README.md +665 -0
  782. package/pitch-deck-groove/node_modules/semver/bin/semver.js +191 -0
  783. package/pitch-deck-groove/node_modules/semver/classes/comparator.js +143 -0
  784. package/pitch-deck-groove/node_modules/semver/classes/index.js +7 -0
  785. package/pitch-deck-groove/node_modules/semver/classes/range.js +557 -0
  786. package/pitch-deck-groove/node_modules/semver/classes/semver.js +333 -0
  787. package/pitch-deck-groove/node_modules/semver/functions/clean.js +8 -0
  788. package/pitch-deck-groove/node_modules/semver/functions/cmp.js +54 -0
  789. package/pitch-deck-groove/node_modules/semver/functions/coerce.js +62 -0
  790. package/pitch-deck-groove/node_modules/semver/functions/compare-build.js +9 -0
  791. package/pitch-deck-groove/node_modules/semver/functions/compare-loose.js +5 -0
  792. package/pitch-deck-groove/node_modules/semver/functions/compare.js +7 -0
  793. package/pitch-deck-groove/node_modules/semver/functions/diff.js +60 -0
  794. package/pitch-deck-groove/node_modules/semver/functions/eq.js +5 -0
  795. package/pitch-deck-groove/node_modules/semver/functions/gt.js +5 -0
  796. package/pitch-deck-groove/node_modules/semver/functions/gte.js +5 -0
  797. package/pitch-deck-groove/node_modules/semver/functions/inc.js +21 -0
  798. package/pitch-deck-groove/node_modules/semver/functions/lt.js +5 -0
  799. package/pitch-deck-groove/node_modules/semver/functions/lte.js +5 -0
  800. package/pitch-deck-groove/node_modules/semver/functions/major.js +5 -0
  801. package/pitch-deck-groove/node_modules/semver/functions/minor.js +5 -0
  802. package/pitch-deck-groove/node_modules/semver/functions/neq.js +5 -0
  803. package/pitch-deck-groove/node_modules/semver/functions/parse.js +18 -0
  804. package/pitch-deck-groove/node_modules/semver/functions/patch.js +5 -0
  805. package/pitch-deck-groove/node_modules/semver/functions/prerelease.js +8 -0
  806. package/pitch-deck-groove/node_modules/semver/functions/rcompare.js +5 -0
  807. package/pitch-deck-groove/node_modules/semver/functions/rsort.js +5 -0
  808. package/pitch-deck-groove/node_modules/semver/functions/satisfies.js +12 -0
  809. package/pitch-deck-groove/node_modules/semver/functions/sort.js +5 -0
  810. package/pitch-deck-groove/node_modules/semver/functions/valid.js +8 -0
  811. package/pitch-deck-groove/node_modules/semver/index.js +91 -0
  812. package/pitch-deck-groove/node_modules/semver/internal/constants.js +37 -0
  813. package/pitch-deck-groove/node_modules/semver/internal/debug.js +11 -0
  814. package/pitch-deck-groove/node_modules/semver/internal/identifiers.js +29 -0
  815. package/pitch-deck-groove/node_modules/semver/internal/lrucache.js +42 -0
  816. package/pitch-deck-groove/node_modules/semver/internal/parse-options.js +17 -0
  817. package/pitch-deck-groove/node_modules/semver/internal/re.js +223 -0
  818. package/pitch-deck-groove/node_modules/semver/package.json +78 -0
  819. package/pitch-deck-groove/node_modules/semver/preload.js +4 -0
  820. package/pitch-deck-groove/node_modules/semver/range.bnf +16 -0
  821. package/pitch-deck-groove/node_modules/semver/ranges/gtr.js +6 -0
  822. package/pitch-deck-groove/node_modules/semver/ranges/intersects.js +9 -0
  823. package/pitch-deck-groove/node_modules/semver/ranges/ltr.js +6 -0
  824. package/pitch-deck-groove/node_modules/semver/ranges/max-satisfying.js +27 -0
  825. package/pitch-deck-groove/node_modules/semver/ranges/min-satisfying.js +26 -0
  826. package/pitch-deck-groove/node_modules/semver/ranges/min-version.js +63 -0
  827. package/pitch-deck-groove/node_modules/semver/ranges/outside.js +82 -0
  828. package/pitch-deck-groove/node_modules/semver/ranges/simplify.js +49 -0
  829. package/pitch-deck-groove/node_modules/semver/ranges/subset.js +249 -0
  830. package/pitch-deck-groove/node_modules/semver/ranges/to-comparators.js +10 -0
  831. package/pitch-deck-groove/node_modules/semver/ranges/valid.js +13 -0
  832. package/pitch-deck-groove/node_modules/set-blocking/CHANGELOG.md +26 -0
  833. package/pitch-deck-groove/node_modules/set-blocking/LICENSE.txt +14 -0
  834. package/pitch-deck-groove/node_modules/set-blocking/README.md +31 -0
  835. package/pitch-deck-groove/node_modules/set-blocking/index.js +7 -0
  836. package/pitch-deck-groove/node_modules/set-blocking/package.json +42 -0
  837. package/pitch-deck-groove/node_modules/setimmediate/LICENSE.txt +20 -0
  838. package/pitch-deck-groove/node_modules/setimmediate/package.json +30 -0
  839. package/pitch-deck-groove/node_modules/setimmediate/setImmediate.js +186 -0
  840. package/pitch-deck-groove/node_modules/signal-exit/LICENSE.txt +16 -0
  841. package/pitch-deck-groove/node_modules/signal-exit/README.md +39 -0
  842. package/pitch-deck-groove/node_modules/signal-exit/index.js +202 -0
  843. package/pitch-deck-groove/node_modules/signal-exit/package.json +38 -0
  844. package/pitch-deck-groove/node_modules/signal-exit/signals.js +53 -0
  845. package/pitch-deck-groove/node_modules/simple-concat/.travis.yml +3 -0
  846. package/pitch-deck-groove/node_modules/simple-concat/LICENSE +20 -0
  847. package/pitch-deck-groove/node_modules/simple-concat/README.md +44 -0
  848. package/pitch-deck-groove/node_modules/simple-concat/index.js +15 -0
  849. package/pitch-deck-groove/node_modules/simple-concat/package.json +47 -0
  850. package/pitch-deck-groove/node_modules/simple-concat/test/basic.js +41 -0
  851. package/pitch-deck-groove/node_modules/simple-get/LICENSE +20 -0
  852. package/pitch-deck-groove/node_modules/simple-get/README.md +319 -0
  853. package/pitch-deck-groove/node_modules/simple-get/index.js +107 -0
  854. package/pitch-deck-groove/node_modules/simple-get/package.json +53 -0
  855. package/pitch-deck-groove/node_modules/string-width/index.d.ts +29 -0
  856. package/pitch-deck-groove/node_modules/string-width/index.js +47 -0
  857. package/pitch-deck-groove/node_modules/string-width/license +9 -0
  858. package/pitch-deck-groove/node_modules/string-width/package.json +56 -0
  859. package/pitch-deck-groove/node_modules/string-width/readme.md +50 -0
  860. package/pitch-deck-groove/node_modules/string_decoder/LICENSE +48 -0
  861. package/pitch-deck-groove/node_modules/string_decoder/README.md +47 -0
  862. package/pitch-deck-groove/node_modules/string_decoder/lib/string_decoder.js +296 -0
  863. package/pitch-deck-groove/node_modules/string_decoder/package.json +34 -0
  864. package/pitch-deck-groove/node_modules/strip-ansi/index.d.ts +17 -0
  865. package/pitch-deck-groove/node_modules/strip-ansi/index.js +4 -0
  866. package/pitch-deck-groove/node_modules/strip-ansi/license +9 -0
  867. package/pitch-deck-groove/node_modules/strip-ansi/package.json +54 -0
  868. package/pitch-deck-groove/node_modules/strip-ansi/readme.md +46 -0
  869. package/pitch-deck-groove/node_modules/tar/LICENSE +15 -0
  870. package/pitch-deck-groove/node_modules/tar/README.md +1080 -0
  871. package/pitch-deck-groove/node_modules/tar/index.js +18 -0
  872. package/pitch-deck-groove/node_modules/tar/lib/create.js +111 -0
  873. package/pitch-deck-groove/node_modules/tar/lib/extract.js +113 -0
  874. package/pitch-deck-groove/node_modules/tar/lib/get-write-flag.js +20 -0
  875. package/pitch-deck-groove/node_modules/tar/lib/header.js +304 -0
  876. package/pitch-deck-groove/node_modules/tar/lib/high-level-opt.js +29 -0
  877. package/pitch-deck-groove/node_modules/tar/lib/large-numbers.js +104 -0
  878. package/pitch-deck-groove/node_modules/tar/lib/list.js +139 -0
  879. package/pitch-deck-groove/node_modules/tar/lib/mkdir.js +229 -0
  880. package/pitch-deck-groove/node_modules/tar/lib/mode-fix.js +27 -0
  881. package/pitch-deck-groove/node_modules/tar/lib/normalize-unicode.js +12 -0
  882. package/pitch-deck-groove/node_modules/tar/lib/normalize-windows-path.js +8 -0
  883. package/pitch-deck-groove/node_modules/tar/lib/pack.js +432 -0
  884. package/pitch-deck-groove/node_modules/tar/lib/parse.js +552 -0
  885. package/pitch-deck-groove/node_modules/tar/lib/path-reservations.js +156 -0
  886. package/pitch-deck-groove/node_modules/tar/lib/pax.js +150 -0
  887. package/pitch-deck-groove/node_modules/tar/lib/read-entry.js +107 -0
  888. package/pitch-deck-groove/node_modules/tar/lib/replace.js +246 -0
  889. package/pitch-deck-groove/node_modules/tar/lib/strip-absolute-path.js +24 -0
  890. package/pitch-deck-groove/node_modules/tar/lib/strip-trailing-slashes.js +13 -0
  891. package/pitch-deck-groove/node_modules/tar/lib/types.js +44 -0
  892. package/pitch-deck-groove/node_modules/tar/lib/unpack.js +923 -0
  893. package/pitch-deck-groove/node_modules/tar/lib/update.js +40 -0
  894. package/pitch-deck-groove/node_modules/tar/lib/warn-mixin.js +24 -0
  895. package/pitch-deck-groove/node_modules/tar/lib/winchars.js +23 -0
  896. package/pitch-deck-groove/node_modules/tar/lib/write-entry.js +546 -0
  897. package/pitch-deck-groove/node_modules/tar/package.json +70 -0
  898. package/pitch-deck-groove/node_modules/tr46/index.js +193 -0
  899. package/pitch-deck-groove/node_modules/tr46/lib/.gitkeep +0 -0
  900. package/pitch-deck-groove/node_modules/tr46/lib/mappingTable.json +1 -0
  901. package/pitch-deck-groove/node_modules/tr46/package.json +31 -0
  902. package/pitch-deck-groove/node_modules/undici-types/README.md +6 -0
  903. package/pitch-deck-groove/node_modules/undici-types/agent.d.ts +31 -0
  904. package/pitch-deck-groove/node_modules/undici-types/api.d.ts +43 -0
  905. package/pitch-deck-groove/node_modules/undici-types/balanced-pool.d.ts +18 -0
  906. package/pitch-deck-groove/node_modules/undici-types/cache.d.ts +36 -0
  907. package/pitch-deck-groove/node_modules/undici-types/client.d.ts +97 -0
  908. package/pitch-deck-groove/node_modules/undici-types/connector.d.ts +34 -0
  909. package/pitch-deck-groove/node_modules/undici-types/content-type.d.ts +21 -0
  910. package/pitch-deck-groove/node_modules/undici-types/cookies.d.ts +28 -0
  911. package/pitch-deck-groove/node_modules/undici-types/diagnostics-channel.d.ts +67 -0
  912. package/pitch-deck-groove/node_modules/undici-types/dispatcher.d.ts +241 -0
  913. package/pitch-deck-groove/node_modules/undici-types/errors.d.ts +128 -0
  914. package/pitch-deck-groove/node_modules/undici-types/fetch.d.ts +209 -0
  915. package/pitch-deck-groove/node_modules/undici-types/file.d.ts +39 -0
  916. package/pitch-deck-groove/node_modules/undici-types/filereader.d.ts +54 -0
  917. package/pitch-deck-groove/node_modules/undici-types/formdata.d.ts +108 -0
  918. package/pitch-deck-groove/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  919. package/pitch-deck-groove/node_modules/undici-types/global-origin.d.ts +7 -0
  920. package/pitch-deck-groove/node_modules/undici-types/handlers.d.ts +9 -0
  921. package/pitch-deck-groove/node_modules/undici-types/header.d.ts +4 -0
  922. package/pitch-deck-groove/node_modules/undici-types/index.d.ts +63 -0
  923. package/pitch-deck-groove/node_modules/undici-types/interceptors.d.ts +5 -0
  924. package/pitch-deck-groove/node_modules/undici-types/mock-agent.d.ts +50 -0
  925. package/pitch-deck-groove/node_modules/undici-types/mock-client.d.ts +25 -0
  926. package/pitch-deck-groove/node_modules/undici-types/mock-errors.d.ts +12 -0
  927. package/pitch-deck-groove/node_modules/undici-types/mock-interceptor.d.ts +93 -0
  928. package/pitch-deck-groove/node_modules/undici-types/mock-pool.d.ts +25 -0
  929. package/pitch-deck-groove/node_modules/undici-types/package.json +55 -0
  930. package/pitch-deck-groove/node_modules/undici-types/patch.d.ts +71 -0
  931. package/pitch-deck-groove/node_modules/undici-types/pool-stats.d.ts +19 -0
  932. package/pitch-deck-groove/node_modules/undici-types/pool.d.ts +28 -0
  933. package/pitch-deck-groove/node_modules/undici-types/proxy-agent.d.ts +30 -0
  934. package/pitch-deck-groove/node_modules/undici-types/readable.d.ts +61 -0
  935. package/pitch-deck-groove/node_modules/undici-types/webidl.d.ts +220 -0
  936. package/pitch-deck-groove/node_modules/undici-types/websocket.d.ts +131 -0
  937. package/pitch-deck-groove/node_modules/util-deprecate/History.md +16 -0
  938. package/pitch-deck-groove/node_modules/util-deprecate/LICENSE +24 -0
  939. package/pitch-deck-groove/node_modules/util-deprecate/README.md +53 -0
  940. package/pitch-deck-groove/node_modules/util-deprecate/browser.js +67 -0
  941. package/pitch-deck-groove/node_modules/util-deprecate/node.js +6 -0
  942. package/pitch-deck-groove/node_modules/util-deprecate/package.json +27 -0
  943. package/pitch-deck-groove/node_modules/webidl-conversions/LICENSE.md +12 -0
  944. package/pitch-deck-groove/node_modules/webidl-conversions/README.md +53 -0
  945. package/pitch-deck-groove/node_modules/webidl-conversions/lib/index.js +189 -0
  946. package/pitch-deck-groove/node_modules/webidl-conversions/package.json +23 -0
  947. package/pitch-deck-groove/node_modules/whatwg-url/LICENSE.txt +21 -0
  948. package/pitch-deck-groove/node_modules/whatwg-url/README.md +67 -0
  949. package/pitch-deck-groove/node_modules/whatwg-url/lib/URL-impl.js +200 -0
  950. package/pitch-deck-groove/node_modules/whatwg-url/lib/URL.js +196 -0
  951. package/pitch-deck-groove/node_modules/whatwg-url/lib/public-api.js +11 -0
  952. package/pitch-deck-groove/node_modules/whatwg-url/lib/url-state-machine.js +1297 -0
  953. package/pitch-deck-groove/node_modules/whatwg-url/lib/utils.js +20 -0
  954. package/pitch-deck-groove/node_modules/whatwg-url/package.json +32 -0
  955. package/pitch-deck-groove/node_modules/wide-align/LICENSE +14 -0
  956. package/pitch-deck-groove/node_modules/wide-align/README.md +47 -0
  957. package/pitch-deck-groove/node_modules/wide-align/align.js +65 -0
  958. package/pitch-deck-groove/node_modules/wide-align/package.json +33 -0
  959. package/pitch-deck-groove/node_modules/wrappy/LICENSE +15 -0
  960. package/pitch-deck-groove/node_modules/wrappy/README.md +36 -0
  961. package/pitch-deck-groove/node_modules/wrappy/package.json +29 -0
  962. package/pitch-deck-groove/node_modules/wrappy/wrappy.js +33 -0
  963. package/pitch-deck-groove/node_modules/yallist/LICENSE +15 -0
  964. package/pitch-deck-groove/node_modules/yallist/README.md +204 -0
  965. package/pitch-deck-groove/node_modules/yallist/iterator.js +8 -0
  966. package/pitch-deck-groove/node_modules/yallist/package.json +29 -0
  967. package/pitch-deck-groove/node_modules/yallist/yallist.js +426 -0
  968. package/pitch-deck-groove/package-lock.json +763 -0
  969. package/pitch-deck-groove/package.json +13 -0
  970. package/pitch-deck-groove/slides.json +239 -0
  971. package/node_modules/@groove-dev/gui/dist/assets/index-CBlL5EFb.js +0 -638
  972. package/node_modules/@groove-dev/gui/dist/assets/index-E07lphaH.css +0 -1
  973. package/packages/gui/dist/assets/index-CBlL5EFb.js +0 -638
  974. package/packages/gui/dist/assets/index-E07lphaH.css +0 -1
  975. package/pitch_deck/index.html +0 -718
  976. package/pitch_deck/slides.json +0 -197
@@ -0,0 +1,795 @@
1
+ // FSL-1.1-Apache-2.0 — see LICENSE
2
+ // Groove Investor Deck — PPTX Generator
3
+ // Uses Y-cursor pattern throughout. No hardcoded Y sequences.
4
+
5
+ const pptxgen = require('pptxgenjs');
6
+ const { createCanvas } = require('canvas');
7
+ const fs = require('fs');
8
+ const data = JSON.parse(fs.readFileSync('slides.json', 'utf8'));
9
+ const { meta, slides } = data;
10
+
11
+ const ACCENT = meta.accentColor || '6D28D9';
12
+ const ACCENT_L = meta.accentLight || '8B5CF6';
13
+ const FONT_H = meta.fontHeader || 'Georgia';
14
+ const FONT_B = meta.fontBody || 'Arial';
15
+ const pres = new pptxgen();
16
+ pres.layout = 'LAYOUT_16x9';
17
+
18
+ // ─── Layout constants ───
19
+ const L = {
20
+ SLIDE_W: 10, SLIDE_H: 5.625,
21
+ MARGIN: 0.6, SAFE_X: 0.6, SAFE_R: 9.4, SAFE_W: 8.8,
22
+ SAFE_TOP: 0.65, SAFE_BOT: 5.125, SAFE_H: 4.475,
23
+ GAP_TIGHT: 0.1, GAP_STD: 0.25, GAP_SECTION: 0.4,
24
+ BRAND_Y: 0.25, BRAND_H: 0.3, CONTENT_START: 0.65,
25
+ TEXT_INSET: 0.2,
26
+ };
27
+
28
+ // ─── Text height estimation ───
29
+ function estimateTextHeight(text, fontSize, boxWidth, opts = {}) {
30
+ if (!text) return fontSize / 72;
31
+ const charWidthFactor = opts.bold ? 0.0075 : 0.007;
32
+ const avgCharWidth = fontSize * charWidthFactor;
33
+ const margin = opts.margin !== undefined ? opts.margin : 0.1;
34
+ const effectiveWidth = boxWidth - (margin * 2);
35
+ const charsPerLine = Math.floor(effectiveWidth / avgCharWidth);
36
+ if (charsPerLine <= 0) return fontSize / 72;
37
+ const words = text.split(/\s+/);
38
+ let lines = 1, lineLen = 0;
39
+ for (const word of words) {
40
+ if (lineLen + word.length > charsPerLine && lineLen > 0) { lines++; lineLen = word.length; }
41
+ else { lineLen += (lineLen > 0 ? 1 : 0) + word.length; }
42
+ }
43
+ lines += (text.match(/\n/g) || []).length;
44
+ const lineHeight = (fontSize * 1.3) / 72;
45
+ return Math.max(lines * lineHeight, fontSize / 72);
46
+ }
47
+
48
+ // ─── Canvas helpers ───
49
+ function gradientBg(w, h, angle, stops) {
50
+ const c = createCanvas(w, h);
51
+ const ctx = c.getContext('2d');
52
+ const rad = (angle * Math.PI) / 180;
53
+ const g = ctx.createLinearGradient(
54
+ w/2 - Math.cos(rad)*w, h/2 - Math.sin(rad)*h,
55
+ w/2 + Math.cos(rad)*w, h/2 + Math.sin(rad)*h
56
+ );
57
+ stops.forEach(([p, col]) => g.addColorStop(p, col));
58
+ ctx.fillStyle = g; ctx.fillRect(0, 0, w, h);
59
+ return 'image/png;base64,' + c.toBuffer('image/png').toString('base64');
60
+ }
61
+
62
+ function renderOrb(accent = '#6D28D9', size = 800) {
63
+ const c = createCanvas(size, size);
64
+ const ctx = c.getContext('2d');
65
+ const cx = size/2, cy = size/2, r = size*0.44;
66
+ const g = ctx.createRadialGradient(cx*0.7, cy*0.6, r*0.1, cx, cy, r);
67
+ g.addColorStop(0, accent + '99');
68
+ g.addColorStop(0.4, accent + '4D');
69
+ g.addColorStop(1, accent + '0D');
70
+ ctx.fillStyle = g; ctx.beginPath(); ctx.arc(cx, cy, r, 0, Math.PI*2); ctx.fill();
71
+ const h = ctx.createRadialGradient(cx*0.65, cy*0.5, 0, cx*0.65, cy*0.5, r*0.5);
72
+ h.addColorStop(0, 'rgba(255,255,255,0.3)');
73
+ h.addColorStop(1, 'rgba(255,255,255,0)');
74
+ ctx.fillStyle = h; ctx.beginPath(); ctx.arc(cx, cy, r, 0, Math.PI*2); ctx.fill();
75
+ return 'image/png;base64,' + c.toBuffer('image/png').toString('base64');
76
+ }
77
+
78
+ function renderRing(pct, accent = '#6D28D9', size = 400) {
79
+ const c = createCanvas(size, size);
80
+ const ctx = c.getContext('2d');
81
+ const cx = size/2, cy = size/2, r = size*0.38;
82
+ const lw = size * 0.1;
83
+ // Background ring
84
+ ctx.strokeStyle = 'rgba(255,255,255,0.06)';
85
+ ctx.lineWidth = lw;
86
+ ctx.beginPath(); ctx.arc(cx, cy, r, 0, Math.PI*2); ctx.stroke();
87
+ // Value arc
88
+ ctx.strokeStyle = accent;
89
+ ctx.lineWidth = lw;
90
+ ctx.lineCap = 'round';
91
+ ctx.shadowColor = accent;
92
+ ctx.shadowBlur = 20;
93
+ ctx.beginPath();
94
+ ctx.arc(cx, cy, r, -Math.PI/2, -Math.PI/2 + Math.PI*2*pct);
95
+ ctx.stroke();
96
+ // Center text
97
+ ctx.shadowBlur = 0;
98
+ ctx.fillStyle = '#FFFFFF';
99
+ ctx.font = `bold ${size*0.18}px Georgia`;
100
+ ctx.textAlign = 'center';
101
+ ctx.textBaseline = 'middle';
102
+ ctx.fillText(Math.round(pct*100) + '%', cx, cy);
103
+ return 'image/png;base64,' + c.toBuffer('image/png').toString('base64');
104
+ }
105
+
106
+ function renderSpline(w = 900, h = 250, accent = '#6D28D9') {
107
+ const c = createCanvas(w, h);
108
+ const ctx = c.getContext('2d');
109
+ // Area fill
110
+ const grad = ctx.createLinearGradient(0, 0, 0, h);
111
+ grad.addColorStop(0, accent + '40');
112
+ grad.addColorStop(1, accent + '00');
113
+ ctx.fillStyle = grad;
114
+ ctx.beginPath();
115
+ ctx.moveTo(0, h*0.8);
116
+ ctx.bezierCurveTo(w*0.15, h*0.75, w*0.25, h*0.5, w*0.4, h*0.4);
117
+ ctx.bezierCurveTo(w*0.55, h*0.3, w*0.7, h*0.15, w*0.85, h*0.1);
118
+ ctx.lineTo(w, h*0.08);
119
+ ctx.lineTo(w, h);
120
+ ctx.lineTo(0, h);
121
+ ctx.closePath();
122
+ ctx.fill();
123
+ // Line
124
+ ctx.strokeStyle = accent;
125
+ ctx.lineWidth = 3;
126
+ ctx.lineCap = 'round';
127
+ ctx.shadowColor = accent;
128
+ ctx.shadowBlur = 8;
129
+ ctx.beginPath();
130
+ ctx.moveTo(0, h*0.8);
131
+ ctx.bezierCurveTo(w*0.15, h*0.75, w*0.25, h*0.5, w*0.4, h*0.4);
132
+ ctx.bezierCurveTo(w*0.55, h*0.3, w*0.7, h*0.15, w*0.85, h*0.1);
133
+ ctx.lineTo(w, h*0.08);
134
+ ctx.stroke();
135
+ // Dots
136
+ ctx.shadowBlur = 10;
137
+ [[w*0.4, h*0.4], [w*0.85, h*0.1]].forEach(([x, y]) => {
138
+ ctx.fillStyle = accent;
139
+ ctx.beginPath(); ctx.arc(x, y, 5, 0, Math.PI*2); ctx.fill();
140
+ });
141
+ return 'image/png;base64,' + c.toBuffer('image/png').toString('base64');
142
+ }
143
+
144
+ function renderProgressArc(pct, accent = '#6D28D9', size = 500) {
145
+ const c = createCanvas(size, size);
146
+ const ctx = c.getContext('2d');
147
+ const cx = size/2, cy = size/2, r = size*0.4;
148
+ const lw = size*0.08;
149
+ ctx.strokeStyle = 'rgba(255,255,255,0.04)';
150
+ ctx.lineWidth = lw;
151
+ ctx.beginPath(); ctx.arc(cx, cy, r, 0, Math.PI*2); ctx.stroke();
152
+ ctx.strokeStyle = accent;
153
+ ctx.lineWidth = lw;
154
+ ctx.lineCap = 'round';
155
+ ctx.shadowColor = accent;
156
+ ctx.shadowBlur = 15;
157
+ ctx.beginPath();
158
+ ctx.arc(cx, cy, r, -Math.PI/2, -Math.PI/2 + Math.PI*2*pct);
159
+ ctx.stroke();
160
+ ctx.shadowBlur = 0;
161
+ ctx.fillStyle = '#FFFFFF';
162
+ ctx.font = `bold ${size*0.16}px Georgia`;
163
+ ctx.textAlign = 'center';
164
+ ctx.textBaseline = 'middle';
165
+ ctx.fillText(Math.round(pct*100) + '%', cx, cy - size*0.03);
166
+ ctx.font = `${size*0.045}px Arial`;
167
+ ctx.fillStyle = 'rgba(255,255,255,0.5)';
168
+ ctx.fillText('context used', cx, cy + size*0.08);
169
+ ctx.font = `bold ${size*0.04}px Arial`;
170
+ ctx.fillStyle = accent;
171
+ ctx.fillText('↻ AUTO-ROTATE', cx, cy + size*0.15);
172
+ return 'image/png;base64,' + c.toBuffer('image/png').toString('base64');
173
+ }
174
+
175
+ function renderConcentricRings(accent = '#6D28D9', size = 600) {
176
+ const c = createCanvas(size, size);
177
+ const ctx = c.getContext('2d');
178
+ const cx = size/2, cy = size/2;
179
+ // TAM
180
+ ctx.fillStyle = accent + '14';
181
+ ctx.strokeStyle = accent + '33';
182
+ ctx.lineWidth = 1;
183
+ ctx.beginPath(); ctx.arc(cx, cy, size*0.46, 0, Math.PI*2); ctx.fill(); ctx.stroke();
184
+ // SAM
185
+ ctx.fillStyle = accent + '22';
186
+ ctx.strokeStyle = accent + '44';
187
+ ctx.beginPath(); ctx.arc(cx, cy, size*0.3, 0, Math.PI*2); ctx.fill(); ctx.stroke();
188
+ // SOM
189
+ ctx.fillStyle = accent + '44';
190
+ ctx.strokeStyle = accent;
191
+ ctx.lineWidth = 2;
192
+ ctx.shadowColor = accent;
193
+ ctx.shadowBlur = 12;
194
+ ctx.beginPath(); ctx.arc(cx, cy, size*0.15, 0, Math.PI*2); ctx.fill(); ctx.stroke();
195
+ // Labels
196
+ ctx.shadowBlur = 0;
197
+ ctx.textAlign = 'center';
198
+ ctx.fillStyle = '#FFFFFF';
199
+ ctx.font = `bold ${size*0.045}px Georgia`;
200
+ ctx.fillText('SOM', cx, cy + 5);
201
+ ctx.font = `${size*0.03}px Arial`;
202
+ ctx.fillStyle = 'rgba(255,255,255,0.5)';
203
+ ctx.fillText('$500M', cx, cy + size*0.06);
204
+ ctx.fillText('SAM — $4.2B', cx, cy - size*0.2);
205
+ ctx.fillStyle = 'rgba(255,255,255,0.35)';
206
+ ctx.fillText('TAM — $28B', cx, cy - size*0.38);
207
+ return 'image/png;base64,' + c.toBuffer('image/png').toString('base64');
208
+ }
209
+
210
+ function renderBarChart(accent = '#6D28D9', w = 900, h = 250) {
211
+ const c = createCanvas(w, h);
212
+ const ctx = c.getContext('2d');
213
+ const bars = [
214
+ { label: '1 Agent', height: 0.35, color: accent },
215
+ { label: '3 Agents', height: 0.55, color: accent },
216
+ { label: '5 Agents', height: 0.78, color: '#E11D48' },
217
+ { label: '10 Agents', height: 0.95, color: '#E11D48' },
218
+ ];
219
+ const barW = w * 0.15;
220
+ const gap = (w - bars.length * barW) / (bars.length + 1);
221
+ bars.forEach((bar, i) => {
222
+ const x = gap + i * (barW + gap);
223
+ const barH = h * 0.75 * bar.height;
224
+ const y = h * 0.85 - barH;
225
+ const grad = ctx.createLinearGradient(x, y + barH, x, y);
226
+ grad.addColorStop(0, bar.color + '33');
227
+ grad.addColorStop(1, bar.color + 'CC');
228
+ ctx.fillStyle = grad;
229
+ ctx.beginPath();
230
+ ctx.moveTo(x + 6, y);
231
+ ctx.arcTo(x + barW, y, x + barW, y + 6, 6);
232
+ ctx.lineTo(x + barW, y + barH);
233
+ ctx.lineTo(x, y + barH);
234
+ ctx.arcTo(x, y, x + 6, y, 6);
235
+ ctx.closePath();
236
+ ctx.fill();
237
+ ctx.fillStyle = 'rgba(255,255,255,0.5)';
238
+ ctx.font = '11px Arial';
239
+ ctx.textAlign = 'center';
240
+ ctx.fillText(bar.label, x + barW/2, h * 0.95);
241
+ });
242
+ ctx.strokeStyle = 'rgba(255,255,255,0.06)';
243
+ ctx.lineWidth = 1;
244
+ ctx.beginPath(); ctx.moveTo(gap*0.5, h*0.85); ctx.lineTo(w - gap*0.5, h*0.85); ctx.stroke();
245
+ return 'image/png;base64,' + c.toBuffer('image/png').toString('base64');
246
+ }
247
+
248
+ // ─── Slide helpers ───
249
+ function getBackground(name) {
250
+ const bg = meta.backgrounds[name] || meta.backgrounds.default;
251
+ return gradientBg(1920, 1080, bg.angle, bg.stops);
252
+ }
253
+
254
+ function slideWithBg(bgName, category) {
255
+ const s = pres.addSlide();
256
+ s.background = { data: getBackground(bgName) };
257
+ s.addText(meta.brand, {
258
+ x: L.SAFE_X, y: L.BRAND_Y, w: 3, h: L.BRAND_H,
259
+ fontSize: 11, fontFace: FONT_B, bold: true, color: 'F5F5F5', margin: 0
260
+ });
261
+ if (category) {
262
+ s.addText(category.toUpperCase(), {
263
+ x: 6.5, y: L.BRAND_Y, w: 3, h: L.BRAND_H,
264
+ fontSize: 9, fontFace: FONT_B, bold: true,
265
+ color: '8B8FA3', align: 'right', charSpacing: 5, margin: 0
266
+ });
267
+ }
268
+ return s;
269
+ }
270
+
271
+ function addLabel(slide, text, Y) {
272
+ slide.addText(text.toUpperCase(), {
273
+ x: L.SAFE_X, y: Y, w: 8, h: 0.25,
274
+ fontSize: 11, fontFace: FONT_B, bold: true,
275
+ color: ACCENT_L, charSpacing: 5, margin: 0
276
+ });
277
+ return Y + 0.25 + L.GAP_TIGHT;
278
+ }
279
+
280
+ function addTitle(slide, text, Y, opts = {}) {
281
+ const fontSize = opts.fontSize || 38;
282
+ const maxW = opts.maxW || L.SAFE_W;
283
+ const h = estimateTextHeight(text, fontSize, maxW, { bold: true, margin: 0 });
284
+ slide.addText(text, {
285
+ x: L.SAFE_X, y: Y, w: maxW, h,
286
+ fontSize, fontFace: FONT_H, bold: true,
287
+ color: 'F5F5F5', margin: 0, lineSpacingMultiple: 1.05
288
+ });
289
+ return Y + h + L.GAP_STD;
290
+ }
291
+
292
+ function addSub(slide, text, Y, opts = {}) {
293
+ const maxW = opts.maxW || 5.5;
294
+ const h = estimateTextHeight(text, 16, maxW, { margin: 0 });
295
+ slide.addText(text, {
296
+ x: L.SAFE_X, y: Y, w: maxW, h: Math.max(h, 0.5),
297
+ fontSize: 16, fontFace: FONT_B, color: '8B8FA3', margin: 0, lineSpacingMultiple: 1.4
298
+ });
299
+ return Y + Math.max(h, 0.5) + L.GAP_STD;
300
+ }
301
+
302
+ function addDivider(slide, y, x = L.SAFE_X, w = L.SAFE_W) {
303
+ slide.addShape(pres.shapes.LINE, {
304
+ x, y, w, h: 0,
305
+ line: { color: 'FFFFFF', width: 0.5, transparency: 92 }
306
+ });
307
+ }
308
+
309
+ function accentBorder(slide, x, y, h) {
310
+ slide.addShape(pres.shapes.LINE, {
311
+ x, y, w: 0, h,
312
+ line: { color: ACCENT, width: 3 }
313
+ });
314
+ }
315
+
316
+ function colDivider(slide, x, y, h) {
317
+ slide.addShape(pres.shapes.LINE, {
318
+ x, y, w: 0, h,
319
+ line: { color: 'FFFFFF', width: 0.5, transparency: 88 }
320
+ });
321
+ }
322
+
323
+ // ─── Build slides ───
324
+
325
+ // 1. TITLE
326
+ (function() {
327
+ const s = pres.addSlide();
328
+ s.background = { data: getBackground('deep') };
329
+ s.addImage({ data: renderOrb('#' + ACCENT), x: 5.5, y: -0.5, w: 5.5, h: 5.5 });
330
+ let Y = 1.0;
331
+ s.addText('INVESTOR PRESENTATION — APRIL 2026', {
332
+ x: L.SAFE_X, y: Y, w: 6, h: 0.25,
333
+ fontSize: 11, fontFace: FONT_B, bold: true, color: ACCENT_L, charSpacing: 5, margin: 0
334
+ });
335
+ Y += 0.5;
336
+ const titleH = estimateTextHeight('The Orchestration Layer\nfor AI Coding Agents', 52, 6, { bold: true, margin: 0 });
337
+ s.addText('The Orchestration Layer\nfor AI Coding Agents', {
338
+ x: L.SAFE_X, y: Y, w: 6, h: titleH,
339
+ fontSize: 52, fontFace: FONT_H, bold: true, color: 'F5F5F5', margin: 0, lineSpacingMultiple: 1.05
340
+ });
341
+ Y += titleH + 0.2;
342
+ addDivider(s, Y, L.SAFE_X, 1.2);
343
+ Y += 0.35;
344
+ s.addText('Spawn teams of AI agents. Coordinate their work.\nNever lose context. Cut token costs 40–60%.', {
345
+ x: L.SAFE_X, y: Y, w: 6, h: 0.7,
346
+ fontSize: 16, fontFace: FONT_B, color: '8B8FA3', margin: 0, lineSpacingMultiple: 1.4
347
+ });
348
+ Y += 1.0;
349
+ s.addText('GROOVE', {
350
+ x: L.SAFE_X, y: Y, w: 3, h: 0.35,
351
+ fontSize: 22, fontFace: FONT_H, bold: true, color: 'F5F5F5', margin: 0
352
+ });
353
+ s.addText('groovedev.ai', {
354
+ x: 2.2, y: Y + 0.05, w: 3, h: 0.3,
355
+ fontSize: 12, fontFace: FONT_B, color: '8B8FA3', margin: 0
356
+ });
357
+ })();
358
+
359
+ // 2. PROBLEM
360
+ (function() {
361
+ const sd = slides[1];
362
+ const s = slideWithBg(sd.background, sd.category);
363
+ let Y = L.CONTENT_START;
364
+ Y = addLabel(s, sd.label, Y);
365
+ Y = addTitle(s, sd.title, Y, { maxW: 5.5 });
366
+ addSub(s, sd.subtitle, Y, { maxW: 4.8 });
367
+ // Pain words
368
+ const pains = [
369
+ { text: 'Cold Starts', x: 6.8, y: 0.9, size: 22 },
370
+ { text: 'Context Decay', x: 7.2, y: 1.8, size: 18 },
371
+ { text: 'File Conflicts', x: 6.4, y: 2.7, size: 20 },
372
+ { text: 'Blind Spending', x: 7.5, y: 3.5, size: 16 },
373
+ { text: 'No Coordination', x: 6.2, y: 4.2, size: 18 },
374
+ ];
375
+ pains.forEach(pw => {
376
+ s.addText(pw.text, {
377
+ x: pw.x, y: pw.y, w: 2.5, h: 0.4,
378
+ fontSize: pw.size, fontFace: FONT_H, italic: true,
379
+ color: 'FFFFFF', transparency: 80, margin: 0
380
+ });
381
+ });
382
+ })();
383
+
384
+ // 3. COST
385
+ (function() {
386
+ const sd = slides[2];
387
+ const s = slideWithBg(sd.background, sd.category);
388
+ let Y = L.CONTENT_START;
389
+ Y = addLabel(s, sd.label, Y);
390
+ Y = addTitle(s, sd.title, Y, { maxW: 5.5 });
391
+ Y += 0.15;
392
+ const metrics = sd.metrics;
393
+ const colW = (L.SAFE_W - 0.6) / metrics.length;
394
+ metrics.forEach((m, i) => {
395
+ const x = L.SAFE_X + i * (colW + 0.3);
396
+ if (i > 0) colDivider(s, x - 0.15, Y, 1.5);
397
+ const valH = estimateTextHeight(m.value, 42, colW, { bold: true, margin: 0 });
398
+ s.addText(m.value, { x, y: Y, w: colW, h: valH, fontSize: 42, fontFace: FONT_H, bold: true, color: ACCENT_L, margin: 0 });
399
+ s.addText(m.unit, { x, y: Y + valH + 0.1, w: colW, h: 0.3, fontSize: 13, fontFace: FONT_B, bold: true, color: 'F5F5F5', margin: 0 });
400
+ s.addText(m.desc, { x, y: Y + valH + 0.45, w: colW, h: 0.5, fontSize: 11, fontFace: FONT_B, color: '8B8FA3', margin: 0, lineSpacingMultiple: 1.3 });
401
+ });
402
+ s.addImage({ data: renderBarChart('#' + ACCENT), x: 0.3, y: 3.6, w: 9.4, h: 1.8 });
403
+ })();
404
+
405
+ // 4. SOLUTION
406
+ (function() {
407
+ const sd = slides[3];
408
+ const s = slideWithBg(sd.background, sd.category);
409
+ let Y = L.CONTENT_START;
410
+ Y = addLabel(s, sd.label, Y);
411
+ Y = addTitle(s, sd.title, Y, { maxW: 5.2 });
412
+ Y = addSub(s, sd.subtitle, Y, { maxW: 4.8 });
413
+ Y += 0.15;
414
+ const feats = sd.features;
415
+ const fColW = (5 - 0.4) / feats.length;
416
+ feats.forEach((f, i) => {
417
+ const x = L.SAFE_X + i * (fColW + 0.2);
418
+ accentBorder(s, x, Y, 0.9);
419
+ s.addText(f.title, { x: x + 0.2, y: Y, w: fColW - 0.3, h: 0.3, fontSize: 13, fontFace: FONT_B, bold: true, color: 'F5F5F5', margin: 0 });
420
+ s.addText(f.desc, { x: x + 0.2, y: Y + 0.35, w: fColW - 0.3, h: 0.6, fontSize: 10, fontFace: FONT_B, color: '8B8FA3', margin: 0, lineSpacingMultiple: 1.3 });
421
+ });
422
+ })();
423
+
424
+ // 5. ARCHITECTURE
425
+ (function() {
426
+ const sd = slides[4];
427
+ const s = slideWithBg(sd.background, sd.category);
428
+ let Y = L.CONTENT_START;
429
+ Y = addLabel(s, sd.label, Y);
430
+ Y = addTitle(s, sd.title, Y);
431
+ Y += 0.1;
432
+ // Timeline steps
433
+ const steps = sd.steps;
434
+ const n = steps.length;
435
+ const stepW = L.SAFE_W / n;
436
+ steps.forEach((step, i) => {
437
+ const cx = L.SAFE_X + i * stepW + stepW/2;
438
+ // Circle
439
+ s.addShape(pres.shapes.OVAL, {
440
+ x: cx - 0.25, y: Y, w: 0.5, h: 0.5,
441
+ fill: { color: ACCENT, transparency: 85 },
442
+ line: { color: ACCENT, width: 2 }
443
+ });
444
+ s.addText(step.num, {
445
+ x: cx - 0.25, y: Y, w: 0.5, h: 0.5,
446
+ fontSize: 16, fontFace: FONT_H, bold: true, color: ACCENT_L, align: 'center', valign: 'middle', margin: 0
447
+ });
448
+ // Connector
449
+ if (i < n - 1) {
450
+ s.addShape(pres.shapes.LINE, {
451
+ x: cx + 0.25, y: Y + 0.25, w: stepW - 0.5, h: 0,
452
+ line: { color: ACCENT, width: 1.5, transparency: 60 }
453
+ });
454
+ }
455
+ // Labels
456
+ s.addText(step.title, {
457
+ x: cx - 0.8, y: Y + 0.6, w: 1.6, h: 0.3,
458
+ fontSize: 11, fontFace: FONT_B, bold: true, color: 'F5F5F5', align: 'center', margin: 0
459
+ });
460
+ s.addText(step.desc, {
461
+ x: cx - 0.8, y: Y + 0.9, w: 1.6, h: 0.45,
462
+ fontSize: 9, fontFace: FONT_B, color: '8B8FA3', align: 'center', margin: 0, lineSpacingMultiple: 1.2
463
+ });
464
+ });
465
+ // KPI strip
466
+ const kY = 4.2;
467
+ const kpis = sd.kpis;
468
+ const kW = L.SAFE_W / kpis.length;
469
+ kpis.forEach((kpi, i) => {
470
+ const x = L.SAFE_X + i * kW;
471
+ s.addShape(pres.shapes.RECTANGLE, {
472
+ x, y: kY, w: kW - 0.02, h: 0.7,
473
+ fill: { color: 'FFFFFF', transparency: 97 }
474
+ });
475
+ s.addText(kpi.value, {
476
+ x, y: kY + 0.05, w: kW, h: 0.35,
477
+ fontSize: 20, fontFace: FONT_H, bold: true, color: ACCENT_L, align: 'center', margin: 0
478
+ });
479
+ s.addText(kpi.label, {
480
+ x, y: kY + 0.4, w: kW, h: 0.25,
481
+ fontSize: 8, fontFace: FONT_B, color: '8B8FA3', align: 'center', margin: 0, charSpacing: 1
482
+ });
483
+ });
484
+ })();
485
+
486
+ // 6. JOURNALIST
487
+ (function() {
488
+ const sd = slides[5];
489
+ const s = slideWithBg(sd.background, sd.category);
490
+ let Y = L.CONTENT_START + 0.3;
491
+ Y = addLabel(s, sd.label, Y);
492
+ Y = addTitle(s, sd.title, Y, { fontSize: 44, maxW: 5.5 });
493
+ Y = addSub(s, sd.subtitle, Y, { maxW: 5 });
494
+ Y += 0.2;
495
+ // Metrics
496
+ sd.metrics.forEach((m, i) => {
497
+ if (i > 0) colDivider(s, L.SAFE_X + 3.2 + i * 0.1 - 0.15, Y, 1.0);
498
+ const x = L.SAFE_X + i * 3.3;
499
+ s.addText(m.value, { x, y: Y, w: 3, h: 0.6, fontSize: 42, fontFace: FONT_H, bold: true, color: ACCENT_L, margin: 0 });
500
+ s.addText(m.unit, { x, y: Y + 0.6, w: 3, h: 0.25, fontSize: 12, fontFace: FONT_B, bold: true, color: 'F5F5F5', margin: 0 });
501
+ s.addText(m.desc, { x, y: Y + 0.9, w: 3, h: 0.2, fontSize: 10, fontFace: FONT_B, color: '8B8FA3', margin: 0 });
502
+ });
503
+ s.addImage({ data: renderSpline(900, 250, '#' + ACCENT), x: 5.5, y: 3.0, w: 4.2, h: 2.2 });
504
+ })();
505
+
506
+ // 7. ROTATION
507
+ (function() {
508
+ const sd = slides[6];
509
+ const s = slideWithBg(sd.background, sd.category);
510
+ let Y = L.CONTENT_START;
511
+ Y = addLabel(s, sd.label, Y);
512
+ Y = addTitle(s, sd.title, Y, { maxW: 5.5 });
513
+ Y = addSub(s, sd.subtitle, Y, { maxW: 5 });
514
+ Y += 0.15;
515
+ sd.features.forEach((f, i) => {
516
+ const x = L.SAFE_X + i * 2.6;
517
+ accentBorder(s, x, Y, 0.7);
518
+ s.addText(f.title, { x: x + 0.2, y: Y, w: 2.2, h: 0.25, fontSize: 12, fontFace: FONT_B, bold: true, color: 'F5F5F5', margin: 0 });
519
+ s.addText(f.desc, { x: x + 0.2, y: Y + 0.3, w: 2.2, h: 0.4, fontSize: 10, fontFace: FONT_B, color: '8B8FA3', margin: 0, lineSpacingMultiple: 1.3 });
520
+ });
521
+ s.addImage({ data: renderProgressArc(0.75, '#' + ACCENT), x: 6.5, y: 1.0, w: 3.2, h: 3.2 });
522
+ })();
523
+
524
+ // 8. COORDINATION
525
+ (function() {
526
+ const sd = slides[7];
527
+ const s = slideWithBg(sd.background, sd.category);
528
+ let Y = L.CONTENT_START;
529
+ Y = addLabel(s, sd.label, Y);
530
+ Y = addTitle(s, sd.title, Y);
531
+ Y += 0.1;
532
+ const cols = sd.columns;
533
+ const colW = (L.SAFE_W - 0.8) / cols.length;
534
+ cols.forEach((col, i) => {
535
+ const x = L.SAFE_X + i * (colW + 0.4);
536
+ s.addText(col.num, { x, y: Y, w: 1, h: 0.4, fontSize: 24, fontFace: FONT_H, bold: true, color: ACCENT_L, margin: 0 });
537
+ s.addText(col.title, { x, y: Y + 0.45, w: colW, h: 0.3, fontSize: 14, fontFace: FONT_B, bold: true, color: 'F5F5F5', margin: 0 });
538
+ addDivider(s, Y + 0.8, x, 0.6);
539
+ s.addText(col.desc, { x, y: Y + 0.95, w: colW, h: 0.8, fontSize: 11, fontFace: FONT_B, color: '8B8FA3', margin: 0, lineSpacingMultiple: 1.5 });
540
+ });
541
+ })();
542
+
543
+ // 9. PRODUCT / GUI
544
+ (function() {
545
+ const sd = slides[8];
546
+ const s = slideWithBg(sd.background, sd.category);
547
+ let Y = L.CONTENT_START;
548
+ Y = addLabel(s, sd.label, Y);
549
+ Y = addTitle(s, sd.title, Y, { maxW: 5.5 });
550
+ Y = addSub(s, sd.subtitle, Y, { maxW: 4.5 });
551
+ Y += 0.1;
552
+ const feats = sd.features;
553
+ const half = Math.ceil(feats.length / 2);
554
+ [feats.slice(0, half), feats.slice(half)].forEach((group, gi) => {
555
+ const x = L.SAFE_X + gi * 4.5;
556
+ group.forEach((f, fi) => {
557
+ const fy = Y + fi * 0.35;
558
+ s.addText(f, { x, y: fy, w: 4.2, h: 0.3, fontSize: 11, fontFace: FONT_B, color: '8B8FA3', margin: 0, bullet: true });
559
+ });
560
+ });
561
+ })();
562
+
563
+ // 10. ECONOMICS
564
+ (function() {
565
+ const sd = slides[9];
566
+ const s = slideWithBg(sd.background, sd.category);
567
+ let Y = L.CONTENT_START + 0.3;
568
+ Y = addLabel(s, sd.label, Y);
569
+ Y = addTitle(s, sd.title, Y, { fontSize: 44 });
570
+ Y += 0.15;
571
+ const metrics = sd.metrics;
572
+ const mColW = (L.SAFE_W - 0.6) / metrics.length;
573
+ metrics.forEach((m, i) => {
574
+ const x = L.SAFE_X + i * (mColW + 0.3);
575
+ if (i > 0) colDivider(s, x - 0.15, Y, 2.5);
576
+ s.addText(m.value, { x, y: Y, w: mColW, h: 0.8, fontSize: 60, fontFace: FONT_H, bold: true, color: ACCENT_L, margin: 0 });
577
+ s.addText(m.unit, { x, y: Y + 0.8, w: mColW, h: 0.3, fontSize: 14, fontFace: FONT_B, bold: true, color: 'F5F5F5', margin: 0 });
578
+ s.addText(m.desc, { x, y: Y + 1.15, w: mColW, h: 0.35, fontSize: 10, fontFace: FONT_B, color: '8B8FA3', margin: 0, lineSpacingMultiple: 1.3 });
579
+ s.addImage({ data: renderRing(m.ringPercent, '#' + ACCENT), x: x + 0.3, y: Y + 1.6, w: 1.2, h: 1.2 });
580
+ });
581
+ })();
582
+
583
+ // 11. PROVIDERS
584
+ (function() {
585
+ const sd = slides[10];
586
+ const s = slideWithBg(sd.background, sd.category);
587
+ let Y = L.CONTENT_START;
588
+ Y = addLabel(s, sd.label, Y);
589
+ Y = addTitle(s, sd.title, Y, { maxW: 5.2 });
590
+ Y = addSub(s, sd.subtitle, Y, { maxW: 4.8 });
591
+ Y += 0.15;
592
+ const providers = sd.providers;
593
+ const pW = 2.1;
594
+ providers.forEach((p, i) => {
595
+ const col = i % 2, row = Math.floor(i / 2);
596
+ const x = L.SAFE_X + col * (pW + 0.3);
597
+ const py = Y + row * 1.1;
598
+ accentBorder(s, x, py, 0.8);
599
+ s.addText(p.name, { x: x + 0.2, y: py, w: pW - 0.3, h: 0.25, fontSize: 13, fontFace: FONT_B, bold: true, color: 'F5F5F5', margin: 0 });
600
+ s.addText(p.models, { x: x + 0.2, y: py + 0.28, w: pW - 0.3, h: 0.2, fontSize: 10, fontFace: FONT_B, color: '8B8FA3', margin: 0 });
601
+ s.addText(p.extra, { x: x + 0.2, y: py + 0.5, w: pW - 0.3, h: 0.2, fontSize: 9, fontFace: FONT_B, color: ACCENT_L, margin: 0 });
602
+ });
603
+ })();
604
+
605
+ // 12. MARKET
606
+ (function() {
607
+ const sd = slides[11];
608
+ const s = slideWithBg(sd.background, sd.category);
609
+ let Y = L.CONTENT_START;
610
+ Y = addLabel(s, sd.label, Y);
611
+ Y = addTitle(s, sd.title, Y, { maxW: 5.2 });
612
+ Y += 0.1;
613
+ sd.tiers.forEach((tier, i) => {
614
+ const ty = Y + i * 1.2;
615
+ s.addText(tier.value, { x: L.SAFE_X, y: ty, w: 4, h: 0.5, fontSize: i === 0 ? 42 : (i === 1 ? 32 : 24), fontFace: FONT_H, bold: true, color: ACCENT_L, margin: 0 });
616
+ s.addText(tier.label, { x: L.SAFE_X, y: ty + (i === 0 ? 0.55 : 0.4), w: 4, h: 0.25, fontSize: 13, fontFace: FONT_B, bold: true, color: 'F5F5F5', margin: 0 });
617
+ s.addText(tier.desc, { x: L.SAFE_X, y: ty + (i === 0 ? 0.82 : 0.67), w: 4, h: 0.2, fontSize: 10, fontFace: FONT_B, color: '8B8FA3', margin: 0 });
618
+ if (i < sd.tiers.length - 1) addDivider(s, ty + (i === 0 ? 1.1 : 0.95), L.SAFE_X, 4);
619
+ });
620
+ s.addImage({ data: renderConcentricRings('#' + ACCENT), x: 5.5, y: 0.8, w: 4.2, h: 4.2 });
621
+ })();
622
+
623
+ // 13. TRACTION
624
+ (function() {
625
+ const sd = slides[12];
626
+ const s = slideWithBg(sd.background, sd.category);
627
+ let Y = L.CONTENT_START;
628
+ Y = addLabel(s, sd.label, Y);
629
+ Y = addTitle(s, sd.title, Y);
630
+ Y += 0.1;
631
+ // Stats grid
632
+ const stats = sd.stats;
633
+ const sColW = 2.0;
634
+ stats.forEach((stat, i) => {
635
+ const col = i % 2, row = Math.floor(i / 2);
636
+ const x = L.SAFE_X + col * (sColW + 0.5);
637
+ const sy = Y + row * 0.65;
638
+ s.addText(stat.value, { x, y: sy, w: sColW, h: 0.35, fontSize: 28, fontFace: FONT_H, bold: true, color: ACCENT_L, margin: 0 });
639
+ s.addText(stat.label, { x, y: sy + 0.32, w: sColW, h: 0.2, fontSize: 10, fontFace: FONT_B, color: '8B8FA3', margin: 0 });
640
+ });
641
+ // Milestones
642
+ colDivider(s, 5.3, Y, 2.5);
643
+ const mX = 5.6;
644
+ sd.milestones.forEach((m, i) => {
645
+ s.addText([
646
+ { text: '✓ ', options: { color: ACCENT_L, fontSize: 10, bold: true } },
647
+ { text: m, options: { color: '8B8FA3', fontSize: 10 } }
648
+ ], {
649
+ x: mX, y: Y + i * 0.3, w: 4, h: 0.25,
650
+ fontFace: FONT_B, margin: 0
651
+ });
652
+ });
653
+ s.addImage({ data: renderSpline(900, 120, '#' + ACCENT), x: 0.3, y: 4.4, w: 9.4, h: 1.0 });
654
+ })();
655
+
656
+ // 14. COMPETITION
657
+ (function() {
658
+ const sd = slides[13];
659
+ const s = slideWithBg(sd.background, sd.category);
660
+ let Y = L.CONTENT_START;
661
+ Y = addLabel(s, sd.label, Y);
662
+ Y = addTitle(s, sd.title, Y);
663
+ Y += 0.15;
664
+ // Header
665
+ const competitors = sd.competitors;
666
+ const labelW = 2.5;
667
+ const cellW = (L.SAFE_W - labelW) / competitors.length;
668
+ competitors.forEach((comp, i) => {
669
+ s.addText(comp, {
670
+ x: L.SAFE_X + labelW + i * cellW, y: Y, w: cellW, h: 0.3,
671
+ fontSize: 10, fontFace: FONT_B, bold: true,
672
+ color: i === 0 ? ACCENT_L : '8B8FA3', align: 'center', margin: 0
673
+ });
674
+ });
675
+ Y += 0.35;
676
+ // Rows
677
+ sd.features.forEach((feat, fi) => {
678
+ const ry = Y + fi * 0.33;
679
+ s.addText(feat.name, { x: L.SAFE_X, y: ry, w: labelW, h: 0.28, fontSize: 10, fontFace: FONT_B, color: '8B8FA3', margin: 0 });
680
+ feat.scores.forEach((score, si) => {
681
+ const cx = L.SAFE_X + labelW + si * cellW + cellW/2;
682
+ s.addShape(pres.shapes.OVAL, {
683
+ x: cx - 0.08, y: ry + 0.06, w: 0.16, h: 0.16,
684
+ fill: { color: ACCENT, transparency: Math.round((1 - score) * 90) }
685
+ });
686
+ });
687
+ });
688
+ })();
689
+
690
+ // 15. PRICING
691
+ (function() {
692
+ const sd = slides[14];
693
+ const s = slideWithBg(sd.background, sd.category);
694
+ let Y = L.CONTENT_START;
695
+ Y = addLabel(s, sd.label, Y);
696
+ Y = addTitle(s, sd.title, Y);
697
+ Y += 0.1;
698
+ const tiers = sd.tiers;
699
+ const tColW = (L.SAFE_W - 0.6) / tiers.length;
700
+ tiers.forEach((tier, i) => {
701
+ const x = L.SAFE_X + i * (tColW + 0.3);
702
+ if (tier.highlighted) {
703
+ s.addShape(pres.shapes.RECTANGLE, {
704
+ x: x - 0.1, y: Y - 0.1, w: tColW + 0.2, h: 2.8,
705
+ fill: { color: ACCENT, transparency: 94 }
706
+ });
707
+ }
708
+ if (i > 0) colDivider(s, x - 0.15, Y, 2.6);
709
+ let innerY = Y;
710
+ s.addText(tier.name.toUpperCase(), { x, y: innerY, w: tColW, h: 0.25, fontSize: 12, fontFace: FONT_B, bold: true, color: tier.highlighted ? ACCENT_L : 'F5F5F5', charSpacing: 3, margin: 0 });
711
+ innerY += 0.3;
712
+ s.addText(tier.price, { x, y: innerY, w: tColW, h: 0.55, fontSize: 36, fontFace: FONT_H, bold: true, color: tier.highlighted ? ACCENT_L : 'F5F5F5', margin: 0, shrinkText: true });
713
+ innerY += 0.6;
714
+ addDivider(s, innerY, x, tColW);
715
+ innerY += 0.15;
716
+ const featText = tier.features.map(f => ({
717
+ text: f, options: { bullet: true, breakLine: true, fontSize: 10, color: '8B8FA3' }
718
+ }));
719
+ s.addText(featText, { x, y: innerY, w: tColW, h: 1.5, fontFace: FONT_B, margin: 0, valign: 'top' });
720
+ });
721
+ // Projections
722
+ const pY = 4.5;
723
+ sd.projections.forEach((p, i) => {
724
+ const px = L.SAFE_X + i * 3.2;
725
+ if (i > 0) colDivider(s, px - 0.15, pY, 0.6);
726
+ s.addText(p.label.toUpperCase(), { x: px, y: pY, w: 2.8, h: 0.2, fontSize: 9, fontFace: FONT_B, color: '8B8FA3', charSpacing: 2, margin: 0 });
727
+ s.addText(p.value, { x: px, y: pY + 0.22, w: 2.8, h: 0.35, fontSize: 22, fontFace: FONT_H, bold: true, color: ACCENT_L, margin: 0 });
728
+ });
729
+ })();
730
+
731
+ // 16. SECURITY
732
+ (function() {
733
+ const sd = slides[15];
734
+ const s = slideWithBg(sd.background, sd.category);
735
+ let Y = L.CONTENT_START;
736
+ Y = addLabel(s, sd.label, Y);
737
+ Y = addTitle(s, sd.title, Y, { maxW: 5.5 });
738
+ Y = addSub(s, sd.subtitle, Y, { maxW: 5 });
739
+ Y += 0.15;
740
+ [sd.left, sd.right].forEach((col, ci) => {
741
+ const x = L.SAFE_X + ci * 4.5;
742
+ col.forEach((f, fi) => {
743
+ const fy = Y + fi * 0.8;
744
+ accentBorder(s, x, fy, 0.55);
745
+ s.addText(f.title, { x: x + 0.2, y: fy, w: 4, h: 0.22, fontSize: 12, fontFace: FONT_B, bold: true, color: 'F5F5F5', margin: 0 });
746
+ s.addText(f.desc, { x: x + 0.2, y: fy + 0.26, w: 4, h: 0.2, fontSize: 10, fontFace: FONT_B, color: '8B8FA3', margin: 0 });
747
+ });
748
+ });
749
+ })();
750
+
751
+ // 17. CTA
752
+ (function() {
753
+ const sd = slides[16];
754
+ const s = pres.addSlide();
755
+ s.background = { data: getBackground('deep') };
756
+ s.addImage({ data: renderOrb('#' + ACCENT, 1200), x: 2.0, y: -0.5, w: 6, h: 6 });
757
+ let Y = 0.8;
758
+ s.addText(sd.label.toUpperCase(), {
759
+ x: 0, y: Y, w: 10, h: 0.25,
760
+ fontSize: 11, fontFace: FONT_B, bold: true, color: ACCENT_L, charSpacing: 5, align: 'center', margin: 0
761
+ });
762
+ Y += 0.5;
763
+ const titleH = estimateTextHeight(sd.title, 48, 8, { bold: true, margin: 0 });
764
+ s.addText(sd.title, {
765
+ x: 1, y: Y, w: 8, h: titleH,
766
+ fontSize: 48, fontFace: FONT_H, bold: true, color: 'F5F5F5', align: 'center', margin: 0, lineSpacingMultiple: 1.05
767
+ });
768
+ Y += titleH + 0.3;
769
+ addDivider(s, Y, 4.3, 1.4);
770
+ Y += 0.35;
771
+ s.addText(sd.subtitle, {
772
+ x: 2, y: Y, w: 6, h: 0.8,
773
+ fontSize: 15, fontFace: FONT_B, color: '8B8FA3', align: 'center', margin: 0, lineSpacingMultiple: 1.4
774
+ });
775
+ Y += 1.0;
776
+ // Asks
777
+ sd.asks.forEach((ask, i) => {
778
+ const ax = 2 + i * 2.2;
779
+ if (i > 0) colDivider(s, ax - 0.15, Y, 0.7);
780
+ s.addText(ask.value, { x: ax, y: Y, w: 1.8, h: 0.4, fontSize: 30, fontFace: FONT_H, bold: true, color: ACCENT_L, align: 'center', margin: 0 });
781
+ s.addText(ask.label, { x: ax, y: Y + 0.42, w: 1.8, h: 0.2, fontSize: 10, fontFace: FONT_B, color: '8B8FA3', align: 'center', margin: 0 });
782
+ });
783
+ Y += 1.0;
784
+ s.addText('GROOVE', { x: 0, y: Y, w: 10, h: 0.35, fontSize: 18, fontFace: FONT_H, bold: true, color: 'F5F5F5', align: 'center', margin: 0 });
785
+ s.addText(sd.contact, { x: 0, y: Y + 0.35, w: 10, h: 0.25, fontSize: 11, fontFace: FONT_B, color: '8B8FA3', align: 'center', margin: 0 });
786
+ })();
787
+
788
+ // ─── Write file ───
789
+ pres.writeFile({ fileName: 'deck.pptx' }).then(() => {
790
+ console.log('✓ deck.pptx generated successfully');
791
+ console.log(` ${slides.length} slides | accent: #${ACCENT} | fonts: ${FONT_H} + ${FONT_B}`);
792
+ }).catch(err => {
793
+ console.error('Error generating PPTX:', err);
794
+ process.exit(1);
795
+ });