@dodona/papyros 3.0.2 → 4.0.0-beta.2

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 (233) hide show
  1. package/README.md +133 -72
  2. package/dist/Components.d.ts +4 -0
  3. package/dist/Components.js +5 -0
  4. package/dist/Components.js.map +1 -0
  5. package/dist/Papyros.d.ts +18 -127
  6. package/dist/Papyros.js +39 -211
  7. package/dist/Papyros.js.map +1 -1
  8. package/dist/{Backend.d.ts → backend/Backend.d.ts} +3 -12
  9. package/dist/{Backend.js → backend/Backend.js} +4 -17
  10. package/dist/backend/Backend.js.map +1 -0
  11. package/dist/{workers → backend/workers}/javascript/JavaScriptWorker.js +1 -1
  12. package/dist/backend/workers/javascript/JavaScriptWorker.js.map +1 -0
  13. package/dist/backend/workers/javascript/worker.js.map +1 -0
  14. package/dist/{workers → backend/workers}/python/PythonWorker.d.ts +2 -2
  15. package/dist/{workers → backend/workers}/python/PythonWorker.js +2 -2
  16. package/dist/backend/workers/python/PythonWorker.js.map +1 -0
  17. package/dist/backend/workers/python/python_package.tar.gz.load_by_url +0 -0
  18. package/dist/backend/workers/python/worker.js.map +1 -0
  19. package/dist/communication/BackendEvent.js.map +1 -0
  20. package/dist/{BackendEventQueue.d.ts → communication/BackendEventQueue.d.ts} +1 -36
  21. package/dist/{BackendEventQueue.js → communication/BackendEventQueue.js} +2 -45
  22. package/dist/communication/BackendEventQueue.js.map +1 -0
  23. package/dist/{BackendManager.d.ts → communication/BackendManager.d.ts} +2 -2
  24. package/dist/{BackendManager.js → communication/BackendManager.js} +4 -4
  25. package/dist/communication/BackendManager.js.map +1 -0
  26. package/dist/communication/InputServiceWorker.js +37 -0
  27. package/dist/communication/InputServiceWorker.js.map +1 -0
  28. package/dist/communication/InputWorker.js.map +1 -0
  29. package/dist/frontend/components/CodeRunner.d.ts +9 -0
  30. package/dist/frontend/components/CodeRunner.js +60 -0
  31. package/dist/frontend/components/CodeRunner.js.map +1 -0
  32. package/dist/frontend/components/Debugger.d.ts +7 -0
  33. package/dist/frontend/components/Debugger.js +62 -0
  34. package/dist/frontend/components/Debugger.js.map +1 -0
  35. package/dist/frontend/components/Input.d.ts +17 -0
  36. package/dist/frontend/components/Input.js +73 -0
  37. package/dist/frontend/components/Input.js.map +1 -0
  38. package/dist/frontend/components/Output.d.ts +14 -0
  39. package/dist/frontend/components/Output.js +154 -0
  40. package/dist/frontend/components/Output.js.map +1 -0
  41. package/dist/frontend/components/PapyrosElement.d.ts +8 -0
  42. package/dist/frontend/components/PapyrosElement.js +24 -0
  43. package/dist/frontend/components/PapyrosElement.js.map +1 -0
  44. package/dist/frontend/components/app/App.d.ts +24 -0
  45. package/dist/frontend/components/app/App.js +204 -0
  46. package/dist/frontend/components/app/App.js.map +1 -0
  47. package/dist/frontend/components/app/ExamplePicker.d.ts +7 -0
  48. package/dist/frontend/components/app/ExamplePicker.js +35 -0
  49. package/dist/frontend/components/app/ExamplePicker.js.map +1 -0
  50. package/dist/frontend/components/app/LanguagePicker.d.ts +7 -0
  51. package/dist/frontend/components/app/LanguagePicker.js +35 -0
  52. package/dist/frontend/components/app/LanguagePicker.js.map +1 -0
  53. package/dist/frontend/components/app/ProgrammingLanguagePicker.d.ts +7 -0
  54. package/dist/frontend/components/app/ProgrammingLanguagePicker.js +39 -0
  55. package/dist/frontend/components/app/ProgrammingLanguagePicker.js.map +1 -0
  56. package/dist/frontend/components/app/examples/JavaScriptExamples.js.map +1 -0
  57. package/dist/frontend/components/app/examples/PythonExamples.js.map +1 -0
  58. package/dist/frontend/components/app/themes/ThemePicker.d.ts +11 -0
  59. package/dist/frontend/components/app/themes/ThemePicker.js +47 -0
  60. package/dist/frontend/components/app/themes/ThemePicker.js.map +1 -0
  61. package/dist/frontend/components/app/themes/ThemedButton.d.ts +9 -0
  62. package/dist/frontend/components/app/themes/ThemedButton.js +43 -0
  63. package/dist/frontend/components/app/themes/ThemedButton.js.map +1 -0
  64. package/dist/frontend/components/code_mirror/BatchInputEditor.d.ts +8 -0
  65. package/dist/frontend/components/code_mirror/BatchInputEditor.js +54 -0
  66. package/dist/frontend/components/code_mirror/BatchInputEditor.js.map +1 -0
  67. package/dist/frontend/components/code_mirror/CodeEditor.d.ts +24 -0
  68. package/dist/frontend/components/code_mirror/CodeEditor.js +206 -0
  69. package/dist/frontend/components/code_mirror/CodeEditor.js.map +1 -0
  70. package/dist/frontend/components/code_mirror/CodeMirrorEditor.d.ts +20 -0
  71. package/dist/frontend/components/code_mirror/CodeMirrorEditor.js +99 -0
  72. package/dist/frontend/components/code_mirror/CodeMirrorEditor.js.map +1 -0
  73. package/dist/frontend/components/code_mirror/Extensions.d.ts +15 -0
  74. package/dist/frontend/components/code_mirror/Extensions.js +169 -0
  75. package/dist/frontend/components/code_mirror/Extensions.js.map +1 -0
  76. package/dist/frontend/components/code_mirror/MaterialTheme.d.ts +5 -0
  77. package/dist/frontend/components/code_mirror/MaterialTheme.js +109 -0
  78. package/dist/frontend/components/code_mirror/MaterialTheme.js.map +1 -0
  79. package/dist/frontend/components/code_runner/ButtonLint.d.ts +9 -0
  80. package/dist/frontend/components/code_runner/ButtonLint.js +76 -0
  81. package/dist/frontend/components/code_runner/ButtonLint.js.map +1 -0
  82. package/dist/frontend/components/code_runner/Code.d.ts +7 -0
  83. package/dist/frontend/components/code_runner/Code.js +46 -0
  84. package/dist/frontend/components/code_runner/Code.js.map +1 -0
  85. package/dist/frontend/components/code_runner/RunState.d.ts +7 -0
  86. package/dist/frontend/components/code_runner/RunState.js +41 -0
  87. package/dist/frontend/components/code_runner/RunState.js.map +1 -0
  88. package/dist/frontend/components/input/BatchInput.d.ts +19 -0
  89. package/dist/frontend/components/input/BatchInput.js +92 -0
  90. package/dist/frontend/components/input/BatchInput.js.map +1 -0
  91. package/dist/frontend/components/input/InteractiveInput.d.ts +13 -0
  92. package/dist/frontend/components/input/InteractiveInput.js +73 -0
  93. package/dist/frontend/components/input/InteractiveInput.js.map +1 -0
  94. package/dist/frontend/state/Constants.d.ts +38 -0
  95. package/dist/frontend/state/Constants.js +108 -0
  96. package/dist/frontend/state/Constants.js.map +1 -0
  97. package/dist/frontend/state/Debugger.d.ts +23 -0
  98. package/dist/frontend/state/Debugger.js +80 -0
  99. package/dist/frontend/state/Debugger.js.map +1 -0
  100. package/dist/frontend/state/Examples.d.ts +11 -0
  101. package/dist/frontend/state/Examples.js +36 -0
  102. package/dist/frontend/state/Examples.js.map +1 -0
  103. package/dist/frontend/state/I18n.d.ts +16 -0
  104. package/dist/frontend/state/I18n.js +75 -0
  105. package/dist/frontend/state/I18n.js.map +1 -0
  106. package/dist/frontend/state/InputOutput.d.ts +55 -0
  107. package/dist/frontend/state/InputOutput.js +93 -0
  108. package/dist/frontend/state/InputOutput.js.map +1 -0
  109. package/dist/frontend/state/Runner.d.ts +118 -0
  110. package/dist/frontend/state/Runner.js +334 -0
  111. package/dist/frontend/state/Runner.js.map +1 -0
  112. package/dist/frontend/state/Test.d.ts +11 -0
  113. package/dist/frontend/state/Test.js +59 -0
  114. package/dist/frontend/state/Test.js.map +1 -0
  115. package/dist/frontend/state/Translations.d.ts +178 -0
  116. package/dist/frontend/state/Translations.js +188 -0
  117. package/dist/frontend/state/Translations.js.map +1 -0
  118. package/dist/frontend/state/themes/blue-dark.d.ts +2 -0
  119. package/dist/frontend/state/themes/blue-dark.js +55 -0
  120. package/dist/frontend/state/themes/blue-dark.js.map +1 -0
  121. package/dist/frontend/state/themes/blue-light.d.ts +2 -0
  122. package/dist/frontend/state/themes/blue-light.js +55 -0
  123. package/dist/frontend/state/themes/blue-light.js.map +1 -0
  124. package/dist/frontend/state/themes/green-dark.d.ts +2 -0
  125. package/dist/frontend/state/themes/green-dark.js +55 -0
  126. package/dist/frontend/state/themes/green-dark.js.map +1 -0
  127. package/dist/frontend/state/themes/green-light.d.ts +2 -0
  128. package/dist/frontend/state/themes/green-light.js +55 -0
  129. package/dist/frontend/state/themes/green-light.js.map +1 -0
  130. package/dist/frontend/state/themes/red-dark.d.ts +2 -0
  131. package/dist/frontend/state/themes/red-dark.js +55 -0
  132. package/dist/frontend/state/themes/red-dark.js.map +1 -0
  133. package/dist/frontend/state/themes/red-light.d.ts +2 -0
  134. package/dist/frontend/state/themes/red-light.js +55 -0
  135. package/dist/frontend/state/themes/red-light.js.map +1 -0
  136. package/dist/util/Util.d.ts +1 -4
  137. package/dist/util/Util.js +7 -8
  138. package/dist/util/Util.js.map +1 -1
  139. package/package.json +13 -21
  140. package/dist/App.d.ts +0 -1
  141. package/dist/App.js +0 -76
  142. package/dist/App.js.map +0 -1
  143. package/dist/Backend.js.map +0 -1
  144. package/dist/BackendEvent.js.map +0 -1
  145. package/dist/BackendEventQueue.js.map +0 -1
  146. package/dist/BackendManager.js.map +0 -1
  147. package/dist/CodeRunner.d.ts +0 -188
  148. package/dist/CodeRunner.js +0 -548
  149. package/dist/CodeRunner.js.map +0 -1
  150. package/dist/Constants.d.ts +0 -31
  151. package/dist/Constants.js +0 -36
  152. package/dist/Constants.js.map +0 -1
  153. package/dist/Debugger.d.ts +0 -18
  154. package/dist/Debugger.js +0 -86
  155. package/dist/Debugger.js.map +0 -1
  156. package/dist/InputManager.d.ts +0 -38
  157. package/dist/InputManager.js +0 -101
  158. package/dist/InputManager.js.map +0 -1
  159. package/dist/InputServiceWorker.js.map +0 -1
  160. package/dist/Library.d.ts +0 -12
  161. package/dist/Library.js +0 -9
  162. package/dist/Library.js.map +0 -1
  163. package/dist/OutputManager.d.ts +0 -90
  164. package/dist/OutputManager.js +0 -172
  165. package/dist/OutputManager.js.map +0 -1
  166. package/dist/Papyros.css +0 -657
  167. package/dist/Translations.d.ts +0 -180
  168. package/dist/Translations.js +0 -191
  169. package/dist/Translations.js.map +0 -1
  170. package/dist/editor/BatchInputEditor.d.ts +0 -41
  171. package/dist/editor/BatchInputEditor.js +0 -80
  172. package/dist/editor/BatchInputEditor.js.map +0 -1
  173. package/dist/editor/CodeEditor.d.ts +0 -81
  174. package/dist/editor/CodeEditor.js +0 -213
  175. package/dist/editor/CodeEditor.js.map +0 -1
  176. package/dist/editor/CodeMirrorEditor.d.ts +0 -133
  177. package/dist/editor/CodeMirrorEditor.js +0 -169
  178. package/dist/editor/CodeMirrorEditor.js.map +0 -1
  179. package/dist/editor/DarkTheme.d.ts +0 -1
  180. package/dist/editor/DarkTheme.js +0 -72
  181. package/dist/editor/DarkTheme.js.map +0 -1
  182. package/dist/editor/DebugExtension.d.ts +0 -11
  183. package/dist/editor/DebugExtension.js +0 -70
  184. package/dist/editor/DebugExtension.js.map +0 -1
  185. package/dist/editor/Gutters.d.ts +0 -109
  186. package/dist/editor/Gutters.js +0 -201
  187. package/dist/editor/Gutters.js.map +0 -1
  188. package/dist/editor/LineEffectExtension.d.ts +0 -13
  189. package/dist/editor/LineEffectExtension.js +0 -48
  190. package/dist/editor/LineEffectExtension.js.map +0 -1
  191. package/dist/editor/TestCodeExtension.d.ts +0 -21
  192. package/dist/editor/TestCodeExtension.js +0 -134
  193. package/dist/editor/TestCodeExtension.js.map +0 -1
  194. package/dist/examples/Examples.d.ts +0 -6
  195. package/dist/examples/Examples.js +0 -23
  196. package/dist/examples/Examples.js.map +0 -1
  197. package/dist/examples/JavaScriptExamples.js.map +0 -1
  198. package/dist/examples/PythonExamples.js.map +0 -1
  199. package/dist/input/BatchInputHandler.d.ts +0 -55
  200. package/dist/input/BatchInputHandler.js +0 -131
  201. package/dist/input/BatchInputHandler.js.map +0 -1
  202. package/dist/input/InteractiveInputHandler.d.ts +0 -27
  203. package/dist/input/InteractiveInputHandler.js +0 -89
  204. package/dist/input/InteractiveInputHandler.js.map +0 -1
  205. package/dist/input/UserInputHandler.d.ts +0 -68
  206. package/dist/input/UserInputHandler.js +0 -39
  207. package/dist/input/UserInputHandler.js.map +0 -1
  208. package/dist/util/HTMLShapes.d.ts +0 -15
  209. package/dist/util/HTMLShapes.js +0 -25
  210. package/dist/util/HTMLShapes.js.map +0 -1
  211. package/dist/util/Rendering.d.ts +0 -120
  212. package/dist/util/Rendering.js +0 -142
  213. package/dist/util/Rendering.js.map +0 -1
  214. package/dist/workers/input/InputWorker.js.map +0 -1
  215. package/dist/workers/javascript/JavaScriptWorker.js.map +0 -1
  216. package/dist/workers/javascript/worker.js.map +0 -1
  217. package/dist/workers/python/PythonWorker.js.map +0 -1
  218. package/dist/workers/python/python_package.tar.gz.load_by_url +0 -0
  219. package/dist/workers/python/worker.js.map +0 -1
  220. /package/dist/{workers → backend/workers}/javascript/JavaScriptWorker.d.ts +0 -0
  221. /package/dist/{workers → backend/workers}/javascript/worker.d.ts +0 -0
  222. /package/dist/{workers → backend/workers}/javascript/worker.js +0 -0
  223. /package/dist/{workers → backend/workers}/python/worker.d.ts +0 -0
  224. /package/dist/{workers → backend/workers}/python/worker.js +0 -0
  225. /package/dist/{BackendEvent.d.ts → communication/BackendEvent.d.ts} +0 -0
  226. /package/dist/{BackendEvent.js → communication/BackendEvent.js} +0 -0
  227. /package/dist/{InputServiceWorker.d.ts → communication/InputServiceWorker.d.ts} +0 -0
  228. /package/dist/{workers/input → communication}/InputWorker.d.ts +0 -0
  229. /package/dist/{workers/input → communication}/InputWorker.js +0 -0
  230. /package/dist/{examples → frontend/components/app/examples}/JavaScriptExamples.d.ts +0 -0
  231. /package/dist/{examples → frontend/components/app/examples}/JavaScriptExamples.js +0 -0
  232. /package/dist/{examples → frontend/components/app/examples}/PythonExamples.d.ts +0 -0
  233. /package/dist/{examples → frontend/components/app/examples}/PythonExamples.js +0 -0
@@ -1,548 +0,0 @@
1
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
2
- var useValue = arguments.length > 2;
3
- for (var i = 0; i < initializers.length; i++) {
4
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
5
- }
6
- return useValue ? value : void 0;
7
- };
8
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
9
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
10
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
11
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
12
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
13
- var _, done = false;
14
- for (var i = decorators.length - 1; i >= 0; i--) {
15
- var context = {};
16
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
17
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
18
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
19
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
20
- if (kind === "accessor") {
21
- if (result === void 0) continue;
22
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
23
- if (_ = accept(result.get)) descriptor.get = _;
24
- if (_ = accept(result.set)) descriptor.set = _;
25
- if (_ = accept(result.init)) initializers.unshift(_);
26
- }
27
- else if (_ = accept(result)) {
28
- if (kind === "field") initializers.unshift(_);
29
- else descriptor[key] = _;
30
- }
31
- }
32
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
33
- done = true;
34
- };
35
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
- return new (P || (P = Promise))(function (resolve, reject) {
38
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
- step((generator = generator.apply(thisArg, _arguments || [])).next());
42
- });
43
- };
44
- import { proxy } from "comlink";
45
- import { RunMode } from "./Backend";
46
- import { BackendEventType } from "./BackendEvent";
47
- import { BackendManager } from "./BackendManager";
48
- import { CodeEditor } from "./editor/CodeEditor";
49
- import { addPapyrosPrefix, APPLICATION_STATE_TEXT_ID, CODE_BUTTONS_WRAPPER_ID, DEFAULT_EDITOR_DELAY, RUN_BUTTONS_WRAPPER_ID, STATE_SPINNER_ID, STOP_BTN_ID } from "./Constants";
50
- import { InputManager, InputMode } from "./InputManager";
51
- import { renderSpinningCircle } from "./util/HTMLShapes";
52
- import { addListener, downloadResults, getElement, parseData, t } from "./util/Util";
53
- import { appendClasses, Renderable, renderButton, renderWithOptions } from "./util/Rendering";
54
- import { OutputManager } from "./OutputManager";
55
- import { Debugger } from "./Debugger";
56
- const MODE_ICONS = {
57
- "debug": "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"18px\" viewBox=\"0 0 24 24\" width=\"18px\" fill=\"currentColor\"><path d=\"M19 7H16.19C15.74 6.2 15.12 5.5 14.37 5L16 3.41L14.59 2L12.42 4.17C11.96 4.06 11.5 4 11 4S10.05 4.06 9.59 4.17L7.41 2L6 3.41L7.62 5C6.87 5.5 6.26 6.21 5.81 7H3V9H5.09C5.03 9.33 5 9.66 5 10V11H3V13H5V14C5 14.34 5.03 14.67 5.09 15H3V17H5.81C7.26 19.5 10.28 20.61 13 19.65V19C13 18.43 13.09 17.86 13.25 17.31C12.59 17.76 11.8 18 11 18C8.79 18 7 16.21 7 14V10C7 7.79 8.79 6 11 6S15 7.79 15 10V14C15 14.19 15 14.39 14.95 14.58C15.54 14.04 16.24 13.62 17 13.35V13H19V11H17V10C17 9.66 16.97 9.33 16.91 9H19V7M13 9V11H9V9H13M13 13V15H9V13H13M17 16V22L22 19L17 16Z\"></path></svg>",
58
- "doctest": "<i class=\"mdi mdi-play\"></i>",
59
- "run": "<i class=\"mdi mdi-play\"></i>"
60
- };
61
- const DEBUG_STOP_ICON = "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"18px\" viewBox=\"0 0 24 24\" width=\"18px\" fill=\"currentColor\"><path d=\"M19 7H16.19C15.74 6.2 15.12 5.5 14.37 5L16 3.41L14.59 2L12.42 4.17C11.96 4.06 11.5 4 11 4S10.05 4.06 9.59 4.17L7.41 2L6 3.41L7.62 5C6.87 5.5 6.26 6.21 5.81 7H3V9H5.09C5.03 9.33 5 9.66 5 10V11H3V13H5V14C5 14.34 5.03 14.67 5.09 15H3V17H5.81C7.26 19.5 10.28 20.61 13 19.65V19C13 18.43 13.09 17.86 13.25 17.31C12.59 17.76 11.8 18 11 18C8.79 18 7 16.21 7 14V10C7 7.79 8.79 6 11 6S15 7.79 15 10V14C15 14.19 15 14.39 14.95 14.58C15.54 14.04 16.24 13.62 17 13.35V13H19V11H17V10C17 9.66 16.97 9.33 16.91 9H19V7M13 9V11H9V9H13M13 13V15H9V13H13M16 16H22V22H16V16Z\" /></svg>";
62
- /**
63
- * Enum representing the possible states while processing code
64
- */
65
- export var RunState;
66
- (function (RunState) {
67
- RunState["Loading"] = "loading";
68
- RunState["Running"] = "running";
69
- RunState["AwaitingInput"] = "awaiting_input";
70
- RunState["Stopping"] = "stopping";
71
- RunState["Ready"] = "ready";
72
- })(RunState || (RunState = {}));
73
- /**
74
- * Helper class to avoid code duplication when handling buttons
75
- * It is an ordered array that does not allow duplicate ids
76
- */
77
- class ButtonArray extends Array {
78
- add(button, onClick) {
79
- this.remove(button.id);
80
- this.push({
81
- id: button.id,
82
- buttonHTML: renderButton(button),
83
- onClick
84
- });
85
- }
86
- remove(id) {
87
- const existingIndex = this.findIndex(b => b.id === id);
88
- if (existingIndex !== -1) {
89
- this.splice(existingIndex, 1);
90
- }
91
- }
92
- }
93
- /*
94
- * class function decorator that adds a delay,
95
- * so that the function is only called after the delay has passed
96
- *
97
- * If it is called again before the delay has passed, the previous call is cancelled
98
- */
99
- function delay(delay) {
100
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
101
- return function (original, context) {
102
- let timeout;
103
- return function (...args) {
104
- clearTimeout(timeout);
105
- timeout = setTimeout(() => original.apply(this, args), delay);
106
- };
107
- };
108
- }
109
- /**
110
- * Helper component to manage and visualize the current RunState
111
- */
112
- let CodeRunner = (() => {
113
- var _a;
114
- let _classSuper = Renderable;
115
- let _instanceExtraInitializers = [];
116
- let _renderCodeActionButtons_decorators;
117
- let _renderUserButtons_decorators;
118
- return _a = class CodeRunner extends _classSuper {
119
- /**
120
- * Construct a new RunStateManager with the given listeners
121
- * @param {ProgrammingLanguage} programmingLanguage The language to use
122
- * @param {InputMode} inputMode The input mode to use
123
- */
124
- constructor(programmingLanguage, inputMode) {
125
- super();
126
- /**
127
- * The currently used programming language
128
- */
129
- this.programmingLanguage = __runInitializers(this, _instanceExtraInitializers);
130
- // True while running or viewing with debugger
131
- this._debugMode = false;
132
- this.programmingLanguage = programmingLanguage;
133
- this.editor = new CodeEditor(() => {
134
- if (this.state === RunState.Ready) {
135
- this.runCode();
136
- }
137
- });
138
- this.inputManager = new InputManager((input) => __awaiter(this, void 0, void 0, function* () {
139
- const backend = yield this.backend;
140
- backend.writeMessage(input);
141
- this.setState(RunState.Running);
142
- }), inputMode);
143
- this.outputManager = new OutputManager();
144
- this.backend = Promise.resolve({});
145
- this.userButtons = new ButtonArray();
146
- this.runButtons = new ButtonArray();
147
- this.updateRunButtons([RunMode.Debug]);
148
- this.editor.onChange({
149
- onChange: (code) => __awaiter(this, void 0, void 0, function* () {
150
- const backend = yield this.backend;
151
- const modes = yield backend.workerProxy.runModes(code);
152
- this.updateRunButtons(modes);
153
- this.renderCodeActionButtons();
154
- }),
155
- delay: DEFAULT_EDITOR_DELAY
156
- });
157
- BackendManager.subscribe(BackendEventType.Input, () => this.setState(RunState.AwaitingInput));
158
- this.loadingPackages = [];
159
- BackendManager.subscribe(BackendEventType.Loading, e => this.onLoad(e));
160
- BackendManager.subscribe(BackendEventType.Start, e => this.onStart(e));
161
- BackendManager.subscribe(BackendEventType.Stop, () => this.stop());
162
- this.previousState = RunState.Ready;
163
- this.runStartTime = new Date().getTime();
164
- this.state = RunState.Ready;
165
- this.traceViewer = new Debugger();
166
- }
167
- set debugMode(debugMode) {
168
- this._debugMode = debugMode;
169
- this.renderCodeActionButtons();
170
- if (this.inputManager.getInputMode() === InputMode.Batch) {
171
- const handler = this.inputManager.inputHandler;
172
- handler.debugMode = debugMode;
173
- }
174
- this.outputManager.debugMode = debugMode;
175
- this.editor.debugMode = debugMode;
176
- if (!this._debugMode) {
177
- this.traceViewer.reset();
178
- this.outputManager.reset();
179
- this.inputManager.inputHandler.reset();
180
- }
181
- this.dispatchEvent(new CustomEvent("debug-mode", { detail: debugMode }));
182
- }
183
- get debugMode() {
184
- return this._debugMode;
185
- }
186
- /**
187
- * Stops the current run and resets the state of the program
188
- * Regular and debug output is cleared
189
- * @return {Promise<void>} Returns when the program has been reset
190
- */
191
- reset() {
192
- return __awaiter(this, void 0, void 0, function* () {
193
- if (![RunState.Ready, RunState.Loading].includes(this.state)) {
194
- yield this.stop();
195
- }
196
- this.debugMode = false;
197
- this.inputManager.inputHandler.reset();
198
- this.outputManager.reset();
199
- this.traceViewer.reset();
200
- });
201
- }
202
- updateRunButtons(modes) {
203
- this.runButtons = new ButtonArray();
204
- this.addRunButton(RunMode.Run, "btn-primary");
205
- modes.forEach(m => this.addRunButton(m));
206
- }
207
- addRunButton(mode, classNames = "btn-secondary") {
208
- const id = addPapyrosPrefix(mode) + "-code-btn";
209
- this.runButtons.add({
210
- id: id,
211
- buttonText: t(`Papyros.run_modes.${mode}`),
212
- classNames,
213
- icon: MODE_ICONS[mode]
214
- }, () => this.runCode(mode));
215
- }
216
- /**
217
- * Start the backend to enable running code
218
- */
219
- start() {
220
- return __awaiter(this, void 0, void 0, function* () {
221
- this.setState(RunState.Loading);
222
- const backend = BackendManager.getBackend(this.programmingLanguage);
223
- this.editor.setProgrammingLanguage(this.programmingLanguage);
224
- // Use a Promise to immediately enable running while downloading
225
- // eslint-disable-next-line no-async-promise-executor
226
- this.backend = new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
227
- const workerProxy = backend.workerProxy;
228
- yield workerProxy
229
- // Allow passing messages between worker and main thread
230
- .launch(proxy((e) => BackendManager.publish(e)), proxy(() => {
231
- this.outputManager.onOverflow(null);
232
- }));
233
- if (this.state === RunState.Stopping) {
234
- // If we were stopped while loading, return early
235
- return resolve(backend);
236
- }
237
- this.editor.setLintingSource((view) => __awaiter(this, void 0, void 0, function* () {
238
- const workerDiagnostics = yield workerProxy.lintCode(this.editor.getCode());
239
- return workerDiagnostics.map(d => {
240
- const fromline = view.state.doc.line(d.lineNr);
241
- const toLine = view.state.doc.line(d.endLineNr);
242
- const from = Math.min(fromline.from + d.columnNr, fromline.to);
243
- const to = Math.min(toLine.from + d.endColumnNr, toLine.to);
244
- return Object.assign(Object.assign({}, d), { from: from, to: to });
245
- });
246
- }));
247
- return resolve(backend);
248
- }));
249
- this.editor.focus();
250
- this.setState(RunState.Ready);
251
- });
252
- }
253
- /**
254
- * Interrupt the currently running code
255
- * @return {Promise<void>} Returns when the code has been interrupted
256
- */
257
- stop() {
258
- return __awaiter(this, void 0, void 0, function* () {
259
- this.setState(RunState.Stopping);
260
- BackendManager.publish({
261
- type: BackendEventType.End,
262
- data: "User cancelled run", contentType: "text/plain"
263
- });
264
- const backend = yield this.backend;
265
- yield backend.interrupt();
266
- while (this.state === RunState.Stopping) {
267
- yield new Promise(resolve => setTimeout(resolve, 100));
268
- }
269
- });
270
- }
271
- /**
272
- * Set the used programming language to the given one to allow editing and running code
273
- * @param {ProgrammingLanguage} programmingLanguage The language to use
274
- */
275
- setProgrammingLanguage(programmingLanguage) {
276
- return __awaiter(this, void 0, void 0, function* () {
277
- if (this.programmingLanguage !== programmingLanguage) { // Expensive, so ensure it is needed
278
- yield this.backend.then(b => b.interrupt());
279
- this.programmingLanguage = programmingLanguage;
280
- yield this.start();
281
- }
282
- });
283
- }
284
- provideFiles(inlinedFiles, hrefFiles) {
285
- return __awaiter(this, void 0, void 0, function* () {
286
- const fileNames = [...Object.keys(inlinedFiles), ...Object.keys(hrefFiles)];
287
- if (fileNames.length === 0) {
288
- return;
289
- }
290
- BackendManager.publish({ type: BackendEventType.Loading, data: JSON.stringify({
291
- modules: fileNames,
292
- status: "loading"
293
- }) });
294
- const backend = yield this.backend;
295
- yield backend.workerProxy.provideFiles(inlinedFiles, hrefFiles);
296
- });
297
- }
298
- /**
299
- * @return {ProgrammingLanguage} The current programming language
300
- */
301
- getProgrammingLanguage() {
302
- return this.programmingLanguage;
303
- }
304
- /**
305
- * Show or hide the spinning circle, representing a running animation
306
- * @param {boolean} show Whether to show the spinner
307
- */
308
- showSpinner(show) {
309
- getElement(STATE_SPINNER_ID).style.display = show ? "" : "none";
310
- }
311
- /**
312
- * Show the current state of the program to the user
313
- * @param {RunState} state The current state of the run
314
- * @param {string} message Optional message to indicate the state
315
- */
316
- setState(state, message) {
317
- var _b;
318
- const stateElement = getElement(APPLICATION_STATE_TEXT_ID);
319
- stateElement.innerText = message || t(`Papyros.states.${state}`);
320
- (_b = stateElement.parentElement) === null || _b === void 0 ? void 0 : _b.classList.toggle("show", stateElement.innerText.length > 0);
321
- if (state !== this.state) {
322
- this.previousState = this.state;
323
- this.state = state;
324
- }
325
- this.showSpinner(this.state !== RunState.Ready);
326
- this.renderCodeActionButtons();
327
- }
328
- /**
329
- * @return {RunState} The state of the current run
330
- */
331
- getState() {
332
- return this.state;
333
- }
334
- /**
335
- * Remove a button from the internal button list. Requires a re-render to update
336
- * @param {string} id Identifier of the button to remove
337
- */
338
- removeButton(id) {
339
- this.userButtons.remove(id);
340
- this.renderUserButtons();
341
- }
342
- /**
343
- * Add a button to display to the user
344
- * @param {ButtonOptions} options Options for rendering the button
345
- * @param {function} onClick Listener for click events on the button
346
- */
347
- addButton(options, onClick) {
348
- this.userButtons.add(options, onClick);
349
- this.renderUserButtons();
350
- }
351
- /**
352
- * Generate a button that the user can click to process code
353
- * Can either run the code or interrupt it if already running
354
- * @return {DynamicButton} A list of buttons to interact with the code according to the current state
355
- */
356
- getCodeActionButtons() {
357
- if (this.state === RunState.Ready) {
358
- if (this.debugMode) {
359
- return [{
360
- id: "stop-debug-btn",
361
- buttonHTML: renderButton({
362
- id: "stop-debug-btn",
363
- buttonText: t("Papyros.debug.stop"),
364
- classNames: "btn-secondary",
365
- icon: DEBUG_STOP_ICON
366
- }),
367
- onClick: () => this.debugMode = false
368
- }];
369
- }
370
- else {
371
- return this.runButtons;
372
- }
373
- }
374
- else {
375
- return [{
376
- id: STOP_BTN_ID,
377
- buttonHTML: renderButton({
378
- id: STOP_BTN_ID,
379
- buttonText: t("Papyros.stop"),
380
- classNames: "btn-danger",
381
- icon: "<i class=\"mdi mdi-stop\"></i>"
382
- }),
383
- onClick: () => this.stop()
384
- }];
385
- }
386
- }
387
- /**
388
- * @param {DynamicButton[]} buttons The buttons to render
389
- * @param {string} id The id of the element to render the buttons in
390
- */
391
- renderButtons(buttons, id) {
392
- getElement(id).innerHTML = buttons.map(b => b.buttonHTML).join("\n");
393
- // Buttons are freshly added to the DOM, so attach listeners now
394
- buttons.forEach(b => addListener(b.id, b.onClick, "click"));
395
- }
396
- renderCodeActionButtons() {
397
- this.renderButtons(this.getCodeActionButtons(), RUN_BUTTONS_WRAPPER_ID);
398
- }
399
- renderUserButtons() {
400
- this.renderButtons(this.userButtons, CODE_BUTTONS_WRAPPER_ID);
401
- }
402
- _render(options) {
403
- appendClasses(options.statusPanelOptions, "_tw-border-solid _tw-border-gray-200 _tw-border-b-2 dark:_tw-border-dark-mode-content");
404
- const rendered = renderWithOptions(options.statusPanelOptions, `
405
- <div style="position: relative">
406
- <div class="papyros-state-card cm-panels">
407
- ${renderSpinningCircle(STATE_SPINNER_ID, "_tw-border-gray-200 _tw-border-b-red-500")}
408
- <div id="${APPLICATION_STATE_TEXT_ID}"></div>
409
- </div>
410
- </div>
411
- <div class="_tw-items-center _tw-px-1 _tw-flex _tw-flex-row _tw-justify-between">
412
- <div id="${RUN_BUTTONS_WRAPPER_ID}">
413
- </div>
414
- <div id="${CODE_BUTTONS_WRAPPER_ID}">
415
- </div>
416
- </div>`);
417
- this.setState(this.state);
418
- this.renderUserButtons();
419
- this.inputManager.render(options.inputOptions);
420
- this.outputManager.render(options.outputOptions);
421
- this.editor.render(options.codeEditorOptions);
422
- this.editor.setPanel(rendered);
423
- // Set language again to update the placeholder
424
- this.editor.setProgrammingLanguage(this.programmingLanguage);
425
- this.traceViewer.render(options.traceOptions);
426
- return rendered;
427
- }
428
- /**
429
- * Execute the code in the editor
430
- * @param {RunMode} mode The mode to run with
431
- * @return {Promise<void>} Promise of running the code
432
- */
433
- runCode(mode) {
434
- return __awaiter(this, void 0, void 0, function* () {
435
- this.debugMode = mode === RunMode.Debug;
436
- const code = this.editor.getCode();
437
- // Setup pre-run
438
- this.setState(RunState.Loading);
439
- // Ensure we go back to Loading after finishing any remaining installs
440
- this.previousState = RunState.Loading;
441
- BackendManager.publish({
442
- type: BackendEventType.Start,
443
- data: "StartClicked", contentType: "text/plain"
444
- });
445
- let interrupted = false;
446
- let terminated = false;
447
- const backend = yield this.backend;
448
- this.runStartTime = new Date().getTime();
449
- try {
450
- yield backend.call(backend.workerProxy.runCode, code, mode);
451
- }
452
- catch (error) {
453
- if (error.type === "InterruptError") {
454
- // Error signaling forceful interrupt
455
- interrupted = true;
456
- terminated = true;
457
- }
458
- else {
459
- BackendManager.publish({
460
- type: BackendEventType.Error,
461
- data: JSON.stringify(error),
462
- contentType: "text/json"
463
- });
464
- BackendManager.publish({
465
- type: BackendEventType.End,
466
- data: "RunError", contentType: "text/plain"
467
- });
468
- }
469
- }
470
- finally {
471
- if (this.state === RunState.Stopping) {
472
- // Was interrupted, End message already published
473
- interrupted = true;
474
- }
475
- if (terminated) {
476
- yield this.start();
477
- }
478
- else if (yield backend.workerProxy.hasOverflow()) {
479
- this.outputManager.onOverflow(() => __awaiter(this, void 0, void 0, function* () {
480
- const backend = yield this.backend;
481
- const overflowResults = (yield backend.workerProxy.getOverflow())
482
- .map(e => e.data).join("");
483
- downloadResults(overflowResults, "overflow-results.txt");
484
- }));
485
- }
486
- this.setState(RunState.Ready, t(interrupted ? "Papyros.interrupted" : "Papyros.finished", { time: (new Date().getTime() - this.runStartTime) / 1000 }));
487
- }
488
- });
489
- }
490
- /**
491
- * Callback to handle loading events
492
- * @param {BackendEvent} e The loading event
493
- */
494
- onLoad(e) {
495
- const loadingData = parseData(e.data, e.contentType);
496
- if (loadingData.status === "loading") {
497
- loadingData.modules.forEach(m => {
498
- if (!this.loadingPackages.includes(m)) {
499
- this.loadingPackages.push(m);
500
- }
501
- });
502
- }
503
- else if (loadingData.status === "loaded") {
504
- loadingData.modules.forEach(m => {
505
- const index = this.loadingPackages.indexOf(m);
506
- if (index !== -1) {
507
- this.loadingPackages.splice(index, 1);
508
- }
509
- });
510
- }
511
- else { // failed
512
- // If it is a true module, an Exception will be raised when running
513
- // So this does not need to be handled here, as it is often an incomplete package-name
514
- // that causes micropip to not find the correct wheel
515
- this.loadingPackages = [];
516
- }
517
- if (this.loadingPackages.length > 0) {
518
- const packageMessage = t("Papyros.loading", {
519
- // limit amount of package names shown
520
- packages: this.loadingPackages.slice(0, 3).join(", ")
521
- });
522
- this.setState(RunState.Loading, packageMessage);
523
- }
524
- else {
525
- this.setState(this.previousState);
526
- }
527
- }
528
- onStart(e) {
529
- const startData = parseData(e.data, e.contentType);
530
- if (startData.includes("RunCode")) {
531
- this.runStartTime = new Date().getTime();
532
- this.setState(RunState.Running);
533
- }
534
- }
535
- },
536
- (() => {
537
- var _b;
538
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create((_b = _classSuper[Symbol.metadata]) !== null && _b !== void 0 ? _b : null) : void 0;
539
- _renderCodeActionButtons_decorators = [delay(100)];
540
- _renderUserButtons_decorators = [delay(100)];
541
- __esDecorate(_a, null, _renderCodeActionButtons_decorators, { kind: "method", name: "renderCodeActionButtons", static: false, private: false, access: { has: obj => "renderCodeActionButtons" in obj, get: obj => obj.renderCodeActionButtons }, metadata: _metadata }, null, _instanceExtraInitializers);
542
- __esDecorate(_a, null, _renderUserButtons_decorators, { kind: "method", name: "renderUserButtons", static: false, private: false, access: { has: obj => "renderUserButtons" in obj, get: obj => obj.renderUserButtons }, metadata: _metadata }, null, _instanceExtraInitializers);
543
- if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
544
- })(),
545
- _a;
546
- })();
547
- export { CodeRunner };
548
- //# sourceMappingURL=CodeRunner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CodeRunner.js","sourceRoot":"","sources":["../src/CodeRunner.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import { ProgrammingLanguage } from "./ProgrammingLanguage";
2
- /**
3
- * Add a prefix to a string, ensuring uniqueness in the page
4
- * @param {string} s The value to add a prefix to
5
- * @return {string} The value with an almost certainly unused prefix
6
- */
7
- export declare function addPapyrosPrefix(s: string): string;
8
- export declare const MAIN_APP_ID: string;
9
- export declare const OUTPUT_AREA_WRAPPER_ID: string;
10
- export declare const OUTPUT_AREA_ID: string;
11
- export declare const OUTPUT_OVERFLOW_ID: string;
12
- export declare const INPUT_AREA_WRAPPER_ID: string;
13
- export declare const INPUT_TA_ID: string;
14
- export declare const USER_INPUT_WRAPPER_ID: string;
15
- export declare const EDITOR_WRAPPER_ID: string;
16
- export declare const PANEL_WRAPPER_ID: string;
17
- export declare const STATE_SPINNER_ID: string;
18
- export declare const APPLICATION_STATE_TEXT_ID: string;
19
- export declare const CODE_BUTTONS_WRAPPER_ID: string;
20
- export declare const RUN_BUTTONS_WRAPPER_ID: string;
21
- export declare const STOP_BTN_ID: string;
22
- export declare const SEND_INPUT_BTN_ID: string;
23
- export declare const SWITCH_INPUT_MODE_A_ID: string;
24
- export declare const EXAMPLE_SELECT_ID: string;
25
- export declare const LOCALE_SELECT_ID: string;
26
- export declare const PROGRAMMING_LANGUAGE_SELECT_ID: string;
27
- export declare const DARK_MODE_TOGGLE_ID: string;
28
- export declare const DEFAULT_PROGRAMMING_LANGUAGE = ProgrammingLanguage.Python;
29
- export declare const DEFAULT_LOCALE = "nl";
30
- export declare const DEFAULT_SERVICE_WORKER = "InputServiceWorker.js";
31
- export declare const DEFAULT_EDITOR_DELAY = 750;
package/dist/Constants.js DELETED
@@ -1,36 +0,0 @@
1
- import { ProgrammingLanguage } from "./ProgrammingLanguage";
2
- /**
3
- * Add a prefix to a string, ensuring uniqueness in the page
4
- * @param {string} s The value to add a prefix to
5
- * @return {string} The value with an almost certainly unused prefix
6
- */
7
- export function addPapyrosPrefix(s) {
8
- return `__papyros-${s}`;
9
- }
10
- /* Default HTML ids for various elements */
11
- export const MAIN_APP_ID = addPapyrosPrefix("root");
12
- export const OUTPUT_AREA_WRAPPER_ID = addPapyrosPrefix("code-output-area-wrapper");
13
- export const OUTPUT_AREA_ID = addPapyrosPrefix("code-output-area");
14
- export const OUTPUT_OVERFLOW_ID = addPapyrosPrefix("output-overflow");
15
- export const INPUT_AREA_WRAPPER_ID = addPapyrosPrefix("code-input-area-wrapper");
16
- export const INPUT_TA_ID = addPapyrosPrefix("code-input-area");
17
- export const USER_INPUT_WRAPPER_ID = addPapyrosPrefix("user-input-wrapper");
18
- export const EDITOR_WRAPPER_ID = addPapyrosPrefix("code-area");
19
- export const PANEL_WRAPPER_ID = addPapyrosPrefix("code-status-panel");
20
- export const STATE_SPINNER_ID = addPapyrosPrefix("state-spinner");
21
- export const APPLICATION_STATE_TEXT_ID = addPapyrosPrefix("application-state-text");
22
- export const CODE_BUTTONS_WRAPPER_ID = addPapyrosPrefix("code-buttons");
23
- export const RUN_BUTTONS_WRAPPER_ID = addPapyrosPrefix("run-buttons");
24
- export const STOP_BTN_ID = addPapyrosPrefix("stop-btn");
25
- export const SEND_INPUT_BTN_ID = addPapyrosPrefix("send-input-btn");
26
- export const SWITCH_INPUT_MODE_A_ID = addPapyrosPrefix("switch-input-mode");
27
- export const EXAMPLE_SELECT_ID = addPapyrosPrefix("example-select");
28
- export const LOCALE_SELECT_ID = addPapyrosPrefix("locale-select");
29
- export const PROGRAMMING_LANGUAGE_SELECT_ID = addPapyrosPrefix("programming-language-select");
30
- export const DARK_MODE_TOGGLE_ID = addPapyrosPrefix("toggle-dark-mode");
31
- /* Default values for various properties */
32
- export const DEFAULT_PROGRAMMING_LANGUAGE = ProgrammingLanguage.Python;
33
- export const DEFAULT_LOCALE = "nl";
34
- export const DEFAULT_SERVICE_WORKER = "InputServiceWorker.js";
35
- export const DEFAULT_EDITOR_DELAY = 750; // milliseconds
36
- //# sourceMappingURL=Constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Constants.js","sourceRoot":"","sources":["../src/Constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACtC,OAAO,aAAa,CAAC,EAAE,CAAC;AAC5B,CAAC;AACD,2CAA2C;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,0BAA0B,CAAC,CAAC;AACnF,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;AACjF,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,yBAAyB,GAAG,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;AACpF,MAAM,CAAC,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,8BAA8B,GAAG,gBAAgB,CAAC,6BAA6B,CAAC,CAAC;AAC9F,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AACxE,2CAA2C;AAC3C,MAAM,CAAC,MAAM,4BAA4B,GAAG,mBAAmB,CAAC,MAAM,CAAC;AACvE,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AACnC,MAAM,CAAC,MAAM,sBAAsB,GAAG,uBAAuB,CAAC;AAC9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC,CAAC,eAAe"}