@zhin.js/adapter-kook 1.0.50 → 1.0.52

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 CHANGED
@@ -1,5 +1,19 @@
1
1
  # @zhin.js/adapter-kook
2
2
 
3
+ ## 1.0.52
4
+
5
+ ### Patch Changes
6
+
7
+ - zhin.js@1.0.51
8
+ - @zhin.js/logger@0.1.35
9
+
10
+ ## 1.0.51
11
+
12
+ ### Patch Changes
13
+
14
+ - zhin.js@1.0.50
15
+ - @zhin.js/logger@0.1.34
16
+
3
17
  ## 1.0.50
4
18
 
5
19
  ### Patch Changes
@@ -0,0 +1,34 @@
1
+ /**
2
+ * KOOK 适配器
3
+ */
4
+ import { Adapter, Plugin } from "zhin.js";
5
+ import { KookBot } from "./bot.js";
6
+ import type { KookBotConfig } from "./types.js";
7
+ export declare class KookAdapter extends Adapter<KookBot> {
8
+ constructor(plugin: Plugin);
9
+ createBot(config: KookBotConfig): KookBot;
10
+ kickMember(botId: string, sceneId: string, userId: string): Promise<boolean>;
11
+ banMember(botId: string, sceneId: string, userId: string, reason?: string): Promise<boolean>;
12
+ unbanMember(botId: string, sceneId: string, userId: string): Promise<boolean>;
13
+ setMemberNickname(botId: string, sceneId: string, userId: string, nickname: string): Promise<boolean>;
14
+ listMembers(botId: string, sceneId: string): Promise<{
15
+ members: {
16
+ id: string;
17
+ username: string;
18
+ nickname: string;
19
+ roles: number[];
20
+ }[];
21
+ count: number;
22
+ }>;
23
+ start(): Promise<void>;
24
+ stop(): Promise<void>;
25
+ /**
26
+ * 注册 KOOK 平台特有工具(角色授予等)
27
+ */
28
+ private registerKookPlatformTools;
29
+ /**
30
+ * 检查执行上下文中的权限
31
+ */
32
+ private checkPermission;
33
+ }
34
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,OAAO,EACP,MAAM,EAMP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,qBAAa,WAAY,SAAQ,OAAO,CAAC,OAAO,CAAC;gBACnC,MAAM,EAAE,MAAM;IAI1B,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAMnC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMzD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAMzE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAM1D,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAMlF,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;;;IAe1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IActB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAqPjC;;OAEG;IACH,OAAO,CAAC,eAAe;CA8BxB"}
package/lib/adapter.js ADDED
@@ -0,0 +1,337 @@
1
+ /**
2
+ * KOOK 适配器
3
+ */
4
+ import { Adapter, createGroupManagementTools, GROUP_MANAGEMENT_SKILL_KEYWORDS, GROUP_MANAGEMENT_SKILL_TAGS, } from "zhin.js";
5
+ import { KookBot } from "./bot.js";
6
+ import { KookPermission } from "./types.js";
7
+ export class KookAdapter extends Adapter {
8
+ constructor(plugin) {
9
+ super(plugin, "kook", []);
10
+ }
11
+ createBot(config) {
12
+ return new KookBot(this, config);
13
+ }
14
+ // ── IGroupManagement 标准群管方法 ──────────────────────────────────
15
+ async kickMember(botId, sceneId, userId) {
16
+ const bot = this.bots.get(botId);
17
+ if (!bot)
18
+ throw new Error(`Bot ${botId} 不存在`);
19
+ return bot.kickUser(sceneId, userId);
20
+ }
21
+ async banMember(botId, sceneId, userId, reason) {
22
+ const bot = this.bots.get(botId);
23
+ if (!bot)
24
+ throw new Error(`Bot ${botId} 不存在`);
25
+ return bot.addToBlacklist(sceneId, userId, reason);
26
+ }
27
+ async unbanMember(botId, sceneId, userId) {
28
+ const bot = this.bots.get(botId);
29
+ if (!bot)
30
+ throw new Error(`Bot ${botId} 不存在`);
31
+ return bot.removeFromBlacklist(sceneId, userId);
32
+ }
33
+ async setMemberNickname(botId, sceneId, userId, nickname) {
34
+ const bot = this.bots.get(botId);
35
+ if (!bot)
36
+ throw new Error(`Bot ${botId} 不存在`);
37
+ return bot.setNickname(sceneId, userId, nickname);
38
+ }
39
+ async listMembers(botId, sceneId) {
40
+ const bot = this.bots.get(botId);
41
+ if (!bot)
42
+ throw new Error(`Bot ${botId} 不存在`);
43
+ const members = await bot.getGuildMembers(sceneId);
44
+ return {
45
+ members: members.map(m => ({
46
+ id: m.id, username: m.username,
47
+ nickname: m.nickname, roles: m.roles,
48
+ })),
49
+ count: members.length,
50
+ };
51
+ }
52
+ // ── 生命周期 ───────────────────────────────────────────────────────
53
+ async start() {
54
+ this.registerKookPlatformTools();
55
+ const groupTools = createGroupManagementTools(this, this.name);
56
+ groupTools.forEach((t) => this.addTool(t));
57
+ this.declareSkill({
58
+ description: 'KOOK 服务器/频道群管理:踢人、禁言、封禁、设管理员、改服务器名、查成员等。仅昵称时请先 list_members 获取 user_id。',
59
+ keywords: GROUP_MANAGEMENT_SKILL_KEYWORDS,
60
+ tags: GROUP_MANAGEMENT_SKILL_TAGS,
61
+ });
62
+ await super.start();
63
+ this.plugin.logger.info("KOOK 适配器已启动");
64
+ }
65
+ async stop() {
66
+ await super.stop();
67
+ this.plugin.logger.info("KOOK 适配器已停止");
68
+ }
69
+ /**
70
+ * 注册 KOOK 平台特有工具(角色授予等)
71
+ */
72
+ registerKookPlatformTools() {
73
+ // 角色管理工具 - 授予角色
74
+ this.addTool({
75
+ name: 'kook_grant_role',
76
+ description: '给用户授予 KOOK 服务器角色',
77
+ parameters: {
78
+ type: 'object',
79
+ properties: {
80
+ bot: {
81
+ type: 'string',
82
+ description: 'Bot 名称',
83
+ },
84
+ guild_id: {
85
+ type: 'string',
86
+ description: '服务器 ID',
87
+ },
88
+ user_id: {
89
+ type: 'string',
90
+ description: '用户 ID',
91
+ },
92
+ role_id: {
93
+ type: 'string',
94
+ description: '角色 ID',
95
+ },
96
+ },
97
+ required: ['bot', 'guild_id', 'user_id', 'role_id'],
98
+ },
99
+ platforms: ['kook'],
100
+ scopes: ['channel'],
101
+ permissionLevel: 'group_admin',
102
+ execute: async (args, context) => {
103
+ const { bot: botId, guild_id, user_id, role_id } = args;
104
+ const bot = this.bots.get(botId);
105
+ if (!bot)
106
+ throw new Error(`Bot ${botId} 不存在`);
107
+ this.checkPermission(context, 'group_admin');
108
+ const success = await bot.grantRole(guild_id, user_id, role_id);
109
+ return { success, message: success ? `已授予用户 ${user_id} 角色 ${role_id}` : '授予角色失败' };
110
+ },
111
+ });
112
+ // 角色管理工具 - 撤销角色
113
+ this.addTool({
114
+ name: 'kook_revoke_role',
115
+ description: '撤销用户的 KOOK 服务器角色',
116
+ parameters: {
117
+ type: 'object',
118
+ properties: {
119
+ bot: {
120
+ type: 'string',
121
+ description: 'Bot 名称',
122
+ },
123
+ guild_id: {
124
+ type: 'string',
125
+ description: '服务器 ID',
126
+ },
127
+ user_id: {
128
+ type: 'string',
129
+ description: '用户 ID',
130
+ },
131
+ role_id: {
132
+ type: 'string',
133
+ description: '角色 ID',
134
+ },
135
+ },
136
+ required: ['bot', 'guild_id', 'user_id', 'role_id'],
137
+ },
138
+ platforms: ['kook'],
139
+ scopes: ['channel'],
140
+ permissionLevel: 'group_admin',
141
+ execute: async (args, context) => {
142
+ const { bot: botId, guild_id, user_id, role_id } = args;
143
+ const bot = this.bots.get(botId);
144
+ if (!bot)
145
+ throw new Error(`Bot ${botId} 不存在`);
146
+ this.checkPermission(context, 'group_admin');
147
+ const success = await bot.revokeRole(guild_id, user_id, role_id);
148
+ return { success, message: success ? `已撤销用户 ${user_id} 的角色 ${role_id}` : '撤销角色失败' };
149
+ },
150
+ });
151
+ // 获取角色列表工具
152
+ this.addTool({
153
+ name: 'kook_list_roles',
154
+ description: '获取 KOOK 服务器的角色列表',
155
+ parameters: {
156
+ type: 'object',
157
+ properties: {
158
+ bot: {
159
+ type: 'string',
160
+ description: 'Bot 名称',
161
+ },
162
+ guild_id: {
163
+ type: 'string',
164
+ description: '服务器 ID',
165
+ },
166
+ },
167
+ required: ['bot', 'guild_id'],
168
+ },
169
+ platforms: ['kook'],
170
+ scopes: ['channel'],
171
+ permissionLevel: 'user', // 普通用户可查看
172
+ execute: async (args) => {
173
+ const { bot: botId, guild_id } = args;
174
+ const bot = this.bots.get(botId);
175
+ if (!bot)
176
+ throw new Error(`Bot ${botId} 不存在`);
177
+ const roles = await bot.getRoleList(guild_id);
178
+ return {
179
+ roles: roles.map(r => ({
180
+ id: r.role_id,
181
+ name: r.name,
182
+ color: r.color,
183
+ position: r.position,
184
+ permissions: r.permissions,
185
+ })),
186
+ count: roles.length,
187
+ };
188
+ },
189
+ });
190
+ // 创建角色工具
191
+ this.addTool({
192
+ name: 'kook_create_role',
193
+ description: '在 KOOK 服务器中创建新角色(需要服务器主人权限)',
194
+ parameters: {
195
+ type: 'object',
196
+ properties: {
197
+ bot: {
198
+ type: 'string',
199
+ description: 'Bot 名称',
200
+ },
201
+ guild_id: {
202
+ type: 'string',
203
+ description: '服务器 ID',
204
+ },
205
+ name: {
206
+ type: 'string',
207
+ description: '角色名称',
208
+ },
209
+ },
210
+ required: ['bot', 'guild_id', 'name'],
211
+ },
212
+ platforms: ['kook'],
213
+ scopes: ['channel'],
214
+ permissionLevel: 'group_owner',
215
+ execute: async (args, context) => {
216
+ const { bot: botId, guild_id, name } = args;
217
+ const bot = this.bots.get(botId);
218
+ if (!bot)
219
+ throw new Error(`Bot ${botId} 不存在`);
220
+ this.checkPermission(context, 'group_owner');
221
+ const role = await bot.createRole(guild_id, name);
222
+ return {
223
+ success: true,
224
+ message: `已创建角色 "${name}"`,
225
+ role: {
226
+ id: role.role_id,
227
+ name: role.name,
228
+ },
229
+ };
230
+ },
231
+ });
232
+ // 删除角色工具
233
+ this.addTool({
234
+ name: 'kook_delete_role',
235
+ description: '删除 KOOK 服务器中的角色(需要服务器主人权限)',
236
+ parameters: {
237
+ type: 'object',
238
+ properties: {
239
+ bot: {
240
+ type: 'string',
241
+ description: 'Bot 名称',
242
+ },
243
+ guild_id: {
244
+ type: 'string',
245
+ description: '服务器 ID',
246
+ },
247
+ role_id: {
248
+ type: 'string',
249
+ description: '角色 ID',
250
+ },
251
+ },
252
+ required: ['bot', 'guild_id', 'role_id'],
253
+ },
254
+ platforms: ['kook'],
255
+ scopes: ['channel'],
256
+ permissionLevel: 'group_owner',
257
+ execute: async (args, context) => {
258
+ const { bot: botId, guild_id, role_id } = args;
259
+ const bot = this.bots.get(botId);
260
+ if (!bot)
261
+ throw new Error(`Bot ${botId} 不存在`);
262
+ this.checkPermission(context, 'group_owner');
263
+ const success = await bot.deleteRole(guild_id, role_id);
264
+ return { success, message: success ? `已删除角色 ${role_id}` : '删除角色失败' };
265
+ },
266
+ });
267
+ // 黑名单管理(仅支持 add/remove,通过 GuildMember API)
268
+ this.addTool({
269
+ name: 'kook_blacklist',
270
+ description: 'KOOK 服务器黑名单管理:添加/移除',
271
+ parameters: {
272
+ type: 'object',
273
+ properties: {
274
+ bot: { type: 'string', description: 'Bot 名称' },
275
+ guild_id: { type: 'string', description: '服务器 ID' },
276
+ action: { type: 'string', description: 'add|remove', enum: ['add', 'remove'] },
277
+ user_id: { type: 'string', description: '用户 ID' },
278
+ remark: { type: 'string', description: '备注(add 可选)' },
279
+ },
280
+ required: ['bot', 'guild_id', 'action', 'user_id'],
281
+ },
282
+ platforms: ['kook'],
283
+ scopes: ['channel'],
284
+ permissionLevel: 'group_admin',
285
+ execute: async (args, context) => {
286
+ const { bot: botId, guild_id, action, user_id, remark } = args;
287
+ const bot = this.bots.get(botId);
288
+ if (!bot)
289
+ throw new Error(`Bot ${botId} 不存在`);
290
+ this.checkPermission(context, 'group_admin');
291
+ switch (action) {
292
+ case 'add': {
293
+ const success = await bot.addToBlacklist(guild_id, user_id, remark);
294
+ return { success, message: success ? `已将 ${user_id} 加入黑名单` : '操作失败' };
295
+ }
296
+ case 'remove': {
297
+ const success = await bot.removeFromBlacklist(guild_id, user_id);
298
+ return { success, message: success ? `已将 ${user_id} 从黑名单移除` : '操作失败' };
299
+ }
300
+ default: return { success: false, message: `未知操作: ${action}` };
301
+ }
302
+ },
303
+ });
304
+ this.plugin.logger.debug('已注册 KOOK 平台管理工具');
305
+ }
306
+ /**
307
+ * 检查执行上下文中的权限
308
+ */
309
+ checkPermission(context, required) {
310
+ if (!context?.message)
311
+ return; // 无上下文时跳过检查(命令行调用)
312
+ const sender = context.message.$sender;
313
+ if (!sender)
314
+ return;
315
+ const permissionLevels = {
316
+ 'user': 0,
317
+ 'group_admin': 1,
318
+ 'group_owner': 2,
319
+ 'bot_admin': 3,
320
+ 'owner': 4,
321
+ };
322
+ // 获取发送者的实际权限级别
323
+ let senderLevel = 'user';
324
+ if (sender.isGuildOwner || sender.permission === KookPermission.Owner) {
325
+ senderLevel = 'group_owner';
326
+ }
327
+ else if (sender.isAdmin || sender.permission === KookPermission.Admin ||
328
+ sender.permission === KookPermission.ChannelAdmin) {
329
+ senderLevel = 'group_admin';
330
+ }
331
+ // TODO: 检查是否为 bot_admin 或 owner(需要从 zhin 配置中获取)
332
+ if (permissionLevels[senderLevel] < permissionLevels[required]) {
333
+ throw new Error(`权限不足:需要 ${required} 权限,当前为 ${senderLevel}`);
334
+ }
335
+ }
336
+ }
337
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/lib/bot.d.ts ADDED
@@ -0,0 +1,122 @@
1
+ /**
2
+ * KOOK Bot 实现
3
+ */
4
+ import { Client, User, Guild } from "kook-client";
5
+ import { Bot, Message, SendOptions } from "zhin.js";
6
+ import type { KookBotConfig, KookRawMessage } from "./types.js";
7
+ import type { KookAdapter } from "./adapter.js";
8
+ export declare class KookBot extends Client implements Bot<KookBotConfig, KookRawMessage> {
9
+ $config: KookBotConfig;
10
+ $connected: boolean;
11
+ adapter: KookAdapter;
12
+ get $id(): string;
13
+ get pluginLogger(): import("zhin.js").Logger;
14
+ constructor(adapter: KookAdapter, $config: KookBotConfig);
15
+ /**
16
+ * 设置事件监听器
17
+ */
18
+ private setupEventListeners;
19
+ /**
20
+ * 将 KOOK 消息转换为标准消息格式
21
+ */
22
+ $formatMessage(msg: KookRawMessage): Message<KookRawMessage>;
23
+ /**
24
+ * 获取发送者的详细权限信息
25
+ */
26
+ private getSenderInfo;
27
+ /**
28
+ * 踢出用户
29
+ * @param guildId 服务器ID
30
+ * @param userId 用户ID
31
+ */
32
+ kickUser(guildId: string, userId: string): Promise<boolean>;
33
+ /**
34
+ * 将用户加入黑名单
35
+ * @param guildId 服务器ID
36
+ * @param userId 用户ID
37
+ * @param remark 备注
38
+ * @param delMsgDays 删除消息天数(0-7)
39
+ */
40
+ addToBlacklist(guildId: string, userId: string, remark?: string, delMsgDays?: number): Promise<boolean>;
41
+ /**
42
+ * 将用户从黑名单移除
43
+ * @param guildId 服务器ID
44
+ * @param userId 用户ID
45
+ */
46
+ removeFromBlacklist(guildId: string, userId: string): Promise<boolean>;
47
+ /**
48
+ * 给用户授予角色
49
+ * @param guildId 服务器ID
50
+ * @param userId 用户ID
51
+ * @param roleId 角色ID
52
+ */
53
+ grantRole(guildId: string, userId: string, roleId: string): Promise<boolean>;
54
+ /**
55
+ * 撤销用户角色
56
+ * @param guildId 服务器ID
57
+ * @param userId 用户ID
58
+ * @param roleId 角色ID
59
+ */
60
+ revokeRole(guildId: string, userId: string, roleId: string): Promise<boolean>;
61
+ /**
62
+ * 设置用户昵称
63
+ * @param guildId 服务器ID
64
+ * @param userId 用户ID
65
+ * @param nickname 新昵称
66
+ */
67
+ setNickname(guildId: string, userId: string, nickname: string): Promise<boolean>;
68
+ /**
69
+ * 获取服务器角色列表
70
+ * @param guildId 服务器ID
71
+ */
72
+ getRoleList(guildId: string): Promise<Guild.Role[]>;
73
+ /**
74
+ * 创建角色
75
+ * @param guildId 服务器ID
76
+ * @param name 角色名称
77
+ */
78
+ createRole(guildId: string, name: string): Promise<Guild.Role>;
79
+ /**
80
+ * 删除角色
81
+ * @param guildId 服务器ID
82
+ * @param roleId 角色ID
83
+ */
84
+ deleteRole(guildId: string, roleId: string): Promise<boolean>;
85
+ /**
86
+ * 获取服务器成员列表
87
+ * @param guildId 服务器ID
88
+ * @param channelId 可选的频道ID
89
+ */
90
+ getGuildMembers(guildId: string, channelId?: string): Promise<User.Info[]>;
91
+ private parseMarkdown;
92
+ /**
93
+ * 将 kook-client 的 MessageSegment[] 转换为 Zhin 的 MessageElement[]
94
+ */
95
+ private parseMessageContent;
96
+ /**
97
+ * 检查文本是否包含 KMarkdown 特殊语法
98
+ */
99
+ private hasKMarkdownSyntax;
100
+ /**
101
+ * 连接到 KOOK
102
+ */
103
+ $connect(): Promise<void>;
104
+ /**
105
+ * 断开连接
106
+ */
107
+ $disconnect(): Promise<void>;
108
+ /**
109
+ * 发送消息
110
+ */
111
+ $sendMessage(options: SendOptions): Promise<string>;
112
+ /**
113
+ * 撤回消息
114
+ */
115
+ $recallMessage(messageId: string): Promise<void>;
116
+ /**
117
+ * 将消息段转换为 KOOK KMarkdown 格式
118
+ * 支持:文本、图片、@提及、表情、引用等
119
+ */
120
+ private convertToKookFormat;
121
+ }
122
+ //# sourceMappingURL=bot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,MAAM,EAIN,IAAI,EACJ,KAAK,EAGN,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,GAAG,EACH,OAAO,EACP,WAAW,EAKZ,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,aAAa,EAAkB,cAAc,EAAE,MAAM,YAAY,CAAC;AAEhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,qBAAa,OAAQ,SAAQ,MAAO,YAAW,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC;IAYtC,OAAO,EAAE,aAAa;IAX/D,UAAU,EAAE,OAAO,CAAS;IAC5B,OAAO,EAAE,WAAW,CAAC;IAErB,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,YAAY,6BAEf;gBAEW,OAAO,EAAE,WAAW,EAAS,OAAO,EAAE,aAAa;IAc/D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0C3B;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAwE5D;;OAEG;IACH,OAAO,CAAC,aAAa;IA+CrB;;;;OAIG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYjE;;;;;;OAMG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY7G;;;;OAIG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5E;;;;;OAKG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlF;;;;;OAKG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYnF;;;;;OAKG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYtF;;;OAGG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAUzD;;;;OAIG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;IAYpE;;;;OAIG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYnE;;;;OAIG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAQhF,OAAO,CAAC,aAAa;IAsFrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA8D3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B;;KAEC;IACK,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAWlC;;KAEC;IACK,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BzD;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtD;;;KAGC;IACD,OAAO,CAAC,mBAAmB;CAoE5B"}