@martin_yeung/knowledge-base-sdk 1.0.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.
- package/CHANGELOG.md +30 -0
- package/README.md +40 -0
- package/dist/cache.d.ts +62 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +146 -0
- package/dist/cache.js.map +1 -0
- package/dist/client.d.ts +94 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +361 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +14 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +138 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge-base.d.ts +150 -0
- package/dist/knowledge-base.d.ts.map +1 -0
- package/dist/knowledge-base.js +1084 -0
- package/dist/knowledge-base.js.map +1 -0
- package/dist/search-strategies.d.ts +64 -0
- package/dist/search-strategies.d.ts.map +1 -0
- package/dist/search-strategies.js +208 -0
- package/dist/search-strategies.js.map +1 -0
- package/dist/types.d.ts +213 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +55 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +318 -0
- package/dist/utils.js.map +1 -0
- package/package.json +102 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.0.0] - 2024-01-01
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Initial release of Knowledge Base SDK
|
|
12
|
+
- Core KnowledgeBase class with full CRUD operations
|
|
13
|
+
- Intelligent search with multiple strategies
|
|
14
|
+
- Advanced search options and filtering
|
|
15
|
+
- Statistics and analytics
|
|
16
|
+
- Import/export functionality (JSON, CSV, Markdown, HTML)
|
|
17
|
+
- Event system for monitoring
|
|
18
|
+
- Comprehensive TypeScript types
|
|
19
|
+
- Browser-compatible client version
|
|
20
|
+
- Complete test suite with 90%+ coverage
|
|
21
|
+
- Documentation and examples
|
|
22
|
+
|
|
23
|
+
### Features
|
|
24
|
+
- Smart keyword extraction and indexing
|
|
25
|
+
- Relevance scoring and ranking
|
|
26
|
+
- Caching system for improved performance
|
|
27
|
+
- Multi-language support (Chinese, English)
|
|
28
|
+
- Flexible configuration options
|
|
29
|
+
- Error handling and validation
|
|
30
|
+
- Logging system with multiple levels
|
package/README.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
## 20260210
|
|
2
|
+
knowledge-base-sdk/
|
|
3
|
+
|
|
4
|
+
├── src/
|
|
5
|
+
│ ├── index.ts # 主入口
|
|
6
|
+
│ ├── knowledge-base.ts # 主類
|
|
7
|
+
│ ├── types.ts # 類型定義
|
|
8
|
+
│ ├── config.ts # 配置
|
|
9
|
+
│ ├── cache.ts # 緩存模塊
|
|
10
|
+
│ ├── search-strategies.ts # 搜索策略
|
|
11
|
+
│ └── utils.ts # 工具函數
|
|
12
|
+
├── tests/
|
|
13
|
+
│ ├── knowledge-base.test.ts
|
|
14
|
+
│ └── search-strategies.test.ts
|
|
15
|
+
├── dist/ # 編譯輸出
|
|
16
|
+
├── examples/ # 使用示例
|
|
17
|
+
├── package.json
|
|
18
|
+
├── tsconfig.json
|
|
19
|
+
├── tsconfig.build.json
|
|
20
|
+
├── README.md
|
|
21
|
+
├── .npmignore
|
|
22
|
+
└── .gitignore
|
|
23
|
+
|
|
24
|
+
# UP知識庫 SDK
|
|
25
|
+
用於合同分析和法律知識檢索的智能知識庫系統。
|
|
26
|
+
|
|
27
|
+
## 功能特性
|
|
28
|
+
- 🔍 **智能搜索**:基於關鍵詞和語義的智能搜索
|
|
29
|
+
- 📁 **多分類管理**:支持按類別組織知識條目
|
|
30
|
+
- ⚡ **高效緩存**:內置緩存系統,提升搜索性能
|
|
31
|
+
- 🔄 **實時更新**:支持知識條目的增刪改查
|
|
32
|
+
- 📊 **統計分析**:提供詳細的統計信息和狀態監控
|
|
33
|
+
- 📤 **多格式導出**:支持 JSON、CSV、Markdown、HTML 導出
|
|
34
|
+
- 🎯 **事件系統**:完整的事件監聽和觸發機制
|
|
35
|
+
- 🛡️ **數據驗證**:嚴格的數據驗證和標準化
|
|
36
|
+
|
|
37
|
+
## 安裝
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm install @uppengarden/knowledge-base-sdk
|
package/dist/cache.d.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 緩存管理器
|
|
3
|
+
*/
|
|
4
|
+
export declare class CacheManager {
|
|
5
|
+
private cache;
|
|
6
|
+
private hits;
|
|
7
|
+
private misses;
|
|
8
|
+
constructor(ttlSeconds?: number, checkPeriod?: number);
|
|
9
|
+
/**
|
|
10
|
+
* 設置緩存
|
|
11
|
+
*/
|
|
12
|
+
set<T>(key: string, data: T, ttl?: number): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* 獲取緩存
|
|
15
|
+
*/
|
|
16
|
+
get<T>(key: string): T | null;
|
|
17
|
+
/**
|
|
18
|
+
* 刪除緩存
|
|
19
|
+
*/
|
|
20
|
+
del(key: string): void;
|
|
21
|
+
/**
|
|
22
|
+
* 清空緩存
|
|
23
|
+
*/
|
|
24
|
+
clear(): void;
|
|
25
|
+
/**
|
|
26
|
+
* 獲取緩存狀態
|
|
27
|
+
*/
|
|
28
|
+
getStats(): {
|
|
29
|
+
hits: number;
|
|
30
|
+
misses: number;
|
|
31
|
+
hitRate: number;
|
|
32
|
+
size: number;
|
|
33
|
+
keys: number;
|
|
34
|
+
ksize: number;
|
|
35
|
+
vsize: number;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* 獲取所有緩存鍵
|
|
39
|
+
*/
|
|
40
|
+
keys(): string[];
|
|
41
|
+
/**
|
|
42
|
+
* 檢查緩存是否存在
|
|
43
|
+
*/
|
|
44
|
+
has(key: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* 批量獲取緩存
|
|
47
|
+
*/
|
|
48
|
+
mget<T>(keys: string[]): Record<string, T | null>;
|
|
49
|
+
/**
|
|
50
|
+
* 批量設置緩存
|
|
51
|
+
*/
|
|
52
|
+
mset(items: Array<{
|
|
53
|
+
key: string;
|
|
54
|
+
val: any;
|
|
55
|
+
ttl?: number;
|
|
56
|
+
}>): boolean[];
|
|
57
|
+
/**
|
|
58
|
+
* 日志
|
|
59
|
+
*/
|
|
60
|
+
private log;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAa;gBAEf,UAAU,GAAE,MAAY,EAAE,WAAW,GAAE,MAAW;IAa9D;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAqBnD;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAc7B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKtB;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,QAAQ;;;;;;;;;IAWR;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAajD;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,EAAE;IAsBtE;;OAEG;IACH,OAAO,CAAC,GAAG;CAOZ"}
|
package/dist/cache.js
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
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.CacheManager = void 0;
|
|
7
|
+
const node_cache_1 = __importDefault(require("node-cache"));
|
|
8
|
+
/**
|
|
9
|
+
* 緩存管理器
|
|
10
|
+
*/
|
|
11
|
+
class CacheManager {
|
|
12
|
+
constructor(ttlSeconds = 300, checkPeriod = 60) {
|
|
13
|
+
this.hits = 0;
|
|
14
|
+
this.misses = 0;
|
|
15
|
+
this.cache = new node_cache_1.default({
|
|
16
|
+
stdTTL: ttlSeconds,
|
|
17
|
+
checkperiod: checkPeriod,
|
|
18
|
+
useClones: false,
|
|
19
|
+
});
|
|
20
|
+
// 監聽緩存事件
|
|
21
|
+
this.cache.on('expired', (key, _value) => {
|
|
22
|
+
this.log(`緩存過期: ${key}`);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 設置緩存
|
|
27
|
+
*/
|
|
28
|
+
set(key, data, ttl) {
|
|
29
|
+
const finalTtl = ttl || this.cache.options.stdTTL || 300;
|
|
30
|
+
const success = this.cache.set(key, {
|
|
31
|
+
data,
|
|
32
|
+
timestamp: Date.now(),
|
|
33
|
+
expiresAt: Date.now() + finalTtl * 1000,
|
|
34
|
+
}, finalTtl);
|
|
35
|
+
if (success) {
|
|
36
|
+
this.log(`緩存設置: ${key}`);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.log(`緩存設置失敗: ${key}`, 'warn');
|
|
40
|
+
}
|
|
41
|
+
return success;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 獲取緩存
|
|
45
|
+
*/
|
|
46
|
+
get(key) {
|
|
47
|
+
const cached = this.cache.get(key);
|
|
48
|
+
if (cached) {
|
|
49
|
+
this.hits++;
|
|
50
|
+
this.log(`緩存命中: ${key}`);
|
|
51
|
+
return cached.data;
|
|
52
|
+
}
|
|
53
|
+
this.misses++;
|
|
54
|
+
this.log(`緩存未命中: ${key}`);
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 刪除緩存
|
|
59
|
+
*/
|
|
60
|
+
del(key) {
|
|
61
|
+
this.cache.del(key);
|
|
62
|
+
this.log(`緩存刪除: ${key}`);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 清空緩存
|
|
66
|
+
*/
|
|
67
|
+
clear() {
|
|
68
|
+
this.cache.flushAll();
|
|
69
|
+
this.hits = 0;
|
|
70
|
+
this.misses = 0;
|
|
71
|
+
this.log('緩存已清空');
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* 獲取緩存狀態
|
|
75
|
+
*/
|
|
76
|
+
getStats() {
|
|
77
|
+
const stats = this.cache.getStats();
|
|
78
|
+
return {
|
|
79
|
+
...stats,
|
|
80
|
+
hits: this.hits,
|
|
81
|
+
misses: this.misses,
|
|
82
|
+
hitRate: this.hits + this.misses > 0 ? this.hits / (this.hits + this.misses) : 0,
|
|
83
|
+
size: this.cache.keys().length,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 獲取所有緩存鍵
|
|
88
|
+
*/
|
|
89
|
+
keys() {
|
|
90
|
+
return this.cache.keys();
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 檢查緩存是否存在
|
|
94
|
+
*/
|
|
95
|
+
has(key) {
|
|
96
|
+
return this.cache.has(key);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* 批量獲取緩存
|
|
100
|
+
*/
|
|
101
|
+
mget(keys) {
|
|
102
|
+
const values = this.cache.mget(keys);
|
|
103
|
+
const result = {};
|
|
104
|
+
keys.forEach(key => {
|
|
105
|
+
result[key] = values[key]?.data || null;
|
|
106
|
+
if (values[key])
|
|
107
|
+
this.hits++;
|
|
108
|
+
else
|
|
109
|
+
this.misses++;
|
|
110
|
+
});
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* 批量設置緩存
|
|
115
|
+
*/
|
|
116
|
+
mset(items) {
|
|
117
|
+
const results = [];
|
|
118
|
+
items.forEach(item => {
|
|
119
|
+
const finalTtl = item.ttl || this.cache.options.stdTTL || 300;
|
|
120
|
+
const cacheItem = {
|
|
121
|
+
data: item.val,
|
|
122
|
+
timestamp: Date.now(),
|
|
123
|
+
expiresAt: Date.now() + finalTtl * 1000,
|
|
124
|
+
};
|
|
125
|
+
const success = this.cache.set(item.key, cacheItem, finalTtl);
|
|
126
|
+
results.push(success);
|
|
127
|
+
if (success) {
|
|
128
|
+
this.log(`批量緩存設置: ${item.key}`);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
return results;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* 日志
|
|
135
|
+
*/
|
|
136
|
+
log(message, level = 'info') {
|
|
137
|
+
if (level === 'info') {
|
|
138
|
+
console.log(`[緩存] ${message}`);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
console.warn(`[緩存] ${message}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.CacheManager = CacheManager;
|
|
146
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 瀏覽器客戶端版本
|
|
3
|
+
* 注意:這個版本移除了文件系統依賴,適用於瀏覽器環境
|
|
4
|
+
*/
|
|
5
|
+
export interface KnowledgeItem {
|
|
6
|
+
id?: string;
|
|
7
|
+
category: 'legal' | 'case' | 'industry' | 'regulation' | 'guide';
|
|
8
|
+
title: string;
|
|
9
|
+
content: string;
|
|
10
|
+
source: string;
|
|
11
|
+
relevance: 'high' | 'medium' | 'low';
|
|
12
|
+
lastUpdated?: string;
|
|
13
|
+
createdAt?: string;
|
|
14
|
+
tags?: string[];
|
|
15
|
+
keywords?: string[];
|
|
16
|
+
metadata?: Record<string, any>;
|
|
17
|
+
version?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface SearchOptions {
|
|
20
|
+
limit?: number;
|
|
21
|
+
minRelevance?: 'high' | 'medium' | 'low';
|
|
22
|
+
categories?: string[];
|
|
23
|
+
keywordMatch?: 'exact' | 'fuzzy' | 'all';
|
|
24
|
+
sortBy?: 'relevance' | 'date' | 'title' | 'category';
|
|
25
|
+
sortOrder?: 'asc' | 'desc';
|
|
26
|
+
includeMetadata?: boolean;
|
|
27
|
+
filters?: Record<string, any>;
|
|
28
|
+
advancedSearch?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface SearchResult {
|
|
31
|
+
items: KnowledgeItem[];
|
|
32
|
+
total: number;
|
|
33
|
+
queryTime: number;
|
|
34
|
+
suggestions: string[];
|
|
35
|
+
pagination?: {
|
|
36
|
+
page: number;
|
|
37
|
+
pageSize: number;
|
|
38
|
+
totalPages: number;
|
|
39
|
+
hasNext: boolean;
|
|
40
|
+
hasPrevious: boolean;
|
|
41
|
+
};
|
|
42
|
+
query?: string;
|
|
43
|
+
options?: SearchOptions;
|
|
44
|
+
}
|
|
45
|
+
export declare class BrowserKnowledgeBase {
|
|
46
|
+
private knowledgeBase;
|
|
47
|
+
private keywordIndex;
|
|
48
|
+
constructor(data?: Record<string, KnowledgeItem[]>);
|
|
49
|
+
/**
|
|
50
|
+
* 加載數據
|
|
51
|
+
*/
|
|
52
|
+
loadData(data: Record<string, KnowledgeItem[]>): void;
|
|
53
|
+
/**
|
|
54
|
+
* 搜索相關知識
|
|
55
|
+
*/
|
|
56
|
+
search(query: string, options?: SearchOptions): Promise<SearchResult>;
|
|
57
|
+
/**
|
|
58
|
+
* 構建關鍵詞索引
|
|
59
|
+
*/
|
|
60
|
+
private buildKeywordIndex;
|
|
61
|
+
/**
|
|
62
|
+
* 從文本提取關鍵詞
|
|
63
|
+
*/
|
|
64
|
+
private extractKeywords;
|
|
65
|
+
/**
|
|
66
|
+
* 根據關鍵詞獲取相關分類
|
|
67
|
+
*/
|
|
68
|
+
private getCategoriesByKeywords;
|
|
69
|
+
/**
|
|
70
|
+
* 計算相關度分數
|
|
71
|
+
*/
|
|
72
|
+
private calculateRelevanceScore;
|
|
73
|
+
/**
|
|
74
|
+
* 應用過濾器
|
|
75
|
+
*/
|
|
76
|
+
private applyFilters;
|
|
77
|
+
/**
|
|
78
|
+
* 生成搜索建議
|
|
79
|
+
*/
|
|
80
|
+
private generateSuggestions;
|
|
81
|
+
/**
|
|
82
|
+
* 獲取分類數據
|
|
83
|
+
*/
|
|
84
|
+
getByCategory(category: string, limit?: number): KnowledgeItem[];
|
|
85
|
+
/**
|
|
86
|
+
* 獲取所有分類
|
|
87
|
+
*/
|
|
88
|
+
getCategories(): string[];
|
|
89
|
+
/**
|
|
90
|
+
* 獲取總條目數
|
|
91
|
+
*/
|
|
92
|
+
getTotalItems(): number;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,OAAO,CAAC;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;IACzC,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IACrD,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,aAAa,CAA2C;IAChE,OAAO,CAAC,YAAY,CAAoC;gBAE5C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;IAMlD;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,GAAG,IAAI;IAUrD;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IA+E/E;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsEzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkFvB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAW/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiC/B;;OAEG;IACH,OAAO,CAAC,YAAY;IAwBpB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+B3B;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE;IAKhE;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;OAEG;IACH,aAAa,IAAI,MAAM;CAOxB"}
|