reskill 1.2.0 → 1.3.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 (52) hide show
  1. package/dist/cli/commands/index.d.ts +4 -0
  2. package/dist/cli/commands/index.d.ts.map +1 -1
  3. package/dist/cli/commands/login.d.ts +10 -0
  4. package/dist/cli/commands/login.d.ts.map +1 -0
  5. package/dist/cli/commands/logout.d.ts +9 -0
  6. package/dist/cli/commands/logout.d.ts.map +1 -0
  7. package/dist/cli/commands/publish.d.ts +32 -0
  8. package/dist/cli/commands/publish.d.ts.map +1 -0
  9. package/dist/cli/commands/uninstall.d.ts.map +1 -1
  10. package/dist/cli/commands/whoami.d.ts +9 -0
  11. package/dist/cli/commands/whoami.d.ts.map +1 -0
  12. package/dist/cli/index.js +2492 -32
  13. package/dist/core/auth-manager.d.ts +71 -0
  14. package/dist/core/auth-manager.d.ts.map +1 -0
  15. package/dist/core/config-loader.d.ts +12 -1
  16. package/dist/core/config-loader.d.ts.map +1 -1
  17. package/dist/core/extractor.d.ts +62 -0
  18. package/dist/core/extractor.d.ts.map +1 -0
  19. package/dist/core/git-resolver.d.ts +2 -0
  20. package/dist/core/git-resolver.d.ts.map +1 -1
  21. package/dist/core/http-resolver.d.ts +6 -2
  22. package/dist/core/http-resolver.d.ts.map +1 -1
  23. package/dist/core/index.d.ts +8 -0
  24. package/dist/core/index.d.ts.map +1 -1
  25. package/dist/core/install-directory.d.ts +81 -0
  26. package/dist/core/install-directory.d.ts.map +1 -0
  27. package/dist/core/installer.d.ts +4 -0
  28. package/dist/core/installer.d.ts.map +1 -1
  29. package/dist/core/publisher.d.ts +85 -0
  30. package/dist/core/publisher.d.ts.map +1 -0
  31. package/dist/core/registry-client.d.ts +141 -0
  32. package/dist/core/registry-client.d.ts.map +1 -0
  33. package/dist/core/registry-resolver.d.ts +62 -0
  34. package/dist/core/registry-resolver.d.ts.map +1 -0
  35. package/dist/core/skill-manager.d.ts +29 -0
  36. package/dist/core/skill-manager.d.ts.map +1 -1
  37. package/dist/core/skill-parser.d.ts +5 -1
  38. package/dist/core/skill-parser.d.ts.map +1 -1
  39. package/dist/core/skill-validator.d.ts +110 -0
  40. package/dist/core/skill-validator.d.ts.map +1 -0
  41. package/dist/index.js +971 -18
  42. package/dist/types/index.d.ts +30 -0
  43. package/dist/types/index.d.ts.map +1 -1
  44. package/dist/utils/git.d.ts +4 -3
  45. package/dist/utils/git.d.ts.map +1 -1
  46. package/dist/utils/index.d.ts +1 -0
  47. package/dist/utils/index.d.ts.map +1 -1
  48. package/dist/utils/registry-scope.d.ts +150 -0
  49. package/dist/utils/registry-scope.d.ts.map +1 -0
  50. package/dist/utils/registry.d.ts +22 -0
  51. package/dist/utils/registry.d.ts.map +1 -0
  52. package/package.json +4 -2
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Registry Resolver (Step 5.1)
3
+ *
4
+ * Resolves skill references from npm-style registries:
5
+ * - Private registry: @scope/name[@version] (e.g., @kanyun/planning-with-files@2.4.5)
6
+ * - Public registry: name[@version] (e.g., my-skill@1.0.0)
7
+ *
8
+ * Uses RegistryClient to download and verify skills.
9
+ */
10
+ import { type ParsedSkillIdentifier } from '../utils/registry-scope.js';
11
+ export interface RegistryResolveResult {
12
+ /** Parsed skill identifier */
13
+ parsed: ParsedSkillIdentifier;
14
+ /** Short skill name (without scope) */
15
+ shortName: string;
16
+ /** Resolved version */
17
+ version: string;
18
+ /** Registry URL */
19
+ registryUrl: string;
20
+ /** Downloaded tarball buffer */
21
+ tarball: Buffer;
22
+ /** Integrity hash from server */
23
+ integrity: string;
24
+ }
25
+ export declare class RegistryResolver {
26
+ /**
27
+ * Check if a reference is a registry source (not Git or HTTP)
28
+ *
29
+ * Registry formats:
30
+ * - @scope/name[@version] - private registry
31
+ * - name[@version] - public registry (if not matching other formats)
32
+ *
33
+ * Explicitly excluded:
34
+ * - Git SSH: git@github.com:user/repo.git
35
+ * - Git HTTPS: https://github.com/user/repo.git
36
+ * - GitHub web: https://github.com/user/repo/tree/...
37
+ * - HTTP/OSS: https://example.com/skill.tar.gz
38
+ * - Registry shorthand: github:user/repo, gitlab:org/repo
39
+ */
40
+ static isRegistryRef(ref: string): boolean;
41
+ /**
42
+ * Resolve a registry skill reference
43
+ *
44
+ * @param ref - Skill reference (e.g., "@kanyun/planning-with-files@2.4.5" or "my-skill@latest")
45
+ * @returns Resolved skill information including downloaded tarball
46
+ *
47
+ * @example
48
+ * const result = await resolver.resolve('@kanyun/planning-with-files@2.4.5');
49
+ * console.log(result.shortName); // 'planning-with-files'
50
+ * console.log(result.version); // '2.4.5'
51
+ */
52
+ resolve(ref: string): Promise<RegistryResolveResult>;
53
+ /**
54
+ * Extract tarball to a target directory
55
+ *
56
+ * @param tarball - Tarball buffer
57
+ * @param destDir - Destination directory
58
+ * @returns Path to the extracted skill directory
59
+ */
60
+ extract(tarball: Buffer, destDir: string): Promise<string>;
61
+ }
62
+ //# sourceMappingURL=registry-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-resolver.d.ts","sourceRoot":"","sources":["../../src/core/registry-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAMpC,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,qBAAa,gBAAgB;IAC3B;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAoC1C;;;;;;;;;;OAUG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA+B1D;;;;;;OAMG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAWjE"}
@@ -23,6 +23,7 @@ export declare class SkillManager {
23
23
  private projectRoot;
24
24
  private resolver;
25
25
  private httpResolver;
26
+ private registryResolver;
26
27
  private cache;
27
28
  private config;
28
29
  private lockManager;
@@ -61,6 +62,10 @@ export declare class SkillManager {
61
62
  * Detect if a reference is an HTTP/OSS URL
62
63
  */
63
64
  private isHttpSource;
65
+ /**
66
+ * Detect if a reference is a registry source (@scope/name or name@version)
67
+ */
68
+ private isRegistrySource;
64
69
  /**
65
70
  * Install skill
66
71
  */
@@ -145,6 +150,30 @@ export declare class SkillManager {
145
150
  * Install skill from HTTP/OSS to multiple agents
146
151
  */
147
152
  private installToAgentsFromHttp;
153
+ /**
154
+ * Install skill from npm-style Registry to multiple agents
155
+ *
156
+ * Supports:
157
+ * - Private registry: @scope/name[@version] (e.g., @kanyun/planning-with-files@2.4.5)
158
+ * - Public registry: name[@version] (e.g., my-skill@1.0.0)
159
+ * - Web-published skills (github/gitlab/oss_url/custom_url/local)
160
+ */
161
+ private installToAgentsFromRegistry;
162
+ /**
163
+ * 安装页面发布的 skill
164
+ *
165
+ * 页面发布的 skill 不支持版本管理,根据 source_type 分支到不同的安装逻辑:
166
+ * - github/gitlab: 复用 installToAgentsFromGit
167
+ * - oss_url/custom_url: 复用 installToAgentsFromHttp
168
+ * - local: 通过 Registry API 下载 tarball
169
+ */
170
+ private installFromWebPublished;
171
+ /**
172
+ * 安装 Local Folder 模式发布的 skill
173
+ *
174
+ * 通过 Registry 的 /api/skills/:name/download API 下载 tarball
175
+ */
176
+ private installFromRegistryLocal;
148
177
  /**
149
178
  * Get default target agents
150
179
  *
@@ -1 +1 @@
1
- {"version":3,"file":"skill-manager.d.ts","sourceRoot":"","sources":["../../src/core/skill-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-manager.d.ts","sourceRoot":"","sources":["../../src/core/skill-manager.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,8 @@ export interface SkillMdFrontmatter {
17
17
  name: string;
18
18
  /** Skill description (required) */
19
19
  description: string;
20
+ /** Version (optional, semver format) */
21
+ version?: string;
20
22
  /** License */
21
23
  license?: string;
22
24
  /** Compatibility requirements */
@@ -34,6 +36,8 @@ export interface ParsedSkill {
34
36
  name: string;
35
37
  /** Skill description */
36
38
  description: string;
39
+ /** Version (optional, semver format) */
40
+ version?: string;
37
41
  /** License */
38
42
  license?: string;
39
43
  /** Compatibility requirements */
@@ -69,7 +73,7 @@ export declare function validateSkillName(name: string): void;
69
73
  *
70
74
  * Specification requirements:
71
75
  * - Max 1024 characters
72
- * - Cannot contain angle brackets
76
+ * - Angle brackets are allowed per agentskills.io spec
73
77
  */
74
78
  export declare function validateSkillDescription(description: string): void;
75
79
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"skill-parser.d.ts","sourceRoot":"","sources":["../../src/core/skill-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAGpC,KAAK,CAAC,EAAE,MAAM;gBADrB,OAAO,EAAE,MAAM,EACR,KAAK,CAAC,EAAE,MAAM,YAAA;CAKxB;AAqGD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAsCpD;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAkBlE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,WAAW,GAAG,IAAI,CAiDpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,WAAW,GAAG,IAAI,CAUpB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,WAAW,GAAG,IAAI,CAGpB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAYxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,MAAM,CAsB9E;;;;;;;;;;AAED,wBAQE"}
1
+ {"version":3,"file":"skill-parser.d.ts","sourceRoot":"","sources":["../../src/core/skill-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAGpC,KAAK,CAAC,EAAE,MAAM;gBADrB,OAAO,EAAE,MAAM,EACR,KAAK,CAAC,EAAE,MAAM,YAAA;CAKxB;AAiID;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAsCpD;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAalE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,WAAW,GAAG,IAAI,CAkDpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,WAAW,GAAG,IAAI,CAUpB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,WAAW,GAAG,IAAI,CAGpB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAYxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,MAAM,CAsB9E;;;;;;;;;;AAED,wBAQE"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * SkillValidator - Validate skills for publishing
3
+ *
4
+ * Following agentskills.io specification: https://agentskills.io/specification
5
+ *
6
+ * Key points:
7
+ * - SKILL.md is REQUIRED (with name and description in frontmatter)
8
+ * - skill.json is OPTIONAL (for additional metadata like version, keywords)
9
+ * - Version can come from skill.json, SKILL.md metadata.version, or default to "0.0.0"
10
+ */
11
+ import type { SkillJson } from '../types/index.js';
12
+ import { type ParsedSkill } from './skill-parser.js';
13
+ export interface ValidationError {
14
+ field: string;
15
+ message: string;
16
+ suggestion?: string;
17
+ }
18
+ export interface ValidationWarning {
19
+ field: string;
20
+ message: string;
21
+ suggestion?: string;
22
+ }
23
+ export interface ValidationResult {
24
+ valid: boolean;
25
+ errors: ValidationError[];
26
+ warnings: ValidationWarning[];
27
+ }
28
+ export interface LoadedSkill {
29
+ path: string;
30
+ /** skill.json content (may be synthesized from SKILL.md if skill.json doesn't exist) */
31
+ skillJson: SkillJson | null;
32
+ /** SKILL.md parsed content */
33
+ skillMd: ParsedSkill | null;
34
+ readme: string | null;
35
+ files: string[];
36
+ /** Whether skillJson was synthesized from SKILL.md (no actual skill.json file) */
37
+ synthesized?: boolean;
38
+ }
39
+ export declare class SkillValidator {
40
+ /**
41
+ * Validate skill name format
42
+ *
43
+ * Requirements:
44
+ * - Lowercase letters, numbers, and hyphens only
45
+ * - 1-64 characters
46
+ * - Cannot start or end with hyphen
47
+ * - Cannot have consecutive hyphens
48
+ */
49
+ validateName(name: string): ValidationResult;
50
+ /**
51
+ * Validate version format (semver)
52
+ */
53
+ validateVersion(version: string): ValidationResult;
54
+ /**
55
+ * Validate description
56
+ *
57
+ * Following agentskills.io specification:
58
+ * - Max 1024 characters
59
+ * - Non-empty
60
+ */
61
+ validateDescription(description: string): ValidationResult;
62
+ /**
63
+ * Load skill information from directory
64
+ *
65
+ * Following agentskills.io specification:
66
+ * - SKILL.md is the primary source of metadata
67
+ * - skill.json is optional and provides additional metadata
68
+ * - If skill.json doesn't exist, synthesize it from SKILL.md
69
+ */
70
+ loadSkill(skillPath: string): LoadedSkill;
71
+ /**
72
+ * Synthesize a SkillJson object from SKILL.md frontmatter
73
+ *
74
+ * This allows publishing skills that only have SKILL.md (per agentskills.io spec)
75
+ */
76
+ private synthesizeSkillJson;
77
+ /**
78
+ * Scan files to include in publish
79
+ *
80
+ * If includePatterns is specified, only include those files/directories.
81
+ * Otherwise, scan all files in the directory (excluding ignored patterns).
82
+ */
83
+ private scanFiles;
84
+ /**
85
+ * Patterns to ignore when scanning directories
86
+ */
87
+ private static readonly IGNORE_PATTERNS;
88
+ /**
89
+ * Check if a file/directory should be ignored
90
+ */
91
+ private shouldIgnore;
92
+ /**
93
+ * Recursively add files from directory
94
+ */
95
+ private addFilesFromDir;
96
+ /**
97
+ * Validate a skill directory for publishing
98
+ *
99
+ * Following agentskills.io specification:
100
+ * - SKILL.md is REQUIRED with name and description in frontmatter
101
+ * - skill.json is OPTIONAL (for version, keywords, etc.)
102
+ */
103
+ validate(skillPath: string): ValidationResult;
104
+ /**
105
+ * Generate integrity hash for files
106
+ */
107
+ generateIntegrity(skillPath: string, files: string[]): string;
108
+ }
109
+ export default SkillValidator;
110
+ //# sourceMappingURL=skill-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-validator.d.ts","sourceRoot":"","sources":["../../src/core/skill-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMvE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,8BAA8B;IAC9B,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAmBD,qBAAa,cAAc;IACzB;;;;;;;;OAQG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAwE5C;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB;IAiClD;;;;;;OAMG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB;IAwB1D;;;;;;;OAOG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW;IAiDzC;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAsCjB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAarC;IAEF;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,OAAO,CAAC,eAAe;IAoBvB;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB;IAqI7C;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;CAiB9D;AAED,eAAe,cAAc,CAAC"}