@nodetool-ai/runtime 0.7.0-rc.11

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 (198) hide show
  1. package/dist/bridge-protocol.d.ts +39 -0
  2. package/dist/bridge-protocol.d.ts.map +1 -0
  3. package/dist/bridge-protocol.js +39 -0
  4. package/dist/bridge-protocol.js.map +1 -0
  5. package/dist/comfy-executor.d.ts +41 -0
  6. package/dist/comfy-executor.d.ts.map +1 -0
  7. package/dist/comfy-executor.js +305 -0
  8. package/dist/comfy-executor.js.map +1 -0
  9. package/dist/context-packer.d.ts +22 -0
  10. package/dist/context-packer.d.ts.map +1 -0
  11. package/dist/context-packer.js +66 -0
  12. package/dist/context-packer.js.map +1 -0
  13. package/dist/context.d.ts +405 -0
  14. package/dist/context.d.ts.map +1 -0
  15. package/dist/context.js +1455 -0
  16. package/dist/context.js.map +1 -0
  17. package/dist/index.d.ts +18 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +15 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/node-executor.d.ts +53 -0
  22. package/dist/node-executor.d.ts.map +1 -0
  23. package/dist/node-executor.js +9 -0
  24. package/dist/node-executor.js.map +1 -0
  25. package/dist/providers/aki-manifest.json +34 -0
  26. package/dist/providers/aki-provider.d.ts +65 -0
  27. package/dist/providers/aki-provider.d.ts.map +1 -0
  28. package/dist/providers/aki-provider.js +517 -0
  29. package/dist/providers/aki-provider.js.map +1 -0
  30. package/dist/providers/anthropic-provider.d.ts +55 -0
  31. package/dist/providers/anthropic-provider.d.ts.map +1 -0
  32. package/dist/providers/anthropic-provider.js +563 -0
  33. package/dist/providers/anthropic-provider.js.map +1 -0
  34. package/dist/providers/base-provider.d.ts +194 -0
  35. package/dist/providers/base-provider.d.ts.map +1 -0
  36. package/dist/providers/base-provider.js +515 -0
  37. package/dist/providers/base-provider.js.map +1 -0
  38. package/dist/providers/cerebras-provider.d.ts +20 -0
  39. package/dist/providers/cerebras-provider.d.ts.map +1 -0
  40. package/dist/providers/cerebras-provider.js +52 -0
  41. package/dist/providers/cerebras-provider.js.map +1 -0
  42. package/dist/providers/claude-agent-provider.d.ts +107 -0
  43. package/dist/providers/claude-agent-provider.d.ts.map +1 -0
  44. package/dist/providers/claude-agent-provider.js +586 -0
  45. package/dist/providers/claude-agent-provider.js.map +1 -0
  46. package/dist/providers/cohere-provider.d.ts +36 -0
  47. package/dist/providers/cohere-provider.d.ts.map +1 -0
  48. package/dist/providers/cohere-provider.js +116 -0
  49. package/dist/providers/cohere-provider.js.map +1 -0
  50. package/dist/providers/cost-calculator.d.ts +109 -0
  51. package/dist/providers/cost-calculator.d.ts.map +1 -0
  52. package/dist/providers/cost-calculator.js +475 -0
  53. package/dist/providers/cost-calculator.js.map +1 -0
  54. package/dist/providers/deepseek-provider.d.ts +25 -0
  55. package/dist/providers/deepseek-provider.d.ts.map +1 -0
  56. package/dist/providers/deepseek-provider.js +58 -0
  57. package/dist/providers/deepseek-provider.js.map +1 -0
  58. package/dist/providers/fake-provider.d.ts +52 -0
  59. package/dist/providers/fake-provider.d.ts.map +1 -0
  60. package/dist/providers/fake-provider.js +107 -0
  61. package/dist/providers/fake-provider.js.map +1 -0
  62. package/dist/providers/fal-provider.d.ts +32 -0
  63. package/dist/providers/fal-provider.d.ts.map +1 -0
  64. package/dist/providers/fal-provider.js +445 -0
  65. package/dist/providers/fal-provider.js.map +1 -0
  66. package/dist/providers/gemini-provider.d.ts +109 -0
  67. package/dist/providers/gemini-provider.d.ts.map +1 -0
  68. package/dist/providers/gemini-provider.js +943 -0
  69. package/dist/providers/gemini-provider.js.map +1 -0
  70. package/dist/providers/groq-provider.d.ts +20 -0
  71. package/dist/providers/groq-provider.d.ts.map +1 -0
  72. package/dist/providers/groq-provider.js +52 -0
  73. package/dist/providers/groq-provider.js.map +1 -0
  74. package/dist/providers/huggingface-provider.d.ts +59 -0
  75. package/dist/providers/huggingface-provider.d.ts.map +1 -0
  76. package/dist/providers/huggingface-provider.js +305 -0
  77. package/dist/providers/huggingface-provider.js.map +1 -0
  78. package/dist/providers/index.d.ts +69 -0
  79. package/dist/providers/index.d.ts.map +1 -0
  80. package/dist/providers/index.js +137 -0
  81. package/dist/providers/index.js.map +1 -0
  82. package/dist/providers/jina-provider.d.ts +37 -0
  83. package/dist/providers/jina-provider.d.ts.map +1 -0
  84. package/dist/providers/jina-provider.js +118 -0
  85. package/dist/providers/jina-provider.js.map +1 -0
  86. package/dist/providers/kie-provider.d.ts +19 -0
  87. package/dist/providers/kie-provider.d.ts.map +1 -0
  88. package/dist/providers/kie-provider.js +118 -0
  89. package/dist/providers/kie-provider.js.map +1 -0
  90. package/dist/providers/llama-provider.d.ts +49 -0
  91. package/dist/providers/llama-provider.d.ts.map +1 -0
  92. package/dist/providers/llama-provider.js +381 -0
  93. package/dist/providers/llama-provider.js.map +1 -0
  94. package/dist/providers/lmstudio-provider.d.ts +22 -0
  95. package/dist/providers/lmstudio-provider.d.ts.map +1 -0
  96. package/dist/providers/lmstudio-provider.js +63 -0
  97. package/dist/providers/lmstudio-provider.js.map +1 -0
  98. package/dist/providers/manifest-models.d.ts +12 -0
  99. package/dist/providers/manifest-models.d.ts.map +1 -0
  100. package/dist/providers/manifest-models.js +96 -0
  101. package/dist/providers/manifest-models.js.map +1 -0
  102. package/dist/providers/meshy-provider.d.ts +53 -0
  103. package/dist/providers/meshy-provider.d.ts.map +1 -0
  104. package/dist/providers/meshy-provider.js +230 -0
  105. package/dist/providers/meshy-provider.js.map +1 -0
  106. package/dist/providers/minimax-provider.d.ts +66 -0
  107. package/dist/providers/minimax-provider.d.ts.map +1 -0
  108. package/dist/providers/minimax-provider.js +531 -0
  109. package/dist/providers/minimax-provider.js.map +1 -0
  110. package/dist/providers/mistral-provider.d.ts +26 -0
  111. package/dist/providers/mistral-provider.d.ts.map +1 -0
  112. package/dist/providers/mistral-provider.js +74 -0
  113. package/dist/providers/mistral-provider.js.map +1 -0
  114. package/dist/providers/moonshot-provider.d.ts +24 -0
  115. package/dist/providers/moonshot-provider.d.ts.map +1 -0
  116. package/dist/providers/moonshot-provider.js +43 -0
  117. package/dist/providers/moonshot-provider.js.map +1 -0
  118. package/dist/providers/ollama-provider.d.ts +71 -0
  119. package/dist/providers/ollama-provider.d.ts.map +1 -0
  120. package/dist/providers/ollama-provider.js +480 -0
  121. package/dist/providers/ollama-provider.js.map +1 -0
  122. package/dist/providers/openai-provider.d.ts +103 -0
  123. package/dist/providers/openai-provider.d.ts.map +1 -0
  124. package/dist/providers/openai-provider.js +917 -0
  125. package/dist/providers/openai-provider.js.map +1 -0
  126. package/dist/providers/openrouter-provider.d.ts +49 -0
  127. package/dist/providers/openrouter-provider.d.ts.map +1 -0
  128. package/dist/providers/openrouter-provider.js +147 -0
  129. package/dist/providers/openrouter-provider.js.map +1 -0
  130. package/dist/providers/provider-registry.d.ts +24 -0
  131. package/dist/providers/provider-registry.d.ts.map +1 -0
  132. package/dist/providers/provider-registry.js +124 -0
  133. package/dist/providers/provider-registry.js.map +1 -0
  134. package/dist/providers/python-provider.d.ts +75 -0
  135. package/dist/providers/python-provider.d.ts.map +1 -0
  136. package/dist/providers/python-provider.js +157 -0
  137. package/dist/providers/python-provider.js.map +1 -0
  138. package/dist/providers/replicate-provider.d.ts +73 -0
  139. package/dist/providers/replicate-provider.d.ts.map +1 -0
  140. package/dist/providers/replicate-provider.js +484 -0
  141. package/dist/providers/replicate-provider.js.map +1 -0
  142. package/dist/providers/rodin-provider.d.ts +41 -0
  143. package/dist/providers/rodin-provider.d.ts.map +1 -0
  144. package/dist/providers/rodin-provider.js +236 -0
  145. package/dist/providers/rodin-provider.js.map +1 -0
  146. package/dist/providers/scripted-provider.d.ts +141 -0
  147. package/dist/providers/scripted-provider.d.ts.map +1 -0
  148. package/dist/providers/scripted-provider.js +246 -0
  149. package/dist/providers/scripted-provider.js.map +1 -0
  150. package/dist/providers/together-provider.d.ts +20 -0
  151. package/dist/providers/together-provider.d.ts.map +1 -0
  152. package/dist/providers/together-provider.js +56 -0
  153. package/dist/providers/together-provider.js.map +1 -0
  154. package/dist/providers/types.d.ts +202 -0
  155. package/dist/providers/types.d.ts.map +1 -0
  156. package/dist/providers/types.js +2 -0
  157. package/dist/providers/types.js.map +1 -0
  158. package/dist/providers/vllm-provider.d.ts +22 -0
  159. package/dist/providers/vllm-provider.d.ts.map +1 -0
  160. package/dist/providers/vllm-provider.js +66 -0
  161. package/dist/providers/vllm-provider.js.map +1 -0
  162. package/dist/providers/voyage-provider.d.ts +37 -0
  163. package/dist/providers/voyage-provider.d.ts.map +1 -0
  164. package/dist/providers/voyage-provider.js +124 -0
  165. package/dist/providers/voyage-provider.js.map +1 -0
  166. package/dist/providers/xai-provider.d.ts +24 -0
  167. package/dist/providers/xai-provider.d.ts.map +1 -0
  168. package/dist/providers/xai-provider.js +57 -0
  169. package/dist/providers/xai-provider.js.map +1 -0
  170. package/dist/python-bridge-types.d.ts +70 -0
  171. package/dist/python-bridge-types.d.ts.map +1 -0
  172. package/dist/python-bridge-types.js +2 -0
  173. package/dist/python-bridge-types.js.map +1 -0
  174. package/dist/python-node-executor.d.ts +20 -0
  175. package/dist/python-node-executor.d.ts.map +1 -0
  176. package/dist/python-node-executor.js +219 -0
  177. package/dist/python-node-executor.js.map +1 -0
  178. package/dist/python-stdio-bridge.d.ts +67 -0
  179. package/dist/python-stdio-bridge.d.ts.map +1 -0
  180. package/dist/python-stdio-bridge.js +704 -0
  181. package/dist/python-stdio-bridge.js.map +1 -0
  182. package/dist/recommended-models.d.ts +17 -0
  183. package/dist/recommended-models.d.ts.map +1 -0
  184. package/dist/recommended-models.js +139 -0
  185. package/dist/recommended-models.js.map +1 -0
  186. package/dist/telemetry.d.ts +61 -0
  187. package/dist/telemetry.d.ts.map +1 -0
  188. package/dist/telemetry.js +128 -0
  189. package/dist/telemetry.js.map +1 -0
  190. package/dist/trace-exporters.d.ts +72 -0
  191. package/dist/trace-exporters.d.ts.map +1 -0
  192. package/dist/trace-exporters.js +216 -0
  193. package/dist/trace-exporters.js.map +1 -0
  194. package/dist/tracing-helpers.d.ts +99 -0
  195. package/dist/tracing-helpers.d.ts.map +1 -0
  196. package/dist/tracing-helpers.js +217 -0
  197. package/dist/tracing-helpers.js.map +1 -0
  198. package/package.json +64 -0
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Cohere Provider — exposes Cohere's `/v2/embed` text embedding API through
3
+ * the standard {@link BaseProvider} interface.
4
+ *
5
+ * API docs: https://docs.cohere.com/reference/embed
6
+ */
7
+ import { BaseProvider } from "./base-provider.js";
8
+ import { createLogger } from "@nodetool-ai/config";
9
+ const log = createLogger("nodetool.runtime.providers.cohere");
10
+ const COHERE_API_BASE_URL = "https://api.cohere.com/v2";
11
+ const COHERE_EMBEDDING_MODELS = [
12
+ {
13
+ id: "embed-v4.0",
14
+ name: "Embed v4.0",
15
+ provider: "cohere",
16
+ dimensions: 1536
17
+ },
18
+ {
19
+ id: "embed-english-v3.0",
20
+ name: "Embed English v3.0",
21
+ provider: "cohere",
22
+ dimensions: 1024
23
+ },
24
+ {
25
+ id: "embed-english-light-v3.0",
26
+ name: "Embed English Light v3.0",
27
+ provider: "cohere",
28
+ dimensions: 384
29
+ },
30
+ {
31
+ id: "embed-multilingual-v3.0",
32
+ name: "Embed Multilingual v3.0",
33
+ provider: "cohere",
34
+ dimensions: 1024
35
+ },
36
+ {
37
+ id: "embed-multilingual-light-v3.0",
38
+ name: "Embed Multilingual Light v3.0",
39
+ provider: "cohere",
40
+ dimensions: 384
41
+ }
42
+ ];
43
+ export class CohereProvider extends BaseProvider {
44
+ static requiredSecrets() {
45
+ return ["COHERE_API_KEY"];
46
+ }
47
+ apiKey;
48
+ _fetch;
49
+ inputType;
50
+ constructor(secrets = {}, options = {}) {
51
+ super("cohere");
52
+ this.apiKey = secrets.COHERE_API_KEY ?? "";
53
+ this._fetch = options.fetchFn ?? globalThis.fetch.bind(globalThis);
54
+ this.inputType = options.inputType ?? "search_document";
55
+ if (!this.apiKey) {
56
+ log.warn("Cohere API key not configured");
57
+ }
58
+ }
59
+ getContainerEnv() {
60
+ return { COHERE_API_KEY: this.apiKey };
61
+ }
62
+ async generateMessage(_args) {
63
+ throw new Error("cohere provider does not support chat generation");
64
+ }
65
+ async *generateMessages(_args) {
66
+ throw new Error("cohere provider does not support chat generation");
67
+ yield* [];
68
+ }
69
+ async getAvailableEmbeddingModels() {
70
+ return COHERE_EMBEDDING_MODELS;
71
+ }
72
+ async generateEmbedding(args) {
73
+ if (!this.apiKey) {
74
+ throw new Error("COHERE_API_KEY is not configured");
75
+ }
76
+ const texts = Array.isArray(args.text) ? args.text : [args.text];
77
+ if (texts.length === 0 ||
78
+ texts.some((v) => typeof v !== "string" || v.length === 0)) {
79
+ throw new Error("text must not be empty");
80
+ }
81
+ const body = {
82
+ model: args.model || "embed-v4.0",
83
+ texts,
84
+ input_type: this.inputType,
85
+ embedding_types: ["float"]
86
+ };
87
+ if (args.dimensions) {
88
+ body.output_dimension = args.dimensions;
89
+ }
90
+ const response = await this._fetch(`${COHERE_API_BASE_URL}/embed`, {
91
+ method: "POST",
92
+ headers: {
93
+ Authorization: `Bearer ${this.apiKey}`,
94
+ "Content-Type": "application/json"
95
+ },
96
+ body: JSON.stringify(body)
97
+ });
98
+ if (!response.ok) {
99
+ const errText = await response.text().catch(() => "");
100
+ throw new Error(`Cohere embedding error ${response.status}: ${errText}`);
101
+ }
102
+ const data = (await response.json());
103
+ // v2 API returns `{ embeddings: { float: [[...]] } }` when
104
+ // `embedding_types: ["float"]` is requested. Older payloads return a bare
105
+ // `number[][]` — handle both for safety.
106
+ if (Array.isArray(data.embeddings)) {
107
+ return data.embeddings;
108
+ }
109
+ const floats = data.embeddings?.float;
110
+ if (!Array.isArray(floats)) {
111
+ throw new Error("Cohere embedding response missing float embeddings");
112
+ }
113
+ return floats;
114
+ }
115
+ }
116
+ //# sourceMappingURL=cohere-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cohere-provider.js","sourceRoot":"","sources":["../../src/providers/cohere-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Centralized cost calculation for all AI providers.
3
+ *
4
+ * This module provides a unified interface for calculating API costs in credits.
5
+ * 1 credit = $0.01 USD (i.e., 1000 credits = $10 USD)
6
+ * All rates include a 50% premium over provider base costs.
7
+ *
8
+ * Usage:
9
+ * import { CostCalculator, UsageInfo } from "./cost-calculator.js";
10
+ *
11
+ * // Calculate cost for a chat completion
12
+ * const usage: UsageInfo = { inputTokens: 1000, outputTokens: 500 };
13
+ * const cost = CostCalculator.calculate("gpt-4o-mini", usage, "openai");
14
+ *
15
+ * // Or use convenience helper functions
16
+ * const cost2 = calculateChatCost("gpt-4o-mini", 1000, 500);
17
+ */
18
+ export declare enum CostType {
19
+ TOKEN_BASED = "token_based",
20
+ EMBEDDING = "embedding",
21
+ CHARACTER_BASED = "character_based",
22
+ DURATION_BASED = "duration_based",
23
+ IMAGE_BASED = "image_based",
24
+ VIDEO_BASED = "video_based",
25
+ /** Flat per-task cost, e.g. 3D generation APIs billed per submitted job. */
26
+ TASK_BASED = "task_based"
27
+ }
28
+ export interface PricingTier {
29
+ costType: CostType;
30
+ inputPer1kTokens?: number;
31
+ outputPer1kTokens?: number;
32
+ cachedPer1kTokens?: number;
33
+ per1kChars?: number;
34
+ perMinute?: number;
35
+ perImage?: number;
36
+ perSecondVideo?: number;
37
+ /** Cost per submitted task (CostType.TASK_BASED). In nodetool credits (1 credit = $0.01). */
38
+ perTask?: number;
39
+ }
40
+ /**
41
+ * Pricing tiers by tier name - derived from Python cost_calculator.py PRICING_TIERS.
42
+ */
43
+ export declare const PRICING_TIERS: Record<string, PricingTier>;
44
+ /**
45
+ * Model ID to tier mapping.
46
+ * Keys are "provider:modelId" strings for provider-specific pricing.
47
+ */
48
+ export declare const MODEL_TO_TIER: Record<string, string>;
49
+ export interface UsageInfo {
50
+ inputTokens?: number;
51
+ outputTokens?: number;
52
+ cachedTokens?: number;
53
+ reasoningTokens?: number;
54
+ inputCharacters?: number;
55
+ durationSeconds?: number;
56
+ imageCount?: number;
57
+ videoSeconds?: number;
58
+ /** Number of tasks submitted (for CostType.TASK_BASED providers). */
59
+ taskCount?: number;
60
+ }
61
+ export declare class CostCalculator {
62
+ /**
63
+ * Get the pricing tier for a model ID scoped by provider.
64
+ *
65
+ * @param modelId - The model identifier
66
+ * @param provider - Provider name (e.g., "openai", "anthropic")
67
+ * @returns The pricing tier name, or null if not found
68
+ */
69
+ static getTier(modelId: string, provider: string): string | null;
70
+ /**
71
+ * Calculate cost in credits for an API call.
72
+ *
73
+ * @param modelId - The model identifier
74
+ * @param usage - Usage information from the API response
75
+ * @param provider - Provider name for pricing lookup
76
+ * @returns Cost in credits (1 credit = $0.01 USD)
77
+ */
78
+ static calculate(modelId: string, usage: UsageInfo, provider: string): number;
79
+ /**
80
+ * Calculate cost based on tier type.
81
+ */
82
+ private static _calculateForTier;
83
+ }
84
+ /**
85
+ * Calculate chat completion cost.
86
+ */
87
+ export declare function calculateChatCost(modelId: string, inputTokens: number, outputTokens: number, cachedTokens?: number, provider?: string): number;
88
+ /**
89
+ * Calculate embedding cost.
90
+ */
91
+ export declare function calculateEmbeddingCost(modelId: string, inputTokens: number, provider?: string): number;
92
+ /**
93
+ * Calculate TTS cost.
94
+ */
95
+ export declare function calculateSpeechCost(modelId: string, inputChars: number, provider?: string): number;
96
+ /**
97
+ * Calculate ASR/Whisper cost.
98
+ */
99
+ export declare function calculateWhisperCost(modelId: string, durationSeconds: number, provider?: string): number;
100
+ /**
101
+ * Calculate 3D model generation cost.
102
+ * Pass `taskCount` > 1 only if multiple tasks were submitted (rare).
103
+ */
104
+ export declare function calculateModel3DCost(modelId: string, provider: string, taskCount?: number): number;
105
+ /**
106
+ * Calculate image generation cost.
107
+ */
108
+ export declare function calculateImageCost(modelId: string, imageCount?: number, quality?: string, provider?: string): number;
109
+ //# sourceMappingURL=cost-calculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-calculator.d.ts","sourceRoot":"","sources":["../../src/providers/cost-calculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,oBAAY,QAAQ;IAClB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAC3B,4EAA4E;IAC5E,UAAU,eAAe;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAgMrD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAsFhD,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,qBAAa,cAAc;IACzB;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAgChE;;;;;;;OAOG;IACH,MAAM,CAAC,SAAS,CACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM;IAkBT;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;CA6CjC;AAID;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,YAAY,GAAE,MAAU,EACxB,QAAQ,GAAE,MAAiB,GAC1B,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,MAAiB,GAC1B,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAiB,GAC1B,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,QAAQ,GAAE,MAAiB,GAC1B,MAAM,CAGR;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAU,GACpB,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAAU,EACtB,OAAO,GAAE,MAAiB,EAC1B,QAAQ,GAAE,MAAiB,GAC1B,MAAM,CAkBR"}