feat: MCP 서버 추가 — AI 에이전트용 웹 검사 도구
Node.js + TypeScript MCP 서버 구현: - 5개 도구: inspect_page, inspect_site, get_inspection, get_issues, get_history - 듀얼 트랜스포트: stdio (Claude Desktop) + Streamable HTTP (Docker/원격) - i18n 지원 (영어/한국어) - Docker 통합 (port 3100) + Nginx /mcp 프록시 - Smithery 레지스트리 배포 설정 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2
mcp/dist/tools/get-history.d.ts
vendored
Normal file
2
mcp/dist/tools/get-history.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import { ApiClient } from "../api-client.js";
|
||||
export declare function getHistory(client: ApiClient, lang: "en" | "ko", url?: string, limit?: number): Promise<string>;
|
||||
31
mcp/dist/tools/get-history.js
vendored
Normal file
31
mcp/dist/tools/get-history.js
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
import { t } from "../i18n/index.js";
|
||||
export async function getHistory(client, lang, url, limit) {
|
||||
const result = await client.getInspections(url, limit || 10);
|
||||
const lines = [];
|
||||
lines.push(`# ${t("get_history.title", lang)}`);
|
||||
lines.push(`**${t("get_history.total", lang)}**: ${result.total}`);
|
||||
if (url) {
|
||||
lines.push(`**Filter**: ${url}`);
|
||||
}
|
||||
lines.push("");
|
||||
if (result.items.length === 0) {
|
||||
lines.push("No inspection records found.");
|
||||
return lines.join("\n");
|
||||
}
|
||||
lines.push("| # | URL | Score | Grade | Issues | Date |");
|
||||
lines.push("|---|---|---|---|---|---|");
|
||||
for (let i = 0; i < result.items.length; i++) {
|
||||
const item = result.items[i];
|
||||
const date = item.created_at.split("T")[0];
|
||||
const urlShort = item.url.length > 50 ? item.url.slice(0, 47) + "..." : item.url;
|
||||
lines.push(`| ${i + 1} | ${urlShort} | ${item.overall_score} | ${item.grade} | ${item.total_issues} | ${date} |`);
|
||||
}
|
||||
lines.push("");
|
||||
// Include inspection IDs for follow-up
|
||||
lines.push("## Inspection IDs");
|
||||
for (const item of result.items) {
|
||||
lines.push(`- ${item.url}: \`${item.inspection_id}\``);
|
||||
}
|
||||
return lines.join("\n");
|
||||
}
|
||||
//# sourceMappingURL=get-history.js.map
|
||||
1
mcp/dist/tools/get-history.js.map
vendored
Normal file
1
mcp/dist/tools/get-history.js.map
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"get-history.js","sourceRoot":"","sources":["../../src/tools/get-history.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAiB,EACjB,IAAiB,EACjB,GAAY,EACZ,KAAc;IAEd,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAE7D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAChD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACnE,IAAI,GAAG,EAAE,CAAC;QACR,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,QAAQ,GACZ,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAClE,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,GAAG,CAAC,MAAM,QAAQ,MAAM,IAAI,CAAC,aAAa,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,YAAY,MAAM,IAAI,IAAI,CACtG,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,uCAAuC;IACvC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
||||
2
mcp/dist/tools/get-inspection.d.ts
vendored
Normal file
2
mcp/dist/tools/get-inspection.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import { ApiClient } from "../api-client.js";
|
||||
export declare function getInspection(client: ApiClient, id: string, lang: "en" | "ko"): Promise<string>;
|
||||
93
mcp/dist/tools/get-inspection.js
vendored
Normal file
93
mcp/dist/tools/get-inspection.js
vendored
Normal file
@ -0,0 +1,93 @@
|
||||
import { t } from "../i18n/index.js";
|
||||
export async function getInspection(client, id, lang) {
|
||||
// Try single-page first, then site inspection
|
||||
try {
|
||||
const r = await client.getInspection(id);
|
||||
return formatSingleResult(r, lang);
|
||||
}
|
||||
catch {
|
||||
// Might be a site inspection ID
|
||||
}
|
||||
try {
|
||||
const r = await client.getSiteInspection(id);
|
||||
return formatSiteResult(r, lang);
|
||||
}
|
||||
catch {
|
||||
return t("get_inspection.not_found", lang, { id });
|
||||
}
|
||||
}
|
||||
function formatSingleResult(r, lang) {
|
||||
const lines = [];
|
||||
const duration = r.duration_seconds
|
||||
? `${r.duration_seconds.toFixed(1)}s`
|
||||
: "—";
|
||||
lines.push(`# ${t("result.title", lang)}`);
|
||||
lines.push(`**URL**: ${r.url}`);
|
||||
lines.push(`**Status**: ${r.status}`);
|
||||
lines.push(`**Inspection ID**: ${r.inspection_id}`);
|
||||
if (r.status !== "completed") {
|
||||
return lines.join("\n");
|
||||
}
|
||||
lines.push(`**${t("result.overall_score", lang)}**: ${r.overall_score}/100 (${r.grade})`);
|
||||
lines.push(`**${t("result.duration", lang)}**: ${duration}`);
|
||||
if (r.accessibility_standard) {
|
||||
lines.push(`**${t("result.standard", lang)}**: ${r.accessibility_standard}`);
|
||||
}
|
||||
lines.push("");
|
||||
// Category scores
|
||||
lines.push(`## ${t("result.category_scores", lang)}`);
|
||||
lines.push(`| ${t("result.category", lang)} | ${t("result.score", lang)} | ${t("result.grade", lang)} | ${t("result.issues", lang)} |`);
|
||||
lines.push("|---|---|---|---|");
|
||||
for (const [key, label] of [
|
||||
["html_css", "HTML/CSS"],
|
||||
["accessibility", "Accessibility"],
|
||||
["seo", "SEO"],
|
||||
["performance_security", "Performance/Security"],
|
||||
]) {
|
||||
const cat = r.categories[key];
|
||||
if (!cat)
|
||||
continue;
|
||||
lines.push(`| ${label} | ${cat.score} | ${cat.grade} | ${cat.total_issues} |`);
|
||||
}
|
||||
lines.push("");
|
||||
lines.push(`> ${t("result.more_issues_hint", lang, { inspectionId: r.inspection_id })}`);
|
||||
return lines.join("\n");
|
||||
}
|
||||
function formatSiteResult(r, lang) {
|
||||
const lines = [];
|
||||
lines.push(`# Site ${t("result.title", lang)}`);
|
||||
lines.push(`**Root URL**: ${r.root_url}`);
|
||||
lines.push(`**Domain**: ${r.domain}`);
|
||||
lines.push(`**Status**: ${r.status}`);
|
||||
lines.push(`**Site Inspection ID**: ${r.site_inspection_id}`);
|
||||
if (r.aggregate_scores) {
|
||||
const a = r.aggregate_scores;
|
||||
lines.push("");
|
||||
lines.push(`**${t("result.overall_score", lang)}**: ${a.overall_score}/100 (${a.grade})`);
|
||||
lines.push(`**Pages**: ${a.pages_inspected}/${a.pages_total}`);
|
||||
lines.push("");
|
||||
lines.push(`## ${t("result.category_scores", lang)}`);
|
||||
lines.push(`| ${t("result.category", lang)} | ${t("result.score", lang)} |`);
|
||||
lines.push("|---|---|");
|
||||
lines.push(`| HTML/CSS | ${a.html_css} |`);
|
||||
lines.push(`| Accessibility | ${a.accessibility} |`);
|
||||
lines.push(`| SEO | ${a.seo} |`);
|
||||
lines.push(`| Performance/Security | ${a.performance_security} |`);
|
||||
lines.push("");
|
||||
lines.push(`**Total Issues**: ${a.total_issues}`);
|
||||
}
|
||||
// Page list
|
||||
if (r.discovered_pages.length > 0) {
|
||||
lines.push("");
|
||||
lines.push("## Pages");
|
||||
lines.push("| URL | Score | Grade | Status |");
|
||||
lines.push("|---|---|---|---|");
|
||||
for (const p of r.discovered_pages) {
|
||||
const score = p.overall_score !== undefined ? String(p.overall_score) : "—";
|
||||
const grade = p.grade || "—";
|
||||
lines.push(`| ${p.url} | ${score} | ${grade} | ${p.status} |`);
|
||||
}
|
||||
}
|
||||
return lines.join("\n");
|
||||
}
|
||||
//# sourceMappingURL=get-inspection.js.map
|
||||
1
mcp/dist/tools/get-inspection.js.map
vendored
Normal file
1
mcp/dist/tools/get-inspection.js.map
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"get-inspection.js","sourceRoot":"","sources":["../../src/tools/get-inspection.ts"],"names":[],"mappings":"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"}
|
||||
2
mcp/dist/tools/get-issues.d.ts
vendored
Normal file
2
mcp/dist/tools/get-issues.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import { ApiClient } from "../api-client.js";
|
||||
export declare function getIssues(client: ApiClient, id: string, lang: "en" | "ko", category?: string, severity?: string): Promise<string>;
|
||||
53
mcp/dist/tools/get-issues.js
vendored
Normal file
53
mcp/dist/tools/get-issues.js
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
import { t } from "../i18n/index.js";
|
||||
export async function getIssues(client, id, lang, category, severity) {
|
||||
const result = await client.getIssues(id, category, severity);
|
||||
const lines = [];
|
||||
lines.push(`# ${t("get_issues.title", lang)}`);
|
||||
lines.push(`**Inspection ID**: ${result.inspection_id}`);
|
||||
lines.push(`**${t("get_issues.total", lang)}**: ${result.total}`);
|
||||
// Show applied filters
|
||||
const activeFilters = Object.entries(result.filters)
|
||||
.filter(([, v]) => v)
|
||||
.map(([k, v]) => `${k}: ${v}`)
|
||||
.join(", ");
|
||||
if (activeFilters) {
|
||||
lines.push(`**${t("get_issues.filters", lang)}**: ${activeFilters}`);
|
||||
}
|
||||
lines.push("");
|
||||
if (result.issues.length === 0) {
|
||||
lines.push("No issues found.");
|
||||
return lines.join("\n");
|
||||
}
|
||||
// Issue table
|
||||
lines.push(`| # | ${t("result.severity", lang)} | Code | ${t("result.category", lang)} | ${t("result.message", lang)} |`);
|
||||
lines.push("|---|---|---|---|---|");
|
||||
for (let i = 0; i < result.issues.length; i++) {
|
||||
const issue = result.issues[i];
|
||||
const msg = issue.message.length > 80
|
||||
? issue.message.slice(0, 77) + "..."
|
||||
: issue.message;
|
||||
lines.push(`| ${i + 1} | ${issue.severity} | ${issue.code} | ${issue.category} | ${msg} |`);
|
||||
}
|
||||
lines.push("");
|
||||
// Detailed view for first 10
|
||||
const detailCount = Math.min(result.issues.length, 10);
|
||||
lines.push("## Details");
|
||||
for (let i = 0; i < detailCount; i++) {
|
||||
const issue = result.issues[i];
|
||||
lines.push(`### ${i + 1}. [${issue.severity.toUpperCase()}] ${issue.code}`);
|
||||
lines.push(`- **${t("result.message", lang)}**: ${issue.message}`);
|
||||
if (issue.element) {
|
||||
lines.push(`- **${t("result.element", lang)}**: \`${issue.element}\``);
|
||||
}
|
||||
lines.push(`- **${t("result.suggestion", lang)}**: ${issue.suggestion}`);
|
||||
if (issue.kwcag_criterion) {
|
||||
lines.push(`- **KWCAG**: ${issue.kwcag_criterion} ${issue.kwcag_name || ""}`);
|
||||
}
|
||||
else if (issue.wcag_criterion) {
|
||||
lines.push(`- **WCAG**: ${issue.wcag_criterion}`);
|
||||
}
|
||||
lines.push("");
|
||||
}
|
||||
return lines.join("\n");
|
||||
}
|
||||
//# sourceMappingURL=get-issues.js.map
|
||||
1
mcp/dist/tools/get-issues.js.map
vendored
Normal file
1
mcp/dist/tools/get-issues.js.map
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"get-issues.js","sourceRoot":"","sources":["../../src/tools/get-issues.ts"],"names":[],"mappings":"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"}
|
||||
2
mcp/dist/tools/inspect-page.d.ts
vendored
Normal file
2
mcp/dist/tools/inspect-page.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import { ApiClient } from "../api-client.js";
|
||||
export declare function inspectPage(client: ApiClient, url: string, lang: "en" | "ko", standard?: string): Promise<string>;
|
||||
91
mcp/dist/tools/inspect-page.js
vendored
Normal file
91
mcp/dist/tools/inspect-page.js
vendored
Normal file
@ -0,0 +1,91 @@
|
||||
import { t } from "../i18n/index.js";
|
||||
const POLL_INTERVAL = 2_000; // 2 seconds
|
||||
const MAX_POLLS = 60; // 120 seconds total
|
||||
export async function inspectPage(client, url, lang, standard) {
|
||||
// 1. Start inspection
|
||||
const { inspection_id } = await client.startInspection(url, standard);
|
||||
// 2. Poll until completion
|
||||
let result = null;
|
||||
for (let i = 0; i < MAX_POLLS; i++) {
|
||||
await sleep(POLL_INTERVAL);
|
||||
const data = await client.getInspection(inspection_id);
|
||||
if (data.status === "completed") {
|
||||
result = data;
|
||||
break;
|
||||
}
|
||||
if (data.status === "error") {
|
||||
throw new Error(`Inspection failed for ${url}`);
|
||||
}
|
||||
}
|
||||
// 3. Timeout — return partial info
|
||||
if (!result) {
|
||||
return t("inspect_page.timeout", lang, { url, inspectionId: inspection_id });
|
||||
}
|
||||
// 4. Format result as markdown
|
||||
return formatResult(result, lang);
|
||||
}
|
||||
function formatResult(r, lang) {
|
||||
const lines = [];
|
||||
const duration = r.duration_seconds
|
||||
? `${r.duration_seconds.toFixed(1)}s`
|
||||
: "—";
|
||||
lines.push(`# ${t("result.title", lang)}`);
|
||||
lines.push(`**URL**: ${r.url}`);
|
||||
lines.push(`**${t("result.overall_score", lang)}**: ${r.overall_score}/100 (${r.grade})`);
|
||||
lines.push(`**${t("result.duration", lang)}**: ${duration}`);
|
||||
if (r.accessibility_standard) {
|
||||
lines.push(`**${t("result.standard", lang)}**: ${r.accessibility_standard}`);
|
||||
}
|
||||
lines.push("");
|
||||
// Category scores table
|
||||
lines.push(`## ${t("result.category_scores", lang)}`);
|
||||
lines.push(`| ${t("result.category", lang)} | ${t("result.score", lang)} | ${t("result.grade", lang)} | ${t("result.issues", lang)} |`);
|
||||
lines.push("|---|---|---|---|");
|
||||
const catNames = [
|
||||
["html_css", "HTML/CSS"],
|
||||
["accessibility", "Accessibility"],
|
||||
["seo", "SEO"],
|
||||
["performance_security", "Performance/Security"],
|
||||
];
|
||||
for (const [key, label] of catNames) {
|
||||
const cat = r.categories[key];
|
||||
if (!cat)
|
||||
continue;
|
||||
const issueStr = `${cat.total_issues} (C:${cat.critical} M:${cat.major} m:${cat.minor} i:${cat.info})`;
|
||||
lines.push(`| ${label} | ${cat.score} | ${cat.grade} | ${issueStr} |`);
|
||||
}
|
||||
lines.push("");
|
||||
// Issue summary
|
||||
const s = r.summary;
|
||||
lines.push(`## ${t("result.issue_summary", lang)}`);
|
||||
lines.push(`**${t("result.total", lang)}**: ${s.total_issues} (Critical: ${s.critical}, Major: ${s.major}, Minor: ${s.minor}, Info: ${s.info})`);
|
||||
lines.push("");
|
||||
// Top issues (critical + major, max 5)
|
||||
const topIssues = collectTopIssues(r, 5);
|
||||
if (topIssues.length > 0) {
|
||||
lines.push(`## ${t("result.top_issues", lang)}`);
|
||||
for (const issue of topIssues) {
|
||||
const sevLabel = issue.severity.toUpperCase();
|
||||
lines.push(`### [${sevLabel}] ${issue.code}`);
|
||||
lines.push(`- **${t("result.message", lang)}**: ${issue.message}`);
|
||||
if (issue.element) {
|
||||
lines.push(`- **${t("result.element", lang)}**: \`${issue.element}\``);
|
||||
}
|
||||
lines.push(`- **${t("result.suggestion", lang)}**: ${issue.suggestion}`);
|
||||
lines.push("");
|
||||
}
|
||||
}
|
||||
// Hint for more issues
|
||||
lines.push(`> ${t("result.more_issues_hint", lang, { inspectionId: r.inspection_id })}`);
|
||||
return lines.join("\n");
|
||||
}
|
||||
function collectTopIssues(r, max) {
|
||||
const all = Object.values(r.categories).flatMap((cat) => cat.issues);
|
||||
return all
|
||||
.filter((i) => i.severity === "critical" || i.severity === "major")
|
||||
.slice(0, max);
|
||||
}
|
||||
function sleep(ms) {
|
||||
return new Promise((resolve) => setTimeout(resolve, ms));
|
||||
}
|
||||
//# sourceMappingURL=inspect-page.js.map
|
||||
1
mcp/dist/tools/inspect-page.js.map
vendored
Normal file
1
mcp/dist/tools/inspect-page.js.map
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"inspect-page.js","sourceRoot":"","sources":["../../src/tools/inspect-page.ts"],"names":[],"mappings":"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"}
|
||||
2
mcp/dist/tools/inspect-site.d.ts
vendored
Normal file
2
mcp/dist/tools/inspect-site.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import { ApiClient } from "../api-client.js";
|
||||
export declare function inspectSite(client: ApiClient, url: string, lang: "en" | "ko", maxPages?: number, maxDepth?: number, standard?: string): Promise<string>;
|
||||
13
mcp/dist/tools/inspect-site.js
vendored
Normal file
13
mcp/dist/tools/inspect-site.js
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
import { t } from "../i18n/index.js";
|
||||
export async function inspectSite(client, url, lang, maxPages, maxDepth, standard) {
|
||||
const result = await client.startSiteInspection(url, maxPages, maxDepth, standard);
|
||||
const lines = [];
|
||||
lines.push(`# ${t("inspect_site.started", lang)}`);
|
||||
lines.push(`**URL**: ${url}`);
|
||||
lines.push(`**Site Inspection ID**: ${result.site_inspection_id}`);
|
||||
lines.push(`**Status**: ${result.status}`);
|
||||
lines.push("");
|
||||
lines.push(`> ${t("inspect_site.follow_up_hint", lang, { id: result.site_inspection_id })}`);
|
||||
return lines.join("\n");
|
||||
}
|
||||
//# sourceMappingURL=inspect-site.js.map
|
||||
1
mcp/dist/tools/inspect-site.js.map
vendored
Normal file
1
mcp/dist/tools/inspect-site.js.map
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"inspect-site.js","sourceRoot":"","sources":["../../src/tools/inspect-site.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAiB,EACjB,GAAW,EACX,IAAiB,EACjB,QAAiB,EACjB,QAAiB,EACjB,QAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEnF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,2BAA2B,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,CAAC,6BAA6B,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,kBAAkB,EAAE,CAAC,EAAE,CACjF,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
||||
Reference in New Issue
Block a user