apexify.js 4.8.1 → 4.8.3

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 (256) hide show
  1. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  2. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  3. package/lib/ai/ApexAI.ts +4 -4
  4. package/lib/ai/ApexModules.ts +8 -8
  5. package/lib/ai/modals/electronHub/chatmodels.ts +1 -1
  6. package/lib/ai/modals/electronHub/imageModels.ts +2 -2
  7. package/lib/ai/modals/electronHub/speechModels.ts +1 -1
  8. package/lib/ai/utils.ts +3 -5
  9. package/lib/canvas/ApexPainter.ts +4 -4
  10. package/lib/canvas/utils/Background/bg.ts +1 -1
  11. package/lib/canvas/utils/Charts/charts.ts +1 -1
  12. package/lib/canvas/utils/Custom/customLines.ts +2 -2
  13. package/lib/canvas/utils/General/general functions.ts +1 -1
  14. package/lib/canvas/utils/Image/imageProperties.ts +1 -1
  15. package/lib/canvas/utils/Texts/textProperties.ts +1 -1
  16. package/lib/canvas/utils/utils.ts +8 -8
  17. package/lib/index.ts +5 -5
  18. package/lib/utils.ts +3 -3
  19. package/package.json +6 -4
  20. package/dist/cjs/ai/ApexAI.d.ts +0 -145
  21. package/dist/cjs/ai/ApexAI.d.ts.map +0 -1
  22. package/dist/cjs/ai/ApexAI.js +0 -494
  23. package/dist/cjs/ai/ApexAI.js.map +0 -1
  24. package/dist/cjs/ai/ApexModules.d.ts +0 -53
  25. package/dist/cjs/ai/ApexModules.d.ts.map +0 -1
  26. package/dist/cjs/ai/ApexModules.js +0 -819
  27. package/dist/cjs/ai/ApexModules.js.map +0 -1
  28. package/dist/cjs/ai/functions/readFiles.d.ts +0 -2
  29. package/dist/cjs/ai/functions/readFiles.d.ts.map +0 -1
  30. package/dist/cjs/ai/functions/readFiles.js +0 -96
  31. package/dist/cjs/ai/functions/readFiles.js.map +0 -1
  32. package/dist/cjs/ai/functions/tokenizer.d.ts +0 -10
  33. package/dist/cjs/ai/functions/tokenizer.d.ts.map +0 -1
  34. package/dist/cjs/ai/functions/tokenizer.js +0 -64
  35. package/dist/cjs/ai/functions/tokenizer.js.map +0 -1
  36. package/dist/cjs/ai/functions/typeWriter.d.ts +0 -2
  37. package/dist/cjs/ai/functions/typeWriter.d.ts.map +0 -1
  38. package/dist/cjs/ai/functions/typeWriter.js +0 -24
  39. package/dist/cjs/ai/functions/typeWriter.js.map +0 -1
  40. package/dist/cjs/ai/functions/validOptions.d.ts +0 -22
  41. package/dist/cjs/ai/functions/validOptions.d.ts.map +0 -1
  42. package/dist/cjs/ai/functions/validOptions.js +0 -103
  43. package/dist/cjs/ai/functions/validOptions.js.map +0 -1
  44. package/dist/cjs/ai/modals/electronHub/chatmodels.d.ts +0 -7
  45. package/dist/cjs/ai/modals/electronHub/chatmodels.d.ts.map +0 -1
  46. package/dist/cjs/ai/modals/electronHub/chatmodels.js +0 -51
  47. package/dist/cjs/ai/modals/electronHub/chatmodels.js.map +0 -1
  48. package/dist/cjs/ai/modals/electronHub/imageModels.d.ts +0 -12
  49. package/dist/cjs/ai/modals/electronHub/imageModels.d.ts.map +0 -1
  50. package/dist/cjs/ai/modals/electronHub/imageModels.js +0 -92
  51. package/dist/cjs/ai/modals/electronHub/imageModels.js.map +0 -1
  52. package/dist/cjs/ai/modals/electronHub/songModels.d.ts +0 -2
  53. package/dist/cjs/ai/modals/electronHub/songModels.d.ts.map +0 -1
  54. package/dist/cjs/ai/modals/electronHub/songModels.js +0 -3
  55. package/dist/cjs/ai/modals/electronHub/songModels.js.map +0 -1
  56. package/dist/cjs/ai/modals/electronHub/speechModels.d.ts +0 -7
  57. package/dist/cjs/ai/modals/electronHub/speechModels.d.ts.map +0 -1
  58. package/dist/cjs/ai/modals/electronHub/speechModels.js +0 -63
  59. package/dist/cjs/ai/modals/electronHub/speechModels.js.map +0 -1
  60. package/dist/cjs/ai/modals/electronHub/videoModels.d.ts +0 -6
  61. package/dist/cjs/ai/modals/electronHub/videoModels.d.ts.map +0 -1
  62. package/dist/cjs/ai/modals/electronHub/videoModels.js +0 -63
  63. package/dist/cjs/ai/modals/electronHub/videoModels.js.map +0 -1
  64. package/dist/cjs/ai/modals/groq/chatgroq.d.ts +0 -9
  65. package/dist/cjs/ai/modals/groq/chatgroq.d.ts.map +0 -1
  66. package/dist/cjs/ai/modals/groq/chatgroq.js +0 -64
  67. package/dist/cjs/ai/modals/groq/chatgroq.js.map +0 -1
  68. package/dist/cjs/ai/modals/groq/imageAnalyzer.d.ts +0 -8
  69. package/dist/cjs/ai/modals/groq/imageAnalyzer.d.ts.map +0 -1
  70. package/dist/cjs/ai/modals/groq/imageAnalyzer.js +0 -82
  71. package/dist/cjs/ai/modals/groq/imageAnalyzer.js.map +0 -1
  72. package/dist/cjs/ai/modals/groq/whisper.d.ts +0 -5
  73. package/dist/cjs/ai/modals/groq/whisper.d.ts.map +0 -1
  74. package/dist/cjs/ai/modals/groq/whisper.js +0 -108
  75. package/dist/cjs/ai/modals/groq/whisper.js.map +0 -1
  76. package/dist/cjs/ai/modals/hercai/chatModels.d.ts +0 -7
  77. package/dist/cjs/ai/modals/hercai/chatModels.d.ts.map +0 -1
  78. package/dist/cjs/ai/modals/hercai/chatModels.js +0 -23
  79. package/dist/cjs/ai/modals/hercai/chatModels.js.map +0 -1
  80. package/dist/cjs/ai/utils.d.ts +0 -6
  81. package/dist/cjs/ai/utils.d.ts.map +0 -1
  82. package/dist/cjs/ai/utils.js +0 -17
  83. package/dist/cjs/ai/utils.js.map +0 -1
  84. package/dist/cjs/canvas/ApexPainter.d.ts +0 -145
  85. package/dist/cjs/canvas/ApexPainter.d.ts.map +0 -1
  86. package/dist/cjs/canvas/ApexPainter.js +0 -908
  87. package/dist/cjs/canvas/ApexPainter.js.map +0 -1
  88. package/dist/cjs/canvas/Themes/Level-Up/levelup.d.ts +0 -11
  89. package/dist/cjs/canvas/Themes/Level-Up/levelup.d.ts.map +0 -1
  90. package/dist/cjs/canvas/Themes/Level-Up/levelup.js +0 -163
  91. package/dist/cjs/canvas/Themes/Level-Up/levelup.js.map +0 -1
  92. package/dist/cjs/canvas/utils/Background/bg.d.ts +0 -31
  93. package/dist/cjs/canvas/utils/Background/bg.d.ts.map +0 -1
  94. package/dist/cjs/canvas/utils/Background/bg.js +0 -161
  95. package/dist/cjs/canvas/utils/Background/bg.js.map +0 -1
  96. package/dist/cjs/canvas/utils/Charts/charts.d.ts +0 -8
  97. package/dist/cjs/canvas/utils/Charts/charts.d.ts.map +0 -1
  98. package/dist/cjs/canvas/utils/Charts/charts.js +0 -464
  99. package/dist/cjs/canvas/utils/Charts/charts.js.map +0 -1
  100. package/dist/cjs/canvas/utils/Custom/customLines.d.ts +0 -3
  101. package/dist/cjs/canvas/utils/Custom/customLines.d.ts.map +0 -1
  102. package/dist/cjs/canvas/utils/Custom/customLines.js +0 -109
  103. package/dist/cjs/canvas/utils/Custom/customLines.js.map +0 -1
  104. package/dist/cjs/canvas/utils/General/conversion.d.ts +0 -6
  105. package/dist/cjs/canvas/utils/General/conversion.d.ts.map +0 -1
  106. package/dist/cjs/canvas/utils/General/conversion.js +0 -34
  107. package/dist/cjs/canvas/utils/General/conversion.js.map +0 -1
  108. package/dist/cjs/canvas/utils/General/general functions.d.ts +0 -39
  109. package/dist/cjs/canvas/utils/General/general functions.d.ts.map +0 -1
  110. package/dist/cjs/canvas/utils/General/general functions.js +0 -606
  111. package/dist/cjs/canvas/utils/General/general functions.js.map +0 -1
  112. package/dist/cjs/canvas/utils/Image/imageProperties.d.ts +0 -115
  113. package/dist/cjs/canvas/utils/Image/imageProperties.d.ts.map +0 -1
  114. package/dist/cjs/canvas/utils/Image/imageProperties.js +0 -602
  115. package/dist/cjs/canvas/utils/Image/imageProperties.js.map +0 -1
  116. package/dist/cjs/canvas/utils/Texts/textProperties.d.ts +0 -17
  117. package/dist/cjs/canvas/utils/Texts/textProperties.d.ts.map +0 -1
  118. package/dist/cjs/canvas/utils/Texts/textProperties.js +0 -160
  119. package/dist/cjs/canvas/utils/Texts/textProperties.js.map +0 -1
  120. package/dist/cjs/canvas/utils/types.d.ts +0 -622
  121. package/dist/cjs/canvas/utils/types.d.ts.map +0 -1
  122. package/dist/cjs/canvas/utils/types.js +0 -7
  123. package/dist/cjs/canvas/utils/types.js.map +0 -1
  124. package/dist/cjs/canvas/utils/utils.d.ts +0 -19
  125. package/dist/cjs/canvas/utils/utils.d.ts.map +0 -1
  126. package/dist/cjs/canvas/utils/utils.js +0 -53
  127. package/dist/cjs/canvas/utils/utils.js.map +0 -1
  128. package/dist/cjs/index.d.ts +0 -29
  129. package/dist/cjs/index.d.ts.map +0 -1
  130. package/dist/cjs/index.js +0 -117
  131. package/dist/cjs/index.js.map +0 -1
  132. package/dist/cjs/tsconfig.cjs.tsbuildinfo +0 -1
  133. package/dist/cjs/utils.d.ts +0 -5
  134. package/dist/cjs/utils.d.ts.map +0 -1
  135. package/dist/cjs/utils.js +0 -16
  136. package/dist/cjs/utils.js.map +0 -1
  137. package/dist/esm/ai/ApexAI.d.ts +0 -145
  138. package/dist/esm/ai/ApexAI.d.ts.map +0 -1
  139. package/dist/esm/ai/ApexAI.js +0 -494
  140. package/dist/esm/ai/ApexAI.js.map +0 -1
  141. package/dist/esm/ai/ApexModules.d.ts +0 -53
  142. package/dist/esm/ai/ApexModules.d.ts.map +0 -1
  143. package/dist/esm/ai/ApexModules.js +0 -819
  144. package/dist/esm/ai/ApexModules.js.map +0 -1
  145. package/dist/esm/ai/functions/readFiles.d.ts +0 -2
  146. package/dist/esm/ai/functions/readFiles.d.ts.map +0 -1
  147. package/dist/esm/ai/functions/readFiles.js +0 -96
  148. package/dist/esm/ai/functions/readFiles.js.map +0 -1
  149. package/dist/esm/ai/functions/tokenizer.d.ts +0 -10
  150. package/dist/esm/ai/functions/tokenizer.d.ts.map +0 -1
  151. package/dist/esm/ai/functions/tokenizer.js +0 -64
  152. package/dist/esm/ai/functions/tokenizer.js.map +0 -1
  153. package/dist/esm/ai/functions/typeWriter.d.ts +0 -2
  154. package/dist/esm/ai/functions/typeWriter.d.ts.map +0 -1
  155. package/dist/esm/ai/functions/typeWriter.js +0 -24
  156. package/dist/esm/ai/functions/typeWriter.js.map +0 -1
  157. package/dist/esm/ai/functions/validOptions.d.ts +0 -22
  158. package/dist/esm/ai/functions/validOptions.d.ts.map +0 -1
  159. package/dist/esm/ai/functions/validOptions.js +0 -103
  160. package/dist/esm/ai/functions/validOptions.js.map +0 -1
  161. package/dist/esm/ai/modals/electronHub/chatmodels.d.ts +0 -7
  162. package/dist/esm/ai/modals/electronHub/chatmodels.d.ts.map +0 -1
  163. package/dist/esm/ai/modals/electronHub/chatmodels.js +0 -51
  164. package/dist/esm/ai/modals/electronHub/chatmodels.js.map +0 -1
  165. package/dist/esm/ai/modals/electronHub/imageModels.d.ts +0 -12
  166. package/dist/esm/ai/modals/electronHub/imageModels.d.ts.map +0 -1
  167. package/dist/esm/ai/modals/electronHub/imageModels.js +0 -92
  168. package/dist/esm/ai/modals/electronHub/imageModels.js.map +0 -1
  169. package/dist/esm/ai/modals/electronHub/songModels.d.ts +0 -2
  170. package/dist/esm/ai/modals/electronHub/songModels.d.ts.map +0 -1
  171. package/dist/esm/ai/modals/electronHub/songModels.js +0 -3
  172. package/dist/esm/ai/modals/electronHub/songModels.js.map +0 -1
  173. package/dist/esm/ai/modals/electronHub/speechModels.d.ts +0 -7
  174. package/dist/esm/ai/modals/electronHub/speechModels.d.ts.map +0 -1
  175. package/dist/esm/ai/modals/electronHub/speechModels.js +0 -63
  176. package/dist/esm/ai/modals/electronHub/speechModels.js.map +0 -1
  177. package/dist/esm/ai/modals/electronHub/videoModels.d.ts +0 -6
  178. package/dist/esm/ai/modals/electronHub/videoModels.d.ts.map +0 -1
  179. package/dist/esm/ai/modals/electronHub/videoModels.js +0 -63
  180. package/dist/esm/ai/modals/electronHub/videoModels.js.map +0 -1
  181. package/dist/esm/ai/modals/groq/chatgroq.d.ts +0 -9
  182. package/dist/esm/ai/modals/groq/chatgroq.d.ts.map +0 -1
  183. package/dist/esm/ai/modals/groq/chatgroq.js +0 -64
  184. package/dist/esm/ai/modals/groq/chatgroq.js.map +0 -1
  185. package/dist/esm/ai/modals/groq/imageAnalyzer.d.ts +0 -8
  186. package/dist/esm/ai/modals/groq/imageAnalyzer.d.ts.map +0 -1
  187. package/dist/esm/ai/modals/groq/imageAnalyzer.js +0 -82
  188. package/dist/esm/ai/modals/groq/imageAnalyzer.js.map +0 -1
  189. package/dist/esm/ai/modals/groq/whisper.d.ts +0 -5
  190. package/dist/esm/ai/modals/groq/whisper.d.ts.map +0 -1
  191. package/dist/esm/ai/modals/groq/whisper.js +0 -108
  192. package/dist/esm/ai/modals/groq/whisper.js.map +0 -1
  193. package/dist/esm/ai/modals/hercai/chatModels.d.ts +0 -7
  194. package/dist/esm/ai/modals/hercai/chatModels.d.ts.map +0 -1
  195. package/dist/esm/ai/modals/hercai/chatModels.js +0 -23
  196. package/dist/esm/ai/modals/hercai/chatModels.js.map +0 -1
  197. package/dist/esm/ai/utils.d.ts +0 -6
  198. package/dist/esm/ai/utils.d.ts.map +0 -1
  199. package/dist/esm/ai/utils.js +0 -17
  200. package/dist/esm/ai/utils.js.map +0 -1
  201. package/dist/esm/canvas/ApexPainter.d.ts +0 -145
  202. package/dist/esm/canvas/ApexPainter.d.ts.map +0 -1
  203. package/dist/esm/canvas/ApexPainter.js +0 -908
  204. package/dist/esm/canvas/ApexPainter.js.map +0 -1
  205. package/dist/esm/canvas/Themes/Level-Up/levelup.d.ts +0 -11
  206. package/dist/esm/canvas/Themes/Level-Up/levelup.d.ts.map +0 -1
  207. package/dist/esm/canvas/Themes/Level-Up/levelup.js +0 -163
  208. package/dist/esm/canvas/Themes/Level-Up/levelup.js.map +0 -1
  209. package/dist/esm/canvas/utils/Background/bg.d.ts +0 -31
  210. package/dist/esm/canvas/utils/Background/bg.d.ts.map +0 -1
  211. package/dist/esm/canvas/utils/Background/bg.js +0 -161
  212. package/dist/esm/canvas/utils/Background/bg.js.map +0 -1
  213. package/dist/esm/canvas/utils/Charts/charts.d.ts +0 -8
  214. package/dist/esm/canvas/utils/Charts/charts.d.ts.map +0 -1
  215. package/dist/esm/canvas/utils/Charts/charts.js +0 -464
  216. package/dist/esm/canvas/utils/Charts/charts.js.map +0 -1
  217. package/dist/esm/canvas/utils/Custom/customLines.d.ts +0 -3
  218. package/dist/esm/canvas/utils/Custom/customLines.d.ts.map +0 -1
  219. package/dist/esm/canvas/utils/Custom/customLines.js +0 -109
  220. package/dist/esm/canvas/utils/Custom/customLines.js.map +0 -1
  221. package/dist/esm/canvas/utils/General/conversion.d.ts +0 -6
  222. package/dist/esm/canvas/utils/General/conversion.d.ts.map +0 -1
  223. package/dist/esm/canvas/utils/General/conversion.js +0 -34
  224. package/dist/esm/canvas/utils/General/conversion.js.map +0 -1
  225. package/dist/esm/canvas/utils/General/general functions.d.ts +0 -39
  226. package/dist/esm/canvas/utils/General/general functions.d.ts.map +0 -1
  227. package/dist/esm/canvas/utils/General/general functions.js +0 -606
  228. package/dist/esm/canvas/utils/General/general functions.js.map +0 -1
  229. package/dist/esm/canvas/utils/Image/imageProperties.d.ts +0 -115
  230. package/dist/esm/canvas/utils/Image/imageProperties.d.ts.map +0 -1
  231. package/dist/esm/canvas/utils/Image/imageProperties.js +0 -602
  232. package/dist/esm/canvas/utils/Image/imageProperties.js.map +0 -1
  233. package/dist/esm/canvas/utils/Texts/textProperties.d.ts +0 -17
  234. package/dist/esm/canvas/utils/Texts/textProperties.d.ts.map +0 -1
  235. package/dist/esm/canvas/utils/Texts/textProperties.js +0 -160
  236. package/dist/esm/canvas/utils/Texts/textProperties.js.map +0 -1
  237. package/dist/esm/canvas/utils/types.d.ts +0 -622
  238. package/dist/esm/canvas/utils/types.d.ts.map +0 -1
  239. package/dist/esm/canvas/utils/types.js +0 -7
  240. package/dist/esm/canvas/utils/types.js.map +0 -1
  241. package/dist/esm/canvas/utils/utils.d.ts +0 -19
  242. package/dist/esm/canvas/utils/utils.d.ts.map +0 -1
  243. package/dist/esm/canvas/utils/utils.js +0 -53
  244. package/dist/esm/canvas/utils/utils.js.map +0 -1
  245. package/dist/esm/index.d.ts +0 -29
  246. package/dist/esm/index.d.ts.map +0 -1
  247. package/dist/esm/index.js +0 -117
  248. package/dist/esm/index.js.map +0 -1
  249. package/dist/esm/tsconfig.esm.tsbuildinfo +0 -1
  250. package/dist/esm/utils.d.ts +0 -5
  251. package/dist/esm/utils.d.ts.map +0 -1
  252. package/dist/esm/utils.js +0 -16
  253. package/dist/esm/utils.js.map +0 -1
  254. package/lib/ai/functions/typeWriter.ts +0 -24
  255. package/lib/ai/modals/electronHub/songModels.ts +0 -0
  256. package/lib/canvas/Themes/Level-Up/levelup.ts +0 -183
@@ -1,606 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.loadImages = loadImages;
7
- exports.resizingImg = resizingImg;
8
- exports.converter = converter;
9
- exports.applyColorFilters = applyColorFilters;
10
- exports.imgEffects = imgEffects;
11
- exports.cropInner = cropInner;
12
- exports.cropOuter = cropOuter;
13
- exports.detectColors = detectColors;
14
- exports.removeColor = removeColor;
15
- exports.bgRemoval = bgRemoval;
16
- const path_1 = __importDefault(require("path"));
17
- const sharp_1 = __importDefault(require("sharp"));
18
- const canvas_1 = require("@napi-rs/canvas");
19
- const fs_1 = __importDefault(require("fs"));
20
- const axios_1 = __importDefault(require("axios"));
21
- async function loadImages(imagePath) {
22
- try {
23
- if (!imagePath) {
24
- throw new Error("Image path is required.");
25
- }
26
- if (imagePath.startsWith("http")) {
27
- const response = await fetch(imagePath);
28
- if (!response.ok) {
29
- throw new Error("Failed to fetch image.");
30
- }
31
- const buffer = await response.arrayBuffer();
32
- return (0, sharp_1.default)(buffer);
33
- }
34
- else {
35
- const absolutePath = path_1.default.join(process.cwd(), imagePath);
36
- return (0, sharp_1.default)(absolutePath);
37
- }
38
- }
39
- catch (error) {
40
- console.error("Error loading image:", error);
41
- throw new Error("Failed to load image");
42
- }
43
- }
44
- /**
45
- * Resizes an image using Sharp with additional options for quality, kernel, and withoutEnlargement.
46
- * @param resizeOptions - The options for resizing.
47
- * @returns A Promise that resolves with the resized image as a Buffer.
48
- */
49
- async function resizingImg(resizeOptions) {
50
- try {
51
- if (!resizeOptions.imagePath) {
52
- throw new Error("Image path is required for resizing.");
53
- }
54
- // ✅ Use `loadImages()` instead of handling the fetch manually
55
- const image = await loadImages(resizeOptions.imagePath);
56
- const resizeOptionsForSharp = {
57
- width: resizeOptions.size?.width || 500,
58
- height: resizeOptions.size?.height || 500,
59
- fit: resizeOptions.maintainAspectRatio ? sharp_1.default.fit.inside : sharp_1.default.fit.fill,
60
- kernel: sharp_1.default.kernel.lanczos3,
61
- withoutEnlargement: true,
62
- };
63
- const quality = resizeOptions.quality ?? 90;
64
- const resizedBuffer = await image
65
- .resize(resizeOptionsForSharp)
66
- .png({ quality })
67
- .toBuffer();
68
- return resizedBuffer;
69
- }
70
- catch (error) {
71
- console.error("Error resizing image:", error);
72
- throw new Error("Failed to resize image");
73
- }
74
- }
75
- async function converter(imagePath, newExtension) {
76
- try {
77
- const validExtensions = ['jpeg', 'png', 'webp', 'tiff', 'gif', 'avif', 'heif', 'raw', 'pdf', 'svg'];
78
- const newExt = newExtension.toLowerCase();
79
- if (!validExtensions.includes(newExt)) {
80
- throw new Error(`Invalid image format: ${newExt}`);
81
- }
82
- let image;
83
- if (imagePath.startsWith("http")) {
84
- const response = await fetch(imagePath);
85
- if (!response.ok) {
86
- throw new Error("Failed to fetch image.");
87
- }
88
- const buffer = await response.arrayBuffer();
89
- image = (0, sharp_1.default)(Buffer.from(buffer));
90
- }
91
- else {
92
- if (!imagePath) {
93
- throw new Error("Image path is required.");
94
- }
95
- const absolutePath = path_1.default.join(process.cwd(), imagePath);
96
- image = (0, sharp_1.default)(absolutePath);
97
- }
98
- const convertedBuffer = await image.toFormat(newExt).toBuffer();
99
- return convertedBuffer;
100
- }
101
- catch (error) {
102
- console.error("Error changing image extension:", error);
103
- throw new Error("Failed to change image extension");
104
- }
105
- }
106
- async function applyColorFilters(imagePath, gradientOptions, opacity = 1) {
107
- try {
108
- let image;
109
- if (imagePath.startsWith("http")) {
110
- const pngBuffer = await converter(imagePath, "png");
111
- image = (0, sharp_1.default)(pngBuffer);
112
- }
113
- else {
114
- const imagePathResolved = path_1.default.join(process.cwd(), imagePath);
115
- image = await (0, sharp_1.default)(imagePathResolved);
116
- }
117
- const metadata = await image.metadata();
118
- let gradientImage;
119
- if (typeof gradientOptions === 'string') {
120
- gradientImage = createSolidColorImage(metadata.width, metadata.height, gradientOptions, opacity);
121
- }
122
- else {
123
- gradientImage = createGradientImage(metadata.width, metadata.height, gradientOptions, opacity);
124
- }
125
- const outputBuffer = await image
126
- .composite([{ input: gradientImage, blend: 'over' }])
127
- .toBuffer();
128
- return outputBuffer;
129
- }
130
- catch (error) {
131
- console.error("Error applying color filter:", error);
132
- throw new Error("Failed to apply color filter");
133
- }
134
- }
135
- function createSolidColorImage(width, height, color, opacity) {
136
- const solidColorCanvas = (0, canvas_1.createCanvas)(width, height);
137
- const ctx = solidColorCanvas.getContext('2d');
138
- ctx.globalAlpha = opacity;
139
- ctx.fillStyle = color;
140
- ctx.fillRect(0, 0, width, height);
141
- return solidColorCanvas.toBuffer('image/png');
142
- }
143
- function createGradientImage(width, height, options, opacity) {
144
- const { type, colors } = options;
145
- const gradientCanvas = (0, canvas_1.createCanvas)(width, height);
146
- const ctx = gradientCanvas.getContext('2d');
147
- if (type === 'linear') {
148
- const gradient = ctx.createLinearGradient(options.startX || 0, options.startY || 0, options.endX || width, options.endY || height);
149
- colors.forEach(({ stop, color }) => {
150
- gradient.addColorStop(stop, color);
151
- });
152
- ctx.fillStyle = gradient;
153
- }
154
- else if (type === 'radial') {
155
- const gradient = ctx.createRadialGradient(options.startX || width / 2, options.startY || height / 2, options.startRadius || 0, options.endX || width / 2, options.endY || height / 2, options.endRadius || Math.max(width, height));
156
- colors.forEach(({ stop, color }) => {
157
- gradient.addColorStop(stop, color);
158
- });
159
- ctx.fillStyle = gradient;
160
- }
161
- ctx.globalAlpha = opacity;
162
- ctx.fillRect(0, 0, width, height);
163
- return gradientCanvas.toBuffer('image/png');
164
- }
165
- async function imgEffects(imagePath, filters) {
166
- try {
167
- let image;
168
- if (imagePath.startsWith("http")) {
169
- const response = await axios_1.default.get(imagePath, { responseType: "arraybuffer" });
170
- image = await (0, canvas_1.loadImage)(response.data);
171
- }
172
- else {
173
- const imagePathResolved = path_1.default.resolve(process.cwd(), imagePath);
174
- image = await (0, canvas_1.loadImage)(fs_1.default.readFileSync(imagePathResolved));
175
- }
176
- const canvas = (0, canvas_1.createCanvas)(image.width, image.height);
177
- const ctx = canvas.getContext("2d");
178
- ctx.drawImage(image, 0, 0);
179
- for (const filter of filters) {
180
- switch (filter.type) {
181
- case "flip":
182
- flipCanvas(ctx, image.width, image.height, filter.horizontal, filter.vertical);
183
- break;
184
- case "rotate":
185
- rotateCanvas(ctx, canvas, filter.deg);
186
- break;
187
- case "brightness":
188
- adjustBrightness(ctx, filter.value);
189
- break;
190
- case "contrast":
191
- adjustContrast(ctx, filter.value);
192
- break;
193
- case "invert":
194
- invertColors(ctx);
195
- break;
196
- case "greyscale":
197
- grayscale(ctx);
198
- break;
199
- case "sepia":
200
- applySepia(ctx);
201
- break;
202
- case "blur":
203
- applyBlur(ctx, filter.radius);
204
- break;
205
- case "posterize":
206
- posterize(ctx, filter.levels);
207
- break;
208
- case "pixelate":
209
- pixelate(ctx, filter.size, filter.x, filter.y, filter.w, filter.h);
210
- break;
211
- default:
212
- console.error(`Unsupported filter type: ${filter.type}`);
213
- }
214
- }
215
- return canvas.toBuffer("image/png");
216
- }
217
- catch (error) {
218
- console.error("Error processing image:", error.message);
219
- throw new Error("Failed to process image");
220
- }
221
- }
222
- /**
223
- * Crops the inner portion of the image based on the bounding box of the provided coordinates.
224
- * Optionally applies a clipping mask with a specified radius.
225
- */
226
- async function cropInner(options) {
227
- try {
228
- // Load the image (from HTTP or local path)
229
- let image;
230
- if (options.imageSource.startsWith("http")) {
231
- image = await (0, canvas_1.loadImage)(options.imageSource);
232
- }
233
- else {
234
- image = await (0, canvas_1.loadImage)(path_1.default.join(process.cwd(), options.imageSource));
235
- }
236
- // Compute the bounding box from all coordinate points.
237
- const xs = [];
238
- const ys = [];
239
- for (const coord of options.coordinates) {
240
- xs.push(coord.from.x, coord.to.x);
241
- ys.push(coord.from.y, coord.to.y);
242
- }
243
- const minX = Math.min(...xs);
244
- const maxX = Math.max(...xs);
245
- const minY = Math.min(...ys);
246
- const maxY = Math.max(...ys);
247
- const cropWidth = maxX - minX;
248
- const cropHeight = maxY - minY;
249
- // Create a canvas with the crop dimensions.
250
- const canvas = (0, canvas_1.createCanvas)(cropWidth, cropHeight);
251
- const ctx = canvas.getContext('2d');
252
- if (!ctx)
253
- throw new Error("Unable to get 2D context");
254
- // Optionally, apply a clipping mask if a radius is provided.
255
- if (options.radius !== undefined && options.radius !== null) {
256
- if (options.radius === "circular") {
257
- const radius = Math.min(cropWidth, cropHeight) / 2;
258
- ctx.beginPath();
259
- ctx.arc(cropWidth / 2, cropHeight / 2, radius, 0, Math.PI * 2);
260
- ctx.closePath();
261
- ctx.clip();
262
- }
263
- else if (typeof options.radius === 'number' && options.radius >= 0) {
264
- ctx.beginPath();
265
- ctx.moveTo(options.radius, 0);
266
- ctx.lineTo(cropWidth - options.radius, 0);
267
- ctx.quadraticCurveTo(cropWidth, 0, cropWidth, options.radius);
268
- ctx.lineTo(cropWidth, cropHeight - options.radius);
269
- ctx.quadraticCurveTo(cropWidth, cropHeight, cropWidth - options.radius, cropHeight);
270
- ctx.lineTo(options.radius, cropHeight);
271
- ctx.quadraticCurveTo(0, cropHeight, 0, cropHeight - options.radius);
272
- ctx.lineTo(0, options.radius);
273
- ctx.quadraticCurveTo(0, 0, options.radius, 0);
274
- ctx.closePath();
275
- ctx.clip();
276
- }
277
- else {
278
- throw new Error('The "radius" option can only be "circular" or a non-negative number.');
279
- }
280
- }
281
- // Draw the region from the original image corresponding to the bounding box.
282
- // drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)
283
- ctx.drawImage(image, minX, minY, cropWidth, cropHeight, 0, 0, cropWidth, cropHeight);
284
- return canvas.toBuffer('image/png');
285
- }
286
- catch (error) {
287
- console.error('An error occurred in cropInner:', error);
288
- throw error;
289
- }
290
- }
291
- /**
292
- * Crops the outer portion of the image by removing the area defined by the provided polygon.
293
- * The polygon is defined by the coordinates (with optional bezier smoothing using tension).
294
- */
295
- async function cropOuter(options) {
296
- try {
297
- let image;
298
- if (options.imageSource.startsWith("http")) {
299
- image = await (0, canvas_1.loadImage)(options.imageSource);
300
- }
301
- else {
302
- image = await (0, canvas_1.loadImage)(path_1.default.join(process.cwd(), options.imageSource));
303
- }
304
- // Create a canvas matching the full image dimensions.
305
- const canvas = (0, canvas_1.createCanvas)(image.width, image.height);
306
- const ctx = canvas.getContext('2d');
307
- if (!ctx)
308
- throw new Error("Unable to get 2D context");
309
- // Draw the full image.
310
- ctx.drawImage(image, 0, 0);
311
- // Build the polygon path from the provided coordinates.
312
- ctx.beginPath();
313
- // Start at the first coordinate's "from" point.
314
- ctx.moveTo(options.coordinates[0].from.x, options.coordinates[0].from.y);
315
- for (let i = 0; i < options.coordinates.length; i++) {
316
- const coord = options.coordinates[i];
317
- const nextCoord = options.coordinates[(i + 1) % options.coordinates.length];
318
- const tension = coord.tension || 0;
319
- const cp1x = coord.from.x + (nextCoord.from.x - coord.from.x) * tension;
320
- const cp1y = coord.from.y + (nextCoord.from.y - coord.from.y) * tension;
321
- const cp2x = coord.to.x - (nextCoord.to.x - coord.to.x) * tension;
322
- const cp2y = coord.to.y - (nextCoord.to.y - coord.to.y) * tension;
323
- ctx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, coord.to.x, coord.to.y);
324
- }
325
- ctx.closePath();
326
- // Set the clipping region to the polygon.
327
- ctx.clip();
328
- // Clear the inner region defined by the clipping path.
329
- ctx.clearRect(0, 0, canvas.width, canvas.height);
330
- return canvas.toBuffer('image/png');
331
- }
332
- catch (error) {
333
- console.error('An error occurred in cropOuter:', error);
334
- throw error;
335
- }
336
- }
337
- /**
338
- * Detects dominant colors from an image.
339
- *
340
- * @param imagePath - Local path or URL of the image.
341
- * @returns A sorted array of dominant colors with their frequency.
342
- */
343
- async function detectColors(imagePath) {
344
- try {
345
- let image;
346
- if (imagePath.startsWith('http')) {
347
- const response = await fetch(imagePath);
348
- if (!response.ok)
349
- throw new Error(`Failed to fetch image: ${response.statusText}`);
350
- const buffer = await response.arrayBuffer();
351
- image = await (0, canvas_1.loadImage)(Buffer.from(buffer));
352
- }
353
- else {
354
- const localImagePath = path_1.default.resolve(imagePath);
355
- image = await (0, canvas_1.loadImage)(localImagePath);
356
- }
357
- const canvas = (0, canvas_1.createCanvas)(image.width, image.height);
358
- const ctx = canvas.getContext('2d');
359
- ctx.drawImage(image, 0, 0, image.width, image.height);
360
- const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
361
- const data = imageData.data;
362
- const colorFrequency = {};
363
- for (let i = 0; i < data.length; i += 4) {
364
- const [r, g, b, a] = [data[i], data[i + 1], data[i + 2], data[i + 3]];
365
- if (a < 50)
366
- continue;
367
- const color = `${r},${g},${b}`;
368
- colorFrequency[color] = (colorFrequency[color] || 0) + 1;
369
- }
370
- const totalPixels = canvas.width * canvas.height;
371
- const dominantColors = Object.entries(colorFrequency)
372
- .map(([color, frequency]) => ({
373
- color,
374
- frequency: ((frequency / totalPixels) * 100).toFixed(2),
375
- }))
376
- .filter(colorObj => parseFloat(colorObj.frequency) >= 0.1)
377
- .sort((a, b) => parseFloat(b.frequency) - parseFloat(a.frequency));
378
- return dominantColors;
379
- }
380
- catch (error) {
381
- console.error("❌ Error detecting colors:", error);
382
- return [];
383
- }
384
- }
385
- async function removeColor(inputImagePath, colorToRemove) {
386
- try {
387
- let image;
388
- if (inputImagePath.startsWith('http')) {
389
- const response = await fetch(inputImagePath);
390
- if (!response.ok) {
391
- throw new Error("Failed to fetch image.");
392
- }
393
- const buffer = await response.arrayBuffer();
394
- image = await (0, canvas_1.loadImage)(Buffer.from(buffer));
395
- }
396
- else {
397
- const localImagePath = path_1.default.join(process.cwd(), inputImagePath);
398
- image = await (0, canvas_1.loadImage)(localImagePath);
399
- }
400
- const canvas = (0, canvas_1.createCanvas)(image.width, image.height);
401
- const ctx = canvas.getContext('2d');
402
- ctx.drawImage(image, 0, 0, image.width, image.height);
403
- const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
404
- for (let i = 0; i < imageData.data.length; i += 4) {
405
- const red = imageData.data[i];
406
- const green = imageData.data[i + 1];
407
- const blue = imageData.data[i + 2];
408
- const alpha = imageData.data[i + 3];
409
- if (red === colorToRemove.red && green === colorToRemove.green && blue === colorToRemove.blue) {
410
- imageData.data[i + 3] = 0;
411
- }
412
- }
413
- ctx.putImageData(imageData, 0, 0);
414
- return canvas.toBuffer('image/png');
415
- }
416
- catch (error) {
417
- console.error('Error:', error);
418
- return undefined;
419
- }
420
- }
421
- async function bgRemoval(imgURL, API_KEY) {
422
- try {
423
- if (!API_KEY) {
424
- throw new Error("API_KEY is required. Please visit remove.bg, create an account, and obtain your API key at: https://accounts.kaleido.ai/users/sign_in#api-key");
425
- }
426
- const response = await fetch('https://api.remove.bg/v1.0/removebg', {
427
- method: 'POST',
428
- headers: {
429
- 'X-Api-Key': API_KEY,
430
- 'Content-Type': 'application/json'
431
- },
432
- body: JSON.stringify({
433
- image_url: imgURL,
434
- size: 'auto'
435
- }),
436
- });
437
- if (!response.ok) {
438
- throw new Error("Failed to remove background.");
439
- }
440
- const buffer = await response.arrayBuffer();
441
- return Buffer.from(buffer);
442
- }
443
- catch (error) {
444
- console.error('Error:', error);
445
- return undefined;
446
- }
447
- }
448
- function flipCanvas(ctx, width, height, horizontal = false, vertical = false) {
449
- const imageData = ctx.getImageData(0, 0, width, height);
450
- const pixels = imageData.data;
451
- const newData = new Uint8ClampedArray(pixels.length);
452
- for (let y = 0; y < height; y++) {
453
- for (let x = 0; x < width; x++) {
454
- const srcIndex = (y * width + x) * 4;
455
- let destX = horizontal ? width - x - 1 : x;
456
- let destY = vertical ? height - y - 1 : y;
457
- const destIndex = (destY * width + destX) * 4;
458
- newData[destIndex] = pixels[srcIndex];
459
- newData[destIndex + 1] = pixels[srcIndex + 1];
460
- newData[destIndex + 2] = pixels[srcIndex + 2];
461
- newData[destIndex + 3] = pixels[srcIndex + 3];
462
- }
463
- }
464
- ctx.putImageData(new ImageData(newData, width, height), 0, 0);
465
- }
466
- function rotateCanvas(ctx, canvas, degrees) {
467
- const radians = (degrees * Math.PI) / 180;
468
- const newCanvas = (0, canvas_1.createCanvas)(canvas.width, canvas.height);
469
- const newCtx = newCanvas.getContext("2d");
470
- newCtx.translate(canvas.width / 2, canvas.height / 2);
471
- newCtx.rotate(radians);
472
- newCtx.drawImage(canvas, -canvas.width / 2, -canvas.height / 2);
473
- ctx.clearRect(0, 0, canvas.width, canvas.height);
474
- ctx.drawImage(newCanvas, 0, 0);
475
- }
476
- function adjustBrightness(ctx, value) {
477
- const imageData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);
478
- const pixels = imageData.data;
479
- for (let i = 0; i < pixels.length; i += 4) {
480
- pixels[i] += 255 * value;
481
- pixels[i + 1] += 255 * value;
482
- pixels[i + 2] += 255 * value;
483
- }
484
- ctx.putImageData(imageData, 0, 0);
485
- }
486
- function adjustContrast(ctx, value) {
487
- const factor = (259 * (value + 255)) / (255 * (259 - value));
488
- const imageData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);
489
- const pixels = imageData.data;
490
- for (let i = 0; i < pixels.length; i += 4) {
491
- pixels[i] = factor * (pixels[i] - 128) + 128;
492
- pixels[i + 1] = factor * (pixels[i + 1] - 128) + 128;
493
- pixels[i + 2] = factor * (pixels[i + 2] - 128) + 128;
494
- }
495
- ctx.putImageData(imageData, 0, 0);
496
- }
497
- function invertColors(ctx) {
498
- const imageData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);
499
- const pixels = imageData.data;
500
- for (let i = 0; i < pixels.length; i += 4) {
501
- pixels[i] = 255 - pixels[i];
502
- pixels[i + 1] = 255 - pixels[i + 1];
503
- pixels[i + 2] = 255 - pixels[i + 2];
504
- }
505
- ctx.putImageData(imageData, 0, 0);
506
- }
507
- function grayscale(ctx) {
508
- const imageData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);
509
- const pixels = imageData.data;
510
- for (let i = 0; i < pixels.length; i += 4) {
511
- const avg = (pixels[i] + pixels[i + 1] + pixels[i + 2]) / 3;
512
- pixels[i] = pixels[i + 1] = pixels[i + 2] = avg;
513
- }
514
- ctx.putImageData(imageData, 0, 0);
515
- }
516
- function applySepia(ctx) {
517
- const imageData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);
518
- const pixels = imageData.data;
519
- for (let i = 0; i < pixels.length; i += 4) {
520
- const r = pixels[i];
521
- const g = pixels[i + 1];
522
- const b = pixels[i + 2];
523
- pixels[i] = r * 0.393 + g * 0.769 + b * 0.189;
524
- pixels[i + 1] = r * 0.349 + g * 0.686 + b * 0.168;
525
- pixels[i + 2] = r * 0.272 + g * 0.534 + b * 0.131;
526
- }
527
- ctx.putImageData(imageData, 0, 0);
528
- }
529
- function applyBlur(ctx, radius) {
530
- if (radius <= 0)
531
- return;
532
- const imageData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);
533
- const pixels = imageData.data;
534
- const width = ctx.canvas.width;
535
- const height = ctx.canvas.height;
536
- const blurSize = Math.floor(radius);
537
- for (let y = blurSize; y < height - blurSize; y++) {
538
- for (let x = blurSize; x < width - blurSize; x++) {
539
- let r = 0, g = 0, b = 0, count = 0;
540
- for (let dy = -blurSize; dy <= blurSize; dy++) {
541
- for (let dx = -blurSize; dx <= blurSize; dx++) {
542
- const index = ((y + dy) * width + (x + dx)) * 4;
543
- r += pixels[index];
544
- g += pixels[index + 1];
545
- b += pixels[index + 2];
546
- count++;
547
- }
548
- }
549
- const index = (y * width + x) * 4;
550
- pixels[index] = r / count;
551
- pixels[index + 1] = g / count;
552
- pixels[index + 2] = b / count;
553
- }
554
- }
555
- ctx.putImageData(imageData, 0, 0);
556
- }
557
- function posterize(ctx, levels) {
558
- if (levels < 2 || levels > 255)
559
- return;
560
- const imageData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);
561
- const pixels = imageData.data;
562
- const factor = 255 / (levels - 1);
563
- for (let i = 0; i < pixels.length; i += 4) {
564
- pixels[i] = Math.round(pixels[i] / factor) * factor;
565
- pixels[i + 1] = Math.round(pixels[i + 1] / factor) * factor;
566
- pixels[i + 2] = Math.round(pixels[i + 2] / factor) * factor;
567
- }
568
- ctx.putImageData(imageData, 0, 0);
569
- }
570
- function pixelate(ctx, size, startX = 0, startY = 0, width = ctx.canvas.width, height = ctx.canvas.height) {
571
- if (size < 1)
572
- return;
573
- const imageData = ctx.getImageData(startX, startY, width, height);
574
- const pixels = imageData.data;
575
- for (let y = 0; y < height; y += size) {
576
- for (let x = 0; x < width; x += size) {
577
- let r = 0, g = 0, b = 0, count = 0;
578
- for (let dy = 0; dy < size; dy++) {
579
- for (let dx = 0; dx < size; dx++) {
580
- if (x + dx < width && y + dy < height) {
581
- const index = ((y + dy) * width + (x + dx)) * 4;
582
- r += pixels[index];
583
- g += pixels[index + 1];
584
- b += pixels[index + 2];
585
- count++;
586
- }
587
- }
588
- }
589
- r = Math.floor(r / count);
590
- g = Math.floor(g / count);
591
- b = Math.floor(b / count);
592
- for (let dy = 0; dy < size; dy++) {
593
- for (let dx = 0; dx < size; dx++) {
594
- if (x + dx < width && y + dy < height) {
595
- const index = ((y + dy) * width + (x + dx)) * 4;
596
- pixels[index] = r;
597
- pixels[index + 1] = g;
598
- pixels[index + 2] = b;
599
- }
600
- }
601
- }
602
- }
603
- }
604
- ctx.putImageData(imageData, startX, startY);
605
- }
606
- //# sourceMappingURL=general%20functions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"general functions.js","sourceRoot":"","sources":["../../../../../lib/canvas/utils/General/general functions.ts"],"names":[],"mappings":";;;;;AAOA,gCAqBC;AAQD,kCA6BC;AAED,8BAiCC;AAED,8CA8BC;AA2DD,gCA2DC;AAOD,8BAgEC;AAMD,8BA4CC;AASD,oCA6CC;AAED,kCAwCC;AAED,8BA4BC;AAjfD,gDAAuB;AACvB,kDAA0B;AAE1B,4CAAyE;AACzE,4CAAoB;AACpB,kDAA0B;AAEnB,KAAK,UAAU,UAAU,CAAC,SAAiB;IAChD,IAAI,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC5C,OAAO,IAAA,eAAK,EAAC,MAAM,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACJ,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,IAAA,eAAK,EAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAGD;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAAC,aAA4B;IAC5D,IAAI,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,8DAA8D;QAC9D,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAExD,MAAM,qBAAqB,GAAwB;YACjD,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,KAAK,IAAI,GAAG;YACvC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG;YACzC,GAAG,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,IAAI;YAC1E,MAAM,EAAE,eAAK,CAAC,MAAM,CAAC,QAAQ;YAC7B,kBAAkB,EAAE,IAAI;SACzB,CAAC;QAEF,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC;QAE5C,MAAM,aAAa,GAAW,MAAM,KAAK;aACtC,MAAM,CAAC,qBAAqB,CAAC;aAC7B,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC;aAChB,QAAQ,EAAE,CAAC;QAEd,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,SAAiB,EAAE,YAAoB;IACrE,IAAI,CAAC;QACD,MAAM,eAAe,GAA+B,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAEhI,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAgC,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,KAAkB,CAAC;QAEvB,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC5C,KAAK,GAAG,IAAA,eAAK,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;YACzD,KAAK,GAAG,IAAA,eAAK,EAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAgC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1F,OAAO,eAAe,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,SAAiB,EAAE,eAAqB,EAAE,UAAkB,CAAC;IACnG,IAAI,CAAC;QACH,IAAI,KAAU,CAAC;QAEf,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACpD,KAAK,GAAG,IAAA,eAAK,EAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,MAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;YAC9D,KAAK,GAAG,MAAM,IAAA,eAAK,EAAC,iBAAiB,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QACxC,IAAI,aAAqB,CAAC;QAE1B,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;YACxC,aAAa,GAAG,qBAAqB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;QACnG,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,mBAAmB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;QACjG,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,KAAK;aAC7B,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;aACpD,QAAQ,EAAE,CAAC;QAEd,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa,EAAE,MAAc,EAAE,KAAa,EAAE,OAAe;IAC1F,MAAM,gBAAgB,GAAG,IAAA,qBAAY,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAE9C,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;IAE1B,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;IACtB,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAElC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa,EAAE,MAAc,EAAE,OAAY,EAAE,OAAe;IACvF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEjC,MAAM,cAAc,GAAG,IAAA,qBAAY,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAE5C,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CACvC,OAAO,CAAC,MAAM,IAAI,CAAC,EACnB,OAAO,CAAC,MAAM,IAAI,CAAC,EACnB,OAAO,CAAC,IAAI,IAAI,KAAK,EACrB,OAAO,CAAC,IAAI,IAAI,MAAM,CACvB,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAO,EAAE,EAAE;YACtC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC3B,CAAC;SAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CACvC,OAAO,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAC3B,OAAO,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC,EAC5B,OAAO,CAAC,WAAW,IAAI,CAAC,EACxB,OAAO,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,EACzB,OAAO,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC,EAC1B,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAC7C,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAO,EAAE,EAAE;YACtC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;IAE1B,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAElC,OAAO,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC9C,CAAC;AAIM,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,OAAc;IAChE,IAAI,CAAC;QACH,IAAI,KAAK,CAAC;QAEV,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC,CAAC;YAC7E,KAAK,GAAG,MAAM,IAAA,kBAAS,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,iBAAiB,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;YACjE,KAAK,GAAG,MAAM,IAAA,kBAAS,EAAC,YAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEpC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,MAAM;oBACT,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC/E,MAAM;gBACR,KAAK,QAAQ;oBACX,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;oBACtC,MAAM;gBACR,KAAK,YAAY;oBACf,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM;gBACR,KAAK,UAAU;oBACb,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClC,MAAM;gBACR,KAAK,QAAQ;oBACX,YAAY,CAAC,GAAG,CAAC,CAAC;oBAClB,MAAM;gBACR,KAAK,WAAW;oBACd,SAAS,CAAC,GAAG,CAAC,CAAC;oBACf,MAAM;gBACR,KAAK,OAAO;oBACV,UAAU,CAAC,GAAG,CAAC,CAAC;oBAChB,MAAM;gBACR,KAAK,MAAM;oBACT,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC9B,MAAM;gBACR,KAAK,WAAW;oBACd,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC9B,MAAM;gBACR,KAAK,UAAU;oBACb,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;oBACnE,MAAM;gBACR;oBACE,OAAO,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAGD;;;GAGG;AACI,KAAK,UAAU,SAAS,CAAC,OAAoB;IAClD,IAAI,CAAC;QACH,2CAA2C;QAC3C,IAAI,KAAK,CAAC;QACV,IAAI,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,KAAK,GAAG,MAAM,IAAA,kBAAS,EAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,MAAM,IAAA,kBAAS,EAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QACzE,CAAC;QAED,uDAAuD;QACvD,MAAM,EAAE,GAAa,EAAE,CAAC;QACxB,MAAM,EAAE,GAAa,EAAE,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAClC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;QAE/B,4CAA4C;QAC5C,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAkB,CAAC;QACrD,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAEtD,6DAA6D;QAC7D,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5D,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;gBACnD,GAAG,CAAC,SAAS,EAAE,CAAC;gBAChB,GAAG,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC/D,GAAG,CAAC,SAAS,EAAE,CAAC;gBAChB,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,CAAC;iBAAM,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACrE,GAAG,CAAC,SAAS,EAAE,CAAC;gBAChB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC9B,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC1C,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC9D,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;gBACnD,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBACpF,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBACvC,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;gBACpE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC9B,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC9C,GAAG,CAAC,SAAS,EAAE,CAAC;gBAChB,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;QAED,6EAA6E;QAC7E,qEAAqE;QACrE,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAErF,OAAO,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACxD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,SAAS,CAAC,OAAoB;IAClD,IAAI,CAAC;QACH,IAAI,KAAK,CAAC;QACV,IAAI,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,KAAK,GAAG,MAAM,IAAA,kBAAS,EAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,MAAM,IAAA,kBAAS,EAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QACzE,CAAC;QAED,sDAAsD;QACtD,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAkB,CAAC;QACrD,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAEtD,uBAAuB;QACvB,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3B,wDAAwD;QACxD,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,gDAAgD;QAChD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC5E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YACxE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YACxE,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YAClE,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YAClE,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,GAAG,CAAC,SAAS,EAAE,CAAC;QAEhB,0CAA0C;QAC1C,GAAG,CAAC,IAAI,EAAE,CAAC;QAEX,uDAAuD;QACvD,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAEjD,OAAO,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACxD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAGD;;;;;GAKG;AACI,KAAK,UAAU,YAAY,CAAC,SAAiB;IAClD,IAAI,CAAC;QACD,IAAI,KAAU,CAAC;QAEf,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACnF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC5C,KAAK,GAAG,MAAM,IAAA,kBAAS,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACJ,MAAM,cAAc,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC/C,KAAK,GAAG,MAAM,IAAA,kBAAS,EAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAEtD,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAE5B,MAAM,cAAc,GAAgC,EAAE,CAAC;QACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,GAAG,EAAE;gBAAE,SAAS;YAErB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QAEjD,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;aAChD,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,KAAK;YACL,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;SAC1D,CAAC,CAAC;aACF,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC;aACzD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAEvE,OAAO,cAAc,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,cAAsB,EAAE,aAA2D;IACnH,IAAI,CAAC;QACD,IAAI,KAAU,CAAC;QACf,IAAI,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC5C,KAAK,GAAG,MAAM,IAAA,kBAAS,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACJ,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;YAChE,KAAK,GAAG,MAAM,IAAA,kBAAS,EAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAQ,CAAC;QAE3C,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAEtD,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAEtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAEpC,IAAI,GAAG,KAAK,aAAa,CAAC,GAAG,IAAI,KAAK,KAAK,aAAa,CAAC,KAAK,IAAI,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;gBAC5F,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;QAED,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAElC,OAAO,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/B,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,OAAe;IAC7D,IAAI,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,+IAA+I,CAAC,CAAC;QACrK,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,qCAAqC,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,WAAW,EAAE,OAAO;gBACpB,cAAc,EAAE,kBAAkB;aACrC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjB,SAAS,EAAE,MAAM;gBACjB,IAAI,EAAE,MAAM;aACf,CAAC;SACL,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/B,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAGD,SAAS,UAAU,CAAC,GAAQ,EAAE,KAAa,EAAE,MAAc,EAAE,UAAU,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK;IAC/F,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;IAE9B,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAErD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAE9C,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,GAAG,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,YAAY,CAAC,GAAQ,EAAE,MAAW,EAAE,OAAe;IAC1D,MAAM,OAAO,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAA,qBAAY,EAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAE1C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACjD,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAQ,EAAE,KAAa;IAC/C,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC;QACzB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC;QAC7B,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC;IAC/B,CAAC;IACD,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,cAAc,CAAC,GAAQ,EAAE,KAAa;IAC7C,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAC7C,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrD,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACvD,CAAC;IACD,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,YAAY,CAAC,GAAQ;IAC5B,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,SAAS,CAAC,GAAQ;IACzB,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IAClD,CAAC;IACD,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,UAAU,CAAC,GAAQ;IAC1B,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAExB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC;QAC9C,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC;QAClD,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC;IACpD,CAAC;IACD,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,CAAC;AAGD,SAAS,SAAS,CAAC,GAAQ,EAAE,MAAc;IACzC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO;IACxB,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;IAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;IAC/B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;IAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,MAAM,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,KAAK,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;YAEnC,KAAK,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC;gBAC9C,KAAK,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC;oBAC9C,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;oBAChD,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;oBACnB,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;oBACvB,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;oBACvB,KAAK,EAAE,CAAC;gBACV,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC1B,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC9B,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAChC,CAAC;IACH,CAAC;IAED,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,SAAS,CAAC,GAAQ,EAAE,MAAc;IACzC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,GAAG;QAAE,OAAO;IACvC,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;IAC9B,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;QACpD,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;QAC5D,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;IAC9D,CAAC;IAED,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,QAAQ,CAAC,GAAQ,EAAE,IAAY,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM;IACpH,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO;IACrB,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;YAEnC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;gBACjC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;oBACjC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;wBACtC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;wBAChD,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;wBACnB,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;wBACvB,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;wBACvB,KAAK,EAAE,CAAC;oBACV,CAAC;gBACH,CAAC;YACH,CAAC;YAED,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YAC1B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YAC1B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YAE1B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;gBACjC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;oBACjC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;wBACtC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;wBAChD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAClB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;wBACtB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC"}