__vite_ssr_exportName__("isWindowsDrivePath", () => { try { return isWindowsDrivePath } catch {} });
__vite_ssr_exportName__("isUncPath", () => { try { return isUncPath } catch {} });
__vite_ssr_exportName__("isNetworkPath", () => { try { return isNetworkPath } catch {} });
__vite_ssr_exportName__("isWindowsAbsolutePath", () => { try { return isWindowsAbsolutePath } catch {} });
__vite_ssr_exportName__("isExplicitRelativePath", () => { try { return isExplicitRelativePath } catch {} });
__vite_ssr_exportName__("normalizeProjectPathForDispatch", () => { try { return normalizeProjectPathForDispatch } catch {} });
__vite_ssr_exportName__("normalizeProjectPathForComparison", () => { try { return normalizeProjectPathForComparison } catch {} });
__vite_ssr_exportName__("newProjectFolderName", () => { try { return newProjectFolderName } catch {} });
__vite_ssr_exportName__("stripSlashPrefixedWindowsDrive", () => { try { return stripSlashPrefixedWindowsDrive } catch {} });
__vite_ssr_exportName__("fileBasename", () => { try { return fileBasename } catch {} });
__vite_ssr_exportName__("workspaceRelativeFilePath", () => { try { return workspaceRelativeFilePath } catch {} });
__vite_ssr_exportName__("isAbsolutePath", () => { try { return isAbsolutePath } catch {} });
__vite_ssr_exportName__("isHostPath", () => { try { return isHostPath } catch {} });
__vite_ssr_exportName__("resolveWorkspaceFilePath", () => { try { return resolveWorkspaceFilePath } catch {} });
function isWindowsDrivePath(value) {
	return /^[a-zA-Z]:([/\\]|$)/.test(value);
};
function isUncPath(value) {
	return value.startsWith("\\\\");
};
/**
* Windows treats `/` and `\` alike, so any two leading separators name a UNC
* or device path. Touching one makes Windows sign in to that host with the
* user's NTLM credentials, so agent-authored paths must not reach one.
*/
function isNetworkPath(value) {
	return /^[\\/]{2}/.test(value);
};
function isWindowsAbsolutePath(value) {
	return isUncPath(value) || isWindowsDrivePath(value);
};
function isExplicitRelativePath(value) {
	return value === "." || value === ".." || value.startsWith("./") || value.startsWith("../") || value.startsWith(".\\") || value.startsWith("..\\");
};
function isRootPath(value) {
	// Bare C: means the current directory on C, not its root; require the drive separator.
	return value === "/" || value === "\\" || /^[a-zA-Z]:[/\\]$/.test(value);
}
function trimTrailingPathSeparators(value) {
	if (value.length === 0 || isRootPath(value)) {
		return value;
	};
	const trimmed = value.startsWith("/") ? value.replace(/\/+$/g, "") : value.replace(/[\\/]+$/g, "");
	if (trimmed.length === 0) {
		return value;
	};
	return /^[a-zA-Z]:$/.test(trimmed) ? `${trimmed}\\` : trimmed;
}
function normalizeProjectPathForDispatch(value) {
	return trimTrailingPathSeparators(value.trim());
};
function normalizeProjectPathForComparison(value) {
	const normalized = normalizeProjectPathForDispatch(value);
	if (isWindowsDrivePath(normalized) || isUncPath(normalized)) {
		return normalized.replaceAll("/", "\\").toLowerCase();
	};
	return normalized;
};
// Windows refuses these as file names, with or without an extension.
const WINDOWS_RESERVED_NAME = /^(con|prn|aux|nul|com[1-9]|lpt[1-9])$/;
function newProjectFolderName(name) {
	const slug = name.normalize("NFKD").replace(/[̀-ͯ]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+/, "").slice(0, 64).replace(/-+$/, "");
	if (slug.length === 0) return "project";
	return WINDOWS_RESERVED_NAME.test(slug) ? `${slug}-project` : slug;
};
const SLASH_PREFIXED_WINDOWS_DRIVE_PATTERN = /^\/[A-Za-z]:[\\/]/;
/** Browser URL parsers write `C:/foo` as `/C:/foo` for file URLs. */
function stripSlashPrefixedWindowsDrive(path) {
	return SLASH_PREFIXED_WINDOWS_DRIVE_PATTERN.test(path) ? path.slice(1) : path;
};
function fileBasename(path) {
	const trimmed = path.replace(/[/\\]+$/, "");
	if (trimmed.length === 0) return path;
	const separatorIndex = Math.max(trimmed.lastIndexOf("/"), trimmed.lastIndexOf("\\"));
	return separatorIndex >= 0 ? trimmed.slice(separatorIndex + 1) : trimmed;
};
function workspaceRelativeFilePath(path, workspaceRoot) {
	if (!workspaceRoot) return null;
	const normalizedPath = stripSlashPrefixedWindowsDrive(path.replaceAll("\\", "/"));
	const normalizedRoot = stripSlashPrefixedWindowsDrive(workspaceRoot.replaceAll("\\", "/")).replace(/\/+$/, "");
	const caseInsensitive = isWindowsAbsolutePath(stripSlashPrefixedWindowsDrive(workspaceRoot));
	const pathForCompare = caseInsensitive ? normalizedPath.toLowerCase() : normalizedPath;
	const rootForCompare = caseInsensitive ? normalizedRoot.toLowerCase() : normalizedRoot;
	if (pathForCompare.replace(/\/+$/, "") === rootForCompare) return ".";
	if (!pathForCompare.startsWith(`${rootForCompare}/`)) return null;
	const relativePath = normalizedPath.slice(normalizedRoot.length + 1);
	// `/repo/../x` starts with the root but escapes it; the server rejects that as a workspace path.
	let depth = 0;
	for (const segment of relativePath.split("/")) {
		if (segment === "..") depth -= 1;
		else if (segment.length > 0 && segment !== ".") depth += 1;
		if (depth < 0) return null;
	};
	return relativePath;
};
function isAbsolutePath(value) {
	return value.startsWith("/") || isWindowsAbsolutePath(value);
};
/** Home-relative host paths are expanded by the destination server. */
function isHostPath(value) {
	return isAbsolutePath(value) || value.startsWith("~/");
};
function resolveWorkspaceFilePath(path, workspaceRoot) {
	if (isAbsolutePath(path) || path.startsWith("~/") || path.startsWith("~\\")) return path;
	const base = workspaceRoot.replace(/[/\\]+$/, "");
	return isWindowsAbsolutePath(workspaceRoot) ? `${base}\\${path.replaceAll("/", "\\")}` : `${base}/${path}`;
}
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7QUFBTyxTQUFTLG1CQUFtQixPQUF3QjtDQUN6RCxPQUFPLHNCQUFzQixLQUFLLEtBQUs7QUFDekM7QUFFTyxTQUFTLFVBQVUsT0FBd0I7Q0FDaEQsT0FBTyxNQUFNLFdBQVcsTUFBTTtBQUNoQzs7Ozs7O0FBT08sU0FBUyxjQUFjLE9BQXdCO0NBQ3BELE9BQU8sWUFBWSxLQUFLLEtBQUs7QUFDL0I7QUFFTyxTQUFTLHNCQUFzQixPQUF3QjtDQUM1RCxPQUFPLFVBQVUsS0FBSyxLQUFLLG1CQUFtQixLQUFLO0FBQ3JEO0FBRU8sU0FBUyx1QkFBdUIsT0FBd0I7Q0FDN0QsT0FDRSxVQUFVLE9BQ1YsVUFBVSxRQUNWLE1BQU0sV0FBVyxJQUFJLEtBQ3JCLE1BQU0sV0FBVyxLQUFLLEtBQ3RCLE1BQU0sV0FBVyxLQUFLLEtBQ3RCLE1BQU0sV0FBVyxNQUFNO0FBRTNCO0FBRUEsU0FBUyxXQUFXLE9BQXdCOztDQUUxQyxPQUFPLFVBQVUsT0FBTyxVQUFVLFFBQVEsbUJBQW1CLEtBQUssS0FBSztBQUN6RTtBQUVBLFNBQVMsMkJBQTJCLE9BQXVCO0NBQ3pELElBQUksTUFBTSxXQUFXLEtBQUssV0FBVyxLQUFLLEdBQUc7RUFDM0MsT0FBTztDQUNUO0NBQ0EsTUFBTSxVQUFVLE1BQU0sV0FBVyxHQUFHLElBQ2hDLE1BQU0sUUFBUSxTQUFTLEVBQUUsSUFDekIsTUFBTSxRQUFRLFlBQVksRUFBRTtDQUNoQyxJQUFJLFFBQVEsV0FBVyxHQUFHO0VBQ3hCLE9BQU87Q0FDVDtDQUNBLE9BQU8sY0FBYyxLQUFLLE9BQU8sSUFBSSxHQUFHLFFBQVEsTUFBTTtBQUN4RDtBQUVPLFNBQVMsZ0NBQWdDLE9BQXVCO0NBQ3JFLE9BQU8sMkJBQTJCLE1BQU0sS0FBSyxDQUFDO0FBQ2hEO0FBRU8sU0FBUyxrQ0FBa0MsT0FBdUI7Q0FDdkUsTUFBTSxhQUFhLGdDQUFnQyxLQUFLO0NBQ3hELElBQUksbUJBQW1CLFVBQVUsS0FBSyxVQUFVLFVBQVUsR0FBRztFQUMzRCxPQUFPLFdBQVcsV0FBVyxLQUFLLElBQUksQ0FBQyxDQUFDLFlBQVk7Q0FDdEQ7Q0FDQSxPQUFPO0FBQ1Q7O0FBR0EsTUFBTSx3QkFBd0I7QUFFdkIsU0FBUyxxQkFBcUIsTUFBc0I7Q0FDekQsTUFBTSxPQUFPLEtBQ1YsVUFBVSxNQUFNLENBQUMsQ0FDakIsUUFBUSxVQUFVLEVBQUUsQ0FBQyxDQUNyQixZQUFZLENBQUMsQ0FDYixRQUFRLGVBQWUsR0FBRyxDQUFDLENBQzNCLFFBQVEsT0FBTyxFQUFFLENBQUMsQ0FDbEIsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUNaLFFBQVEsT0FBTyxFQUFFO0NBQ3BCLElBQUksS0FBSyxXQUFXLEdBQUcsT0FBTztDQUM5QixPQUFPLHNCQUFzQixLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssWUFBWTtBQUNoRTtBQUVBLE1BQU0sdUNBQXVDOztBQUd0QyxTQUFTLCtCQUErQixNQUFzQjtDQUNuRSxPQUFPLHFDQUFxQyxLQUFLLElBQUksSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJO0FBQzNFO0FBRU8sU0FBUyxhQUFhLE1BQXNCO0NBQ2pELE1BQU0sVUFBVSxLQUFLLFFBQVEsV0FBVyxFQUFFO0NBQzFDLElBQUksUUFBUSxXQUFXLEdBQUcsT0FBTztDQUNqQyxNQUFNLGlCQUFpQixLQUFLLElBQUksUUFBUSxZQUFZLEdBQUcsR0FBRyxRQUFRLFlBQVksSUFBSSxDQUFDO0NBQ25GLE9BQU8sa0JBQWtCLElBQUksUUFBUSxNQUFNLGlCQUFpQixDQUFDLElBQUk7QUFDbkU7QUFFTyxTQUFTLDBCQUNkLE1BQ0EsZUFDZTtDQUNmLElBQUksQ0FBQyxlQUFlLE9BQU87Q0FDM0IsTUFBTSxpQkFBaUIsK0JBQStCLEtBQUssV0FBVyxNQUFNLEdBQUcsQ0FBQztDQUNoRixNQUFNLGlCQUFpQiwrQkFDckIsY0FBYyxXQUFXLE1BQU0sR0FBRyxDQUNwQyxDQUFDLENBQUMsUUFBUSxRQUFRLEVBQUU7Q0FDcEIsTUFBTSxrQkFBa0Isc0JBQXNCLCtCQUErQixhQUFhLENBQUM7Q0FDM0YsTUFBTSxpQkFBaUIsa0JBQWtCLGVBQWUsWUFBWSxJQUFJO0NBQ3hFLE1BQU0saUJBQWlCLGtCQUFrQixlQUFlLFlBQVksSUFBSTtDQUN4RSxJQUFJLGVBQWUsUUFBUSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsT0FBTztDQUNsRSxJQUFJLENBQUMsZUFBZSxXQUFXLEdBQUcsZUFBZSxFQUFFLEdBQUcsT0FBTztDQUM3RCxNQUFNLGVBQWUsZUFBZSxNQUFNLGVBQWUsU0FBUyxDQUFDOztDQUVuRSxJQUFJLFFBQVE7Q0FDWixLQUFLLE1BQU0sV0FBVyxhQUFhLE1BQU0sR0FBRyxHQUFHO0VBQzdDLElBQUksWUFBWSxNQUFNLFNBQVM7T0FDMUIsSUFBSSxRQUFRLFNBQVMsS0FBSyxZQUFZLEtBQUssU0FBUztFQUN6RCxJQUFJLFFBQVEsR0FBRyxPQUFPO0NBQ3hCO0NBQ0EsT0FBTztBQUNUO0FBRU8sU0FBUyxlQUFlLE9BQXdCO0NBQ3JELE9BQU8sTUFBTSxXQUFXLEdBQUcsS0FBSyxzQkFBc0IsS0FBSztBQUM3RDs7QUFHTyxTQUFTLFdBQVcsT0FBd0I7Q0FDakQsT0FBTyxlQUFlLEtBQUssS0FBSyxNQUFNLFdBQVcsSUFBSTtBQUN2RDtBQUVPLFNBQVMseUJBQXlCLE1BQWMsZUFBK0I7Q0FDcEYsSUFBSSxlQUFlLElBQUksS0FBSyxLQUFLLFdBQVcsSUFBSSxLQUFLLEtBQUssV0FBVyxLQUFLLEdBQUcsT0FBTztDQUNwRixNQUFNLE9BQU8sY0FBYyxRQUFRLFdBQVcsRUFBRTtDQUNoRCxPQUFPLHNCQUFzQixhQUFhLElBQ3RDLEdBQUcsS0FBSyxJQUFJLEtBQUssV0FBVyxLQUFLLElBQUksTUFDckMsR0FBRyxLQUFLLEdBQUc7QUFDakIiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbInBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzV2luZG93c0RyaXZlUGF0aCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXlthLXpBLVpdOihbL1xcXFxdfCQpLy50ZXN0KHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVW5jUGF0aCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZS5zdGFydHNXaXRoKFwiXFxcXFxcXFxcIik7XG59XG5cbi8qKlxuICogV2luZG93cyB0cmVhdHMgYC9gIGFuZCBgXFxgIGFsaWtlLCBzbyBhbnkgdHdvIGxlYWRpbmcgc2VwYXJhdG9ycyBuYW1lIGEgVU5DXG4gKiBvciBkZXZpY2UgcGF0aC4gVG91Y2hpbmcgb25lIG1ha2VzIFdpbmRvd3Mgc2lnbiBpbiB0byB0aGF0IGhvc3Qgd2l0aCB0aGVcbiAqIHVzZXIncyBOVExNIGNyZWRlbnRpYWxzLCBzbyBhZ2VudC1hdXRob3JlZCBwYXRocyBtdXN0IG5vdCByZWFjaCBvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05ldHdvcmtQYXRoKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eW1xcXFwvXXsyfS8udGVzdCh2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1dpbmRvd3NBYnNvbHV0ZVBhdGgodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNVbmNQYXRoKHZhbHVlKSB8fCBpc1dpbmRvd3NEcml2ZVBhdGgodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFeHBsaWNpdFJlbGF0aXZlUGF0aCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgdmFsdWUgPT09IFwiLlwiIHx8XG4gICAgdmFsdWUgPT09IFwiLi5cIiB8fFxuICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCIuL1wiKSB8fFxuICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCIuLi9cIikgfHxcbiAgICB2YWx1ZS5zdGFydHNXaXRoKFwiLlxcXFxcIikgfHxcbiAgICB2YWx1ZS5zdGFydHNXaXRoKFwiLi5cXFxcXCIpXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzUm9vdFBhdGgodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAvLyBCYXJlIEM6IG1lYW5zIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBvbiBDLCBub3QgaXRzIHJvb3Q7IHJlcXVpcmUgdGhlIGRyaXZlIHNlcGFyYXRvci5cbiAgcmV0dXJuIHZhbHVlID09PSBcIi9cIiB8fCB2YWx1ZSA9PT0gXCJcXFxcXCIgfHwgL15bYS16QS1aXTpbL1xcXFxdJC8udGVzdCh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIHRyaW1UcmFpbGluZ1BhdGhTZXBhcmF0b3JzKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAodmFsdWUubGVuZ3RoID09PSAwIHx8IGlzUm9vdFBhdGgodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS5zdGFydHNXaXRoKFwiL1wiKVxuICAgID8gdmFsdWUucmVwbGFjZSgvXFwvKyQvZywgXCJcIilcbiAgICA6IHZhbHVlLnJlcGxhY2UoL1tcXFxcL10rJC9nLCBcIlwiKTtcbiAgaWYgKHRyaW1tZWQubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiAvXlthLXpBLVpdOiQvLnRlc3QodHJpbW1lZCkgPyBgJHt0cmltbWVkfVxcXFxgIDogdHJpbW1lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVByb2plY3RQYXRoRm9yRGlzcGF0Y2godmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0cmltVHJhaWxpbmdQYXRoU2VwYXJhdG9ycyh2YWx1ZS50cmltKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUHJvamVjdFBhdGhGb3JDb21wYXJpc29uKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplUHJvamVjdFBhdGhGb3JEaXNwYXRjaCh2YWx1ZSk7XG4gIGlmIChpc1dpbmRvd3NEcml2ZVBhdGgobm9ybWFsaXplZCkgfHwgaXNVbmNQYXRoKG5vcm1hbGl6ZWQpKSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQucmVwbGFjZUFsbChcIi9cIiwgXCJcXFxcXCIpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG59XG5cbi8vIFdpbmRvd3MgcmVmdXNlcyB0aGVzZSBhcyBmaWxlIG5hbWVzLCB3aXRoIG9yIHdpdGhvdXQgYW4gZXh0ZW5zaW9uLlxuY29uc3QgV0lORE9XU19SRVNFUlZFRF9OQU1FID0gL14oY29ufHBybnxhdXh8bnVsfGNvbVsxLTldfGxwdFsxLTldKSQvO1xuXG5leHBvcnQgZnVuY3Rpb24gbmV3UHJvamVjdEZvbGRlck5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc2x1ZyA9IG5hbWVcbiAgICAubm9ybWFsaXplKFwiTkZLRFwiKVxuICAgIC5yZXBsYWNlKC9bzIAtza9dL2csIFwiXCIpXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAucmVwbGFjZSgvW15hLXowLTldKy9nLCBcIi1cIilcbiAgICAucmVwbGFjZSgvXi0rLywgXCJcIilcbiAgICAuc2xpY2UoMCwgNjQpXG4gICAgLnJlcGxhY2UoLy0rJC8sIFwiXCIpO1xuICBpZiAoc2x1Zy5sZW5ndGggPT09IDApIHJldHVybiBcInByb2plY3RcIjtcbiAgcmV0dXJuIFdJTkRPV1NfUkVTRVJWRURfTkFNRS50ZXN0KHNsdWcpID8gYCR7c2x1Z30tcHJvamVjdGAgOiBzbHVnO1xufVxuXG5jb25zdCBTTEFTSF9QUkVGSVhFRF9XSU5ET1dTX0RSSVZFX1BBVFRFUk4gPSAvXlxcL1tBLVphLXpdOltcXFxcL10vO1xuXG4vKiogQnJvd3NlciBVUkwgcGFyc2VycyB3cml0ZSBgQzovZm9vYCBhcyBgL0M6L2Zvb2AgZm9yIGZpbGUgVVJMcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcFNsYXNoUHJlZml4ZWRXaW5kb3dzRHJpdmUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIFNMQVNIX1BSRUZJWEVEX1dJTkRPV1NfRFJJVkVfUEFUVEVSTi50ZXN0KHBhdGgpID8gcGF0aC5zbGljZSgxKSA6IHBhdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxlQmFzZW5hbWUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgdHJpbW1lZCA9IHBhdGgucmVwbGFjZSgvWy9cXFxcXSskLywgXCJcIik7XG4gIGlmICh0cmltbWVkLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHBhdGg7XG4gIGNvbnN0IHNlcGFyYXRvckluZGV4ID0gTWF0aC5tYXgodHJpbW1lZC5sYXN0SW5kZXhPZihcIi9cIiksIHRyaW1tZWQubGFzdEluZGV4T2YoXCJcXFxcXCIpKTtcbiAgcmV0dXJuIHNlcGFyYXRvckluZGV4ID49IDAgPyB0cmltbWVkLnNsaWNlKHNlcGFyYXRvckluZGV4ICsgMSkgOiB0cmltbWVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd29ya3NwYWNlUmVsYXRpdmVGaWxlUGF0aChcbiAgcGF0aDogc3RyaW5nLFxuICB3b3Jrc3BhY2VSb290OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICghd29ya3NwYWNlUm9vdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gc3RyaXBTbGFzaFByZWZpeGVkV2luZG93c0RyaXZlKHBhdGgucmVwbGFjZUFsbChcIlxcXFxcIiwgXCIvXCIpKTtcbiAgY29uc3Qgbm9ybWFsaXplZFJvb3QgPSBzdHJpcFNsYXNoUHJlZml4ZWRXaW5kb3dzRHJpdmUoXG4gICAgd29ya3NwYWNlUm9vdC5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIiksXG4gICkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcbiAgY29uc3QgY2FzZUluc2Vuc2l0aXZlID0gaXNXaW5kb3dzQWJzb2x1dGVQYXRoKHN0cmlwU2xhc2hQcmVmaXhlZFdpbmRvd3NEcml2ZSh3b3Jrc3BhY2VSb290KSk7XG4gIGNvbnN0IHBhdGhGb3JDb21wYXJlID0gY2FzZUluc2Vuc2l0aXZlID8gbm9ybWFsaXplZFBhdGgudG9Mb3dlckNhc2UoKSA6IG5vcm1hbGl6ZWRQYXRoO1xuICBjb25zdCByb290Rm9yQ29tcGFyZSA9IGNhc2VJbnNlbnNpdGl2ZSA/IG5vcm1hbGl6ZWRSb290LnRvTG93ZXJDYXNlKCkgOiBub3JtYWxpemVkUm9vdDtcbiAgaWYgKHBhdGhGb3JDb21wYXJlLnJlcGxhY2UoL1xcLyskLywgXCJcIikgPT09IHJvb3RGb3JDb21wYXJlKSByZXR1cm4gXCIuXCI7XG4gIGlmICghcGF0aEZvckNvbXBhcmUuc3RhcnRzV2l0aChgJHtyb290Rm9yQ29tcGFyZX0vYCkpIHJldHVybiBudWxsO1xuICBjb25zdCByZWxhdGl2ZVBhdGggPSBub3JtYWxpemVkUGF0aC5zbGljZShub3JtYWxpemVkUm9vdC5sZW5ndGggKyAxKTtcbiAgLy8gYC9yZXBvLy4uL3hgIHN0YXJ0cyB3aXRoIHRoZSByb290IGJ1dCBlc2NhcGVzIGl0OyB0aGUgc2VydmVyIHJlamVjdHMgdGhhdCBhcyBhIHdvcmtzcGFjZSBwYXRoLlxuICBsZXQgZGVwdGggPSAwO1xuICBmb3IgKGNvbnN0IHNlZ21lbnQgb2YgcmVsYXRpdmVQYXRoLnNwbGl0KFwiL1wiKSkge1xuICAgIGlmIChzZWdtZW50ID09PSBcIi4uXCIpIGRlcHRoIC09IDE7XG4gICAgZWxzZSBpZiAoc2VnbWVudC5sZW5ndGggPiAwICYmIHNlZ21lbnQgIT09IFwiLlwiKSBkZXB0aCArPSAxO1xuICAgIGlmIChkZXB0aCA8IDApIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiByZWxhdGl2ZVBhdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlUGF0aCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZS5zdGFydHNXaXRoKFwiL1wiKSB8fCBpc1dpbmRvd3NBYnNvbHV0ZVBhdGgodmFsdWUpO1xufVxuXG4vKiogSG9tZS1yZWxhdGl2ZSBob3N0IHBhdGhzIGFyZSBleHBhbmRlZCBieSB0aGUgZGVzdGluYXRpb24gc2VydmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSG9zdFBhdGgodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNBYnNvbHV0ZVBhdGgodmFsdWUpIHx8IHZhbHVlLnN0YXJ0c1dpdGgoXCJ+L1wiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVXb3Jrc3BhY2VGaWxlUGF0aChwYXRoOiBzdHJpbmcsIHdvcmtzcGFjZVJvb3Q6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChpc0Fic29sdXRlUGF0aChwYXRoKSB8fCBwYXRoLnN0YXJ0c1dpdGgoXCJ+L1wiKSB8fCBwYXRoLnN0YXJ0c1dpdGgoXCJ+XFxcXFwiKSkgcmV0dXJuIHBhdGg7XG4gIGNvbnN0IGJhc2UgPSB3b3Jrc3BhY2VSb290LnJlcGxhY2UoL1svXFxcXF0rJC8sIFwiXCIpO1xuICByZXR1cm4gaXNXaW5kb3dzQWJzb2x1dGVQYXRoKHdvcmtzcGFjZVJvb3QpXG4gICAgPyBgJHtiYXNlfVxcXFwke3BhdGgucmVwbGFjZUFsbChcIi9cIiwgXCJcXFxcXCIpfWBcbiAgICA6IGAke2Jhc2V9LyR7cGF0aH1gO1xufVxuIl0sImZpbGUiOiIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL3NoYXJlZC9zcmMvcGF0aC50cyJ9

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJ1cmwiOiIyIiwiaW1wb3J0cyI6IjMiLCJtYXBwaW5ncyI6ZmFsc2UsImRlcHMiOiI0IiwiZHluYW1pY0RlcHMiOiI1Iiwic3RhdGljTW9ja3MiOm51bGx9LCIvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvc2hhcmVkL3NyYy9wYXRoLnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9zaGFyZWQvc3JjL3BhdGgudHMiLHsidXJscyI6IjYiLCJpZHMiOiI3In0sW10sW10sW10se31d