__vite_ssr_exportName__("GitStackedAction", () => { try { return GitStackedAction } catch {} });
__vite_ssr_exportName__("GitActionProgressPhase", () => { try { return GitActionProgressPhase } catch {} });
__vite_ssr_exportName__("GitActionProgressKind", () => { try { return GitActionProgressKind } catch {} });
__vite_ssr_exportName__("GitActionProgressStream", () => { try { return GitActionProgressStream } catch {} });
__vite_ssr_exportName__("GitRunStackedActionToastRunAction", () => { try { return GitRunStackedActionToastRunAction } catch {} });
__vite_ssr_exportName__("VcsRef", () => { try { return VcsRef } catch {} });
__vite_ssr_exportName__("VcsStatusInput", () => { try { return VcsStatusInput } catch {} });
__vite_ssr_exportName__("VcsStatusSubscriptionInput", () => { try { return VcsStatusSubscriptionInput } catch {} });
__vite_ssr_exportName__("VcsPullInput", () => { try { return VcsPullInput } catch {} });
__vite_ssr_exportName__("GitRunStackedActionInput", () => { try { return GitRunStackedActionInput } catch {} });
__vite_ssr_exportName__("VcsListRefsInput", () => { try { return VcsListRefsInput } catch {} });
__vite_ssr_exportName__("VcsCreateWorktreeInput", () => { try { return VcsCreateWorktreeInput } catch {} });
__vite_ssr_exportName__("GitPullRequestRefInput", () => { try { return GitPullRequestRefInput } catch {} });
__vite_ssr_exportName__("GitPreparePullRequestThreadInput", () => { try { return GitPreparePullRequestThreadInput } catch {} });
__vite_ssr_exportName__("VcsRemoveWorktreeInput", () => { try { return VcsRemoveWorktreeInput } catch {} });
__vite_ssr_exportName__("VcsCreateRefInput", () => { try { return VcsCreateRefInput } catch {} });
__vite_ssr_exportName__("VcsCreateRefResult", () => { try { return VcsCreateRefResult } catch {} });
__vite_ssr_exportName__("VcsSwitchRefInput", () => { try { return VcsSwitchRefInput } catch {} });
__vite_ssr_exportName__("VcsInitInput", () => { try { return VcsInitInput } catch {} });
__vite_ssr_exportName__("VcsStatusLocalResult", () => { try { return VcsStatusLocalResult } catch {} });
__vite_ssr_exportName__("VcsStatusRemoteResult", () => { try { return VcsStatusRemoteResult } catch {} });
__vite_ssr_exportName__("VcsStatusResult", () => { try { return VcsStatusResult } catch {} });
__vite_ssr_exportName__("VcsStatusStreamEvent", () => { try { return VcsStatusStreamEvent } catch {} });
__vite_ssr_exportName__("VcsListRefsResult", () => { try { return VcsListRefsResult } catch {} });
__vite_ssr_exportName__("VcsCreateWorktreeResult", () => { try { return VcsCreateWorktreeResult } catch {} });
__vite_ssr_exportName__("GitResolvePullRequestResult", () => { try { return GitResolvePullRequestResult } catch {} });
__vite_ssr_exportName__("GitPreparePullRequestThreadResult", () => { try { return GitPreparePullRequestThreadResult } catch {} });
__vite_ssr_exportName__("VcsSwitchRefResult", () => { try { return VcsSwitchRefResult } catch {} });
__vite_ssr_exportName__("GitRunStackedActionResult", () => { try { return GitRunStackedActionResult } catch {} });
__vite_ssr_exportName__("VcsPullResult", () => { try { return VcsPullResult } catch {} });
__vite_ssr_exportName__("GitCommandFailureReason", () => { try { return GitCommandFailureReason } catch {} });
__vite_ssr_exportName__("GitCommandError", () => { try { return GitCommandError } catch {} });
__vite_ssr_exportName__("TextGenerationError", () => { try { return TextGenerationError } catch {} });
__vite_ssr_exportName__("GitManagerError", () => { try { return GitManagerError } catch {} });
__vite_ssr_exportName__("GitPullRequestMaterializationError", () => { try { return GitPullRequestMaterializationError } catch {} });
__vite_ssr_exportName__("GitManagerServiceError", () => { try { return GitManagerServiceError } catch {} });
__vite_ssr_exportName__("GitActionProgressEvent", () => { try { return GitActionProgressEvent } catch {} });
const __vite_ssr_import_0__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/Effect.js");
const __vite_ssr_import_1__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/Schema.js");
const __vite_ssr_import_2__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/baseSchemas.ts", {"importedNames":["ForwardCompatibleOptional","NonNegativeInt","PositiveInt","ProjectId","ThreadId","TrimmedNonEmptyString"]});
const __vite_ssr_import_3__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/sourceControl.ts", {"importedNames":["SourceControlProviderError","SourceControlProviderInfo"]});
const __vite_ssr_import_4__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/vcs.ts", {"importedNames":["VcsDriverKind"]});





const TrimmedNonEmptyStringSchema = __vite_ssr_import_2__.TrimmedNonEmptyString;
const GitFilePath = __vite_ssr_import_1__.String.check(__vite_ssr_import_1__.isNonEmpty());
const GIT_LIST_BRANCHES_MAX_LIMIT = 200;
const GitStackedAction = __vite_ssr_import_1__.Literals([
	"commit",
	"push",
	"create_pr",
	"commit_push",
	"commit_push_pr"
]);
const GitActionProgressPhase = __vite_ssr_import_1__.Literals([
	"branch",
	"commit",
	"push",
	"pr"
]);
const GitActionProgressKind = __vite_ssr_import_1__.Literals([
	"action_started",
	"phase_started",
	"hook_started",
	"hook_output",
	"hook_finished",
	"action_finished",
	"action_failed"
]);
const GitActionProgressStream = __vite_ssr_import_1__.Literals(["stdout", "stderr"]);
const GitCommitStepStatus = __vite_ssr_import_1__.Literals([
	"created",
	"skipped_no_changes",
	"skipped_not_requested"
]);
const GitPushStepStatus = __vite_ssr_import_1__.Literals([
	"pushed",
	"skipped_not_requested",
	"skipped_up_to_date"
]);
const GitBranchStepStatus = __vite_ssr_import_1__.Literals(["created", "skipped_not_requested"]);
const GitPrStepStatus = __vite_ssr_import_1__.Literals([
	"created",
	"opened_existing",
	"skipped_not_requested"
]);
const VcsStatusChangeRequestState = __vite_ssr_import_1__.Literals([
	"open",
	"closed",
	"merged"
]);
const GitPullRequestReference = TrimmedNonEmptyStringSchema;
const GitPullRequestState = __vite_ssr_import_1__.Literals([
	"open",
	"closed",
	"merged"
]);
const GitPreparePullRequestThreadMode = __vite_ssr_import_1__.Literals(["local", "worktree"]);
const GitRunStackedActionToastRunAction = __vite_ssr_import_1__.Struct({ kind: GitStackedAction });
const GitRunStackedActionToastCta = __vite_ssr_import_1__.Union([
	__vite_ssr_import_1__.Struct({ kind: __vite_ssr_import_1__.Literal("none") }),
	__vite_ssr_import_1__.Struct({
		kind: __vite_ssr_import_1__.Literal("open_pr"),
		label: TrimmedNonEmptyStringSchema,
		url: __vite_ssr_import_1__.String
	}),
	__vite_ssr_import_1__.Struct({
		kind: __vite_ssr_import_1__.Literal("run_action"),
		label: TrimmedNonEmptyStringSchema,
		action: GitRunStackedActionToastRunAction
	})
]);
const GitRunStackedActionToast = __vite_ssr_import_1__.Struct({
	title: TrimmedNonEmptyStringSchema,
	description: __vite_ssr_import_1__.optional(TrimmedNonEmptyStringSchema),
	cta: GitRunStackedActionToastCta
});
const VcsRef = __vite_ssr_import_1__.Struct({
	name: TrimmedNonEmptyStringSchema,
	isRemote: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Boolean),
	remoteName: __vite_ssr_import_1__.optional(TrimmedNonEmptyStringSchema),
	// Full Git ref, for example refs/remotes/origin/feature.
	upstreamRef: __vite_ssr_import_1__.optional(TrimmedNonEmptyStringSchema),
	current: __vite_ssr_import_1__.Boolean,
	isDefault: __vite_ssr_import_1__.Boolean,
	worktreePath: TrimmedNonEmptyStringSchema.pipe(__vite_ssr_import_1__.NullOr)
});
const VcsWorktree = __vite_ssr_import_1__.Struct({
	path: TrimmedNonEmptyStringSchema,
	refName: TrimmedNonEmptyStringSchema
});
const GitResolvedPullRequest = __vite_ssr_import_1__.Struct({
	number: __vite_ssr_import_2__.PositiveInt,
	title: TrimmedNonEmptyStringSchema,
	url: __vite_ssr_import_1__.String,
	baseBranch: TrimmedNonEmptyStringSchema,
	headBranch: TrimmedNonEmptyStringSchema,
	state: GitPullRequestState
});
const VcsStatusInput = __vite_ssr_import_1__.Struct({ cwd: TrimmedNonEmptyStringSchema });
const VcsStatusSubscriptionInput = __vite_ssr_import_1__.Struct({
	...VcsStatusInput.fields,
	/** Passive observers receive cached remote status without retaining its refresh loop. */
	includeRemote: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Boolean)
});
const VcsPullInput = __vite_ssr_import_1__.Struct({ cwd: TrimmedNonEmptyStringSchema });
const GitRunStackedActionInput = __vite_ssr_import_1__.Struct({
	actionId: TrimmedNonEmptyStringSchema,
	cwd: TrimmedNonEmptyStringSchema,
	action: GitStackedAction,
	commitMessage: __vite_ssr_import_1__.optional(TrimmedNonEmptyStringSchema.check(__vite_ssr_import_1__.isMaxLength(1e4))),
	featureBranch: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Boolean),
	filePaths: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Array(GitFilePath).check(__vite_ssr_import_1__.isMinLength(1))),
	threadId: __vite_ssr_import_1__.optional((0,__vite_ssr_import_2__.ThreadId)),
	projectId: __vite_ssr_import_1__.optional((0,__vite_ssr_import_2__.ProjectId))
});
const VcsListRefsInput = __vite_ssr_import_1__.Struct({
	cwd: TrimmedNonEmptyStringSchema,
	query: __vite_ssr_import_1__.optional(TrimmedNonEmptyStringSchema.check(__vite_ssr_import_1__.isMaxLength(256))),
	cursor: __vite_ssr_import_1__.optional((0,__vite_ssr_import_2__.NonNegativeInt)),
	includeMatchingRemoteRefs: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Boolean),
	refKind: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Literals([
		"all",
		"local",
		"remote"
	])),
	refresh: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Boolean),
	limit: __vite_ssr_import_1__.optional(__vite_ssr_import_2__.PositiveInt.check(__vite_ssr_import_1__.isLessThanOrEqualTo(GIT_LIST_BRANCHES_MAX_LIMIT)))
});
const VcsCreateWorktreeInput = __vite_ssr_import_1__.Struct({
	cwd: TrimmedNonEmptyStringSchema,
	refName: TrimmedNonEmptyStringSchema,
	newRefName: __vite_ssr_import_1__.optional(TrimmedNonEmptyStringSchema),
	baseRefName: __vite_ssr_import_1__.optional(TrimmedNonEmptyStringSchema),
	path: __vite_ssr_import_1__.NullOr(TrimmedNonEmptyStringSchema)
});
const GitPullRequestRefInput = __vite_ssr_import_1__.Struct({
	cwd: TrimmedNonEmptyStringSchema,
	reference: GitPullRequestReference
});
const GitPreparePullRequestThreadInput = __vite_ssr_import_1__.Struct({
	cwd: TrimmedNonEmptyStringSchema,
	reference: GitPullRequestReference,
	mode: GitPreparePullRequestThreadMode,
	threadId: __vite_ssr_import_1__.optional((0,__vite_ssr_import_2__.ThreadId))
});
const VcsRemoveWorktreeInput = __vite_ssr_import_1__.Struct({
	cwd: TrimmedNonEmptyStringSchema,
	path: TrimmedNonEmptyStringSchema,
	force: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Boolean)
});
const VcsCreateRefInput = __vite_ssr_import_1__.Struct({
	cwd: TrimmedNonEmptyStringSchema,
	refName: TrimmedNonEmptyStringSchema,
	switchRef: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Boolean)
});
const VcsCreateRefResult = __vite_ssr_import_1__.Struct({ refName: TrimmedNonEmptyStringSchema });
const VcsSwitchRefInput = __vite_ssr_import_1__.Struct({
	cwd: TrimmedNonEmptyStringSchema,
	refName: TrimmedNonEmptyStringSchema
});
const VcsInitInput = __vite_ssr_import_1__.Struct({
	cwd: TrimmedNonEmptyStringSchema,
	kind: __vite_ssr_import_1__.optional((0,__vite_ssr_import_4__.VcsDriverKind))
});
const VcsStatusChangeRequest = __vite_ssr_import_1__.Struct({
	number: __vite_ssr_import_2__.PositiveInt,
	title: TrimmedNonEmptyStringSchema,
	url: __vite_ssr_import_1__.String,
	baseRef: TrimmedNonEmptyStringSchema,
	headRef: TrimmedNonEmptyStringSchema,
	state: VcsStatusChangeRequestState,
	isDraft: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Boolean),
	updatedAt: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.NullOr(__vite_ssr_import_1__.String))
});
const VcsStatusLocalShape = {
	isRepo: __vite_ssr_import_1__.Boolean,
	sourceControlProvider: __vite_ssr_import_1__.optional((0,__vite_ssr_import_3__.SourceControlProviderInfo)),
	hasPrimaryRemote: __vite_ssr_import_1__.Boolean,
	isDefaultRef: __vite_ssr_import_1__.Boolean,
	refName: __vite_ssr_import_1__.NullOr(TrimmedNonEmptyStringSchema),
	hasWorkingTreeChanges: __vite_ssr_import_1__.Boolean,
	workingTree: __vite_ssr_import_1__.Struct({
		// Absolute worktree root on the environment that every files[].path is
		// relative to. Absent when the server could not resolve it.
		rootPath: __vite_ssr_import_1__.optional(GitFilePath),
		files: __vite_ssr_import_1__.Array(__vite_ssr_import_1__.Struct({
			path: GitFilePath,
			insertions: __vite_ssr_import_2__.NonNegativeInt,
			deletions: __vite_ssr_import_2__.NonNegativeInt
		})),
		insertions: __vite_ssr_import_2__.NonNegativeInt,
		deletions: __vite_ssr_import_2__.NonNegativeInt
	}),
	branchChanges: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Struct({
		baseRef: __vite_ssr_import_1__.NullOr(TrimmedNonEmptyStringSchema),
		insertions: __vite_ssr_import_2__.NonNegativeInt,
		deletions: __vite_ssr_import_2__.NonNegativeInt
	}))
};
const VcsStatusRemoteShape = {
	hasUpstream: __vite_ssr_import_1__.Boolean,
	aheadCount: __vite_ssr_import_2__.NonNegativeInt,
	behindCount: __vite_ssr_import_2__.NonNegativeInt,
	aheadOfDefaultCount: __vite_ssr_import_1__.optional((0,__vite_ssr_import_2__.NonNegativeInt)),
	pr: __vite_ssr_import_1__.NullOr(VcsStatusChangeRequest)
};
const VcsStatusLocalResult = __vite_ssr_import_1__.Struct(VcsStatusLocalShape);
const VcsStatusRemoteResult = __vite_ssr_import_1__.Struct(VcsStatusRemoteShape);
const VcsStatusResult = __vite_ssr_import_1__.Struct({
	...VcsStatusLocalShape,
	...VcsStatusRemoteShape
});
const VcsStatusStreamEvent = __vite_ssr_import_1__.Union([
	__vite_ssr_import_1__.TaggedStruct("snapshot", {
		local: VcsStatusLocalResult,
		remote: __vite_ssr_import_1__.NullOr(VcsStatusRemoteResult)
	}),
	__vite_ssr_import_1__.TaggedStruct("localUpdated", { local: VcsStatusLocalResult }),
	__vite_ssr_import_1__.TaggedStruct("remoteUpdated", { remote: __vite_ssr_import_1__.NullOr(VcsStatusRemoteResult) })
]);
const VcsListRefsResult = __vite_ssr_import_1__.Struct({
	isAtRepositoryRoot: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Boolean),
	refs: __vite_ssr_import_1__.Array(VcsRef),
	isRepo: __vite_ssr_import_1__.Boolean,
	hasPrimaryRemote: __vite_ssr_import_1__.Boolean,
	nextCursor: __vite_ssr_import_2__.NonNegativeInt.pipe(__vite_ssr_import_1__.NullOr),
	totalCount: __vite_ssr_import_2__.NonNegativeInt
});
const VcsCreateWorktreeResult = __vite_ssr_import_1__.Struct({ worktree: VcsWorktree });
const GitResolvePullRequestResult = __vite_ssr_import_1__.Struct({ pullRequest: GitResolvedPullRequest });
const GitPreparePullRequestThreadResult = __vite_ssr_import_1__.Struct({
	pullRequest: GitResolvedPullRequest,
	branch: TrimmedNonEmptyStringSchema,
	worktreePath: TrimmedNonEmptyStringSchema.pipe(__vite_ssr_import_1__.NullOr),
	/** False when local commits or edits prevented a reused worktree from reaching the PR head. */
	isOnPullRequestHead: __vite_ssr_import_1__.Boolean.pipe(__vite_ssr_import_1__.withDecodingDefaultKey(__vite_ssr_import_0__.succeed(true)))
});
const VcsSwitchRefResult = __vite_ssr_import_1__.Struct({ refName: __vite_ssr_import_1__.NullOr(TrimmedNonEmptyStringSchema) });
const GitRunStackedActionResult = __vite_ssr_import_1__.Struct({
	action: GitStackedAction,
	branch: __vite_ssr_import_1__.Struct({
		status: GitBranchStepStatus,
		name: __vite_ssr_import_1__.optional(TrimmedNonEmptyStringSchema)
	}),
	commit: __vite_ssr_import_1__.Struct({
		status: GitCommitStepStatus,
		commitSha: __vite_ssr_import_1__.optional(TrimmedNonEmptyStringSchema),
		subject: __vite_ssr_import_1__.optional(TrimmedNonEmptyStringSchema)
	}),
	push: __vite_ssr_import_1__.Struct({
		status: GitPushStepStatus,
		branch: __vite_ssr_import_1__.optional(TrimmedNonEmptyStringSchema),
		upstreamBranch: __vite_ssr_import_1__.optional(TrimmedNonEmptyStringSchema),
		setUpstream: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Boolean)
	}),
	pr: __vite_ssr_import_1__.Struct({
		status: GitPrStepStatus,
		url: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.String),
		number: __vite_ssr_import_1__.optional((0,__vite_ssr_import_2__.PositiveInt)),
		baseBranch: __vite_ssr_import_1__.optional(TrimmedNonEmptyStringSchema),
		headBranch: __vite_ssr_import_1__.optional(TrimmedNonEmptyStringSchema),
		title: __vite_ssr_import_1__.optional(TrimmedNonEmptyStringSchema)
	}),
	toast: GitRunStackedActionToast
});
const VcsPullResult = __vite_ssr_import_1__.Struct({
	status: __vite_ssr_import_1__.Literals(["pulled", "skipped_up_to_date"]),
	refName: TrimmedNonEmptyStringSchema,
	upstreamRef: TrimmedNonEmptyStringSchema.pipe(__vite_ssr_import_1__.NullOr)
});
// Git stderr can echo credentials from argv and remote URLs. Only a fixed
// reason reaches the error and its diagnostic suffix; newer, unknown reasons
// decode as absent through GitCommandError.
const GitCommandFailureReason = __vite_ssr_import_1__.Literals([
	"authentication_failed",
	"branch_already_exists",
	"branch_checked_out_in_worktree",
	"host_key_unverified",
	"not_a_repository",
	"path_already_exists",
	"push_rejected_by_remote",
	"push_rejected_non_fast_forward",
	"ref_not_found",
	"remote_unreachable",
	"tag_would_be_clobbered"
]);
class GitCommandError extends __vite_ssr_import_1__.TaggedError()("GitCommandError", {
	operation: __vite_ssr_import_1__.String,
	command: __vite_ssr_import_1__.String,
	cwd: __vite_ssr_import_1__.String,
	argumentCount: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Number),
	exitCode: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Number),
	stdoutLength: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Number),
	stderrLength: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Number),
	outputLength: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Number),
	reason: (0,__vite_ssr_import_2__.ForwardCompatibleOptional)(GitCommandFailureReason),
	detail: __vite_ssr_import_1__.String,
	cause: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Defect())
}) {
	get message() {
		const reason = this.reason === undefined ? "" : ` (${this.reason})`;
		return `Git command failed in ${this.operation} (${this.cwd}): ${this.detail}${reason}`;
	}
};
class TextGenerationError extends __vite_ssr_import_1__.TaggedError()("TextGenerationError", {
	operation: __vite_ssr_import_1__.String,
	detail: __vite_ssr_import_1__.String,
	cause: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Defect())
}) {
	get message() {
		return `Text generation failed in ${this.operation}: ${this.detail}`;
	}
};
class GitManagerError extends __vite_ssr_import_1__.TaggedError()("GitManagerError", {
	operation: __vite_ssr_import_1__.String,
	cwd: __vite_ssr_import_1__.String,
	detail: __vite_ssr_import_1__.String,
	cause: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Defect())
}) {
	get message() {
		return `Git manager failed in ${this.operation}: ${this.detail}`;
	}
};
class GitPullRequestMaterializationError extends __vite_ssr_import_1__.TaggedError()("GitPullRequestMaterializationError", {
	cwd: TrimmedNonEmptyStringSchema,
	pullRequestNumber: __vite_ssr_import_2__.PositiveInt,
	headRepository: __vite_ssr_import_1__.NullOr(TrimmedNonEmptyStringSchema),
	headBranch: TrimmedNonEmptyStringSchema,
	localBranch: TrimmedNonEmptyStringSchema,
	cause: __vite_ssr_import_1__.Defect()
}) {
	get message() {
		return `Failed to materialize pull request #${this.pullRequestNumber} branch ${this.headBranch} as ${this.localBranch}.`;
	}
};
const GitManagerServiceError = __vite_ssr_import_1__.Union([
	GitManagerError,
	GitPullRequestMaterializationError,
	GitCommandError,
	__vite_ssr_import_3__.SourceControlProviderError,
	TextGenerationError
]);
const GitActionProgressBase = __vite_ssr_import_1__.Struct({
	actionId: TrimmedNonEmptyStringSchema,
	cwd: TrimmedNonEmptyStringSchema,
	action: GitStackedAction
});
const GitActionStartedEvent = __vite_ssr_import_1__.Struct({
	...GitActionProgressBase.fields,
	kind: __vite_ssr_import_1__.Literal("action_started"),
	phases: __vite_ssr_import_1__.Array(GitActionProgressPhase)
});
const GitActionPhaseStartedEvent = __vite_ssr_import_1__.Struct({
	...GitActionProgressBase.fields,
	kind: __vite_ssr_import_1__.Literal("phase_started"),
	phase: GitActionProgressPhase,
	label: TrimmedNonEmptyStringSchema
});
const GitActionHookStartedEvent = __vite_ssr_import_1__.Struct({
	...GitActionProgressBase.fields,
	kind: __vite_ssr_import_1__.Literal("hook_started"),
	hookName: TrimmedNonEmptyStringSchema
});
const GitActionHookOutputEvent = __vite_ssr_import_1__.Struct({
	...GitActionProgressBase.fields,
	kind: __vite_ssr_import_1__.Literal("hook_output"),
	hookName: __vite_ssr_import_1__.NullOr(TrimmedNonEmptyStringSchema),
	stream: GitActionProgressStream,
	text: TrimmedNonEmptyStringSchema
});
const GitActionHookFinishedEvent = __vite_ssr_import_1__.Struct({
	...GitActionProgressBase.fields,
	kind: __vite_ssr_import_1__.Literal("hook_finished"),
	hookName: TrimmedNonEmptyStringSchema,
	exitCode: __vite_ssr_import_1__.NullOr(__vite_ssr_import_1__.Int),
	durationMs: __vite_ssr_import_1__.NullOr((0,__vite_ssr_import_2__.NonNegativeInt))
});
const GitActionFinishedEvent = __vite_ssr_import_1__.Struct({
	...GitActionProgressBase.fields,
	kind: __vite_ssr_import_1__.Literal("action_finished"),
	result: GitRunStackedActionResult
});
const GitActionFailedEvent = __vite_ssr_import_1__.Struct({
	...GitActionProgressBase.fields,
	kind: __vite_ssr_import_1__.Literal("action_failed"),
	phase: __vite_ssr_import_1__.NullOr(GitActionProgressPhase),
	message: TrimmedNonEmptyStringSchema
});
const GitActionProgressEvent = __vite_ssr_import_1__.Union([
	GitActionStartedEvent,
	GitActionPhaseStartedEvent,
	GitActionHookStartedEvent,
	GitActionHookOutputEvent,
	GitActionHookFinishedEvent,
	GitActionFinishedEvent,
	GitActionFailedEvent
]);
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,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Q0FDekIsTUFBTSxzQkFBTyxRQUFRLGVBQWU7Q0FDcEMsVUFBVTtDQUNWLFVBQVUsc0JBQU8sT0FBTyxzQkFBTyxHQUFHO0NBQ2xDLFlBQVksc0JBQU8sVUFBTyxxQ0FBYztBQUMxQyxDQUFDO0FBQ0QsTUFBTSx5QkFBeUIsc0JBQU8sT0FBTztDQUMzQyxHQUFHLHNCQUFzQjtDQUN6QixNQUFNLHNCQUFPLFFBQVEsaUJBQWlCO0NBQ3RDLFFBQVE7QUFDVixDQUFDO0FBQ0QsTUFBTSx1QkFBdUIsc0JBQU8sT0FBTztDQUN6QyxHQUFHLHNCQUFzQjtDQUN6QixNQUFNLHNCQUFPLFFBQVEsZUFBZTtDQUNwQyxPQUFPLHNCQUFPLE9BQU8sc0JBQXNCO0NBQzNDLFNBQVM7QUFDWCxDQUFDO0FBRU0sTUFBTSx5QkFBeUIsc0JBQU8sTUFBTTtDQUNqRDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtBQUNGLENBQUMiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbImdpdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBFZmZlY3QgZnJvbSBcImVmZmVjdC9FZmZlY3RcIjtcbmltcG9ydCAqIGFzIFNjaGVtYSBmcm9tIFwiZWZmZWN0L1NjaGVtYVwiO1xuaW1wb3J0IHtcbiAgRm9yd2FyZENvbXBhdGlibGVPcHRpb25hbCxcbiAgTm9uTmVnYXRpdmVJbnQsXG4gIFBvc2l0aXZlSW50LFxuICBQcm9qZWN0SWQsXG4gIFRocmVhZElkLFxuICBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG59IGZyb20gXCIuL2Jhc2VTY2hlbWFzLnRzXCI7XG5pbXBvcnQgeyBTb3VyY2VDb250cm9sUHJvdmlkZXJFcnJvciwgU291cmNlQ29udHJvbFByb3ZpZGVySW5mbyB9IGZyb20gXCIuL3NvdXJjZUNvbnRyb2wudHNcIjtcbmltcG9ydCB7IFZjc0RyaXZlcktpbmQgfSBmcm9tIFwiLi92Y3MudHNcIjtcblxuY29uc3QgVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hID0gVHJpbW1lZE5vbkVtcHR5U3RyaW5nO1xuY29uc3QgR2l0RmlsZVBhdGggPSBTY2hlbWEuU3RyaW5nLmNoZWNrKFNjaGVtYS5pc05vbkVtcHR5KCkpO1xuY29uc3QgR0lUX0xJU1RfQlJBTkNIRVNfTUFYX0xJTUlUID0gMjAwO1xuXG5leHBvcnQgY29uc3QgR2l0U3RhY2tlZEFjdGlvbiA9IFNjaGVtYS5MaXRlcmFscyhbXG4gIFwiY29tbWl0XCIsXG4gIFwicHVzaFwiLFxuICBcImNyZWF0ZV9wclwiLFxuICBcImNvbW1pdF9wdXNoXCIsXG4gIFwiY29tbWl0X3B1c2hfcHJcIixcbl0pO1xuZXhwb3J0IHR5cGUgR2l0U3RhY2tlZEFjdGlvbiA9IHR5cGVvZiBHaXRTdGFja2VkQWN0aW9uLlR5cGU7XG5leHBvcnQgY29uc3QgR2l0QWN0aW9uUHJvZ3Jlc3NQaGFzZSA9IFNjaGVtYS5MaXRlcmFscyhbXCJicmFuY2hcIiwgXCJjb21taXRcIiwgXCJwdXNoXCIsIFwicHJcIl0pO1xuZXhwb3J0IHR5cGUgR2l0QWN0aW9uUHJvZ3Jlc3NQaGFzZSA9IHR5cGVvZiBHaXRBY3Rpb25Qcm9ncmVzc1BoYXNlLlR5cGU7XG5leHBvcnQgY29uc3QgR2l0QWN0aW9uUHJvZ3Jlc3NLaW5kID0gU2NoZW1hLkxpdGVyYWxzKFtcbiAgXCJhY3Rpb25fc3RhcnRlZFwiLFxuICBcInBoYXNlX3N0YXJ0ZWRcIixcbiAgXCJob29rX3N0YXJ0ZWRcIixcbiAgXCJob29rX291dHB1dFwiLFxuICBcImhvb2tfZmluaXNoZWRcIixcbiAgXCJhY3Rpb25fZmluaXNoZWRcIixcbiAgXCJhY3Rpb25fZmFpbGVkXCIsXG5dKTtcbmV4cG9ydCB0eXBlIEdpdEFjdGlvblByb2dyZXNzS2luZCA9IHR5cGVvZiBHaXRBY3Rpb25Qcm9ncmVzc0tpbmQuVHlwZTtcbmV4cG9ydCBjb25zdCBHaXRBY3Rpb25Qcm9ncmVzc1N0cmVhbSA9IFNjaGVtYS5MaXRlcmFscyhbXCJzdGRvdXRcIiwgXCJzdGRlcnJcIl0pO1xuZXhwb3J0IHR5cGUgR2l0QWN0aW9uUHJvZ3Jlc3NTdHJlYW0gPSB0eXBlb2YgR2l0QWN0aW9uUHJvZ3Jlc3NTdHJlYW0uVHlwZTtcbmNvbnN0IEdpdENvbW1pdFN0ZXBTdGF0dXMgPSBTY2hlbWEuTGl0ZXJhbHMoW1xuICBcImNyZWF0ZWRcIixcbiAgXCJza2lwcGVkX25vX2NoYW5nZXNcIixcbiAgXCJza2lwcGVkX25vdF9yZXF1ZXN0ZWRcIixcbl0pO1xuY29uc3QgR2l0UHVzaFN0ZXBTdGF0dXMgPSBTY2hlbWEuTGl0ZXJhbHMoW1xuICBcInB1c2hlZFwiLFxuICBcInNraXBwZWRfbm90X3JlcXVlc3RlZFwiLFxuICBcInNraXBwZWRfdXBfdG9fZGF0ZVwiLFxuXSk7XG5jb25zdCBHaXRCcmFuY2hTdGVwU3RhdHVzID0gU2NoZW1hLkxpdGVyYWxzKFtcImNyZWF0ZWRcIiwgXCJza2lwcGVkX25vdF9yZXF1ZXN0ZWRcIl0pO1xuY29uc3QgR2l0UHJTdGVwU3RhdHVzID0gU2NoZW1hLkxpdGVyYWxzKFtcImNyZWF0ZWRcIiwgXCJvcGVuZWRfZXhpc3RpbmdcIiwgXCJza2lwcGVkX25vdF9yZXF1ZXN0ZWRcIl0pO1xuY29uc3QgVmNzU3RhdHVzQ2hhbmdlUmVxdWVzdFN0YXRlID0gU2NoZW1hLkxpdGVyYWxzKFtcIm9wZW5cIiwgXCJjbG9zZWRcIiwgXCJtZXJnZWRcIl0pO1xuY29uc3QgR2l0UHVsbFJlcXVlc3RSZWZlcmVuY2UgPSBUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWE7XG5jb25zdCBHaXRQdWxsUmVxdWVzdFN0YXRlID0gU2NoZW1hLkxpdGVyYWxzKFtcIm9wZW5cIiwgXCJjbG9zZWRcIiwgXCJtZXJnZWRcIl0pO1xuY29uc3QgR2l0UHJlcGFyZVB1bGxSZXF1ZXN0VGhyZWFkTW9kZSA9IFNjaGVtYS5MaXRlcmFscyhbXCJsb2NhbFwiLCBcIndvcmt0cmVlXCJdKTtcbmV4cG9ydCBjb25zdCBHaXRSdW5TdGFja2VkQWN0aW9uVG9hc3RSdW5BY3Rpb24gPSBTY2hlbWEuU3RydWN0KHtcbiAga2luZDogR2l0U3RhY2tlZEFjdGlvbixcbn0pO1xuZXhwb3J0IHR5cGUgR2l0UnVuU3RhY2tlZEFjdGlvblRvYXN0UnVuQWN0aW9uID0gdHlwZW9mIEdpdFJ1blN0YWNrZWRBY3Rpb25Ub2FzdFJ1bkFjdGlvbi5UeXBlO1xuY29uc3QgR2l0UnVuU3RhY2tlZEFjdGlvblRvYXN0Q3RhID0gU2NoZW1hLlVuaW9uKFtcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAga2luZDogU2NoZW1hLkxpdGVyYWwoXCJub25lXCIpLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAga2luZDogU2NoZW1hLkxpdGVyYWwoXCJvcGVuX3ByXCIpLFxuICAgIGxhYmVsOiBUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEsXG4gICAgdXJsOiBTY2hlbWEuU3RyaW5nLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAga2luZDogU2NoZW1hLkxpdGVyYWwoXCJydW5fYWN0aW9uXCIpLFxuICAgIGxhYmVsOiBUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEsXG4gICAgYWN0aW9uOiBHaXRSdW5TdGFja2VkQWN0aW9uVG9hc3RSdW5BY3Rpb24sXG4gIH0pLFxuXSk7XG5leHBvcnQgdHlwZSBHaXRSdW5TdGFja2VkQWN0aW9uVG9hc3RDdGEgPSB0eXBlb2YgR2l0UnVuU3RhY2tlZEFjdGlvblRvYXN0Q3RhLlR5cGU7XG5jb25zdCBHaXRSdW5TdGFja2VkQWN0aW9uVG9hc3QgPSBTY2hlbWEuU3RydWN0KHtcbiAgdGl0bGU6IFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSxcbiAgZGVzY3JpcHRpb246IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEpLFxuICBjdGE6IEdpdFJ1blN0YWNrZWRBY3Rpb25Ub2FzdEN0YSxcbn0pO1xuZXhwb3J0IHR5cGUgR2l0UnVuU3RhY2tlZEFjdGlvblRvYXN0ID0gdHlwZW9mIEdpdFJ1blN0YWNrZWRBY3Rpb25Ub2FzdC5UeXBlO1xuXG5leHBvcnQgY29uc3QgVmNzUmVmID0gU2NoZW1hLlN0cnVjdCh7XG4gIG5hbWU6IFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSxcbiAgaXNSZW1vdGU6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQm9vbGVhbiksXG4gIHJlbW90ZU5hbWU6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEpLFxuICAvLyBGdWxsIEdpdCByZWYsIGZvciBleGFtcGxlIHJlZnMvcmVtb3Rlcy9vcmlnaW4vZmVhdHVyZS5cbiAgdXBzdHJlYW1SZWY6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEpLFxuICBjdXJyZW50OiBTY2hlbWEuQm9vbGVhbixcbiAgaXNEZWZhdWx0OiBTY2hlbWEuQm9vbGVhbixcbiAgd29ya3RyZWVQYXRoOiBUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEucGlwZShTY2hlbWEuTnVsbE9yKSxcbn0pO1xuZXhwb3J0IHR5cGUgVmNzUmVmID0gdHlwZW9mIFZjc1JlZi5UeXBlO1xuXG5jb25zdCBWY3NXb3JrdHJlZSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBwYXRoOiBUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEsXG4gIHJlZk5hbWU6IFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSxcbn0pO1xuY29uc3QgR2l0UmVzb2x2ZWRQdWxsUmVxdWVzdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBudW1iZXI6IFBvc2l0aXZlSW50LFxuICB0aXRsZTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLFxuICB1cmw6IFNjaGVtYS5TdHJpbmcsXG4gIGJhc2VCcmFuY2g6IFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSxcbiAgaGVhZEJyYW5jaDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLFxuICBzdGF0ZTogR2l0UHVsbFJlcXVlc3RTdGF0ZSxcbn0pO1xuZXhwb3J0IHR5cGUgR2l0UmVzb2x2ZWRQdWxsUmVxdWVzdCA9IHR5cGVvZiBHaXRSZXNvbHZlZFB1bGxSZXF1ZXN0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBWY3NTdGF0dXNJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBjd2Q6IFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSxcbn0pO1xuZXhwb3J0IHR5cGUgVmNzU3RhdHVzSW5wdXQgPSB0eXBlb2YgVmNzU3RhdHVzSW5wdXQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFZjc1N0YXR1c1N1YnNjcmlwdGlvbklucHV0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIC4uLlZjc1N0YXR1c0lucHV0LmZpZWxkcyxcbiAgLyoqIFBhc3NpdmUgb2JzZXJ2ZXJzIHJlY2VpdmUgY2FjaGVkIHJlbW90ZSBzdGF0dXMgd2l0aG91dCByZXRhaW5pbmcgaXRzIHJlZnJlc2ggbG9vcC4gKi9cbiAgaW5jbHVkZVJlbW90ZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbn0pO1xuZXhwb3J0IHR5cGUgVmNzU3RhdHVzU3Vic2NyaXB0aW9uSW5wdXQgPSB0eXBlb2YgVmNzU3RhdHVzU3Vic2NyaXB0aW9uSW5wdXQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFZjc1B1bGxJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBjd2Q6IFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSxcbn0pO1xuZXhwb3J0IHR5cGUgVmNzUHVsbElucHV0ID0gdHlwZW9mIFZjc1B1bGxJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgR2l0UnVuU3RhY2tlZEFjdGlvbklucHV0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGFjdGlvbklkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEsXG4gIGN3ZDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLFxuICBhY3Rpb246IEdpdFN0YWNrZWRBY3Rpb24sXG4gIGNvbW1pdE1lc3NhZ2U6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDEwXzAwMCkpKSxcbiAgZmVhdHVyZUJyYW5jaDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgZmlsZVBhdGhzOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkFycmF5KEdpdEZpbGVQYXRoKS5jaGVjayhTY2hlbWEuaXNNaW5MZW5ndGgoMSkpKSxcbiAgdGhyZWFkSWQ6IFNjaGVtYS5vcHRpb25hbChUaHJlYWRJZCksXG4gIHByb2plY3RJZDogU2NoZW1hLm9wdGlvbmFsKFByb2plY3RJZCksXG59KTtcbmV4cG9ydCB0eXBlIEdpdFJ1blN0YWNrZWRBY3Rpb25JbnB1dCA9IHR5cGVvZiBHaXRSdW5TdGFja2VkQWN0aW9uSW5wdXQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFZjc0xpc3RSZWZzSW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgY3dkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEsXG4gIHF1ZXJ5OiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgyNTYpKSksXG4gIGN1cnNvcjogU2NoZW1hLm9wdGlvbmFsKE5vbk5lZ2F0aXZlSW50KSxcbiAgaW5jbHVkZU1hdGNoaW5nUmVtb3RlUmVmczogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgcmVmS2luZDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5MaXRlcmFscyhbXCJhbGxcIiwgXCJsb2NhbFwiLCBcInJlbW90ZVwiXSkpLFxuICByZWZyZXNoOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICBsaW1pdDogU2NoZW1hLm9wdGlvbmFsKFxuICAgIFBvc2l0aXZlSW50LmNoZWNrKFNjaGVtYS5pc0xlc3NUaGFuT3JFcXVhbFRvKEdJVF9MSVNUX0JSQU5DSEVTX01BWF9MSU1JVCkpLFxuICApLFxufSk7XG5leHBvcnQgdHlwZSBWY3NMaXN0UmVmc0lucHV0ID0gdHlwZW9mIFZjc0xpc3RSZWZzSW5wdXQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFZjc0NyZWF0ZVdvcmt0cmVlSW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgY3dkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEsXG4gIHJlZk5hbWU6IFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSxcbiAgbmV3UmVmTmFtZTogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSksXG4gIGJhc2VSZWZOYW1lOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hKSxcbiAgcGF0aDogU2NoZW1hLk51bGxPcihUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEpLFxufSk7XG5leHBvcnQgdHlwZSBWY3NDcmVhdGVXb3JrdHJlZUlucHV0ID0gdHlwZW9mIFZjc0NyZWF0ZVdvcmt0cmVlSW5wdXQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IEdpdFB1bGxSZXF1ZXN0UmVmSW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgY3dkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEsXG4gIHJlZmVyZW5jZTogR2l0UHVsbFJlcXVlc3RSZWZlcmVuY2UsXG59KTtcbmV4cG9ydCB0eXBlIEdpdFB1bGxSZXF1ZXN0UmVmSW5wdXQgPSB0eXBlb2YgR2l0UHVsbFJlcXVlc3RSZWZJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgR2l0UHJlcGFyZVB1bGxSZXF1ZXN0VGhyZWFkSW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgY3dkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEsXG4gIHJlZmVyZW5jZTogR2l0UHVsbFJlcXVlc3RSZWZlcmVuY2UsXG4gIG1vZGU6IEdpdFByZXBhcmVQdWxsUmVxdWVzdFRocmVhZE1vZGUsXG4gIHRocmVhZElkOiBTY2hlbWEub3B0aW9uYWwoVGhyZWFkSWQpLFxufSk7XG5leHBvcnQgdHlwZSBHaXRQcmVwYXJlUHVsbFJlcXVlc3RUaHJlYWRJbnB1dCA9IHR5cGVvZiBHaXRQcmVwYXJlUHVsbFJlcXVlc3RUaHJlYWRJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgVmNzUmVtb3ZlV29ya3RyZWVJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBjd2Q6IFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSxcbiAgcGF0aDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLFxuICBmb3JjZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbn0pO1xuZXhwb3J0IHR5cGUgVmNzUmVtb3ZlV29ya3RyZWVJbnB1dCA9IHR5cGVvZiBWY3NSZW1vdmVXb3JrdHJlZUlucHV0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBWY3NDcmVhdGVSZWZJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBjd2Q6IFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSxcbiAgcmVmTmFtZTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLFxuICBzd2l0Y2hSZWY6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQm9vbGVhbiksXG59KTtcbmV4cG9ydCB0eXBlIFZjc0NyZWF0ZVJlZklucHV0ID0gdHlwZW9mIFZjc0NyZWF0ZVJlZklucHV0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBWY3NDcmVhdGVSZWZSZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgcmVmTmFtZTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLFxufSk7XG5leHBvcnQgdHlwZSBWY3NDcmVhdGVSZWZSZXN1bHQgPSB0eXBlb2YgVmNzQ3JlYXRlUmVmUmVzdWx0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBWY3NTd2l0Y2hSZWZJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBjd2Q6IFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSxcbiAgcmVmTmFtZTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLFxufSk7XG5leHBvcnQgdHlwZSBWY3NTd2l0Y2hSZWZJbnB1dCA9IHR5cGVvZiBWY3NTd2l0Y2hSZWZJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgVmNzSW5pdElucHV0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGN3ZDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLFxuICBraW5kOiBTY2hlbWEub3B0aW9uYWwoVmNzRHJpdmVyS2luZCksXG59KTtcbmV4cG9ydCB0eXBlIFZjc0luaXRJbnB1dCA9IHR5cGVvZiBWY3NJbml0SW5wdXQuVHlwZTtcblxuY29uc3QgVmNzU3RhdHVzQ2hhbmdlUmVxdWVzdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBudW1iZXI6IFBvc2l0aXZlSW50LFxuICB0aXRsZTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLFxuICB1cmw6IFNjaGVtYS5TdHJpbmcsXG4gIGJhc2VSZWY6IFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSxcbiAgaGVhZFJlZjogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLFxuICBzdGF0ZTogVmNzU3RhdHVzQ2hhbmdlUmVxdWVzdFN0YXRlLFxuICBpc0RyYWZ0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICB1cGRhdGVkQXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcpKSxcbn0pO1xuXG5jb25zdCBWY3NTdGF0dXNMb2NhbFNoYXBlID0ge1xuICBpc1JlcG86IFNjaGVtYS5Cb29sZWFuLFxuICBzb3VyY2VDb250cm9sUHJvdmlkZXI6IFNjaGVtYS5vcHRpb25hbChTb3VyY2VDb250cm9sUHJvdmlkZXJJbmZvKSxcbiAgaGFzUHJpbWFyeVJlbW90ZTogU2NoZW1hLkJvb2xlYW4sXG4gIGlzRGVmYXVsdFJlZjogU2NoZW1hLkJvb2xlYW4sXG4gIHJlZk5hbWU6IFNjaGVtYS5OdWxsT3IoVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hKSxcbiAgaGFzV29ya2luZ1RyZWVDaGFuZ2VzOiBTY2hlbWEuQm9vbGVhbixcbiAgd29ya2luZ1RyZWU6IFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC8vIEFic29sdXRlIHdvcmt0cmVlIHJvb3Qgb24gdGhlIGVudmlyb25tZW50IHRoYXQgZXZlcnkgZmlsZXNbXS5wYXRoIGlzXG4gICAgLy8gcmVsYXRpdmUgdG8uIEFic2VudCB3aGVuIHRoZSBzZXJ2ZXIgY291bGQgbm90IHJlc29sdmUgaXQuXG4gICAgcm9vdFBhdGg6IFNjaGVtYS5vcHRpb25hbChHaXRGaWxlUGF0aCksXG4gICAgZmlsZXM6IFNjaGVtYS5BcnJheShcbiAgICAgIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgICAgICBwYXRoOiBHaXRGaWxlUGF0aCxcbiAgICAgICAgaW5zZXJ0aW9uczogTm9uTmVnYXRpdmVJbnQsXG4gICAgICAgIGRlbGV0aW9uczogTm9uTmVnYXRpdmVJbnQsXG4gICAgICB9KSxcbiAgICApLFxuICAgIGluc2VydGlvbnM6IE5vbk5lZ2F0aXZlSW50LFxuICAgIGRlbGV0aW9uczogTm9uTmVnYXRpdmVJbnQsXG4gIH0pLFxuICBicmFuY2hDaGFuZ2VzOiBTY2hlbWEub3B0aW9uYWwoXG4gICAgU2NoZW1hLlN0cnVjdCh7XG4gICAgICBiYXNlUmVmOiBTY2hlbWEuTnVsbE9yKFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSksXG4gICAgICBpbnNlcnRpb25zOiBOb25OZWdhdGl2ZUludCxcbiAgICAgIGRlbGV0aW9uczogTm9uTmVnYXRpdmVJbnQsXG4gICAgfSksXG4gICksXG59O1xuXG5jb25zdCBWY3NTdGF0dXNSZW1vdGVTaGFwZSA9IHtcbiAgaGFzVXBzdHJlYW06IFNjaGVtYS5Cb29sZWFuLFxuICBhaGVhZENvdW50OiBOb25OZWdhdGl2ZUludCxcbiAgYmVoaW5kQ291bnQ6IE5vbk5lZ2F0aXZlSW50LFxuICBhaGVhZE9mRGVmYXVsdENvdW50OiBTY2hlbWEub3B0aW9uYWwoTm9uTmVnYXRpdmVJbnQpLFxuICBwcjogU2NoZW1hLk51bGxPcihWY3NTdGF0dXNDaGFuZ2VSZXF1ZXN0KSxcbn07XG5cbmV4cG9ydCBjb25zdCBWY3NTdGF0dXNMb2NhbFJlc3VsdCA9IFNjaGVtYS5TdHJ1Y3QoVmNzU3RhdHVzTG9jYWxTaGFwZSk7XG5leHBvcnQgdHlwZSBWY3NTdGF0dXNMb2NhbFJlc3VsdCA9IHR5cGVvZiBWY3NTdGF0dXNMb2NhbFJlc3VsdC5UeXBlO1xuXG5leHBvcnQgY29uc3QgVmNzU3RhdHVzUmVtb3RlUmVzdWx0ID0gU2NoZW1hLlN0cnVjdChWY3NTdGF0dXNSZW1vdGVTaGFwZSk7XG5leHBvcnQgdHlwZSBWY3NTdGF0dXNSZW1vdGVSZXN1bHQgPSB0eXBlb2YgVmNzU3RhdHVzUmVtb3RlUmVzdWx0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBWY3NTdGF0dXNSZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgLi4uVmNzU3RhdHVzTG9jYWxTaGFwZSxcbiAgLi4uVmNzU3RhdHVzUmVtb3RlU2hhcGUsXG59KTtcbmV4cG9ydCB0eXBlIFZjc1N0YXR1c1Jlc3VsdCA9IHR5cGVvZiBWY3NTdGF0dXNSZXN1bHQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFZjc1N0YXR1c1N0cmVhbUV2ZW50ID0gU2NoZW1hLlVuaW9uKFtcbiAgU2NoZW1hLlRhZ2dlZFN0cnVjdChcInNuYXBzaG90XCIsIHtcbiAgICBsb2NhbDogVmNzU3RhdHVzTG9jYWxSZXN1bHQsXG4gICAgcmVtb3RlOiBTY2hlbWEuTnVsbE9yKFZjc1N0YXR1c1JlbW90ZVJlc3VsdCksXG4gIH0pLFxuICBTY2hlbWEuVGFnZ2VkU3RydWN0KFwibG9jYWxVcGRhdGVkXCIsIHtcbiAgICBsb2NhbDogVmNzU3RhdHVzTG9jYWxSZXN1bHQsXG4gIH0pLFxuICBTY2hlbWEuVGFnZ2VkU3RydWN0KFwicmVtb3RlVXBkYXRlZFwiLCB7XG4gICAgcmVtb3RlOiBTY2hlbWEuTnVsbE9yKFZjc1N0YXR1c1JlbW90ZVJlc3VsdCksXG4gIH0pLFxuXSk7XG5leHBvcnQgdHlwZSBWY3NTdGF0dXNTdHJlYW1FdmVudCA9IHR5cGVvZiBWY3NTdGF0dXNTdHJlYW1FdmVudC5UeXBlO1xuXG5leHBvcnQgY29uc3QgVmNzTGlzdFJlZnNSZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgaXNBdFJlcG9zaXRvcnlSb290OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICByZWZzOiBTY2hlbWEuQXJyYXkoVmNzUmVmKSxcbiAgaXNSZXBvOiBTY2hlbWEuQm9vbGVhbixcbiAgaGFzUHJpbWFyeVJlbW90ZTogU2NoZW1hLkJvb2xlYW4sXG4gIG5leHRDdXJzb3I6IE5vbk5lZ2F0aXZlSW50LnBpcGUoU2NoZW1hLk51bGxPciksXG4gIHRvdGFsQ291bnQ6IE5vbk5lZ2F0aXZlSW50LFxufSk7XG5leHBvcnQgdHlwZSBWY3NMaXN0UmVmc1Jlc3VsdCA9IHR5cGVvZiBWY3NMaXN0UmVmc1Jlc3VsdC5UeXBlO1xuXG5leHBvcnQgY29uc3QgVmNzQ3JlYXRlV29ya3RyZWVSZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgd29ya3RyZWU6IFZjc1dvcmt0cmVlLFxufSk7XG5leHBvcnQgdHlwZSBWY3NDcmVhdGVXb3JrdHJlZVJlc3VsdCA9IHR5cGVvZiBWY3NDcmVhdGVXb3JrdHJlZVJlc3VsdC5UeXBlO1xuXG5leHBvcnQgY29uc3QgR2l0UmVzb2x2ZVB1bGxSZXF1ZXN0UmVzdWx0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIHB1bGxSZXF1ZXN0OiBHaXRSZXNvbHZlZFB1bGxSZXF1ZXN0LFxufSk7XG5leHBvcnQgdHlwZSBHaXRSZXNvbHZlUHVsbFJlcXVlc3RSZXN1bHQgPSB0eXBlb2YgR2l0UmVzb2x2ZVB1bGxSZXF1ZXN0UmVzdWx0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBHaXRQcmVwYXJlUHVsbFJlcXVlc3RUaHJlYWRSZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgcHVsbFJlcXVlc3Q6IEdpdFJlc29sdmVkUHVsbFJlcXVlc3QsXG4gIGJyYW5jaDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLFxuICB3b3JrdHJlZVBhdGg6IFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYS5waXBlKFNjaGVtYS5OdWxsT3IpLFxuICAvKiogRmFsc2Ugd2hlbiBsb2NhbCBjb21taXRzIG9yIGVkaXRzIHByZXZlbnRlZCBhIHJldXNlZCB3b3JrdHJlZSBmcm9tIHJlYWNoaW5nIHRoZSBQUiBoZWFkLiAqL1xuICBpc09uUHVsbFJlcXVlc3RIZWFkOiBTY2hlbWEuQm9vbGVhbi5waXBlKFNjaGVtYS53aXRoRGVjb2RpbmdEZWZhdWx0S2V5KEVmZmVjdC5zdWNjZWVkKHRydWUpKSksXG59KTtcbmV4cG9ydCB0eXBlIEdpdFByZXBhcmVQdWxsUmVxdWVzdFRocmVhZFJlc3VsdCA9IHR5cGVvZiBHaXRQcmVwYXJlUHVsbFJlcXVlc3RUaHJlYWRSZXN1bHQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFZjc1N3aXRjaFJlZlJlc3VsdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICByZWZOYW1lOiBTY2hlbWEuTnVsbE9yKFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSksXG59KTtcbmV4cG9ydCB0eXBlIFZjc1N3aXRjaFJlZlJlc3VsdCA9IHR5cGVvZiBWY3NTd2l0Y2hSZWZSZXN1bHQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IEdpdFJ1blN0YWNrZWRBY3Rpb25SZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgYWN0aW9uOiBHaXRTdGFja2VkQWN0aW9uLFxuICBicmFuY2g6IFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHN0YXR1czogR2l0QnJhbmNoU3RlcFN0YXR1cyxcbiAgICBuYW1lOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hKSxcbiAgfSksXG4gIGNvbW1pdDogU2NoZW1hLlN0cnVjdCh7XG4gICAgc3RhdHVzOiBHaXRDb21taXRTdGVwU3RhdHVzLFxuICAgIGNvbW1pdFNoYTogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSksXG4gICAgc3ViamVjdDogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSksXG4gIH0pLFxuICBwdXNoOiBTY2hlbWEuU3RydWN0KHtcbiAgICBzdGF0dXM6IEdpdFB1c2hTdGVwU3RhdHVzLFxuICAgIGJyYW5jaDogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSksXG4gICAgdXBzdHJlYW1CcmFuY2g6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEpLFxuICAgIHNldFVwc3RyZWFtOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICB9KSxcbiAgcHI6IFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHN0YXR1czogR2l0UHJTdGVwU3RhdHVzLFxuICAgIHVybDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcpLFxuICAgIG51bWJlcjogU2NoZW1hLm9wdGlvbmFsKFBvc2l0aXZlSW50KSxcbiAgICBiYXNlQnJhbmNoOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hKSxcbiAgICBoZWFkQnJhbmNoOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hKSxcbiAgICB0aXRsZTogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSksXG4gIH0pLFxuICB0b2FzdDogR2l0UnVuU3RhY2tlZEFjdGlvblRvYXN0LFxufSk7XG5leHBvcnQgdHlwZSBHaXRSdW5TdGFja2VkQWN0aW9uUmVzdWx0ID0gdHlwZW9mIEdpdFJ1blN0YWNrZWRBY3Rpb25SZXN1bHQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFZjc1B1bGxSZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgc3RhdHVzOiBTY2hlbWEuTGl0ZXJhbHMoW1wicHVsbGVkXCIsIFwic2tpcHBlZF91cF90b19kYXRlXCJdKSxcbiAgcmVmTmFtZTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLFxuICB1cHN0cmVhbVJlZjogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLnBpcGUoU2NoZW1hLk51bGxPciksXG59KTtcbmV4cG9ydCB0eXBlIFZjc1B1bGxSZXN1bHQgPSB0eXBlb2YgVmNzUHVsbFJlc3VsdC5UeXBlO1xuXG4vLyBHaXQgc3RkZXJyIGNhbiBlY2hvIGNyZWRlbnRpYWxzIGZyb20gYXJndiBhbmQgcmVtb3RlIFVSTHMuIE9ubHkgYSBmaXhlZFxuLy8gcmVhc29uIHJlYWNoZXMgdGhlIGVycm9yIGFuZCBpdHMgZGlhZ25vc3RpYyBzdWZmaXg7IG5ld2VyLCB1bmtub3duIHJlYXNvbnNcbi8vIGRlY29kZSBhcyBhYnNlbnQgdGhyb3VnaCBHaXRDb21tYW5kRXJyb3IuXG5leHBvcnQgY29uc3QgR2l0Q29tbWFuZEZhaWx1cmVSZWFzb24gPSBTY2hlbWEuTGl0ZXJhbHMoW1xuICBcImF1dGhlbnRpY2F0aW9uX2ZhaWxlZFwiLFxuICBcImJyYW5jaF9hbHJlYWR5X2V4aXN0c1wiLFxuICBcImJyYW5jaF9jaGVja2VkX291dF9pbl93b3JrdHJlZVwiLFxuICBcImhvc3Rfa2V5X3VudmVyaWZpZWRcIixcbiAgXCJub3RfYV9yZXBvc2l0b3J5XCIsXG4gIFwicGF0aF9hbHJlYWR5X2V4aXN0c1wiLFxuICBcInB1c2hfcmVqZWN0ZWRfYnlfcmVtb3RlXCIsXG4gIFwicHVzaF9yZWplY3RlZF9ub25fZmFzdF9mb3J3YXJkXCIsXG4gIFwicmVmX25vdF9mb3VuZFwiLFxuICBcInJlbW90ZV91bnJlYWNoYWJsZVwiLFxuICBcInRhZ193b3VsZF9iZV9jbG9iYmVyZWRcIixcbl0pO1xuZXhwb3J0IHR5cGUgR2l0Q29tbWFuZEZhaWx1cmVSZWFzb24gPSB0eXBlb2YgR2l0Q29tbWFuZEZhaWx1cmVSZWFzb24uVHlwZTtcblxuZXhwb3J0IGNsYXNzIEdpdENvbW1hbmRFcnJvciBleHRlbmRzIFNjaGVtYS5UYWdnZWRFcnJvcjxHaXRDb21tYW5kRXJyb3I+KCkoXCJHaXRDb21tYW5kRXJyb3JcIiwge1xuICBvcGVyYXRpb246IFNjaGVtYS5TdHJpbmcsXG4gIGNvbW1hbmQ6IFNjaGVtYS5TdHJpbmcsXG4gIGN3ZDogU2NoZW1hLlN0cmluZyxcbiAgYXJndW1lbnRDb3VudDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdW1iZXIpLFxuICBleGl0Q29kZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdW1iZXIpLFxuICBzdGRvdXRMZW5ndGg6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVtYmVyKSxcbiAgc3RkZXJyTGVuZ3RoOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bWJlciksXG4gIG91dHB1dExlbmd0aDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdW1iZXIpLFxuICByZWFzb246IEZvcndhcmRDb21wYXRpYmxlT3B0aW9uYWwoR2l0Q29tbWFuZEZhaWx1cmVSZWFzb24pLFxuICBkZXRhaWw6IFNjaGVtYS5TdHJpbmcsXG4gIGNhdXNlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkRlZmVjdCgpKSxcbn0pIHtcbiAgb3ZlcnJpZGUgZ2V0IG1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICBjb25zdCByZWFzb24gPSB0aGlzLnJlYXNvbiA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IGAgKCR7dGhpcy5yZWFzb259KWA7XG4gICAgcmV0dXJuIGBHaXQgY29tbWFuZCBmYWlsZWQgaW4gJHt0aGlzLm9wZXJhdGlvbn0gKCR7dGhpcy5jd2R9KTogJHt0aGlzLmRldGFpbH0ke3JlYXNvbn1gO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZXh0R2VuZXJhdGlvbkVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPFRleHRHZW5lcmF0aW9uRXJyb3I+KCkoXG4gIFwiVGV4dEdlbmVyYXRpb25FcnJvclwiLFxuICB7XG4gICAgb3BlcmF0aW9uOiBTY2hlbWEuU3RyaW5nLFxuICAgIGRldGFpbDogU2NoZW1hLlN0cmluZyxcbiAgICBjYXVzZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5EZWZlY3QoKSksXG4gIH0sXG4pIHtcbiAgb3ZlcnJpZGUgZ2V0IG1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFRleHQgZ2VuZXJhdGlvbiBmYWlsZWQgaW4gJHt0aGlzLm9wZXJhdGlvbn06ICR7dGhpcy5kZXRhaWx9YDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2l0TWFuYWdlckVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPEdpdE1hbmFnZXJFcnJvcj4oKShcIkdpdE1hbmFnZXJFcnJvclwiLCB7XG4gIG9wZXJhdGlvbjogU2NoZW1hLlN0cmluZyxcbiAgY3dkOiBTY2hlbWEuU3RyaW5nLFxuICBkZXRhaWw6IFNjaGVtYS5TdHJpbmcsXG4gIGNhdXNlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkRlZmVjdCgpKSxcbn0pIHtcbiAgb3ZlcnJpZGUgZ2V0IG1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYEdpdCBtYW5hZ2VyIGZhaWxlZCBpbiAke3RoaXMub3BlcmF0aW9ufTogJHt0aGlzLmRldGFpbH1gO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHaXRQdWxsUmVxdWVzdE1hdGVyaWFsaXphdGlvbkVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPEdpdFB1bGxSZXF1ZXN0TWF0ZXJpYWxpemF0aW9uRXJyb3I+KCkoXG4gIFwiR2l0UHVsbFJlcXVlc3RNYXRlcmlhbGl6YXRpb25FcnJvclwiLFxuICB7XG4gICAgY3dkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEsXG4gICAgcHVsbFJlcXVlc3ROdW1iZXI6IFBvc2l0aXZlSW50LFxuICAgIGhlYWRSZXBvc2l0b3J5OiBTY2hlbWEuTnVsbE9yKFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSksXG4gICAgaGVhZEJyYW5jaDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLFxuICAgIGxvY2FsQnJhbmNoOiBUcmltbWVkTm9uRW1wdHlTdHJpbmdTY2hlbWEsXG4gICAgY2F1c2U6IFNjaGVtYS5EZWZlY3QoKSxcbiAgfSxcbikge1xuICBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRmFpbGVkIHRvIG1hdGVyaWFsaXplIHB1bGwgcmVxdWVzdCAjJHt0aGlzLnB1bGxSZXF1ZXN0TnVtYmVyfSBicmFuY2ggJHt0aGlzLmhlYWRCcmFuY2h9IGFzICR7dGhpcy5sb2NhbEJyYW5jaH0uYDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgR2l0TWFuYWdlclNlcnZpY2VFcnJvciA9IFNjaGVtYS5VbmlvbihbXG4gIEdpdE1hbmFnZXJFcnJvcixcbiAgR2l0UHVsbFJlcXVlc3RNYXRlcmlhbGl6YXRpb25FcnJvcixcbiAgR2l0Q29tbWFuZEVycm9yLFxuICBTb3VyY2VDb250cm9sUHJvdmlkZXJFcnJvcixcbiAgVGV4dEdlbmVyYXRpb25FcnJvcixcbl0pO1xuZXhwb3J0IHR5cGUgR2l0TWFuYWdlclNlcnZpY2VFcnJvciA9IHR5cGVvZiBHaXRNYW5hZ2VyU2VydmljZUVycm9yLlR5cGU7XG5cbmNvbnN0IEdpdEFjdGlvblByb2dyZXNzQmFzZSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBhY3Rpb25JZDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLFxuICBjd2Q6IFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSxcbiAgYWN0aW9uOiBHaXRTdGFja2VkQWN0aW9uLFxufSk7XG5cbmNvbnN0IEdpdEFjdGlvblN0YXJ0ZWRFdmVudCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICAuLi5HaXRBY3Rpb25Qcm9ncmVzc0Jhc2UuZmllbGRzLFxuICBraW5kOiBTY2hlbWEuTGl0ZXJhbChcImFjdGlvbl9zdGFydGVkXCIpLFxuICBwaGFzZXM6IFNjaGVtYS5BcnJheShHaXRBY3Rpb25Qcm9ncmVzc1BoYXNlKSxcbn0pO1xuY29uc3QgR2l0QWN0aW9uUGhhc2VTdGFydGVkRXZlbnQgPSBTY2hlbWEuU3RydWN0KHtcbiAgLi4uR2l0QWN0aW9uUHJvZ3Jlc3NCYXNlLmZpZWxkcyxcbiAga2luZDogU2NoZW1hLkxpdGVyYWwoXCJwaGFzZV9zdGFydGVkXCIpLFxuICBwaGFzZTogR2l0QWN0aW9uUHJvZ3Jlc3NQaGFzZSxcbiAgbGFiZWw6IFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSxcbn0pO1xuY29uc3QgR2l0QWN0aW9uSG9va1N0YXJ0ZWRFdmVudCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICAuLi5HaXRBY3Rpb25Qcm9ncmVzc0Jhc2UuZmllbGRzLFxuICBraW5kOiBTY2hlbWEuTGl0ZXJhbChcImhvb2tfc3RhcnRlZFwiKSxcbiAgaG9va05hbWU6IFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSxcbn0pO1xuY29uc3QgR2l0QWN0aW9uSG9va091dHB1dEV2ZW50ID0gU2NoZW1hLlN0cnVjdCh7XG4gIC4uLkdpdEFjdGlvblByb2dyZXNzQmFzZS5maWVsZHMsXG4gIGtpbmQ6IFNjaGVtYS5MaXRlcmFsKFwiaG9va19vdXRwdXRcIiksXG4gIGhvb2tOYW1lOiBTY2hlbWEuTnVsbE9yKFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSksXG4gIHN0cmVhbTogR2l0QWN0aW9uUHJvZ3Jlc3NTdHJlYW0sXG4gIHRleHQ6IFRyaW1tZWROb25FbXB0eVN0cmluZ1NjaGVtYSxcbn0pO1xuY29uc3QgR2l0QWN0aW9uSG9va0ZpbmlzaGVkRXZlbnQgPSBTY2hlbWEuU3RydWN0KHtcbiAgLi4uR2l0QWN0aW9uUHJvZ3Jlc3NCYXNlLmZpZWxkcyxcbiAga2luZDogU2NoZW1hLkxpdGVyYWwoXCJob29rX2ZpbmlzaGVkXCIpLFxuICBob29rTmFtZTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLFxuICBleGl0Q29kZTogU2NoZW1hLk51bGxPcihTY2hlbWEuSW50KSxcbiAgZHVyYXRpb25NczogU2NoZW1hLk51bGxPcihOb25OZWdhdGl2ZUludCksXG59KTtcbmNvbnN0IEdpdEFjdGlvbkZpbmlzaGVkRXZlbnQgPSBTY2hlbWEuU3RydWN0KHtcbiAgLi4uR2l0QWN0aW9uUHJvZ3Jlc3NCYXNlLmZpZWxkcyxcbiAga2luZDogU2NoZW1hLkxpdGVyYWwoXCJhY3Rpb25fZmluaXNoZWRcIiksXG4gIHJlc3VsdDogR2l0UnVuU3RhY2tlZEFjdGlvblJlc3VsdCxcbn0pO1xuY29uc3QgR2l0QWN0aW9uRmFpbGVkRXZlbnQgPSBTY2hlbWEuU3RydWN0KHtcbiAgLi4uR2l0QWN0aW9uUHJvZ3Jlc3NCYXNlLmZpZWxkcyxcbiAga2luZDogU2NoZW1hLkxpdGVyYWwoXCJhY3Rpb25fZmFpbGVkXCIpLFxuICBwaGFzZTogU2NoZW1hLk51bGxPcihHaXRBY3Rpb25Qcm9ncmVzc1BoYXNlKSxcbiAgbWVzc2FnZTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nU2NoZW1hLFxufSk7XG5cbmV4cG9ydCBjb25zdCBHaXRBY3Rpb25Qcm9ncmVzc0V2ZW50ID0gU2NoZW1hLlVuaW9uKFtcbiAgR2l0QWN0aW9uU3RhcnRlZEV2ZW50LFxuICBHaXRBY3Rpb25QaGFzZVN0YXJ0ZWRFdmVudCxcbiAgR2l0QWN0aW9uSG9va1N0YXJ0ZWRFdmVudCxcbiAgR2l0QWN0aW9uSG9va091dHB1dEV2ZW50LFxuICBHaXRBY3Rpb25Ib29rRmluaXNoZWRFdmVudCxcbiAgR2l0QWN0aW9uRmluaXNoZWRFdmVudCxcbiAgR2l0QWN0aW9uRmFpbGVkRXZlbnQsXG5dKTtcbmV4cG9ydCB0eXBlIEdpdEFjdGlvblByb2dyZXNzRXZlbnQgPSB0eXBlb2YgR2l0QWN0aW9uUHJvZ3Jlc3NFdmVudC5UeXBlO1xuIl0sImZpbGUiOiIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvZ2l0LnRzIn0=

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJ1cmwiOiIyIiwiaW1wb3J0cyI6IjMiLCJtYXBwaW5ncyI6ZmFsc2UsImRlcHMiOiI0IiwiZHluYW1pY0RlcHMiOiI1Iiwic3RhdGljTW9ja3MiOm51bGx9LCIvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvY29udHJhY3RzL3NyYy9naXQudHMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvZ2l0LnRzIix7InVybHMiOiI2IiwiaWRzIjoiNyJ9LFsiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxbXSxbIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0se30sIi9AZnMvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvbm9kZV9tb2R1bGVzLy5wbnBtL2VmZmVjdEA0LjAuNS9ub2RlX21vZHVsZXMvZWZmZWN0L2Rpc3QvRWZmZWN0LmpzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9ub2RlX21vZHVsZXMvLnBucG0vZWZmZWN0QDQuMC41L25vZGVfbW9kdWxlcy9lZmZlY3QvZGlzdC9TY2hlbWEuanMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvYmFzZVNjaGVtYXMudHMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvc291cmNlQ29udHJvbC50cyIsIi9AZnMvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvY29udHJhY3RzL3NyYy92Y3MudHMiXQ==