@nahisaho/katashiro-analyzer 0.1.0

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 (61) hide show
  1. package/dist/entity/entity-extractor.d.ts +44 -0
  2. package/dist/entity/entity-extractor.d.ts.map +1 -0
  3. package/dist/entity/entity-extractor.js +176 -0
  4. package/dist/entity/entity-extractor.js.map +1 -0
  5. package/dist/entity/index.d.ts +6 -0
  6. package/dist/entity/index.d.ts.map +1 -0
  7. package/dist/entity/index.js +5 -0
  8. package/dist/entity/index.js.map +1 -0
  9. package/dist/index.d.ts +17 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +16 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/interfaces.d.ts +37 -0
  14. package/dist/interfaces.d.ts.map +1 -0
  15. package/dist/interfaces.js +8 -0
  16. package/dist/interfaces.js.map +1 -0
  17. package/dist/quality/index.d.ts +6 -0
  18. package/dist/quality/index.d.ts.map +1 -0
  19. package/dist/quality/index.js +5 -0
  20. package/dist/quality/index.js.map +1 -0
  21. package/dist/quality/quality-scorer.d.ts +65 -0
  22. package/dist/quality/quality-scorer.d.ts.map +1 -0
  23. package/dist/quality/quality-scorer.js +308 -0
  24. package/dist/quality/quality-scorer.js.map +1 -0
  25. package/dist/relation/index.d.ts +6 -0
  26. package/dist/relation/index.d.ts.map +1 -0
  27. package/dist/relation/index.js +5 -0
  28. package/dist/relation/index.js.map +1 -0
  29. package/dist/relation/relation-analyzer.d.ts +80 -0
  30. package/dist/relation/relation-analyzer.d.ts.map +1 -0
  31. package/dist/relation/relation-analyzer.js +192 -0
  32. package/dist/relation/relation-analyzer.js.map +1 -0
  33. package/dist/structure/index.d.ts +5 -0
  34. package/dist/structure/index.d.ts.map +1 -0
  35. package/dist/structure/index.js +5 -0
  36. package/dist/structure/index.js.map +1 -0
  37. package/dist/structure/structure-analyzer.d.ts +108 -0
  38. package/dist/structure/structure-analyzer.d.ts.map +1 -0
  39. package/dist/structure/structure-analyzer.js +248 -0
  40. package/dist/structure/structure-analyzer.js.map +1 -0
  41. package/dist/text/index.d.ts +5 -0
  42. package/dist/text/index.d.ts.map +1 -0
  43. package/dist/text/index.js +5 -0
  44. package/dist/text/index.js.map +1 -0
  45. package/dist/text/text-analyzer.d.ts +56 -0
  46. package/dist/text/text-analyzer.d.ts.map +1 -0
  47. package/dist/text/text-analyzer.js +281 -0
  48. package/dist/text/text-analyzer.js.map +1 -0
  49. package/dist/topic/index.d.ts +6 -0
  50. package/dist/topic/index.d.ts.map +1 -0
  51. package/dist/topic/index.js +5 -0
  52. package/dist/topic/index.js.map +1 -0
  53. package/dist/topic/topic-modeler.d.ts +79 -0
  54. package/dist/topic/topic-modeler.d.ts.map +1 -0
  55. package/dist/topic/topic-modeler.js +267 -0
  56. package/dist/topic/topic-modeler.js.map +1 -0
  57. package/dist/types.d.ts +74 -0
  58. package/dist/types.d.ts.map +1 -0
  59. package/dist/types.js +7 -0
  60. package/dist/types.js.map +1 -0
  61. package/package.json +39 -0
@@ -0,0 +1,108 @@
1
+ /**
2
+ * StructureAnalyzer - 文書構造分析
3
+ *
4
+ * @requirement REQ-ANALYZE-007
5
+ * @design DES-KATASHIRO-001 §2.2 Analyzer Container
6
+ * @task TSK-021
7
+ */
8
+ /**
9
+ * 見出し情報
10
+ */
11
+ export interface Heading {
12
+ readonly level: number;
13
+ readonly text: string;
14
+ readonly line: number;
15
+ }
16
+ /**
17
+ * セクション情報
18
+ */
19
+ export interface Section {
20
+ readonly title: string;
21
+ readonly level: number;
22
+ readonly content: string;
23
+ readonly startLine: number;
24
+ readonly endLine: number;
25
+ }
26
+ /**
27
+ * アウトラインノード
28
+ */
29
+ export interface OutlineNode {
30
+ readonly text: string;
31
+ readonly level: number;
32
+ readonly line: number;
33
+ readonly children?: OutlineNode[];
34
+ }
35
+ /**
36
+ * リスト情報
37
+ */
38
+ export interface ListInfo {
39
+ readonly type: 'ordered' | 'unordered';
40
+ readonly items: string[];
41
+ readonly startLine: number;
42
+ }
43
+ /**
44
+ * コードブロック情報
45
+ */
46
+ export interface CodeBlock {
47
+ readonly language: string;
48
+ readonly code: string;
49
+ readonly startLine: number;
50
+ readonly endLine: number;
51
+ }
52
+ /**
53
+ * テーブル情報
54
+ */
55
+ export interface TableInfo {
56
+ readonly headers: string[];
57
+ readonly rows: string[][];
58
+ readonly startLine: number;
59
+ }
60
+ /**
61
+ * 構造分析結果
62
+ */
63
+ export interface StructureAnalysis {
64
+ readonly headings: Heading[];
65
+ readonly sections: Section[];
66
+ readonly outline: OutlineNode[];
67
+ readonly lists: ListInfo[];
68
+ readonly codeBlocks: CodeBlock[];
69
+ readonly tables: TableInfo[];
70
+ }
71
+ /**
72
+ * 文書構造分析実装
73
+ */
74
+ export declare class StructureAnalyzer {
75
+ /**
76
+ * 見出しを抽出
77
+ */
78
+ extractHeadings(markdown: string): Heading[];
79
+ /**
80
+ * セクションを抽出
81
+ */
82
+ extractSections(markdown: string): Section[];
83
+ /**
84
+ * 階層的なアウトラインを構築
85
+ */
86
+ buildOutline(markdown: string): OutlineNode[];
87
+ /**
88
+ * リストを抽出
89
+ */
90
+ extractLists(markdown: string): ListInfo[];
91
+ /**
92
+ * コードブロックを抽出
93
+ */
94
+ extractCodeBlocks(markdown: string): CodeBlock[];
95
+ /**
96
+ * テーブルを抽出
97
+ */
98
+ extractTables(markdown: string): TableInfo[];
99
+ /**
100
+ * テーブル行をパース
101
+ */
102
+ private parseTableRow;
103
+ /**
104
+ * 完全な構造分析を実行
105
+ */
106
+ analyzeStructure(markdown: string): StructureAnalysis;
107
+ }
108
+ //# sourceMappingURL=structure-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structure-analyzer.d.ts","sourceRoot":"","sources":["../../src/structure/structure-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE;IAmB5C;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE;IA6B5C;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE;IA4C7C;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE;IAuC1C;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IAyChD;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IA8C5C;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB;CAUtD"}
@@ -0,0 +1,248 @@
1
+ /**
2
+ * StructureAnalyzer - 文書構造分析
3
+ *
4
+ * @requirement REQ-ANALYZE-007
5
+ * @design DES-KATASHIRO-001 §2.2 Analyzer Container
6
+ * @task TSK-021
7
+ */
8
+ /**
9
+ * 文書構造分析実装
10
+ */
11
+ export class StructureAnalyzer {
12
+ /**
13
+ * 見出しを抽出
14
+ */
15
+ extractHeadings(markdown) {
16
+ const headings = [];
17
+ const lines = markdown.split('\n');
18
+ for (let i = 0; i < lines.length; i++) {
19
+ const line = lines[i] ?? '';
20
+ const match = line.match(/^(#{1,6})\s+(.+)$/);
21
+ if (match?.[1] && match?.[2]) {
22
+ headings.push({
23
+ level: match[1].length,
24
+ text: match[2].trim(),
25
+ line: i + 1,
26
+ });
27
+ }
28
+ }
29
+ return headings;
30
+ }
31
+ /**
32
+ * セクションを抽出
33
+ */
34
+ extractSections(markdown) {
35
+ const sections = [];
36
+ const lines = markdown.split('\n');
37
+ const headings = this.extractHeadings(markdown);
38
+ for (let i = 0; i < headings.length; i++) {
39
+ const heading = headings[i];
40
+ if (!heading)
41
+ continue;
42
+ const nextHeading = headings[i + 1];
43
+ const startLine = heading.line;
44
+ const endLine = nextHeading ? nextHeading.line - 1 : lines.length;
45
+ // Extract content between this heading and the next
46
+ const contentLines = lines.slice(startLine, endLine);
47
+ const content = contentLines.join('\n').trim();
48
+ sections.push({
49
+ title: heading.text,
50
+ level: heading.level,
51
+ content,
52
+ startLine,
53
+ endLine,
54
+ });
55
+ }
56
+ return sections;
57
+ }
58
+ /**
59
+ * 階層的なアウトラインを構築
60
+ */
61
+ buildOutline(markdown) {
62
+ const headings = this.extractHeadings(markdown);
63
+ if (headings.length === 0)
64
+ return [];
65
+ const root = [];
66
+ const stack = [];
67
+ for (const heading of headings) {
68
+ const node = {
69
+ text: heading.text,
70
+ level: heading.level,
71
+ line: heading.line,
72
+ children: [],
73
+ };
74
+ // Find parent node
75
+ while (stack.length > 0) {
76
+ const top = stack[stack.length - 1];
77
+ if (top && top.level >= heading.level) {
78
+ stack.pop();
79
+ }
80
+ else {
81
+ break;
82
+ }
83
+ }
84
+ if (stack.length === 0) {
85
+ root.push(node);
86
+ }
87
+ else {
88
+ const parentEntry = stack[stack.length - 1];
89
+ if (parentEntry) {
90
+ const parent = parentEntry.node;
91
+ if (!parent.children) {
92
+ parent.children = [];
93
+ }
94
+ parent.children.push(node);
95
+ }
96
+ }
97
+ stack.push({ node, level: heading.level });
98
+ }
99
+ return root;
100
+ }
101
+ /**
102
+ * リストを抽出
103
+ */
104
+ extractLists(markdown) {
105
+ const lists = [];
106
+ const lines = markdown.split('\n');
107
+ let currentList = null;
108
+ for (let i = 0; i < lines.length; i++) {
109
+ const line = lines[i] ?? '';
110
+ // Unordered list item
111
+ const unorderedMatch = line.match(/^[-*+]\s+(.+)$/);
112
+ // Ordered list item
113
+ const orderedMatch = line.match(/^\d+\.\s+(.+)$/);
114
+ if (unorderedMatch?.[1]) {
115
+ if (!currentList || currentList.type !== 'unordered') {
116
+ if (currentList)
117
+ lists.push(currentList);
118
+ currentList = { type: 'unordered', items: [], startLine: i + 1 };
119
+ }
120
+ currentList.items.push(unorderedMatch[1]);
121
+ }
122
+ else if (orderedMatch?.[1]) {
123
+ if (!currentList || currentList.type !== 'ordered') {
124
+ if (currentList)
125
+ lists.push(currentList);
126
+ currentList = { type: 'ordered', items: [], startLine: i + 1 };
127
+ }
128
+ currentList.items.push(orderedMatch[1]);
129
+ }
130
+ else if (line.trim() === '' && currentList) {
131
+ lists.push(currentList);
132
+ currentList = null;
133
+ }
134
+ }
135
+ if (currentList) {
136
+ lists.push(currentList);
137
+ }
138
+ return lists;
139
+ }
140
+ /**
141
+ * コードブロックを抽出
142
+ */
143
+ extractCodeBlocks(markdown) {
144
+ const codeBlocks = [];
145
+ const lines = markdown.split('\n');
146
+ let inCodeBlock = false;
147
+ let currentBlock = null;
148
+ for (let i = 0; i < lines.length; i++) {
149
+ const line = lines[i] ?? '';
150
+ if (line.match(/^```(\w*)$/)) {
151
+ if (!inCodeBlock) {
152
+ // Start of code block
153
+ const langMatch = line.match(/^```(\w*)$/);
154
+ currentBlock = {
155
+ language: langMatch?.[1] ?? '',
156
+ lines: [],
157
+ startLine: i + 1,
158
+ };
159
+ inCodeBlock = true;
160
+ }
161
+ else {
162
+ // End of code block
163
+ if (currentBlock) {
164
+ codeBlocks.push({
165
+ language: currentBlock.language,
166
+ code: currentBlock.lines.join('\n'),
167
+ startLine: currentBlock.startLine,
168
+ endLine: i + 1,
169
+ });
170
+ currentBlock = null;
171
+ }
172
+ inCodeBlock = false;
173
+ }
174
+ }
175
+ else if (inCodeBlock && currentBlock) {
176
+ currentBlock.lines.push(line);
177
+ }
178
+ }
179
+ return codeBlocks;
180
+ }
181
+ /**
182
+ * テーブルを抽出
183
+ */
184
+ extractTables(markdown) {
185
+ const tables = [];
186
+ const lines = markdown.split('\n');
187
+ let i = 0;
188
+ while (i < lines.length) {
189
+ const line = lines[i] ?? '';
190
+ const nextLine = lines[i + 1];
191
+ // Check if this looks like a table header row
192
+ if (line.includes('|') && nextLine?.match(/^\|?[\s-:|]+\|?$/)) {
193
+ const headerCells = this.parseTableRow(line);
194
+ const rows = [];
195
+ // Skip separator line
196
+ i += 2;
197
+ // Parse data rows
198
+ while (i < lines.length) {
199
+ const rowLine = lines[i];
200
+ if (rowLine && rowLine.includes('|')) {
201
+ const rowCells = this.parseTableRow(rowLine);
202
+ if (rowCells.length > 0) {
203
+ rows.push(rowCells);
204
+ }
205
+ i++;
206
+ }
207
+ else {
208
+ break;
209
+ }
210
+ }
211
+ if (headerCells.length > 0) {
212
+ tables.push({
213
+ headers: headerCells,
214
+ rows,
215
+ startLine: i - rows.length - 2,
216
+ });
217
+ }
218
+ }
219
+ else {
220
+ i++;
221
+ }
222
+ }
223
+ return tables;
224
+ }
225
+ /**
226
+ * テーブル行をパース
227
+ */
228
+ parseTableRow(line) {
229
+ return line
230
+ .split('|')
231
+ .map(cell => cell.trim())
232
+ .filter(cell => cell.length > 0);
233
+ }
234
+ /**
235
+ * 完全な構造分析を実行
236
+ */
237
+ analyzeStructure(markdown) {
238
+ return {
239
+ headings: this.extractHeadings(markdown),
240
+ sections: this.extractSections(markdown),
241
+ outline: this.buildOutline(markdown),
242
+ lists: this.extractLists(markdown),
243
+ codeBlocks: this.extractCodeBlocks(markdown),
244
+ tables: this.extractTables(markdown),
245
+ };
246
+ }
247
+ }
248
+ //# sourceMappingURL=structure-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structure-analyzer.js","sourceRoot":"","sources":["../../src/structure/structure-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Text module exports
3
+ */
4
+ export { TextAnalyzer } from './text-analyzer.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/text/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Text module exports
3
+ */
4
+ export { TextAnalyzer } from './text-analyzer.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/text/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * TextAnalyzer - テキスト分析
3
+ *
4
+ * @requirement REQ-ANALYZE-001, REQ-ANALYZE-006
5
+ * @design DES-KATASHIRO-001 §2.2 Analyzer Container
6
+ * @task TSK-020
7
+ */
8
+ import { type Result, type Content } from '@nahisaho/katashiro-core';
9
+ import type { ISummarizer, ISentimentAnalyzer } from '../interfaces.js';
10
+ import type { Summary, SentimentResult } from '../types.js';
11
+ /**
12
+ * テキスト分析実装
13
+ */
14
+ export declare class TextAnalyzer implements ISummarizer, ISentimentAnalyzer {
15
+ /**
16
+ * テキストを要約
17
+ */
18
+ summarize(content: Content, maxLength?: number): Promise<Result<Summary, Error>>;
19
+ /**
20
+ * 感情分析(ISentimentAnalyzerインターフェース実装)
21
+ */
22
+ analyze(content: Content): Promise<Result<SentimentResult, Error>>;
23
+ /**
24
+ * 感情分析
25
+ */
26
+ analyzeSentiment(content: Content): Promise<Result<SentimentResult, Error>>;
27
+ /**
28
+ * キーワードを抽出
29
+ */
30
+ extractKeywords(text: string, maxKeywords?: number): string[];
31
+ /**
32
+ * 単語数をカウント
33
+ */
34
+ countWords(text: string): number;
35
+ /**
36
+ * 文に分割
37
+ */
38
+ splitSentences(text: string): string[];
39
+ /**
40
+ * トークン化
41
+ */
42
+ private tokenize;
43
+ /**
44
+ * キーポイントを抽出
45
+ */
46
+ private extractKeyPoints;
47
+ /**
48
+ * 要約を生成
49
+ */
50
+ private generateSummary;
51
+ /**
52
+ * アスペクトごとの感情を抽出
53
+ */
54
+ private extractAspectSentiments;
55
+ }
56
+ //# sourceMappingURL=text-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-analyzer.d.ts","sourceRoot":"","sources":["../../src/text/text-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,MAAM,EAKX,KAAK,OAAO,EACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAmB,MAAM,aAAa,CAAC;AAwC7E;;GAEG;AACH,qBAAa,YAAa,YAAW,WAAW,EAAE,kBAAkB;IAClE;;OAEG;IACG,SAAS,CACb,OAAO,EAAE,OAAO,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAsBlC;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAIxE;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IA6CjF;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,GAAE,MAAW,GAAG,MAAM,EAAE;IAejE;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAKhC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAYtC;;OAEG;IACH,OAAO,CAAC,QAAQ;IAOhB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiCxB;;OAEG;IACH,OAAO,CAAC,eAAe;IA2CvB;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAsChC"}