superskill 0.2.5 → 0.2.6
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
|
@@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.2.6] - 2026-03-23
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- **Web discovery search** — Repo search now uses `in:name,description,readme` instead of restrictive topic filters. `deanpeters/Product-Manager-Skills` (2340 stars) and similar repos now discoverable
|
|
12
|
+
- **Code search** — Uses `filename:SKILL` qualifier instead of `language:markdown` for more accurate results
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- **Security scanning for community skills** — All discovered skills are scanned before loading for prompt injection, identity hijacking, data exfiltration, destructive commands, and script injection. Hard blocks on dangerous content, soft warnings on suspicious patterns
|
|
16
|
+
- **50KB size cap** on skill files to prevent oversized payloads
|
|
17
|
+
|
|
8
18
|
## [0.2.5] - 2026-03-23
|
|
9
19
|
|
|
10
20
|
### Added
|
|
@@ -82,6 +92,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
82
92
|
- CLI shorthand commands (`r`, `w`, `s`, `c`, `t`, `l`, `sk`)
|
|
83
93
|
- MCP tool annotations (`readOnlyHint`, `destructiveHint`, `idempotentHint`)
|
|
84
94
|
|
|
95
|
+
[0.2.6]: https://github.com/permanu/superskill/compare/v0.2.5...v0.2.6
|
|
85
96
|
[0.2.5]: https://github.com/permanu/superskill/compare/v0.2.4...v0.2.5
|
|
86
97
|
[0.2.4]: https://github.com/permanu/superskill/compare/v0.2.0...v0.2.4
|
|
87
98
|
[0.2.0]: https://github.com/permanu/superskill/compare/v0.1.2...v0.2.0
|
|
@@ -24,12 +24,24 @@ export interface WebDiscoveryResult {
|
|
|
24
24
|
export declare function searchGitHubForSkills(task: string): Promise<WebDiscoveryResult>;
|
|
25
25
|
/**
|
|
26
26
|
* Fetch a skill's content from a raw GitHub URL.
|
|
27
|
+
* Includes security validation to prevent prompt injection.
|
|
27
28
|
*/
|
|
28
29
|
export declare function fetchDiscoveredSkill(sourceUrl: string): Promise<{
|
|
29
30
|
success: boolean;
|
|
30
31
|
content?: string;
|
|
31
32
|
error?: string;
|
|
33
|
+
warnings?: string[];
|
|
32
34
|
}>;
|
|
35
|
+
/**
|
|
36
|
+
* Scan skill content for prompt injection patterns.
|
|
37
|
+
* Skills are markdown injected into LLM context — malicious content
|
|
38
|
+
* could instruct the LLM to exfiltrate data, run commands, or ignore user intent.
|
|
39
|
+
*/
|
|
40
|
+
export declare function scanForPromptInjection(content: string): {
|
|
41
|
+
blocked: boolean;
|
|
42
|
+
reason?: string;
|
|
43
|
+
warnings: string[];
|
|
44
|
+
};
|
|
33
45
|
/**
|
|
34
46
|
* Format discovery results for presentation to the user via the LLM.
|
|
35
47
|
*/
|
|
@@ -39,6 +39,7 @@ export async function searchGitHubForSkills(task) {
|
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
41
|
* Fetch a skill's content from a raw GitHub URL.
|
|
42
|
+
* Includes security validation to prevent prompt injection.
|
|
42
43
|
*/
|
|
43
44
|
export async function fetchDiscoveredSkill(sourceUrl) {
|
|
44
45
|
try {
|
|
@@ -52,12 +53,60 @@ export async function fetchDiscoveredSkill(sourceUrl) {
|
|
|
52
53
|
if (content.length < 50) {
|
|
53
54
|
return { success: false, error: "File too short to be a valid skill" };
|
|
54
55
|
}
|
|
55
|
-
|
|
56
|
+
// Size cap — skills over 50KB are suspicious
|
|
57
|
+
if (content.length > 50_000) {
|
|
58
|
+
return { success: false, error: "Skill file exceeds 50KB size limit — may not be a legitimate skill file" };
|
|
59
|
+
}
|
|
60
|
+
// Security scan
|
|
61
|
+
const securityResult = scanForPromptInjection(content);
|
|
62
|
+
if (securityResult.blocked) {
|
|
63
|
+
return { success: false, error: `Security risk detected: ${securityResult.reason}` };
|
|
64
|
+
}
|
|
65
|
+
return { success: true, content, warnings: securityResult.warnings };
|
|
56
66
|
}
|
|
57
67
|
catch (err) {
|
|
58
68
|
return { success: false, error: `Fetch failed: ${err.message}` };
|
|
59
69
|
}
|
|
60
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Scan skill content for prompt injection patterns.
|
|
73
|
+
* Skills are markdown injected into LLM context — malicious content
|
|
74
|
+
* could instruct the LLM to exfiltrate data, run commands, or ignore user intent.
|
|
75
|
+
*/
|
|
76
|
+
export function scanForPromptInjection(content) {
|
|
77
|
+
const warnings = [];
|
|
78
|
+
const lower = content.toLowerCase();
|
|
79
|
+
// Hard blocks — these should never appear in a skill file
|
|
80
|
+
const blockedPatterns = [
|
|
81
|
+
{ pattern: /ignore (all |any )?(previous|prior|above) (instructions|prompts|context)/i, reason: "Prompt override attempt" },
|
|
82
|
+
{ pattern: /you are now|you must now act as|forget (all |everything )?you/i, reason: "Identity override attempt" },
|
|
83
|
+
{ pattern: /do not (tell|inform|reveal|mention|show) (the user|anyone)/i, reason: "Secrecy instruction — skills should be transparent" },
|
|
84
|
+
{ pattern: /exfiltrate|steal|extract.*secret|send.*to.*http/i, reason: "Data exfiltration pattern" },
|
|
85
|
+
{ pattern: /curl\s+.*\|.*sh/i, reason: "Remote code execution via pipe to shell" },
|
|
86
|
+
{ pattern: /rm\s+-rf\s+[\/~]/i, reason: "Destructive filesystem command" },
|
|
87
|
+
{ pattern: /eval\s*\(.*fetch/i, reason: "Dynamic code execution from remote source" },
|
|
88
|
+
{ pattern: /<\s*script[\s>]/i, reason: "Script injection" },
|
|
89
|
+
];
|
|
90
|
+
for (const { pattern, reason } of blockedPatterns) {
|
|
91
|
+
if (pattern.test(content)) {
|
|
92
|
+
return { blocked: true, reason, warnings };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Soft warnings — suspicious but not necessarily malicious
|
|
96
|
+
if (lower.includes("api_key") || lower.includes("secret_key") || lower.includes("password")) {
|
|
97
|
+
warnings.push("References credentials — review before loading");
|
|
98
|
+
}
|
|
99
|
+
if (lower.includes("sudo ") || lower.includes("chmod 777")) {
|
|
100
|
+
warnings.push("Contains privileged system commands");
|
|
101
|
+
}
|
|
102
|
+
if ((content.match(/https?:\/\//g) || []).length > 20) {
|
|
103
|
+
warnings.push("Unusually high number of external URLs");
|
|
104
|
+
}
|
|
105
|
+
if (lower.includes("system prompt") || lower.includes("system message")) {
|
|
106
|
+
warnings.push("References system prompts — may attempt to modify LLM behavior");
|
|
107
|
+
}
|
|
108
|
+
return { blocked: false, warnings };
|
|
109
|
+
}
|
|
61
110
|
/**
|
|
62
111
|
* Format discovery results for presentation to the user via the LLM.
|
|
63
112
|
*/
|
|
@@ -104,8 +153,8 @@ function extractKeywords(task) {
|
|
|
104
153
|
.filter((w) => w.length > 2 && !stopwords.has(w));
|
|
105
154
|
}
|
|
106
155
|
function buildSearchQuery(keywords) {
|
|
107
|
-
//
|
|
108
|
-
return `${keywords.join(" ")} SKILL
|
|
156
|
+
// Search for SKILL.md files matching keywords
|
|
157
|
+
return `${keywords.join(" ")} filename:SKILL`;
|
|
109
158
|
}
|
|
110
159
|
async function searchGitHubCode(query) {
|
|
111
160
|
const headers = {
|
|
@@ -143,7 +192,7 @@ async function searchGitHubRepos(keywords) {
|
|
|
143
192
|
const token = process.env.GITHUB_TOKEN;
|
|
144
193
|
if (token)
|
|
145
194
|
headers.Authorization = `Bearer ${token}`;
|
|
146
|
-
const query = `${keywords.join(" ")} skill claude
|
|
195
|
+
const query = `${keywords.join(" ")} skill claude in:name,description,readme`;
|
|
147
196
|
const url = `https://api.github.com/search/repositories?q=${encodeURIComponent(query)}&sort=stars&per_page=5`;
|
|
148
197
|
const res = await fetch(url, { headers });
|
|
149
198
|
if (!res.ok) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-discovery.js","sourceRoot":"","sources":["../../../src/commands/skill/web-discovery.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAuB3D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAY;IACtD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC;IAC/F,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEzC,IAAI,CAAC;QACH,yDAAyD;QACzD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YACvC,gBAAgB,CAAC,KAAK,CAAC;YACvB,iBAAiB,CAAC,QAAQ,CAAC;SAC5B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAEpC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACnB,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAEzC,mBAAmB;QACnB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,yBAA0B,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC;IACnG,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"web-discovery.js","sourceRoot":"","sources":["../../../src/commands/skill/web-discovery.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAuB3D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAY;IACtD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC;IAC/F,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEzC,IAAI,CAAC;QACH,yDAAyD;QACzD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YACvC,gBAAgB,CAAC,KAAK,CAAC;YACvB,iBAAiB,CAAC,QAAQ,CAAC;SAC5B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAEpC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACnB,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAEzC,mBAAmB;QACnB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,yBAA0B,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC;IACnG,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,SAAiB;IAC1D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;QAC3E,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjC,iDAAiD;QACjD,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACxB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;QACzE,CAAC;QACD,6CAA6C;QAC7C,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yEAAyE,EAAE,CAAC;QAC9G,CAAC;QACD,gBAAgB;QAChB,MAAM,cAAc,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;QACvF,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAkB,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC;IAC9E,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEpC,0DAA0D;IAC1D,MAAM,eAAe,GAA+C;QAClE,EAAE,OAAO,EAAE,2EAA2E,EAAE,MAAM,EAAE,yBAAyB,EAAE;QAC3H,EAAE,OAAO,EAAE,gEAAgE,EAAE,MAAM,EAAE,2BAA2B,EAAE;QAClH,EAAE,OAAO,EAAE,6DAA6D,EAAE,MAAM,EAAE,oDAAoD,EAAE;QACxI,EAAE,OAAO,EAAE,kDAAkD,EAAE,MAAM,EAAE,2BAA2B,EAAE;QACpG,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,yCAAyC,EAAE;QAClF,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,gCAAgC,EAAE;QAC1E,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,2CAA2C,EAAE;QACrF,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,EAAE;KAC5D,CAAC;IAEF,KAAK,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QAClD,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5F,QAAQ,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3D,QAAQ,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACxE,QAAQ,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,OAA0B;IAC7E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,qDAAqD,IAAI,oCAAoC,CAAC;IACvG,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,0CAA0C,IAAI,YAAY,OAAO,CAAC,MAAM,mBAAmB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa;QACrI,EAAE;KACH,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,KAAK,oBAAoB,GAAG,EAAE,CAAC,CAAC;QAC3E,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IACnF,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;IAE/E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,yDAAyD;AAEzD,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;QACxB,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO;QACnE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;QACnE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;QACjE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;QACjE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;QACtE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM;QACpE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;QACrE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK;QACnE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;QACrE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM;QAChE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;QAChE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;KACnE,CAAC,CAAC;IAEH,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAkB;IAC1C,8CAA8C;IAC9C,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,KAAa;IAC3C,MAAM,OAAO,GAA2B;QACtC,MAAM,EAAE,gCAAgC;QACxC,YAAY,EAAE,YAAY;KAC3B,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACvC,IAAI,KAAK;QAAE,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAC;IAErD,MAAM,GAAG,GAAG,wCAAwC,kBAAkB,CAAC,KAAK,CAAC,cAAc,CAAC;IAC5F,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,EAAE,CAAC,CAAC,gCAAgC;QACnE,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAY1B,CAAC;IAEF,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;SACtB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SAC3D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACd,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC1D,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,gBAAgB;QAC5D,UAAU,EAAE,IAAI,CAAC,QAAQ;QACzB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS;QAC/B,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB;QACvC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU;QACtC,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC,CAAC,CAAC;AACR,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,QAAkB;IACjD,MAAM,OAAO,GAA2B;QACtC,MAAM,EAAE,gCAAgC;QACxC,YAAY,EAAE,YAAY;KAC3B,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACvC,IAAI,KAAK;QAAE,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAC;IAErD,MAAM,KAAK,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,0CAA0C,CAAC;IAC9E,MAAM,GAAG,GAAG,gDAAgD,kBAAkB,CAAC,KAAK,CAAC,wBAAwB,CAAC;IAC9G,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAQ1B,CAAC;IAEF,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS;QACpD,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,gBAAgB;QACjD,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,qBAAqB;QACjD,IAAI,EAAE,IAAI,CAAC,SAAS;QACpB,KAAK,EAAE,IAAI,CAAC,gBAAgB;QAC5B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,IAAI,EAAE,UAAU;KACjB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,IAAY;IAChD,wEAAwE;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpC,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AACjG,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe;IAC/B,2DAA2D;IAC3D,OAAO,OAAO;SACX,OAAO,CAAC,YAAY,EAAE,2BAA2B,CAAC;SAClD,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9D,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAC7B,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IACnC,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,GAAG,IAAI,WAAW,CAAC;IACzC,IAAI,IAAI,GAAG,GAAG;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,aAAa,CAAC;IAC7D,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC;AAC/C,CAAC"}
|