//#region ../../node_modules/.pnpm/prettier@3.8.2/node_modules/prettier/plugins/estree.mjs
var Ba = Object.defineProperty;
var jn = (e, t) => {
	for (var r in t) Ba(e, r, {
		get: t[r],
		enumerable: !0
	});
};
var Ta = {};
jn(Ta, {
	languages: () => CD,
	options: () => Aa,
	printers: () => dD
});
var Qs = [
	{
		name: "JavaScript",
		type: "programming",
		aceMode: "javascript",
		extensions: [
			".js",
			"._js",
			".bones",
			".cjs",
			".es",
			".es6",
			".gs",
			".jake",
			".javascript",
			".jsb",
			".jscad",
			".jsfl",
			".jslib",
			".jsm",
			".jspre",
			".jss",
			".mjs",
			".njs",
			".pac",
			".sjs",
			".ssjs",
			".xsjs",
			".xsjslib",
			".start.frag",
			".end.frag",
			".wxs"
		],
		filenames: [
			"Jakefile",
			"start.frag",
			"end.frag"
		],
		tmScope: "source.js",
		aliases: ["js", "node"],
		codemirrorMode: "javascript",
		codemirrorMimeType: "text/javascript",
		interpreters: [
			"chakra",
			"d8",
			"gjs",
			"js",
			"node",
			"nodejs",
			"qjs",
			"rhino",
			"v8",
			"v8-shell",
			"zx"
		],
		parsers: [
			"babel",
			"acorn",
			"espree",
			"meriyah",
			"babel-flow",
			"babel-ts",
			"flow",
			"typescript"
		],
		vscodeLanguageIds: ["javascript", "mongo"],
		linguistLanguageId: 183
	},
	{
		name: "Flow",
		type: "programming",
		aceMode: "javascript",
		extensions: [".js.flow"],
		filenames: [],
		tmScope: "source.js",
		aliases: [],
		codemirrorMode: "javascript",
		codemirrorMimeType: "text/javascript",
		interpreters: [
			"chakra",
			"d8",
			"gjs",
			"js",
			"node",
			"nodejs",
			"qjs",
			"rhino",
			"v8",
			"v8-shell"
		],
		parsers: ["flow", "babel-flow"],
		vscodeLanguageIds: ["javascript"],
		linguistLanguageId: 183
	},
	{
		name: "JSX",
		type: "programming",
		aceMode: "javascript",
		extensions: [".jsx"],
		filenames: void 0,
		tmScope: "source.js.jsx",
		aliases: void 0,
		codemirrorMode: "jsx",
		codemirrorMimeType: "text/jsx",
		interpreters: void 0,
		parsers: [
			"babel",
			"babel-flow",
			"babel-ts",
			"flow",
			"typescript",
			"espree",
			"meriyah"
		],
		vscodeLanguageIds: ["javascriptreact"],
		group: "JavaScript",
		linguistLanguageId: 183
	},
	{
		name: "TypeScript",
		type: "programming",
		aceMode: "typescript",
		extensions: [
			".ts",
			".cts",
			".mts"
		],
		tmScope: "source.ts",
		aliases: ["ts"],
		codemirrorMode: "javascript",
		codemirrorMimeType: "application/typescript",
		interpreters: [
			"bun",
			"deno",
			"ts-node",
			"tsx"
		],
		parsers: ["typescript", "babel-ts"],
		vscodeLanguageIds: ["typescript"],
		linguistLanguageId: 378
	},
	{
		name: "TSX",
		type: "programming",
		aceMode: "tsx",
		extensions: [".tsx"],
		tmScope: "source.tsx",
		codemirrorMode: "jsx",
		codemirrorMimeType: "text/typescript-jsx",
		group: "TypeScript",
		parsers: ["typescript", "babel-ts"],
		vscodeLanguageIds: ["typescriptreact"],
		linguistLanguageId: 94901924
	}
];
var Hs = {};
jn(Hs, {
	canAttachComment: () => Pi,
	embed: () => Co,
	features: () => DD,
	getVisitorKeys: () => Mr,
	handleComments: () => Ji,
	hasPrettierIgnore: () => nr,
	insertPragma: () => Lo,
	isBlockComment: () => ce,
	isGap: () => Gi,
	massageAstNode: () => Bi,
	print: () => Ys,
	printComment: () => wo,
	printPrettierIgnored: () => Ys,
	willPrintOwnComments: () => Wi
});
var Wt = (e, t) => (r, n, ...s) => r | 1 && n == null ? void 0 : (t.call(n) ?? n[e]).apply(n, s);
var ba = String.prototype.replaceAll ?? function(e, t) {
	return e.global ? this.replace(e, t) : this.split(e).join(t);
}, W = Wt("replaceAll", function() {
	if (typeof this == "string") return ba;
});
function ka(e) {
	return this[e < 0 ? this.length + e : e];
}
var N = Wt("at", function() {
	if (Array.isArray(this) || typeof this == "string") return ka;
});
function La(e) {
	return e !== null && typeof e == "object";
}
var Lr = La;
function* Oa(e, t) {
	let { getVisitorKeys: r, filter: n = () => !0 } = t, s = (i) => Lr(i) && n(i);
	for (let i of r(e)) {
		let o = e[i];
		if (Array.isArray(o)) for (let u of o) s(u) && (yield u);
		else s(o) && (yield o);
	}
}
function* wa(e, t) {
	let r = [e];
	for (let n = 0; n < r.length; n++) {
		let s = r[n];
		for (let i of Oa(s, t)) yield i, r.push(i);
	}
}
function zs(e, { getVisitorKeys: t, predicate: r }) {
	for (let n of wa(e, { getVisitorKeys: t })) if (r(n)) return !0;
	return !1;
}
var Zs = () => /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
function vn(e) {
	return e === 12288 || e >= 65281 && e <= 65376 || e >= 65504 && e <= 65510;
}
function Rn(e) {
	return e >= 4352 && e <= 4447 || e === 8986 || e === 8987 || e === 9001 || e === 9002 || e >= 9193 && e <= 9196 || e === 9200 || e === 9203 || e === 9725 || e === 9726 || e === 9748 || e === 9749 || e >= 9776 && e <= 9783 || e >= 9800 && e <= 9811 || e === 9855 || e >= 9866 && e <= 9871 || e === 9875 || e === 9889 || e === 9898 || e === 9899 || e === 9917 || e === 9918 || e === 9924 || e === 9925 || e === 9934 || e === 9940 || e === 9962 || e === 9970 || e === 9971 || e === 9973 || e === 9978 || e === 9981 || e === 9989 || e === 9994 || e === 9995 || e === 10024 || e === 10060 || e === 10062 || e >= 10067 && e <= 10069 || e === 10071 || e >= 10133 && e <= 10135 || e === 10160 || e === 10175 || e === 11035 || e === 11036 || e === 11088 || e === 11093 || e >= 11904 && e <= 11929 || e >= 11931 && e <= 12019 || e >= 12032 && e <= 12245 || e >= 12272 && e <= 12287 || e >= 12289 && e <= 12350 || e >= 12353 && e <= 12438 || e >= 12441 && e <= 12543 || e >= 12549 && e <= 12591 || e >= 12593 && e <= 12686 || e >= 12688 && e <= 12773 || e >= 12783 && e <= 12830 || e >= 12832 && e <= 12871 || e >= 12880 && e <= 42124 || e >= 42128 && e <= 42182 || e >= 43360 && e <= 43388 || e >= 44032 && e <= 55203 || e >= 63744 && e <= 64255 || e >= 65040 && e <= 65049 || e >= 65072 && e <= 65106 || e >= 65108 && e <= 65126 || e >= 65128 && e <= 65131 || e >= 94176 && e <= 94180 || e >= 94192 && e <= 94198 || e >= 94208 && e <= 101589 || e >= 101631 && e <= 101662 || e >= 101760 && e <= 101874 || e >= 110576 && e <= 110579 || e >= 110581 && e <= 110587 || e === 110589 || e === 110590 || e >= 110592 && e <= 110882 || e === 110898 || e >= 110928 && e <= 110930 || e === 110933 || e >= 110948 && e <= 110951 || e >= 110960 && e <= 111355 || e >= 119552 && e <= 119638 || e >= 119648 && e <= 119670 || e === 126980 || e === 127183 || e === 127374 || e >= 127377 && e <= 127386 || e >= 127488 && e <= 127490 || e >= 127504 && e <= 127547 || e >= 127552 && e <= 127560 || e === 127568 || e === 127569 || e >= 127584 && e <= 127589 || e >= 127744 && e <= 127776 || e >= 127789 && e <= 127797 || e >= 127799 && e <= 127868 || e >= 127870 && e <= 127891 || e >= 127904 && e <= 127946 || e >= 127951 && e <= 127955 || e >= 127968 && e <= 127984 || e === 127988 || e >= 127992 && e <= 128062 || e === 128064 || e >= 128066 && e <= 128252 || e >= 128255 && e <= 128317 || e >= 128331 && e <= 128334 || e >= 128336 && e <= 128359 || e === 128378 || e === 128405 || e === 128406 || e === 128420 || e >= 128507 && e <= 128591 || e >= 128640 && e <= 128709 || e === 128716 || e >= 128720 && e <= 128722 || e >= 128725 && e <= 128728 || e >= 128732 && e <= 128735 || e === 128747 || e === 128748 || e >= 128756 && e <= 128764 || e >= 128992 && e <= 129003 || e === 129008 || e >= 129292 && e <= 129338 || e >= 129340 && e <= 129349 || e >= 129351 && e <= 129535 || e >= 129648 && e <= 129660 || e >= 129664 && e <= 129674 || e >= 129678 && e <= 129734 || e === 129736 || e >= 129741 && e <= 129756 || e >= 129759 && e <= 129770 || e >= 129775 && e <= 129784 || e >= 131072 && e <= 196605 || e >= 196608 && e <= 262141;
}
var ei = "©®‼⁉™ℹ↔↕↖↗↘↙↩↪⌨⏏⏱⏲⏸⏹⏺▪▫▶◀◻◼☀☁☂☃☄☎☑☘☝☠☢☣☦☪☮☯☸☹☺♀♂♟♠♣♥♦♨♻♾⚒⚔⚕⚖⚗⚙⚛⚜⚠⚧⚰⚱⛈⛏⛑⛓⛩⛱⛷⛸⛹✂✈✉✌✍✏✒✔✖✝✡✳✴❄❇❣❤➡⤴⤵⬅⬆⬇";
var _a = /[^\x20-\x7F]/u, Ma = new Set(ei);
function Na(e) {
	if (!e) return 0;
	if (!_a.test(e)) return e.length;
	e = e.replace(Zs(), (r) => Ma.has(r) ? " " : "  ");
	let t = 0;
	for (let r of e) {
		let n = r.codePointAt(0);
		n <= 31 || n >= 127 && n <= 159 || n >= 768 && n <= 879 || n >= 65024 && n <= 65039 || (t += vn(n) || Rn(n) ? 2 : 1);
	}
	return t;
}
var ot = Na;
function Or(e) {
	return (t, r, n) => {
		let s = !!n?.backwards;
		if (r === !1) return !1;
		let { length: i } = t, o = r;
		for (; o >= 0 && o < i;) {
			let u = t.charAt(o);
			if (e instanceof RegExp) {
				if (!e.test(u)) return o;
			} else if (!e.includes(u)) return o;
			s ? o-- : o++;
		}
		return o === -1 || o === i ? o : !1;
	};
}
Or(/\s/u);
var ze = Or(" 	"), ti = Or(",; 	"), ri = Or(/[^\n\r]/u);
var ni = (e) => e === `
` || e === "\r" || e === "\u2028" || e === "\u2029";
function ja(e, t, r) {
	let n = !!r?.backwards;
	if (t === !1) return !1;
	let s = e.charAt(t);
	if (n) {
		if (e.charAt(t - 1) === "\r" && s === `
`) return t - 2;
		if (ni(s)) return t - 1;
	} else {
		if (s === "\r" && e.charAt(t + 1) === `
`) return t + 2;
		if (ni(s)) return t + 1;
	}
	return t;
}
var Ze = ja;
function va(e, t, r = {}) {
	let n = ze(e, r.backwards ? t - 1 : t, r);
	return n !== Ze(e, n, r);
}
var Z = va;
function Ra(e, t) {
	if (t === !1) return !1;
	if (e.charAt(t) === "/" && e.charAt(t + 1) === "*") {
		for (let r = t + 2; r < e.length; ++r) if (e.charAt(r) === "*" && e.charAt(r + 1) === "/") return r + 2;
	}
	return t;
}
var qt = Ra;
function Ja(e, t) {
	return t === !1 ? !1 : e.charAt(t) === "/" && e.charAt(t + 1) === "/" ? ri(e, t) : t;
}
var Ut = Ja;
function Ga(e, t) {
	let r = null, n = t;
	for (; n !== r;) r = n, n = ti(e, n), n = qt(e, n), n = ze(e, n);
	return n = Ut(e, n), n = Ze(e, n), n !== !1 && Z(e, n);
}
var Yt = Ga;
function Wa(e) {
	return Array.isArray(e) && e.length > 0;
}
var R = Wa;
var qa = () => {}, Le = qa;
var si = Object.freeze({
	character: "'",
	codePoint: 39
}), ii = Object.freeze({
	character: "\"",
	codePoint: 34
}), Ua = Object.freeze({
	preferred: si,
	alternate: ii
}), Ya = Object.freeze({
	preferred: ii,
	alternate: si
});
function Ha(e, t) {
	let { preferred: r, alternate: n } = t === !0 || t === "'" ? Ua : Ya, { length: s } = e, i = 0, o = 0;
	for (let u = 0; u < s; u++) {
		let p = e.charCodeAt(u);
		p === r.codePoint ? i++ : p === n.codePoint && o++;
	}
	return (i > o ? n : r).character;
}
var wr = Ha;
var Xa = /\\(["'\\])|(["'])/gu;
function Va(e, t) {
	let r = t === "\"" ? "'" : "\"";
	return t + W(0, e, Xa, (s, i, o) => i ? i === r ? r : s : o === t ? "\\" + o : o) + t;
}
var oi = Va;
function $a(e, t) {
	Le(/^(?<quote>["']).*\k<quote>$/su.test(e));
	let r = e.slice(1, -1), n = t.parser === "json" || t.parser === "jsonc" || t.parser === "json5" && t.quoteProps === "preserve" && !t.singleQuote ? "\"" : t.__isInHtmlAttribute ? "'" : wr(r, t.singleQuote);
	return e.charAt(0) === n ? e : oi(r, n);
}
var ut = $a;
var ui = (e) => Number.isInteger(e) && e >= 0;
function w(e) {
	let t = e.range?.[0] ?? e.start, r = (e.declaration?.decorators ?? e.decorators)?.[0];
	return r ? Math.min(w(r), t) : t;
}
function I(e) {
	return e.range?.[1] ?? e.end;
}
function bt(e, t) {
	let r = w(e);
	return ui(r) && r === w(t);
}
function Ka(e, t) {
	let r = I(e);
	return ui(r) && r === I(t);
}
function ai(e, t) {
	return bt(e, t) && Ka(e, t);
}
var Dr = null;
function fr(e) {
	if (Dr !== null && typeof Dr.property) {
		let t = Dr;
		return Dr = fr.prototype = null, t;
	}
	return Dr = fr.prototype = e ?? Object.create(null), new fr();
}
var Qa = 10;
for (let e = 0; e <= Qa; e++) fr();
function Gn(e) {
	return fr(e);
}
function za(e, t = "type") {
	Gn(e);
	function r(n) {
		let s = n[t], i = e[s];
		if (!Array.isArray(i)) throw Object.assign(/* @__PURE__ */ new Error(`Missing visitor keys for '${s}'.`), { node: n });
		return i;
	}
	return r;
}
var _r = za;
var a = [
	[
		"decorators",
		"key",
		"typeAnnotation",
		"value"
	],
	[],
	["elementType"],
	["expression"],
	["expression", "typeAnnotation"],
	["left", "right"],
	["argument"],
	["directives", "body"],
	["label"],
	[
		"callee",
		"typeArguments",
		"arguments"
	],
	["body"],
	[
		"decorators",
		"id",
		"typeParameters",
		"superClass",
		"superTypeArguments",
		"mixins",
		"implements",
		"body",
		"superTypeParameters"
	],
	["id", "typeParameters"],
	[
		"decorators",
		"key",
		"typeParameters",
		"params",
		"returnType",
		"body"
	],
	[
		"decorators",
		"variance",
		"key",
		"typeAnnotation",
		"value"
	],
	["name", "typeAnnotation"],
	[
		"test",
		"consequent",
		"alternate"
	],
	[
		"checkType",
		"extendsType",
		"trueType",
		"falseType"
	],
	["value"],
	["id", "body"],
	[
		"declaration",
		"specifiers",
		"source",
		"attributes"
	],
	["id"],
	[
		"id",
		"typeParameters",
		"extends",
		"body"
	],
	["typeAnnotation"],
	[
		"id",
		"typeParameters",
		"right"
	],
	["body", "test"],
	["members"],
	["id", "init"],
	["exported"],
	[
		"left",
		"right",
		"body"
	],
	[
		"id",
		"typeParameters",
		"params",
		"predicate",
		"returnType",
		"body"
	],
	[
		"id",
		"params",
		"body",
		"typeParameters",
		"returnType"
	],
	["key", "value"],
	["local"],
	["objectType", "indexType"],
	["typeParameter"],
	["types"],
	["node"],
	["object", "property"],
	["argument", "cases"],
	[
		"pattern",
		"body",
		"guard"
	],
	["literal"],
	[
		"decorators",
		"key",
		"value"
	],
	["expressions"],
	["qualification", "id"],
	[
		"decorators",
		"key",
		"typeAnnotation"
	],
	[
		"typeParameters",
		"params",
		"returnType"
	],
	["expression", "typeArguments"],
	["params"],
	["parameterName", "typeAnnotation"]
];
var Mr = _r({
	AccessorProperty: a[0],
	AnyTypeAnnotation: a[1],
	ArgumentPlaceholder: a[1],
	ArrayExpression: ["elements"],
	ArrayPattern: [
		"elements",
		"typeAnnotation",
		"decorators"
	],
	ArrayTypeAnnotation: a[2],
	ArrowFunctionExpression: [
		"typeParameters",
		"params",
		"predicate",
		"returnType",
		"body"
	],
	AsConstExpression: a[3],
	AsExpression: a[4],
	AssignmentExpression: a[5],
	AssignmentPattern: [
		"left",
		"right",
		"decorators",
		"typeAnnotation"
	],
	AwaitExpression: a[6],
	BigIntLiteral: a[1],
	BigIntLiteralTypeAnnotation: a[1],
	BigIntTypeAnnotation: a[1],
	BinaryExpression: a[5],
	BindExpression: ["object", "callee"],
	BlockStatement: a[7],
	BooleanLiteral: a[1],
	BooleanLiteralTypeAnnotation: a[1],
	BooleanTypeAnnotation: a[1],
	BreakStatement: a[8],
	CallExpression: a[9],
	CatchClause: ["param", "body"],
	ChainExpression: a[3],
	ClassAccessorProperty: a[0],
	ClassBody: a[10],
	ClassDeclaration: a[11],
	ClassExpression: a[11],
	ClassImplements: a[12],
	ClassMethod: a[13],
	ClassPrivateMethod: a[13],
	ClassPrivateProperty: a[14],
	ClassProperty: a[14],
	ComponentDeclaration: [
		"id",
		"params",
		"body",
		"typeParameters",
		"rendersType"
	],
	ComponentParameter: ["name", "local"],
	ComponentTypeAnnotation: [
		"params",
		"rest",
		"typeParameters",
		"rendersType"
	],
	ComponentTypeParameter: a[15],
	ConditionalExpression: a[16],
	ConditionalTypeAnnotation: a[17],
	ContinueStatement: a[8],
	DebuggerStatement: a[1],
	DeclareClass: [
		"id",
		"typeParameters",
		"extends",
		"mixins",
		"implements",
		"body"
	],
	DeclareComponent: [
		"id",
		"params",
		"rest",
		"typeParameters",
		"rendersType"
	],
	DeclaredPredicate: a[18],
	DeclareEnum: a[19],
	DeclareExportAllDeclaration: ["source", "attributes"],
	DeclareExportDeclaration: a[20],
	DeclareFunction: ["id", "predicate"],
	DeclareHook: a[21],
	DeclareInterface: a[22],
	DeclareModule: a[19],
	DeclareModuleExports: a[23],
	DeclareNamespace: a[19],
	DeclareOpaqueType: [
		"id",
		"typeParameters",
		"supertype",
		"lowerBound",
		"upperBound"
	],
	DeclareTypeAlias: a[24],
	DeclareVariable: a[21],
	Decorator: a[3],
	Directive: a[18],
	DirectiveLiteral: a[1],
	DoExpression: a[10],
	DoWhileStatement: a[25],
	EmptyStatement: a[1],
	EmptyTypeAnnotation: a[1],
	EnumBigIntBody: a[26],
	EnumBigIntMember: a[27],
	EnumBooleanBody: a[26],
	EnumBooleanMember: a[27],
	EnumDeclaration: a[19],
	EnumDefaultedMember: a[21],
	EnumNumberBody: a[26],
	EnumNumberMember: a[27],
	EnumStringBody: a[26],
	EnumStringMember: a[27],
	EnumSymbolBody: a[26],
	ExistsTypeAnnotation: a[1],
	ExperimentalRestProperty: a[6],
	ExperimentalSpreadProperty: a[6],
	ExportAllDeclaration: [
		"source",
		"attributes",
		"exported"
	],
	ExportDefaultDeclaration: ["declaration"],
	ExportDefaultSpecifier: a[28],
	ExportNamedDeclaration: a[20],
	ExportNamespaceSpecifier: a[28],
	ExportSpecifier: ["local", "exported"],
	ExpressionStatement: a[3],
	File: ["program"],
	ForInStatement: a[29],
	ForOfStatement: a[29],
	ForStatement: [
		"init",
		"test",
		"update",
		"body"
	],
	FunctionDeclaration: a[30],
	FunctionExpression: a[30],
	FunctionTypeAnnotation: [
		"typeParameters",
		"this",
		"params",
		"rest",
		"returnType"
	],
	FunctionTypeParam: a[15],
	GenericTypeAnnotation: a[12],
	HookDeclaration: a[31],
	HookTypeAnnotation: [
		"params",
		"returnType",
		"rest",
		"typeParameters"
	],
	Identifier: ["typeAnnotation", "decorators"],
	IfStatement: a[16],
	ImportAttribute: a[32],
	ImportDeclaration: [
		"specifiers",
		"source",
		"attributes"
	],
	ImportDefaultSpecifier: a[33],
	ImportExpression: ["source", "options"],
	ImportNamespaceSpecifier: a[33],
	ImportSpecifier: ["imported", "local"],
	IndexedAccessType: a[34],
	InferredPredicate: a[1],
	InferTypeAnnotation: a[35],
	InterfaceDeclaration: a[22],
	InterfaceExtends: a[12],
	InterfaceTypeAnnotation: ["extends", "body"],
	InterpreterDirective: a[1],
	IntersectionTypeAnnotation: a[36],
	JsExpressionRoot: a[37],
	JsonRoot: a[37],
	JSXAttribute: ["name", "value"],
	JSXClosingElement: ["name"],
	JSXClosingFragment: a[1],
	JSXElement: [
		"openingElement",
		"children",
		"closingElement"
	],
	JSXEmptyExpression: a[1],
	JSXExpressionContainer: a[3],
	JSXFragment: [
		"openingFragment",
		"children",
		"closingFragment"
	],
	JSXIdentifier: a[1],
	JSXMemberExpression: a[38],
	JSXNamespacedName: ["namespace", "name"],
	JSXOpeningElement: [
		"name",
		"typeArguments",
		"attributes"
	],
	JSXOpeningFragment: a[1],
	JSXSpreadAttribute: a[6],
	JSXSpreadChild: a[3],
	JSXText: a[1],
	KeyofTypeAnnotation: a[6],
	LabeledStatement: ["label", "body"],
	Literal: a[1],
	LogicalExpression: a[5],
	MatchArrayPattern: ["elements", "rest"],
	MatchAsPattern: ["pattern", "target"],
	MatchBindingPattern: a[21],
	MatchExpression: a[39],
	MatchExpressionCase: a[40],
	MatchIdentifierPattern: a[21],
	MatchLiteralPattern: a[41],
	MatchMemberPattern: ["base", "property"],
	MatchObjectPattern: ["properties", "rest"],
	MatchObjectPatternProperty: ["key", "pattern"],
	MatchOrPattern: ["patterns"],
	MatchRestPattern: a[6],
	MatchStatement: a[39],
	MatchStatementCase: a[40],
	MatchUnaryPattern: a[6],
	MatchWildcardPattern: a[1],
	MemberExpression: a[38],
	MetaProperty: ["meta", "property"],
	MethodDefinition: a[42],
	MixedTypeAnnotation: a[1],
	ModuleExpression: a[10],
	NeverTypeAnnotation: a[1],
	NewExpression: a[9],
	NGChainedExpression: a[43],
	NGEmptyExpression: a[1],
	NGMicrosyntax: a[10],
	NGMicrosyntaxAs: ["key", "alias"],
	NGMicrosyntaxExpression: ["expression", "alias"],
	NGMicrosyntaxKey: a[1],
	NGMicrosyntaxKeyedExpression: ["key", "expression"],
	NGMicrosyntaxLet: a[32],
	NGPipeExpression: [
		"left",
		"right",
		"arguments"
	],
	NGRoot: a[37],
	NullableTypeAnnotation: a[23],
	NullLiteral: a[1],
	NullLiteralTypeAnnotation: a[1],
	NumberLiteralTypeAnnotation: a[1],
	NumberTypeAnnotation: a[1],
	NumericLiteral: a[1],
	ObjectExpression: ["properties"],
	ObjectMethod: a[13],
	ObjectPattern: [
		"decorators",
		"properties",
		"typeAnnotation"
	],
	ObjectProperty: a[42],
	ObjectTypeAnnotation: [
		"properties",
		"indexers",
		"callProperties",
		"internalSlots"
	],
	ObjectTypeCallProperty: a[18],
	ObjectTypeIndexer: [
		"variance",
		"id",
		"key",
		"value"
	],
	ObjectTypeInternalSlot: ["id", "value"],
	ObjectTypeMappedTypeProperty: [
		"keyTparam",
		"propType",
		"sourceType",
		"variance"
	],
	ObjectTypeProperty: [
		"key",
		"value",
		"variance"
	],
	ObjectTypeSpreadProperty: a[6],
	OpaqueType: [
		"id",
		"typeParameters",
		"supertype",
		"impltype",
		"lowerBound",
		"upperBound"
	],
	OptionalCallExpression: a[9],
	OptionalIndexedAccessType: a[34],
	OptionalMemberExpression: a[38],
	ParenthesizedExpression: a[3],
	PipelineBareFunction: ["callee"],
	PipelinePrimaryTopicReference: a[1],
	PipelineTopicExpression: a[3],
	Placeholder: a[1],
	PrivateIdentifier: a[1],
	PrivateName: a[21],
	Program: a[7],
	Property: a[32],
	PropertyDefinition: a[14],
	QualifiedTypeIdentifier: a[44],
	QualifiedTypeofIdentifier: a[44],
	RegExpLiteral: a[1],
	RestElement: [
		"argument",
		"typeAnnotation",
		"decorators"
	],
	ReturnStatement: a[6],
	SatisfiesExpression: a[4],
	SequenceExpression: a[43],
	SpreadElement: a[6],
	StaticBlock: a[10],
	StringLiteral: a[1],
	StringLiteralTypeAnnotation: a[1],
	StringTypeAnnotation: a[1],
	Super: a[1],
	SwitchCase: ["test", "consequent"],
	SwitchStatement: ["discriminant", "cases"],
	SymbolTypeAnnotation: a[1],
	TaggedTemplateExpression: [
		"tag",
		"typeArguments",
		"quasi"
	],
	TemplateElement: a[1],
	TemplateLiteral: ["quasis", "expressions"],
	ThisExpression: a[1],
	ThisTypeAnnotation: a[1],
	ThrowStatement: a[6],
	TopicReference: a[1],
	TryStatement: [
		"block",
		"handler",
		"finalizer"
	],
	TSAbstractAccessorProperty: a[45],
	TSAbstractKeyword: a[1],
	TSAbstractMethodDefinition: a[32],
	TSAbstractPropertyDefinition: a[45],
	TSAnyKeyword: a[1],
	TSArrayType: a[2],
	TSAsExpression: a[4],
	TSAsyncKeyword: a[1],
	TSBigIntKeyword: a[1],
	TSBooleanKeyword: a[1],
	TSCallSignatureDeclaration: a[46],
	TSClassImplements: a[47],
	TSConditionalType: a[17],
	TSConstructorType: a[46],
	TSConstructSignatureDeclaration: a[46],
	TSDeclareFunction: a[31],
	TSDeclareKeyword: a[1],
	TSDeclareMethod: [
		"decorators",
		"key",
		"typeParameters",
		"params",
		"returnType"
	],
	TSEmptyBodyFunctionExpression: [
		"id",
		"typeParameters",
		"params",
		"returnType"
	],
	TSEnumBody: a[26],
	TSEnumDeclaration: a[19],
	TSEnumMember: ["id", "initializer"],
	TSExportAssignment: a[3],
	TSExportKeyword: a[1],
	TSExternalModuleReference: a[3],
	TSFunctionType: a[46],
	TSImportEqualsDeclaration: ["id", "moduleReference"],
	TSImportType: [
		"options",
		"qualifier",
		"typeArguments",
		"source"
	],
	TSIndexedAccessType: a[34],
	TSIndexSignature: ["parameters", "typeAnnotation"],
	TSInferType: a[35],
	TSInstantiationExpression: a[47],
	TSInterfaceBody: a[10],
	TSInterfaceDeclaration: a[22],
	TSInterfaceHeritage: a[47],
	TSIntersectionType: a[36],
	TSIntrinsicKeyword: a[1],
	TSJSDocAllType: a[1],
	TSJSDocNonNullableType: a[23],
	TSJSDocNullableType: a[23],
	TSJSDocUnknownType: a[1],
	TSLiteralType: a[41],
	TSMappedType: [
		"key",
		"constraint",
		"nameType",
		"typeAnnotation"
	],
	TSMethodSignature: [
		"key",
		"typeParameters",
		"params",
		"returnType"
	],
	TSModuleBlock: a[10],
	TSModuleDeclaration: a[19],
	TSNamedTupleMember: ["label", "elementType"],
	TSNamespaceExportDeclaration: a[21],
	TSNeverKeyword: a[1],
	TSNonNullExpression: a[3],
	TSNullKeyword: a[1],
	TSNumberKeyword: a[1],
	TSObjectKeyword: a[1],
	TSOptionalType: a[23],
	TSParameterProperty: ["parameter", "decorators"],
	TSParenthesizedType: a[23],
	TSPrivateKeyword: a[1],
	TSPropertySignature: ["key", "typeAnnotation"],
	TSProtectedKeyword: a[1],
	TSPublicKeyword: a[1],
	TSQualifiedName: a[5],
	TSReadonlyKeyword: a[1],
	TSRestType: a[23],
	TSSatisfiesExpression: a[4],
	TSStaticKeyword: a[1],
	TSStringKeyword: a[1],
	TSSymbolKeyword: a[1],
	TSTemplateLiteralType: ["quasis", "types"],
	TSThisType: a[1],
	TSTupleType: ["elementTypes"],
	TSTypeAliasDeclaration: [
		"id",
		"typeParameters",
		"typeAnnotation"
	],
	TSTypeAnnotation: a[23],
	TSTypeAssertion: a[4],
	TSTypeLiteral: a[26],
	TSTypeOperator: a[23],
	TSTypeParameter: [
		"name",
		"constraint",
		"default"
	],
	TSTypeParameterDeclaration: a[48],
	TSTypeParameterInstantiation: a[48],
	TSTypePredicate: a[49],
	TSTypeQuery: ["exprName", "typeArguments"],
	TSTypeReference: ["typeName", "typeArguments"],
	TSUndefinedKeyword: a[1],
	TSUnionType: a[36],
	TSUnknownKeyword: a[1],
	TSVoidKeyword: a[1],
	TupleTypeAnnotation: ["types", "elementTypes"],
	TupleTypeLabeledElement: [
		"label",
		"elementType",
		"variance"
	],
	TupleTypeSpreadElement: ["label", "typeAnnotation"],
	TypeAlias: a[24],
	TypeAnnotation: a[23],
	TypeCastExpression: a[4],
	TypeofTypeAnnotation: ["argument", "typeArguments"],
	TypeOperator: a[23],
	TypeParameter: [
		"bound",
		"default",
		"variance"
	],
	TypeParameterDeclaration: a[48],
	TypeParameterInstantiation: a[48],
	TypePredicate: a[49],
	UnaryExpression: a[6],
	UndefinedTypeAnnotation: a[1],
	UnionTypeAnnotation: a[36],
	UnknownTypeAnnotation: a[1],
	UpdateExpression: a[6],
	V8IntrinsicIdentifier: a[1],
	VariableDeclaration: ["declarations"],
	VariableDeclarator: a[27],
	Variance: a[1],
	VoidPattern: a[1],
	VoidTypeAnnotation: a[1],
	WhileStatement: a[25],
	WithStatement: ["object", "body"],
	YieldExpression: a[6]
});
function ep(e) {
	let t = new Set(e);
	return (r) => t.has(r?.type);
}
var k = ep;
function tp(e) {
	return e.extra?.raw ?? e.raw;
}
var pe = tp;
var ce = k([
	"Block",
	"CommentBlock",
	"MultiLine"
]);
var Nr = k([
	"AnyTypeAnnotation",
	"ThisTypeAnnotation",
	"NumberTypeAnnotation",
	"VoidTypeAnnotation",
	"BooleanTypeAnnotation",
	"BigIntTypeAnnotation",
	"SymbolTypeAnnotation",
	"StringTypeAnnotation",
	"NeverTypeAnnotation",
	"UndefinedTypeAnnotation",
	"UnknownTypeAnnotation",
	"EmptyTypeAnnotation",
	"MixedTypeAnnotation"
]);
var At = k([
	"Line",
	"CommentLine",
	"SingleLine",
	"HashbangComment",
	"HTMLOpen",
	"HTMLClose",
	"Hashbang",
	"InterpreterDirective"
]);
function ip(e, t) {
	let r = t.split(".");
	for (let n = r.length - 1; n >= 0; n--) {
		let s = r[n];
		if (n === 0) return e.type === "Identifier" && e.name === s;
		if (n === 1 && e.type === "MetaProperty" && e.property.type === "Identifier" && e.property.name === s) {
			e = e.meta;
			continue;
		}
		if (e.type === "MemberExpression" && !e.optional && !e.computed && e.property.type === "Identifier" && e.property.name === s) {
			e = e.object;
			continue;
		}
		return !1;
	}
}
function op(e, t) {
	return t.some((r) => ip(e, r));
}
var Pt = op;
function up({ type: e }) {
	return e.startsWith("TS") && e.endsWith("Keyword");
}
var jr = up;
function ap({ node: e, parent: t }) {
	return e?.type !== "EmptyStatement" ? !1 : t.type === "IfStatement" ? t.consequent === e || t.alternate === e : t.type === "DoWhileStatement" || t.type === "ForInStatement" || t.type === "ForOfStatement" || t.type === "ForStatement" || t.type === "LabeledStatement" || t.type === "WithStatement" || t.type === "WhileStatement" ? t.body === e : !1;
}
var kt = ap;
function Er(e, t) {
	return t(e) || zs(e, {
		getVisitorKeys: Mr,
		predicate: t
	});
}
function Xt(e) {
	return e.type === "AssignmentExpression" || e.type === "BinaryExpression" || e.type === "LogicalExpression" || e.type === "NGPipeExpression" || e.type === "ConditionalExpression" || M(e) || J(e) || e.type === "SequenceExpression" || e.type === "TaggedTemplateExpression" || e.type === "BindExpression" || e.type === "UpdateExpression" && !e.prefix || Ae(e) || e.type === "TSNonNullExpression" || e.type === "ChainExpression";
}
function mi(e) {
	return e.expressions ? e.expressions[0] : e.left ?? e.test ?? e.callee ?? e.object ?? e.tag ?? e.argument ?? e.expression;
}
function Rr(e) {
	if (e.expressions) return ["expressions", 0];
	if (e.left) return ["left"];
	if (e.test) return ["test"];
	if (e.object) return ["object"];
	if (e.callee) return ["callee"];
	if (e.tag) return ["tag"];
	if (e.argument) return ["argument"];
	if (e.expression) return ["expression"];
	throw new Error("Unexpected node has no left side.");
}
var Di = k([
	"ExportDefaultDeclaration",
	"DeclareExportDeclaration",
	"ExportNamedDeclaration",
	"ExportAllDeclaration",
	"DeclareExportAllDeclaration"
]), q = k(["ArrayExpression"]), se = k(["ObjectExpression"]);
function fi(e) {
	return e.type === "LogicalExpression" && e.operator === "??";
}
function Ce(e) {
	return e.type === "NumericLiteral" || e.type === "Literal" && typeof e.value == "number";
}
function yi(e) {
	return e.type === "BooleanLiteral" || e.type === "Literal" && typeof e.value == "boolean";
}
function Hn(e) {
	return e.type === "UnaryExpression" && (e.operator === "+" || e.operator === "-") && Ce(e.argument);
}
function V(e) {
	return !!(e && (e.type === "StringLiteral" || e.type === "Literal" && typeof e.value == "string"));
}
function Xn(e) {
	return e.type === "RegExpLiteral" || e.type === "Literal" && !!e.regex;
}
var Jr = k([
	"Literal",
	"BooleanLiteral",
	"BigIntLiteral",
	"DirectiveLiteral",
	"NullLiteral",
	"NumericLiteral",
	"RegExpLiteral",
	"StringLiteral"
]), pp = k([
	"Identifier",
	"ThisExpression",
	"Super",
	"PrivateName",
	"PrivateIdentifier"
]), Je = k([
	"ObjectTypeAnnotation",
	"TSTypeLiteral",
	"TSMappedType"
]), Ht = k(["FunctionExpression", "ArrowFunctionExpression"]);
function cp(e) {
	return e.type === "FunctionExpression" || e.type === "ArrowFunctionExpression" && e.body.type === "BlockStatement";
}
function Wn(e) {
	return M(e) && e.callee.type === "Identifier" && [
		"async",
		"inject",
		"fakeAsync",
		"waitForAsync"
	].includes(e.callee.name);
}
var H = k(["JSXElement", "JSXFragment"]);
function mt(e) {
	return e.method && e.kind === "init" || e.kind === "get" || e.kind === "set";
}
function Gr(e) {
	return (e.type === "ObjectTypeProperty" || e.type === "ObjectTypeInternalSlot") && !e.static && !e.method && e.kind !== "get" && e.kind !== "set" && e.value.type === "FunctionTypeAnnotation";
}
function Ei(e) {
	return (e.type === "TypeAnnotation" || e.type === "TSTypeAnnotation") && e.typeAnnotation.type === "FunctionTypeAnnotation" && !e.static && !bt(e, e.typeAnnotation);
}
var Te = k([
	"BinaryExpression",
	"LogicalExpression",
	"NGPipeExpression"
]);
function Tt(e) {
	return J(e) || e.type === "BindExpression" && !!e.object;
}
var lp = k([
	"TSThisType",
	"NullLiteralTypeAnnotation",
	"BooleanLiteralTypeAnnotation",
	"StringLiteralTypeAnnotation",
	"BigIntLiteralTypeAnnotation",
	"NumberLiteralTypeAnnotation",
	"TSLiteralType",
	"TSTemplateLiteralType"
]);
function Vt(e) {
	return jr(e) || Nr(e) || lp(e) || e.type === "GenericTypeAnnotation" && !e.typeParameters || e.type === "TSTypeReference" && !e.typeArguments;
}
function mp(e) {
	return e.type === "Identifier" && (e.name === "beforeEach" || e.name === "beforeAll" || e.name === "afterEach" || e.name === "afterAll");
}
var Dp = [
	"it",
	"it.only",
	"it.skip",
	"describe",
	"describe.only",
	"describe.skip",
	"test",
	"test.only",
	"test.skip",
	"test.fixme",
	"test.step",
	"test.describe",
	"test.describe.only",
	"test.describe.skip",
	"test.describe.fixme",
	"test.describe.parallel",
	"test.describe.parallel.only",
	"test.describe.serial",
	"test.describe.serial.only",
	"skip",
	"xit",
	"xdescribe",
	"xtest",
	"fit",
	"fdescribe",
	"ftest"
];
function fp(e) {
	return Pt(e, Dp);
}
function It(e, t) {
	if (e?.type !== "CallExpression" || e.optional) return !1;
	let r = le(e);
	if (r.length === 1) {
		if (Wn(e) && It(t)) return Ht(r[0]);
		if (mp(e.callee)) return Wn(r[0]);
	} else if ((r.length === 2 || r.length === 3) && (r[0].type === "TemplateLiteral" || V(r[0])) && fp(e.callee)) return r[2] && !Ce(r[2]) ? !1 : (r.length === 2 ? Ht(r[1]) : cp(r[1]) && K(r[1]).length <= 1) || Wn(r[1]);
	return !1;
}
var Fi = (e) => (t) => (t?.type === "ChainExpression" && (t = t.expression), e(t)), M = Fi(k(["CallExpression", "OptionalCallExpression"])), J = Fi(k(["MemberExpression", "OptionalMemberExpression"]));
function Vn(e, t = 5) {
	return di(e, t) <= t;
}
function di(e, t) {
	let r = 0;
	for (let n in e) {
		let s = e[n];
		if (Lr(s) && typeof s.type == "string" && (r++, r += di(s, t - r)), r > t) return r;
	}
	return r;
}
var yp = .25;
function Fr(e, t) {
	let { printWidth: r } = t;
	if (T(e)) return !1;
	let n = r * yp;
	if (e.type === "ThisExpression" || e.type === "Identifier" && e.name.length <= n || Hn(e) && !T(e.argument)) return !0;
	let s = e.type === "Literal" && "regex" in e && e.regex.pattern || e.type === "RegExpLiteral" && e.pattern;
	return s ? s.length <= n : V(e) ? ut(pe(e), t).length <= n : e.type === "TemplateLiteral" ? e.expressions.length === 0 && e.quasis[0].value.raw.length <= n && !e.quasis[0].value.raw.includes(`
`) : e.type === "UnaryExpression" ? Fr(e.argument, { printWidth: r }) : e.type === "CallExpression" && e.arguments.length === 0 && e.callee.type === "Identifier" ? e.callee.name.length <= n - 2 : Jr(e);
}
function Ee(e, t) {
	return H(t) ? Ot(t) : T(t, x.Leading, (r) => Z(e, I(r)));
}
function ci(e) {
	return e.quasis.some((t) => t.value.raw.includes(`
`));
}
function Wr(e, t) {
	return (e.type === "TemplateLiteral" && ci(e) || e.type === "TaggedTemplateExpression" && ci(e.quasi)) && !Z(t, w(e), { backwards: !0 });
}
function qr(e) {
	if (!T(e)) return !1;
	let t = N(0, et(e, x.Dangling), -1);
	return t && !ce(t);
}
function Ci(e) {
	if (e.length <= 1) return !1;
	let t = 0;
	for (let r of e) if (Ht(r)) {
		if (t += 1, t > 1) return !0;
	} else if (M(r)) {
		for (let n of le(r)) if (Ht(n)) return !0;
	}
	return !1;
}
function Ur(e) {
	let { node: t, parent: r, key: n } = e;
	return n === "callee" && M(t) && M(r) && r.arguments.length > 0 && t.arguments.length > r.arguments.length;
}
var Ep = new Set([
	"!",
	"-",
	"+",
	"~"
]);
function Re(e, t = 2) {
	if (t <= 0) return !1;
	if (e.type === "ChainExpression" || e.type === "TSNonNullExpression") return Re(e.expression, t);
	let r = (n) => Re(n, t - 1);
	if (Xn(e)) return ot(e.pattern ?? e.regex.pattern) <= 5;
	if (Jr(e) || pp(e) || e.type === "ArgumentPlaceholder") return !0;
	if (e.type === "TemplateLiteral") return e.quasis.every((n) => !n.value.raw.includes(`
`)) && e.expressions.every(r);
	if (se(e)) return e.properties.every((n) => !n.computed && (n.shorthand || n.value && r(n.value)));
	if (q(e)) return e.elements.every((n) => n === null || r(n));
	if (Dt(e)) {
		if (e.type === "ImportExpression" || Re(e.callee, t)) {
			let n = le(e);
			return n.length <= t && n.every(r);
		}
		return !1;
	}
	return J(e) ? Re(e.object, t) && Re(e.property, t) : e.type === "UnaryExpression" && Ep.has(e.operator) || e.type === "UpdateExpression" ? Re(e.argument, t) : !1;
}
function ie(e, t = "es5") {
	return e.trailingComma === "es5" && t === "es5" || e.trailingComma === "all" && (t === "all" || t === "es5");
}
function ye(e, t) {
	switch (e.type) {
		case "BinaryExpression":
		case "LogicalExpression":
		case "AssignmentExpression":
		case "NGPipeExpression": return ye(e.left, t);
		case "MemberExpression":
		case "OptionalMemberExpression": return ye(e.object, t);
		case "TaggedTemplateExpression": return e.tag.type === "FunctionExpression" ? !1 : ye(e.tag, t);
		case "CallExpression":
		case "OptionalCallExpression": return e.callee.type === "FunctionExpression" ? !1 : ye(e.callee, t);
		case "ConditionalExpression": return ye(e.test, t);
		case "UpdateExpression": return !e.prefix && ye(e.argument, t);
		case "BindExpression": return e.object && ye(e.object, t);
		case "SequenceExpression": return ye(e.expressions[0], t);
		case "ChainExpression":
		case "TSSatisfiesExpression":
		case "TSAsExpression":
		case "TSNonNullExpression":
		case "AsExpression":
		case "AsConstExpression":
		case "SatisfiesExpression": return ye(e.expression, t);
		default: return t(e);
	}
}
var li = {
	"==": !0,
	"!=": !0,
	"===": !0,
	"!==": !0
}, vr = {
	"*": !0,
	"/": !0,
	"%": !0
}, Yn = {
	">>": !0,
	">>>": !0,
	"<<": !0
};
function dr(e, t) {
	return !(yr(t) !== yr(e) || e === "**" || li[e] && li[t] || t === "%" && vr[e] || e === "%" && vr[t] || t !== e && vr[t] && vr[e] || Yn[e] && Yn[t]);
}
var Fp = new Map([
	["|>"],
	["??"],
	["||"],
	["&&"],
	["|"],
	["^"],
	["&"],
	[
		"==",
		"===",
		"!=",
		"!=="
	],
	[
		"<",
		">",
		"<=",
		">=",
		"in",
		"instanceof"
	],
	[
		">>",
		"<<",
		">>>"
	],
	["+", "-"],
	[
		"*",
		"/",
		"%"
	],
	["**"]
].flatMap((e, t) => e.map((r) => [r, t])));
function yr(e) {
	return Fp.get(e);
}
function Ai(e) {
	return !!Yn[e] || e === "|" || e === "^" || e === "&";
}
function Ti(e) {
	if (e.rest) return !0;
	return N(0, K(e), -1)?.type === "RestElement";
}
var qn = /* @__PURE__ */ new WeakMap();
function K(e) {
	if (qn.has(e)) return qn.get(e);
	let t = [];
	return e.this && t.push(e.this), t.push(...e.params), e.rest && t.push(e.rest), qn.set(e, t), t;
}
function xi(e, t) {
	let { node: r } = e, n = 0, s = () => t(e, n++);
	r.this && e.call(s, "this"), e.each(s, "params"), r.rest && e.call(s, "rest");
}
var Un = /* @__PURE__ */ new WeakMap();
function le(e) {
	if (Un.has(e)) return Un.get(e);
	if (e.type === "ChainExpression") return le(e.expression);
	let t;
	return e.type === "ImportExpression" || e.type === "TSImportType" ? (t = [e.source], e.options && t.push(e.options)) : e.type === "TSExternalModuleReference" ? t = [e.expression] : t = e.arguments, Un.set(e, t), t;
}
function $t(e, t) {
	let { node: r } = e;
	if (r.type === "ChainExpression") return e.call(() => $t(e, t), "expression");
	r.type === "ImportExpression" || r.type === "TSImportType" ? (e.call(() => t(e, 0), "source"), r.options && e.call(() => t(e, 1), "options")) : r.type === "TSExternalModuleReference" ? e.call(() => t(e, 0), "expression") : e.each(t, "arguments");
}
function $n(e, t) {
	let r = [];
	if (e.type === "ChainExpression" && (e = e.expression, r.push("expression")), e.type === "ImportExpression" || e.type === "TSImportType") {
		if (t === 0 || t === (e.options ? -2 : -1)) return [...r, "source"];
		if (e.options && (t === 1 || t === -1)) return [...r, "options"];
		throw new RangeError("Invalid argument index");
	} else if (e.type === "TSExternalModuleReference") {
		if (t === 0 || t === -1) return [...r, "expression"];
	} else if (t < 0 && (t = e.arguments.length + t), t >= 0 && t < e.arguments.length) return [
		...r,
		"arguments",
		t
	];
	throw new RangeError("Invalid argument index");
}
function Lt(e) {
	return e.value.trim() === "prettier-ignore" && !e.unignore;
}
function Ot(e) {
	return e?.prettierIgnore || T(e, x.PrettierIgnore);
}
var x = {
	Leading: 2,
	Trailing: 4,
	Dangling: 8,
	Block: 16,
	Line: 32,
	PrettierIgnore: 64,
	First: 128,
	Last: 256
}, gi = (e, t) => {
	if (typeof e == "function" && (t = e, e = 0), e || t) return (r, n, s) => !(e & x.Leading && !r.leading || e & x.Trailing && !r.trailing || e & x.Dangling && (r.leading || r.trailing) || e & x.Block && !ce(r) || e & x.Line && !At(r) || e & x.First && n !== 0 || e & x.Last && n !== s.length - 1 || e & x.PrettierIgnore && !Lt(r) || t && !t(r));
};
function T(e, t, r) {
	if (!R(e?.comments)) return !1;
	let n = gi(t, r);
	return n ? e.comments.some(n) : !0;
}
function et(e, t, r) {
	if (!Array.isArray(e?.comments)) return [];
	let n = gi(t, r);
	return n ? e.comments.filter(n) : e.comments;
}
var oe = (e, { originalText: t }) => Yt(t, I(e));
function Dt(e) {
	return M(e) || e.type === "NewExpression" || e.type === "ImportExpression";
}
function Oe(e) {
	return e && (e.type === "ObjectProperty" || e.type === "Property" && !mt(e));
}
var Ae = k([
	"TSAsExpression",
	"TSSatisfiesExpression",
	"AsExpression",
	"AsConstExpression",
	"SatisfiesExpression"
]), Se = k(["TSUnionType", "UnionTypeAnnotation"]), xt = k(["TSIntersectionType", "IntersectionTypeAnnotation"]), Ue = k(["TSConditionalType", "ConditionalTypeAnnotation"]), hi = (e) => e?.type === "TSAsExpression" && e.typeAnnotation.type === "TSTypeReference" && e.typeAnnotation.typeName.type === "Identifier" && e.typeAnnotation.typeName.name === "const", Cr = k(["TSTypeAliasDeclaration", "TypeAlias"]);
function Yr({ key: e, parent: t }) {
	return !(e === "types" && Se(t) || e === "types" && xt(t));
}
var dp = new Set([
	"range",
	"raw",
	"comments",
	"leadingComments",
	"trailingComments",
	"innerComments",
	"extra",
	"start",
	"end",
	"loc",
	"flags",
	"errors",
	"tokens"
]), Kt = (e) => {
	for (let t of e.quasis) delete t.value;
};
function Si(e, t, r) {
	if (e.type === "Program" && delete t.sourceType, (e.type === "BigIntLiteral" || e.type === "Literal") && e.bigint && (t.bigint = e.bigint.toLowerCase()), e.type === "EmptyStatement" && !kt({
		node: e,
		parent: r
	}) || e.type === "JSXText" || e.type === "JSXExpressionContainer" && (e.expression.type === "Literal" || e.expression.type === "StringLiteral") && e.expression.value === " ") return null;
	if ((e.type === "Property" || e.type === "ObjectProperty" || e.type === "MethodDefinition" || e.type === "ClassProperty" || e.type === "ClassMethod" || e.type === "PropertyDefinition" || e.type === "TSDeclareMethod" || e.type === "TSPropertySignature" || e.type === "ObjectTypeProperty" || e.type === "ImportAttribute") && e.key && !e.computed) {
		let { key: s } = e;
		V(s) || Ce(s) ? t.key = String(s.value) : s.type === "Identifier" && (t.key = s.name);
	}
	if (e.type === "JSXElement" && e.openingElement.name.name === "style" && e.openingElement.attributes.some((s) => s.type === "JSXAttribute" && s.name.name === "jsx")) for (let { type: s, expression: i } of t.children) s === "JSXExpressionContainer" && i.type === "TemplateLiteral" && Kt(i);
	e.type === "JSXAttribute" && e.name.name === "css" && e.value.type === "JSXExpressionContainer" && e.value.expression.type === "TemplateLiteral" && Kt(t.value.expression), e.type === "JSXAttribute" && e.value?.type === "Literal" && /["']|&quot;|&apos;/u.test(e.value.value) && (t.value.value = W(0, e.value.value, /["']|&quot;|&apos;/gu, "\""));
	let n = e.expression || e.callee;
	if (e.type === "Decorator" && n.type === "CallExpression" && n.callee.name === "Component" && n.arguments.length === 1) {
		let s = e.expression.arguments[0].properties;
		for (let [i, o] of t.expression.arguments[0].properties.entries()) switch (s[i].key.name) {
			case "styles":
				q(o.value) && Kt(o.value.elements[0]);
				break;
			case "template":
				o.value.type === "TemplateLiteral" && Kt(o.value);
				break;
		}
	}
	e.type === "TaggedTemplateExpression" && (e.tag.type === "MemberExpression" || e.tag.type === "Identifier" && (e.tag.name === "gql" || e.tag.name === "graphql" || e.tag.name === "css" || e.tag.name === "md" || e.tag.name === "markdown" || e.tag.name === "html") || e.tag.type === "CallExpression") && Kt(t.quasi), e.type === "TemplateLiteral" && Kt(t), e.type === "ChainExpression" && e.expression.type === "TSNonNullExpression" && (t.type = "TSNonNullExpression", t.expression.type = "ChainExpression");
}
Si.ignoredProperties = dp;
var Bi = Si;
var Cp = k([
	"File",
	"TemplateElement",
	"TSEmptyBodyFunctionExpression",
	"ChainExpression"
]), Ap = (e, [t]) => t?.type === "ComponentParameter" && t.shorthand && t.name === e && t.local !== t.name || t?.type === "MatchObjectPatternProperty" && t.shorthand && t.key === e && t.value !== t.key || t?.type === "ObjectProperty" && t.shorthand && t.key === e && t.value !== t.key || t?.type === "Property" && t.shorthand && t.key === e && !mt(t) && t.value !== t.key, Tp = (e, [t]) => !!(e.type === "FunctionExpression" && t.type === "MethodDefinition" && t.value === e && K(e).length === 0 && !e.returnType && !R(e.typeParameters) && e.body), bi = (e, [t]) => t?.typeAnnotation === e && hi(t), xp = (e, [t, ...r]) => bi(e, [t]) || t?.typeName === e && bi(t, r);
function gp(e, t) {
	return Cp(e) || Ap(e, t) || Tp(e, t) ? !1 : e.type === "EmptyStatement" ? kt({
		node: e,
		parent: t[0]
	}) : !(xp(e, t) || e.type === "TSTypeAnnotation" && t[0].type === "TSPropertySignature");
}
var Pi = gp;
function hp(e) {
	let t = e.type || e.kind || "(unknown type)", r = String(e.name || e.id && (typeof e.id == "object" ? e.id.name : e.id) || e.key && (typeof e.key == "object" ? e.key.name : e.key) || e.value && (typeof e.value == "object" ? "" : String(e.value)) || e.operator || "");
	return r.length > 20 && (r = r.slice(0, 19) + "…"), t + (r ? " " + r : "");
}
function Kn(e, t) {
	(e.comments ?? (e.comments = [])).push(t), t.printed = !1, t.nodeDescription = hp(e);
}
function te(e, t) {
	t.leading = !0, t.trailing = !1, Kn(e, t);
}
function we(e, t, r) {
	t.leading = !1, t.trailing = !1, r && (t.marker = r), Kn(e, t);
}
function $(e, t) {
	t.leading = !1, t.trailing = !0, Kn(e, t);
}
function Sp(e, t) {
	let r = null, n = t;
	for (; n !== r;) r = n, n = ze(e, n), n = qt(e, n), n = Ut(e, n), n = Ze(e, n);
	return n;
}
var at = Sp;
function Bp(e, t) {
	let r = at(e, t);
	return r === !1 ? "" : e.charAt(r);
}
var _e = Bp;
function bp(e, t, r) {
	for (let n = t; n < r; ++n) if (e.charAt(n) === `
`) return !0;
	return !1;
}
var ue = bp;
var Qn = /* @__PURE__ */ new WeakMap();
function Pp(e) {
	return Qn.has(e) || Qn.set(e, ce(e) && e.value[0] === "*" && /@(?:type|satisfies)\b/u.test(e.value)), Qn.get(e);
}
var Hr = Pp;
var Zn = (e, t) => At(e) || !ue(t, w(e), I(e));
function kp(e) {
	return [
		ji,
		Ii,
		_i,
		Jp,
		wp,
		es,
		ts,
		ki,
		Li,
		Yp,
		Wp,
		qp,
		ns,
		Ni,
		Hp,
		Oi,
		Mi,
		rs,
		_p,
		Zp,
		vi,
		ss
	].some((t) => t(e));
}
function Ip(e) {
	return [
		Op,
		_i,
		Ii,
		Ni,
		es,
		ts,
		ki,
		Li,
		Mi,
		Gp,
		Up,
		ns,
		$p,
		rs,
		Qp,
		zp,
		ec,
		vi,
		rc,
		tc,
		ss
	].some((t) => t(e));
}
function Lp(e) {
	return [
		ji,
		es,
		ts,
		Rp,
		Oi,
		ns,
		vp,
		jp,
		rs,
		Kp,
		ss
	].some((t) => t(e));
}
function wt(e, t) {
	let r = (e.body || e.properties).find(({ type: n }) => n !== "EmptyStatement");
	r ? te(r, t) : we(e, t);
}
function zn(e, t) {
	e.type === "BlockStatement" ? wt(e, t) : te(e, t);
}
function Op({ comment: e, followingNode: t }) {
	return t && Hr(e) ? (te(t, e), !0) : !1;
}
function es({ comment: e, precedingNode: t, enclosingNode: r, followingNode: n, text: s }) {
	if (r?.type !== "IfStatement" || !n) return !1;
	if (_e(s, I(e)) === ")") return $(t, e), !0;
	if (n.type === "BlockStatement" && n === r.consequent && w(e) >= I(t) && I(e) <= w(n)) return te(n, e), !0;
	if (t === r.consequent && n === r.alternate) {
		let o = at(s, I(r.consequent));
		if (n.type === "BlockStatement" && w(e) >= o && I(e) <= w(n)) return te(n, e), !0;
		if (w(e) < o || r.alternate.type === "BlockStatement") return t.type === "BlockStatement" ? ($(t, e), !0) : Zn(e, s) && !ue(s, w(t), w(e)) ? ($(t, e), !0) : (we(r, e), !0);
	}
	return n.type === "BlockStatement" ? (wt(n, e), !0) : n.type === "IfStatement" ? (zn(n.consequent, e), !0) : r.consequent === n ? (te(n, e), !0) : !1;
}
function ts({ comment: e, precedingNode: t, enclosingNode: r, followingNode: n, text: s }) {
	return r?.type !== "WhileStatement" || !n ? !1 : _e(s, I(e)) === ")" ? ($(t, e), !0) : n.type === "BlockStatement" ? (wt(n, e), !0) : r.body === n ? (te(n, e), !0) : !1;
}
function ki({ comment: e, precedingNode: t, enclosingNode: r, followingNode: n }) {
	return r?.type !== "TryStatement" && r?.type !== "CatchClause" || !n ? !1 : r.type === "CatchClause" && t ? ($(t, e), !0) : n.type === "BlockStatement" ? (wt(n, e), !0) : n.type === "TryStatement" ? (zn(n.finalizer, e), !0) : n.type === "CatchClause" ? (zn(n.body, e), !0) : !1;
}
function wp({ comment: e, enclosingNode: t, followingNode: r }) {
	return J(t) && r?.type === "Identifier" ? (te(t, e), !0) : !1;
}
function _p({ comment: e, enclosingNode: t, followingNode: r, options: n }) {
	return !n.experimentalTernaries || !(t?.type === "ConditionalExpression" || Ue(t)) ? !1 : r?.type === "ConditionalExpression" || Ue(r) ? (we(t, e), !0) : !1;
}
function Ii({ comment: e, precedingNode: t, enclosingNode: r, followingNode: n, text: s, options: i }) {
	let o = t && !ue(s, I(t), w(e));
	return (!t || !o) && (r?.type === "ConditionalExpression" || Ue(r)) && n ? i.experimentalTernaries && r.alternate === n && !(ce(e) && !ue(i.originalText, w(e), I(e))) ? (we(r, e), !0) : (te(n, e), !0) : !1;
}
var Mp = k([
	"ClassDeclaration",
	"ClassExpression",
	"DeclareClass",
	"DeclareInterface",
	"InterfaceDeclaration",
	"TSInterfaceDeclaration"
]);
function Li({ comment: e, precedingNode: t, enclosingNode: r, followingNode: n }) {
	if (Mp(r)) {
		if (R(r.decorators) && n?.type !== "Decorator") return $(N(0, r.decorators, -1), e), !0;
		if (r.body && n === r.body) return wt(r.body, e), !0;
		if (n) {
			if (r.superClass && n === r.superClass && t && (t === r.id || t === r.typeParameters)) return $(t, e), !0;
			for (let s of [
				"implements",
				"extends",
				"mixins"
			]) if (r[s] && n === r[s][0]) return t && (t === r.id || t === r.typeParameters || t === r.superClass) ? $(t, e) : we(r, e, s), !0;
		}
	}
	return !1;
}
var Np = k([
	"ClassMethod",
	"ClassProperty",
	"PropertyDefinition",
	"TSAbstractPropertyDefinition",
	"TSAbstractMethodDefinition",
	"TSDeclareMethod",
	"MethodDefinition",
	"ClassAccessorProperty",
	"AccessorProperty",
	"TSAbstractAccessorProperty",
	"TSParameterProperty"
]);
function Oi({ comment: e, precedingNode: t, enclosingNode: r, text: n }) {
	return r && t && _e(n, I(e)) === "(" && (r.type === "Property" || r.type === "TSDeclareMethod" || r.type === "TSAbstractMethodDefinition") && t.type === "Identifier" && r.key === t && _e(n, I(t)) !== ":" ? ($(t, e), !0) : t?.type === "Decorator" && Np(r) && (At(e) || e.placement === "ownLine") ? ($(t, e), !0) : !1;
}
var wi = k([
	"FunctionDeclaration",
	"FunctionExpression",
	"ClassMethod",
	"MethodDefinition",
	"ObjectMethod"
]);
function jp({ comment: e, precedingNode: t, enclosingNode: r, text: n }) {
	return _e(n, I(e)) !== "(" ? !1 : t && wi(r) ? ($(t, e), !0) : !1;
}
function vp({ comment: e, enclosingNode: t, text: r }) {
	if (t?.type !== "ArrowFunctionExpression") return !1;
	let n = at(r, I(e));
	return n !== !1 && r.slice(n, n + 2) === "=>" ? (we(t, e), !0) : !1;
}
function Rp({ comment: e, enclosingNode: t, text: r }) {
	return _e(r, I(e)) !== ")" ? !1 : t && (Ri(t) && K(t).length === 0 || Dt(t) && le(t).length === 0) ? (we(t, e), !0) : (t?.type === "MethodDefinition" || t?.type === "TSAbstractMethodDefinition") && K(t.value).length === 0 ? (we(t.value, e), !0) : !1;
}
function Jp({ comment: e, precedingNode: t, enclosingNode: r, followingNode: n, text: s }) {
	return t?.type === "ComponentTypeParameter" && (r?.type === "DeclareComponent" || r?.type === "ComponentTypeAnnotation") && n?.type !== "ComponentTypeParameter" ? ($(t, e), !0) : (t?.type === "ComponentParameter" || t?.type === "RestElement") && r?.type === "ComponentDeclaration" && _e(s, I(e)) === ")" ? ($(t, e), !0) : !1;
}
function _i({ comment: e, precedingNode: t, enclosingNode: r, followingNode: n, text: s }) {
	return t?.type === "FunctionTypeParam" && r?.type === "FunctionTypeAnnotation" && n?.type !== "FunctionTypeParam" ? ($(t, e), !0) : (t?.type === "Identifier" || t?.type === "AssignmentPattern" || t?.type === "ObjectPattern" || t?.type === "ArrayPattern" || t?.type === "RestElement" || t?.type === "TSParameterProperty") && Ri(r) && _e(s, I(e)) === ")" ? ($(t, e), !0) : !ce(e) && n?.type === "BlockStatement" && wi(r) && (r.type === "MethodDefinition" ? r.value.body : r.body) === n && at(s, I(e)) === w(n) ? (wt(n, e), !0) : !1;
}
function Mi({ comment: e, enclosingNode: t }) {
	return t?.type === "LabeledStatement" ? (te(t, e), !0) : !1;
}
function rs({ comment: e, enclosingNode: t }) {
	return (t?.type === "ContinueStatement" || t?.type === "BreakStatement") && !t.label ? ($(t, e), !0) : !1;
}
function Gp({ comment: e, precedingNode: t, enclosingNode: r }) {
	return M(r) && t && r.callee === t && r.arguments.length > 0 ? (te(r.arguments[0], e), !0) : !1;
}
function Wp({ comment: e, precedingNode: t, enclosingNode: r, followingNode: n }) {
	return Se(r) ? (Lt(e) && (n.prettierIgnore = !0, e.unignore = !0), t ? ($(t, e), !0) : !1) : (Se(n) && Lt(e) && (n.types[0].prettierIgnore = !0, e.unignore = !0), !1);
}
function qp({ comment: e, precedingNode: t, enclosingNode: r, followingNode: n }) {
	return r && r.type === "MatchOrPattern" ? (Lt(e) && (n.prettierIgnore = !0, e.unignore = !0), t ? ($(t, e), !0) : !1) : (n && n.type === "MatchOrPattern" && Lt(e) && (n.types[0].prettierIgnore = !0, e.unignore = !0), !1);
}
function Up({ comment: e, enclosingNode: t }) {
	return Oe(t) ? (te(t, e), !0) : !1;
}
function ns({ comment: e, enclosingNode: t, ast: r, isLastComment: n }) {
	return r?.body?.length === 0 ? (n ? we(r, e) : te(r, e), !0) : t?.type === "Program" && t.body.length === 0 && !R(t.directives) ? (n ? we(t, e) : te(t, e), !0) : !1;
}
function Yp({ comment: e, enclosingNode: t, followingNode: r }) {
	return (t?.type === "ForInStatement" || t?.type === "ForOfStatement") && r !== t.body ? (te(t, e), !0) : !1;
}
function Ni({ comment: e, precedingNode: t, enclosingNode: r, text: n }) {
	if (r?.type === "ImportSpecifier" || r?.type === "ExportSpecifier") return te(r, e), !0;
	let s = t?.type === "ImportSpecifier" && r?.type === "ImportDeclaration", i = t?.type === "ExportSpecifier" && r?.type === "ExportNamedDeclaration";
	return (s || i) && Z(n, I(e)) ? ($(t, e), !0) : !1;
}
function Hp({ comment: e, enclosingNode: t }) {
	return t?.type === "AssignmentPattern" ? (te(t, e), !0) : !1;
}
var Xp = k([
	"VariableDeclarator",
	"AssignmentExpression",
	"TypeAlias",
	"TSTypeAliasDeclaration"
]), Vp = k([
	"ObjectExpression",
	"ArrayExpression",
	"TemplateLiteral",
	"TaggedTemplateExpression",
	"ObjectTypeAnnotation",
	"TSTypeLiteral"
]);
function $p({ comment: e, enclosingNode: t, followingNode: r }) {
	return Xp(t) && r && (Vp(r) || ce(e)) ? (te(r, e), !0) : !1;
}
function Kp({ comment: e, enclosingNode: t, precedingNode: r, followingNode: n, text: s }) {
	return !n && (t?.type === "TSMethodSignature" || t?.type === "TSDeclareFunction" || t?.type === "TSAbstractMethodDefinition") && (!r || r !== t.returnType) && _e(s, I(e)) === ";" ? ($(t, e), !0) : !1;
}
function ji({ comment: e, enclosingNode: t, followingNode: r }) {
	if (Lt(e) && t?.type === "TSMappedType" && r === t.key) return t.prettierIgnore = !0, e.unignore = !0, !0;
}
function vi({ comment: e, precedingNode: t, enclosingNode: r }) {
	if (r?.type === "TSMappedType" && !t) return we(r, e), !0;
}
function Qp({ comment: e, enclosingNode: t, followingNode: r }) {
	return !t || t.type !== "SwitchCase" || t.test || !r || r !== t.consequent[0] ? !1 : (r.type === "BlockStatement" && At(e) ? wt(r, e) : we(t, e), !0);
}
function zp({ comment: e, precedingNode: t, enclosingNode: r, followingNode: n }) {
	return Se(t) && ((r.type === "TSArrayType" || r.type === "ArrayTypeAnnotation") && !n || xt(r)) ? ($(N(0, t.types, -1), e), !0) : !1;
}
function Zp({ comment: e, enclosingNode: t, precedingNode: r, followingNode: n }) {
	if ((t?.type === "ObjectPattern" || t?.type === "ArrayPattern") && n?.type === "TSTypeAnnotation") return r ? $(r, e) : we(t, e), !0;
}
function ec({ comment: e, precedingNode: t, enclosingNode: r, followingNode: n, text: s }) {
	return !n && r?.type === "UnaryExpression" && (t?.type === "LogicalExpression" || t?.type === "BinaryExpression") && ue(s, w(r.argument), w(t.right)) && Zn(e, s) && !ue(s, w(t.right), w(e)) ? ($(t.right, e), !0) : !1;
}
function tc({ enclosingNode: e, followingNode: t, comment: r }) {
	if (e && (e.type === "TSPropertySignature" || e.type === "ObjectTypeProperty") && (Se(t) || xt(t))) return te(t, r), !0;
}
function ss({ enclosingNode: e, precedingNode: t, followingNode: r, comment: n, text: s }) {
	if (Ae(e) && t === e.expression && !Zn(n, s)) return r ? te(r, n) : $(e, n), !0;
}
function rc({ comment: e, enclosingNode: t, followingNode: r, precedingNode: n }) {
	return t && r && n && t.type === "ArrowFunctionExpression" && t.returnType === n && (n.type === "TSTypeAnnotation" || n.type === "TypeAnnotation") ? (te(r, e), !0) : !1;
}
var Ri = k([
	"ArrowFunctionExpression",
	"FunctionExpression",
	"FunctionDeclaration",
	"ObjectMethod",
	"ClassMethod",
	"TSDeclareFunction",
	"TSCallSignatureDeclaration",
	"TSConstructSignatureDeclaration",
	"TSMethodSignature",
	"TSConstructorType",
	"TSFunctionType",
	"TSDeclareMethod"
]), Ji = {
	endOfLine: Ip,
	ownLine: kp,
	remaining: Lp
};
function sc(e, { parser: t }) {
	if (t === "flow" || t === "hermes" || t === "babel-flow") return e = W(0, e, /[\s(]/gu, ""), e === "" || e === "/*" || e === "/*::";
}
var Gi = sc;
var ic = k([
	"ClassDeclaration",
	"ClassExpression",
	"DeclareClass",
	"DeclareInterface",
	"InterfaceDeclaration",
	"TSInterfaceDeclaration"
]);
function oc(e) {
	let { key: t, parent: r } = e;
	if (t === "types" && Se(r) || t === "argument" && r.type === "JSXSpreadAttribute" || t === "expression" && r.type === "JSXSpreadChild" || t === "superClass" && (r.type === "ClassDeclaration" || r.type === "ClassExpression") || (t === "id" || t === "typeParameters") && ic(r) || t === "patterns" && r.type === "MatchOrPattern") return !0;
	let { node: n } = e;
	return Ot(n) ? !1 : Se(n) ? Yr(e) : !!H(n);
}
var Wi = oc;
var Ye = "string", Be = "array", tt = "cursor", He = "indent", Xe = "align", rt = "trim", Fe = "group", Me = "fill", be = "if-break", Ve = "indent-if-break", $e = "line-suffix", Ge = "line-suffix-boundary", me = "line", Pe = "label", Ne = "break-parent", Xr = new Set([
	tt,
	He,
	Xe,
	rt,
	Fe,
	Me,
	be,
	Ve,
	$e,
	Ge,
	me,
	Pe,
	Ne
]);
function uc(e) {
	if (typeof e == "string") return Ye;
	if (Array.isArray(e)) return Be;
	if (!e) return;
	let { type: t } = e;
	if (Xr.has(t)) return t;
}
var We = uc;
var ac = (e) => new Intl.ListFormat("en-US", { type: "disjunction" }).format(e);
function pc(e) {
	let t = e === null ? "null" : typeof e;
	if (t !== "string" && t !== "object") return `Unexpected doc '${t}', 
Expected it to be 'string' or 'object'.`;
	if (We(e)) throw new Error("doc is valid.");
	let r = Object.prototype.toString.call(e);
	if (r !== "[object Object]") return `Unexpected doc '${r}'.`;
	let n = ac([...Xr].map((s) => `'${s}'`));
	return `Unexpected doc.type '${e.type}'.
Expected it to be ${n}.`;
}
var is = class extends Error {
	name = "InvalidDocError";
	constructor(t) {
		super(pc(t)), this.doc = t;
	}
}, gt = is;
var qi = {};
function cc(e, t, r, n) {
	let s = [e];
	for (; s.length > 0;) {
		let i = s.pop();
		if (i === qi) {
			r(s.pop());
			continue;
		}
		r && s.push(i, qi);
		let o = We(i);
		if (!o) throw new gt(i);
		if (t?.(i) !== !1) switch (o) {
			case Be:
			case Me: {
				let u = o === Be ? i : i.parts;
				for (let c = u.length - 1; c >= 0; --c) s.push(u[c]);
				break;
			}
			case be:
				s.push(i.flatContents, i.breakContents);
				break;
			case Fe:
				if (n && i.expandedStates) for (let u = i.expandedStates.length, p = u - 1; p >= 0; --p) s.push(i.expandedStates[p]);
				else s.push(i.contents);
				break;
			case Xe:
			case He:
			case Ve:
			case Pe:
			case $e:
				s.push(i.contents);
				break;
			case Ye:
			case tt:
			case rt:
			case Ge:
			case me:
			case Ne: break;
			default: throw new gt(i);
		}
	}
}
var Vr = cc;
function ft(e, t) {
	if (typeof e == "string") return t(e);
	let r = /* @__PURE__ */ new Map();
	return n(e);
	function n(i) {
		if (r.has(i)) return r.get(i);
		let o = s(i);
		return r.set(i, o), o;
	}
	function s(i) {
		switch (We(i)) {
			case Be: return t(i.map(n));
			case Me: return t({
				...i,
				parts: i.parts.map(n)
			});
			case be: return t({
				...i,
				breakContents: n(i.breakContents),
				flatContents: n(i.flatContents)
			});
			case Fe: {
				let { expandedStates: o, contents: u } = i;
				return o ? (o = o.map(n), u = o[0]) : u = n(u), t({
					...i,
					contents: u,
					expandedStates: o
				});
			}
			case Xe:
			case He:
			case Ve:
			case Pe:
			case $e: return t({
				...i,
				contents: n(i.contents)
			});
			case Ye:
			case tt:
			case rt:
			case Ge:
			case me:
			case Ne: return t(i);
			default: throw new gt(i);
		}
	}
}
function Yi(e, t, r) {
	let n = r, s = !1;
	function i(o) {
		if (s) return !1;
		let u = t(o);
		u !== void 0 && (s = !0, n = u);
	}
	return Vr(e, i), n;
}
function lc(e) {
	if (e.type === Fe && e.break || e.type === me && e.hard || e.type === Ne) return !0;
}
function ne(e) {
	return Yi(e, lc, !1);
}
function Ui(e) {
	if (e.length > 0) {
		let t = N(0, e, -1);
		!t.expandedStates && !t.break && (t.break = "propagated");
	}
	return null;
}
function Hi(e) {
	let t = /* @__PURE__ */ new Set(), r = [];
	function n(i) {
		if (i.type === Ne && Ui(r), i.type === Fe) {
			if (r.push(i), t.has(i)) return !1;
			t.add(i);
		}
	}
	function s(i) {
		i.type === Fe && r.pop().break && Ui(r);
	}
	Vr(e, n, s, !0);
}
function mc(e) {
	return e.type === me && !e.hard ? e.soft ? "" : " " : e.type === be ? e.flatContents : e;
}
function _t(e) {
	return ft(e, mc);
}
function Dc(e) {
	switch (We(e)) {
		case Me:
			if (e.parts.every((t) => t === "")) return "";
			break;
		case Fe:
			if (!e.contents && !e.id && !e.break && !e.expandedStates) return "";
			if (e.contents.type === Fe && e.contents.id === e.id && e.contents.break === e.break && e.contents.expandedStates === e.expandedStates) return e.contents;
			break;
		case Xe:
		case He:
		case Ve:
		case $e:
			if (!e.contents) return "";
			break;
		case be:
			if (!e.flatContents && !e.breakContents) return "";
			break;
		case Be: {
			let t = [];
			for (let r of e) {
				if (!r) continue;
				let [n, ...s] = Array.isArray(r) ? r : [r];
				typeof n == "string" && typeof N(0, t, -1) == "string" ? t[t.length - 1] += n : t.push(n), t.push(...s);
			}
			return t.length === 0 ? "" : t.length === 1 ? t[0] : t;
		}
		case Ye:
		case tt:
		case rt:
		case Ge:
		case me:
		case Pe:
		case Ne: break;
		default: throw new gt(e);
	}
	return e;
}
function Qt(e) {
	return ft(e, (t) => Dc(t));
}
function qe(e, t = $r) {
	return ft(e, (r) => typeof r == "string" ? L(t, r.split(`
`)) : r);
}
function fc(e) {
	if (e.type === me) return !0;
}
function Xi(e) {
	return Yi(e, fc, !1);
}
function Ar(e, t) {
	return e.type === Pe ? {
		...e,
		contents: t(e.contents)
	} : t(e);
}
function Vi(e) {
	let t = !0;
	return Vr(e, (r) => {
		switch (We(r)) {
			case Ye: if (r === "") break;
			case rt:
			case Ge:
			case me:
			case Ne: return t = !1, !1;
		}
	}), t;
}
var de = Le, Kr = Le, $i = Le, Ki = Le;
function m(e) {
	return de(e), {
		type: He,
		contents: e
	};
}
function xe(e, t) {
	return Ki(e), de(t), {
		type: Xe,
		contents: t,
		n: e
	};
}
function Qi(e) {
	return xe(Number.NEGATIVE_INFINITY, e);
}
function Qr(e) {
	return xe(-1, e);
}
function zi(e, t, r) {
	de(e);
	let n = e;
	if (t > 0) {
		for (let s = 0; s < Math.floor(t / r); ++s) n = m(n);
		n = xe(t % r, n), n = xe(Number.NEGATIVE_INFINITY, n);
	}
	return n;
}
var ke = { type: Ne };
var Tr = { type: tt };
function zr(e) {
	return $i(e), {
		type: Me,
		parts: e
	};
}
function l(e, t = {}) {
	return de(e), Kr(t.expandedStates, !0), {
		type: Fe,
		id: t.id,
		contents: e,
		break: !!t.shouldBreak,
		expandedStates: t.expandedStates
	};
}
function nt(e, t) {
	return l(e[0], {
		...t,
		expandedStates: e
	});
}
function P(e, t = "", r = {}) {
	return de(e), t !== "" && de(t), {
		type: be,
		breakContents: e,
		flatContents: t,
		groupId: r.groupId
	};
}
function yt(e, t) {
	return de(e), {
		type: Ve,
		contents: e,
		groupId: t.groupId,
		negate: t.negate
	};
}
function L(e, t) {
	de(e), Kr(t);
	let r = [];
	for (let n = 0; n < t.length; n++) n !== 0 && r.push(e), r.push(t[n]);
	return r;
}
function pt(e, t) {
	return de(t), e ? {
		type: Pe,
		label: e,
		contents: t
	} : t;
}
var A = { type: me }, f = {
	type: me,
	soft: !0
}, os = {
	type: me,
	hard: !0
}, E = [os, ke], $r = [{
	type: me,
	hard: !0,
	literal: !0
}, ke];
function us(e) {
	return de(e), {
		type: $e,
		contents: e
	};
}
var je = { type: Ge };
var Ec = "cr", Fc = "crlf";
var dc = "\r", Cc = `\r
`, Tc = `
`;
function Zi(e) {
	return e === Ec ? dc : e === Fc ? Cc : Tc;
}
var xc = { type: 0 }, gc = { type: 1 }, as = {
	value: "",
	length: 0,
	queue: [],
	get root() {
		return as;
	}
};
function eo(e, t, r) {
	let n = t.type === 1 ? e.queue.slice(0, -1) : [...e.queue, t], s = "", i = 0, o = 0, u = 0;
	for (let d of n) switch (d.type) {
		case 0:
			y(), r.useTabs ? p(1) : c(r.tabWidth);
			break;
		case 3: {
			let { string: b } = d;
			y(), s += b, i += b.length;
			break;
		}
		case 2: {
			let { width: b } = d;
			o += 1, u += b;
			break;
		}
		default: throw new Error(`Unexpected indent comment '${d.type}'.`);
	}
	return F(), {
		...e,
		value: s,
		length: i,
		queue: n
	};
	function p(d) {
		s += "	".repeat(d), i += r.tabWidth * d;
	}
	function c(d) {
		s += " ".repeat(d), i += d;
	}
	function y() {
		r.useTabs ? D() : F();
	}
	function D() {
		o > 0 && p(o), C();
	}
	function F() {
		u > 0 && c(u), C();
	}
	function C() {
		o = 0, u = 0;
	}
}
function to(e, t, r) {
	if (!t) return e;
	if (t.type === "root") return {
		...e,
		root: e
	};
	if (t === Number.NEGATIVE_INFINITY) return e.root;
	let n;
	return typeof t == "number" ? t < 0 ? n = gc : n = {
		type: 2,
		width: t
	} : n = {
		type: 3,
		string: t
	}, eo(e, n, r);
}
function ro(e, t) {
	return eo(e, xc, t);
}
function hc(e) {
	let t = 0;
	for (let r = e.length - 1; r >= 0; r--) {
		let n = e[r];
		if (n === " " || n === "	") t++;
		else break;
	}
	return t;
}
function ps(e) {
	let t = hc(e);
	return {
		text: t === 0 ? e : e.slice(0, e.length - t),
		count: t
	};
}
var ve = Symbol("MODE_BREAK"), ct = Symbol("MODE_FLAT"), cs = Symbol("DOC_FILL_PRINTED_LENGTH");
function Zr(e, t, r, n, s, i) {
	if (r === Number.POSITIVE_INFINITY) return !0;
	let o = t.length, u = !1, p = [e], c = "";
	for (; r >= 0;) {
		if (p.length === 0) {
			if (o === 0) return !0;
			p.push(t[--o]);
			continue;
		}
		let { mode: y, doc: D } = p.pop(), F = We(D);
		switch (F) {
			case Ye:
				D && (u && (c += " ", r -= 1, u = !1), c += D, r -= ot(D));
				break;
			case Be:
			case Me: {
				let C = F === Be ? D : D.parts, d = D[cs] ?? 0;
				for (let b = C.length - 1; b >= d; b--) p.push({
					mode: y,
					doc: C[b]
				});
				break;
			}
			case He:
			case Xe:
			case Ve:
			case Pe:
				p.push({
					mode: y,
					doc: D.contents
				});
				break;
			case rt: {
				let { text: C, count: d } = ps(c);
				c = C, r += d;
				break;
			}
			case Fe: {
				if (i && D.break) return !1;
				let C = D.break ? ve : y, d = D.expandedStates && C === ve ? N(0, D.expandedStates, -1) : D.contents;
				p.push({
					mode: C,
					doc: d
				});
				break;
			}
			case be: {
				let d = (D.groupId ? s[D.groupId] || ct : y) === ve ? D.breakContents : D.flatContents;
				d && p.push({
					mode: y,
					doc: d
				});
				break;
			}
			case me:
				if (y === ve || D.hard) return !0;
				D.soft || (u = !0);
				break;
			case $e:
				n = !0;
				break;
			case Ge:
				if (n) return !1;
				break;
		}
	}
	return !1;
}
function ls(e, t) {
	let r = Object.create(null), n = t.printWidth, s = Zi(t.endOfLine), i = 0, o = [{
		indent: as,
		mode: ve,
		doc: e
	}], u = "", p = !1, c = [], y = [], D = [], F = [], C = 0;
	for (Hi(e); o.length > 0;) {
		let { indent: h, mode: g, doc: S } = o.pop();
		switch (We(S)) {
			case Ye: {
				let j = s !== `
` ? W(0, S, `
`, s) : S;
				j && (u += j, o.length > 0 && (i += ot(j)));
				break;
			}
			case Be:
				for (let j = S.length - 1; j >= 0; j--) o.push({
					indent: h,
					mode: g,
					doc: S[j]
				});
				break;
			case tt:
				if (y.length >= 2) throw new Error("There are too many 'cursor' in doc.");
				y.push(C + u.length);
				break;
			case He:
				o.push({
					indent: ro(h, t),
					mode: g,
					doc: S.contents
				});
				break;
			case Xe:
				o.push({
					indent: to(h, S.n, t),
					mode: g,
					doc: S.contents
				});
				break;
			case rt:
				O();
				break;
			case Fe:
				switch (g) {
					case ct: if (!p) {
						o.push({
							indent: h,
							mode: S.break ? ve : ct,
							doc: S.contents
						});
						break;
					}
					case ve: {
						p = !1;
						let j = {
							indent: h,
							mode: ct,
							doc: S.contents
						}, U = n - i, fe = c.length > 0;
						if (!S.break && Zr(j, o, U, fe, r)) o.push(j);
						else if (S.expandedStates) {
							let Y = N(0, S.expandedStates, -1);
							if (S.break) {
								o.push({
									indent: h,
									mode: ve,
									doc: Y
								});
								break;
							} else for (let z = 1; z < S.expandedStates.length + 1; z++) if (z >= S.expandedStates.length) {
								o.push({
									indent: h,
									mode: ve,
									doc: Y
								});
								break;
							} else {
								let Ie = {
									indent: h,
									mode: ct,
									doc: S.expandedStates[z]
								};
								if (Zr(Ie, o, U, fe, r)) {
									o.push(Ie);
									break;
								}
							}
						} else o.push({
							indent: h,
							mode: ve,
							doc: S.contents
						});
						break;
					}
				}
				S.id && (r[S.id] = N(0, o, -1).mode);
				break;
			case Me: {
				let j = n - i, U = S[cs] ?? 0, { parts: fe } = S, Y = fe.length - U;
				if (Y === 0) break;
				let z = fe[U + 0], ee = fe[U + 1], Ie = {
					indent: h,
					mode: ct,
					doc: z
				}, st = {
					indent: h,
					mode: ve,
					doc: z
				}, _ = Zr(Ie, [], j, c.length > 0, r, !0);
				if (Y === 1) {
					_ ? o.push(Ie) : o.push(st);
					break;
				}
				let re = {
					indent: h,
					mode: ct,
					doc: ee
				}, ae = {
					indent: h,
					mode: ve,
					doc: ee
				};
				if (Y === 2) {
					_ ? o.push(re, Ie) : o.push(ae, st);
					break;
				}
				let it = fe[U + 2], Bt = {
					indent: h,
					mode: g,
					doc: {
						...S,
						[cs]: U + 2
					}
				}, Pr = Zr({
					indent: h,
					mode: ct,
					doc: [
						z,
						ee,
						it
					]
				}, [], j, c.length > 0, r, !0);
				o.push(Bt), Pr ? o.push(re, Ie) : _ ? o.push(ae, Ie) : o.push(ae, st);
				break;
			}
			case be:
			case Ve: {
				let j = S.groupId ? r[S.groupId] : g;
				if (j === ve) {
					let U = S.type === be ? S.breakContents : S.negate ? S.contents : m(S.contents);
					U && o.push({
						indent: h,
						mode: g,
						doc: U
					});
				}
				if (j === ct) {
					let U = S.type === be ? S.flatContents : S.negate ? m(S.contents) : S.contents;
					U && o.push({
						indent: h,
						mode: g,
						doc: U
					});
				}
				break;
			}
			case $e:
				c.push({
					indent: h,
					mode: g,
					doc: S.contents
				});
				break;
			case Ge:
				c.length > 0 && o.push({
					indent: h,
					mode: g,
					doc: os
				});
				break;
			case me:
				switch (g) {
					case ct: if (S.hard) p = !0;
					else {
						S.soft || (u += " ", i += 1);
						break;
					}
					case ve:
						if (c.length > 0) {
							o.push({
								indent: h,
								mode: g,
								doc: S
							}, ...c.reverse()), c.length = 0;
							break;
						}
						S.literal ? (u += s, i = 0, h.root && (h.root.value && (u += h.root.value), i = h.root.length)) : (O(), u += s + h.value, i = h.length);
						break;
				}
				break;
			case Pe:
				o.push({
					indent: h,
					mode: g,
					doc: S.contents
				});
				break;
			case Ne: break;
			default: throw new gt(S);
		}
		o.length === 0 && c.length > 0 && (o.push(...c.reverse()), c.length = 0);
	}
	let d = D.join("") + u, b = [...F, ...y];
	if (b.length !== 2) return { formatted: d };
	let B = b[0];
	return {
		formatted: d,
		cursorNodeStart: B,
		cursorNodeText: d.slice(B, N(0, b, -1))
	};
	function O() {
		let { text: h, count: g } = ps(u);
		h && (D.push(h), C += h.length), u = "", i -= g, y.length > 0 && (F.push(...y.map((S) => Math.min(S, C))), y.length = 0);
	}
}
function Sc(e, t, r = 0) {
	let n = 0;
	for (let s = r; s < e.length; ++s) e[s] === "	" ? n = n + t - n % t : n++;
	return n;
}
var no = Sc;
function Bc(e, t) {
	let r = e.lastIndexOf(`
`);
	return r === -1 ? 0 : no(e.slice(r + 1).match(/^[\t ]*/u)[0], t);
}
var so = Bc;
function en(e, t, r) {
	let { node: n } = e;
	if (n.type === "TemplateLiteral" && kc(e)) {
		let c = bc(e, t, r);
		if (c) return c;
	}
	let i = "expressions";
	n.type === "TSTemplateLiteralType" && (i = "types");
	let o = [], u = e.map(r, i);
	o.push(je, "`");
	let p = 0;
	return e.each(({ index: c, node: y }) => {
		if (o.push(r()), y.tail) return;
		let { tabWidth: D } = t, F = y.value.raw, C = F.includes(`
`) ? so(F, D) : p;
		p = C;
		let d = u[c], b = n[i][c], B = ue(t.originalText, I(y), w(n.quasis[c + 1]));
		if (!B) {
			let h = ls(d, {
				...t,
				printWidth: Number.POSITIVE_INFINITY
			}).formatted;
			h.includes(`
`) ? B = !0 : d = h;
		}
		B && (T(b) || b.type === "Identifier" || J(b) || b.type === "ConditionalExpression" || b.type === "SequenceExpression" || Ae(b) || Te(b)) && (d = [m([f, d]), f]);
		let O = C === 0 && F.endsWith(`
`) ? xe(Number.NEGATIVE_INFINITY, d) : zi(d, C, D);
		o.push(l([
			"${",
			O,
			je,
			"}"
		]));
	}, "quasis"), o.push("`"), o;
}
function io(e, t, r) {
	let n = r("quasi"), { node: s } = e, i = "", o = et(s.quasi, x.Leading)[0];
	return o && (ue(t.originalText, I(s.typeArguments ?? s.tag), w(o)) ? i = f : i = " "), pt(n.label && {
		tagged: !0,
		...n.label
	}, [
		r("tag"),
		r("typeArguments"),
		i,
		je,
		n
	]);
}
function bc(e, t, r) {
	let { node: n } = e, s = n.quasis[0].value.raw.trim().split(/\s*\|\s*/u);
	if (s.length > 1 || s.some((i) => i.length > 0)) {
		t.__inJestEach = !0;
		let i = e.map(r, "expressions");
		t.__inJestEach = !1;
		let o = i.map((D) => "${" + ls(D, {
			...t,
			printWidth: Number.POSITIVE_INFINITY,
			endOfLine: "lf"
		}).formatted + "}"), u = [{
			hasLineBreak: !1,
			cells: []
		}];
		for (let D = 1; D < n.quasis.length; D++) {
			let F = N(0, u, -1), C = o[D - 1];
			F.cells.push(C), C.includes(`
`) && (F.hasLineBreak = !0), n.quasis[D].value.raw.includes(`
`) && u.push({
				hasLineBreak: !1,
				cells: []
			});
		}
		let p = Math.max(s.length, ...u.map((D) => D.cells.length)), c = Array.from({ length: p }).fill(0), y = [{ cells: s }, ...u.filter((D) => D.cells.length > 0)];
		for (let { cells: D } of y.filter((F) => !F.hasLineBreak)) for (let [F, C] of D.entries()) c[F] = Math.max(c[F], ot(C));
		return [
			je,
			"`",
			m([E, L(E, y.map((D) => L(" | ", D.cells.map((F, C) => D.hasLineBreak ? F : F + " ".repeat(c[C] - ot(F))))))]),
			E,
			"`"
		];
	}
}
function Pc(e, t) {
	let { node: r } = e, n = t();
	return T(r) && (n = l([m([f, n]), f])), [
		"${",
		n,
		je,
		"}"
	];
}
function zt(e, t) {
	return e.map(() => Pc(e, t), "expressions");
}
function tn(e, t) {
	return ft(e, (r) => typeof r == "string" ? t ? W(0, r, /(\\*)`/gu, "$1$1\\`") : ms(r) : r);
}
function ms(e) {
	return W(0, e, /([\\`]|\$\{)/gu, "\\$1");
}
function kc({ node: e, parent: t }) {
	let r = /^[fx]?(?:describe|it|test)$/u;
	return t.type === "TaggedTemplateExpression" && t.quasi === e && t.tag.type === "MemberExpression" && t.tag.property.type === "Identifier" && t.tag.property.name === "each" && (t.tag.object.type === "Identifier" && r.test(t.tag.object.name) || t.tag.object.type === "MemberExpression" && t.tag.object.property.type === "Identifier" && (t.tag.object.property.name === "only" || t.tag.object.property.name === "skip") && t.tag.object.object.type === "Identifier" && r.test(t.tag.object.object.name));
}
var fs = [
	(e, t) => e.type === "ObjectExpression" && t === "properties",
	(e, t) => e.type === "CallExpression" && e.callee.type === "Identifier" && e.callee.name === "Component" && t === "arguments",
	(e, t) => e.type === "Decorator" && t === "expression"
];
function oo(e) {
	let t = (n) => n.type === "TemplateLiteral", r = (n, s) => Oe(n) && !n.computed && n.key.type === "Identifier" && n.key.name === "styles" && s === "value";
	return e.match(t, (n, s) => q(n) && s === "elements", r, ...fs) || e.match(t, r, ...fs);
}
function ys(e) {
	return e.match((t) => t.type === "TemplateLiteral", (t, r) => Oe(t) && !t.computed && t.key.type === "Identifier" && t.key.name === "template" && r === "value", ...fs);
}
function Ds(e, t) {
	return T(e, x.Block | x.Leading, ({ value: r }) => r === ` ${t} `);
}
function rn({ node: e, parent: t }, r) {
	return Ds(e, r) || Ic(t) && Ds(t, r) || t.type === "ExpressionStatement" && Ds(t, r);
}
function Ic(e) {
	return e.type === "AsConstExpression" || e.type === "TSAsExpression" && e.typeAnnotation.type === "TSTypeReference" && e.typeAnnotation.typeName.type === "Identifier" && e.typeAnnotation.typeName.name === "const";
}
async function ao(e, t, r) {
	let { node: n } = r, s = "";
	for (let [p, c] of n.quasis.entries()) {
		let { raw: y } = c.value;
		p > 0 && (s += "@prettier-placeholder-" + (p - 1) + "-id"), s += y;
	}
	let u = Lc(await e(s, { parser: "scss" }), zt(r, t));
	if (!u) throw new Error("Couldn't insert all the expressions");
	return [
		"`",
		m([E, u]),
		f,
		"`"
	];
}
function Lc(e, t) {
	if (!R(t)) return e;
	let r = 0, n = ft(Qt(e), (s) => typeof s != "string" || !s.includes("@prettier-placeholder") ? s : s.split(/@prettier-placeholder-(\d+)-id/u).map((i, o) => o % 2 === 0 ? qe(i) : (r++, t[i])));
	return t.length === r ? n : null;
}
function Oc(e) {
	return e.match(void 0, (t, r) => r === "quasi" && t.type === "TaggedTemplateExpression" && Pt(t.tag, [
		"css",
		"css.global",
		"css.resolve"
	])) || e.match(void 0, (t, r) => r === "expression" && t.type === "JSXExpressionContainer", (t, r) => r === "children" && t.type === "JSXElement" && t.openingElement.name.type === "JSXIdentifier" && t.openingElement.name.name === "style" && t.openingElement.attributes.some((n) => n.type === "JSXAttribute" && n.name.type === "JSXIdentifier" && n.name.name === "jsx"));
}
function nn(e) {
	return e.type === "Identifier" && e.name === "styled";
}
function uo(e) {
	return /^[A-Z]/u.test(e.object.name) && e.property.name === "extend";
}
function wc({ parent: e }) {
	if (!e || e.type !== "TaggedTemplateExpression") return !1;
	let t = e.tag.type === "ParenthesizedExpression" ? e.tag.expression : e.tag;
	switch (t.type) {
		case "MemberExpression": return nn(t.object) || uo(t);
		case "CallExpression": return nn(t.callee) || t.callee.type === "MemberExpression" && (t.callee.object.type === "MemberExpression" && (nn(t.callee.object.object) || uo(t.callee.object)) || t.callee.object.type === "CallExpression" && nn(t.callee.object.callee));
		case "Identifier": return t.name === "css";
		default: return !1;
	}
}
function _c({ parent: e, grandparent: t }) {
	return t?.type === "JSXAttribute" && e.type === "JSXExpressionContainer" && t.name.type === "JSXIdentifier" && t.name.name === "css";
}
var po = (e) => Oc(e) || wc(e) || _c(e) || oo(e);
async function co(e, t, r) {
	let { node: n } = r, s = n.quasis.length, i = zt(r, t), o = [];
	for (let u = 0; u < s; u++) {
		let p = n.quasis[u], c = u === 0, y = u === s - 1, D = p.value.cooked, F = D.split(`
`), C = F.length, d = i[u], b = C > 2 && F[0].trim() === "" && F[1].trim() === "", B = C > 2 && F[C - 1].trim() === "" && F[C - 2].trim() === "", O = F.every((g) => /^\s*(?:#[^\n\r]*)?$/u.test(g));
		if (!y && /#[^\n\r]*$/u.test(F[C - 1])) return null;
		let h = null;
		O ? h = Mc(F) : h = await e(D, { parser: "graphql" }), h ? (h = tn(h, !1), !c && b && o.push(""), o.push(h), !y && B && o.push("")) : !c && !y && b && o.push(""), d && o.push(d);
	}
	return [
		"`",
		m([E, L(E, o)]),
		E,
		"`"
	];
}
function Mc(e) {
	let t = [], r = !1, n = e.map((s) => s.trim());
	for (let [s, i] of n.entries()) i !== "" && (n[s - 1] === "" && r ? t.push([E, i]) : t.push(i), r = !0);
	return t.length === 0 ? null : L(E, t);
}
function lo({ node: e, parent: t }) {
	return rn({
		node: e,
		parent: t
	}, "GraphQL") || t && (t.type === "TaggedTemplateExpression" && (t.tag.type === "MemberExpression" && t.tag.object.name === "graphql" && t.tag.property.name === "experimental" || t.tag.type === "Identifier" && (t.tag.name === "gql" || t.tag.name === "graphql")) || t.type === "CallExpression" && t.callee.type === "Identifier" && t.callee.name === "graphql");
}
var Es = 0;
async function mo(e, t, r, n, s) {
	let { node: i } = n, o = Es;
	Es = Es + 1 >>> 0;
	let u = (O) => `PRETTIER_HTML_PLACEHOLDER_${O}_${o}_IN_JS`, p = i.quasis.map((O, h, g) => h === g.length - 1 ? O.value.cooked : O.value.cooked + u(h)).join(""), c = zt(n, r), y = new RegExp(u("(\\d+)"), "gu"), D = 0, C = ft(await t(p, {
		parser: e,
		__onHtmlRoot(O) {
			D = O.children.length;
		}
	}), (O) => {
		if (typeof O != "string") return O;
		let h = [], g = O.split(y);
		for (let S = 0; S < g.length; S++) {
			let j = g[S];
			if (S % 2 === 0) {
				j && (j = ms(j), s.__embeddedInHtml && (j = W(0, j, /<\/(?=script\b)/giu, "<\\/")), h.push(j));
				continue;
			}
			let U = Number(j);
			h.push(c[U]);
		}
		return h;
	}), d = /^\s/u.test(p) ? " " : "", b = /\s$/u.test(p) ? " " : "", B = s.htmlWhitespaceSensitivity === "ignore" ? E : d && b ? A : null;
	return B ? l([
		"`",
		m([B, l(C)]),
		B,
		"`"
	]) : pt({ hug: !1 }, l([
		"`",
		d,
		D > 1 ? m(l(C)) : l(C),
		b,
		"`"
	]));
}
function Do(e) {
	return rn(e, "HTML") || e.match((t) => t.type === "TemplateLiteral", (t, r) => t.type === "TaggedTemplateExpression" && t.tag.type === "Identifier" && t.tag.name === "html" && r === "quasi");
}
var fo = mo.bind(void 0, "html"), yo = mo.bind(void 0, "angular");
async function Eo(e, t, r) {
	let { node: n } = r, s = W(0, n.quasis[0].value.raw, /((?:\\\\)*)\\`/gu, (p, c) => "\\".repeat(c.length / 2) + "`"), i = Nc(s), o = i !== "";
	o && (s = W(0, s, new RegExp(`^${i}`, "gmu"), ""));
	let u = tn(await e(s, {
		parser: "markdown",
		__inJsTemplate: !0
	}), !0);
	return [
		"`",
		o ? m([f, u]) : [$r, Qi(u)],
		f,
		"`"
	];
}
function Nc(e) {
	let t = e.match(/^([^\S\n]*)\S/mu);
	return t === null ? "" : t[1];
}
function Fo({ node: e, parent: t }) {
	return t?.type === "TaggedTemplateExpression" && e.quasis.length === 1 && t.tag.type === "Identifier" && (t.tag.name === "md" || t.tag.name === "markdown");
}
var jc = [
	{
		test: po,
		print: ao
	},
	{
		test: lo,
		print: co
	},
	{
		test: Do,
		print: fo
	},
	{
		test: ys,
		print: yo
	},
	{
		test: Fo,
		print: Eo
	}
].map(({ test: e, print: t }) => ({
	test: e,
	print: Rc(t)
}));
function vc(e) {
	let { node: t } = e;
	if (t.type !== "TemplateLiteral" || Jc(t)) return;
	let r = jc.find(({ test: n }) => n(e));
	if (r) return t.quasis.length === 1 && t.quasis[0].value.raw.trim() === "" ? "``" : r.print;
}
function Rc(e) {
	return async (...t) => {
		let r = await e(...t);
		return r && pt({
			embed: !0,
			...r.label
		}, r);
	};
}
function Jc({ quasis: e }) {
	return e.some(({ value: { cooked: t } }) => t === null);
}
var Co = vc;
var Gc = /\*\/$/, Wc = /^\/\*\*?/, go = /^\s*(\/\*\*?(.|\r?\n)*?\*\/)/, qc = /(^|\s+)\/\/([^\n\r]*)/g, Ao = /^(\r?\n)+/, Uc = /(?:^|\r?\n) *(@[^\n\r]*?) *\r?\n *(?![^\n\r@]*\/\/[^]*)([^\s@][^\n\r@]+?) *\r?\n/g, To = /(?:^|\r?\n) *@(\S+) *([^\n\r]*)/g, Yc = /(\r?\n|^) *\* ?/g, ho = [];
function So(e) {
	let t = e.match(go);
	return t ? t[0].trimStart() : "";
}
function Bo(e) {
	let r = e.match(go)?.[0];
	return r == null ? e : e.slice(r.length);
}
function bo(e) {
	e = W(0, e.replace(Wc, "").replace(Gc, ""), Yc, "$1");
	let r = "";
	for (; r !== e;) r = e, e = W(0, e, Uc, `
$1 $2
`);
	e = e.replace(Ao, "").trimEnd();
	let n = Object.create(null), s = W(0, e, To, "").replace(Ao, "").trimEnd(), i;
	for (; i = To.exec(e);) {
		let o = W(0, i[2], qc, "");
		if (typeof n[i[1]] == "string" || Array.isArray(n[i[1]])) {
			let u = n[i[1]];
			n[i[1]] = [
				...ho,
				...Array.isArray(u) ? u : [u],
				o
			];
		} else n[i[1]] = o;
	}
	return {
		comments: s,
		pragmas: n
	};
}
function Po({ comments: e = "", pragmas: t = {} }) {
	let o = Object.keys(t), u = o.flatMap((c) => xo(c, t[c])).map((c) => ` * ${c}
`).join("");
	if (!e) {
		if (o.length === 0) return "";
		if (o.length === 1 && !Array.isArray(t[o[0]])) {
			let c = t[o[0]];
			return `/** ${xo(o[0], c)[0]} */`;
		}
	}
	let p = e.split(`
`).map((c) => ` * ${c}`).join(`
`) + `
`;
	return `/**
` + (e ? p : "") + (e && o.length > 0 ? ` *
` : "") + u + " */";
}
function xo(e, t) {
	return [...ho, ...Array.isArray(t) ? t : [t]].map((r) => `@${e} ${r}`.trim());
}
var ko = "format";
function Hc(e) {
	if (!e.startsWith("#!")) return "";
	let t = e.indexOf(`
`);
	return t === -1 ? e : e.slice(0, t);
}
var Io = Hc;
function Xc(e) {
	let t = Io(e);
	t && (e = e.slice(t.length + 1));
	let { pragmas: n, comments: s } = bo(So(e));
	return {
		shebang: t,
		text: e,
		pragmas: n,
		comments: s
	};
}
function Lo(e) {
	let { shebang: t, text: r, pragmas: n, comments: s } = Xc(e), i = Bo(r), o = Po({
		pragmas: {
			[ko]: "",
			...n
		},
		comments: s.trimStart()
	});
	return (t ? `${t}
` : "") + o + (i.startsWith(`
`) ? `
` : `

`) + i;
}
function Vc(e) {
	if (!ce(e)) return !1;
	let t = `*${e.value}*`.split(`
`);
	return t.length > 1 && t.every((r) => r.trimStart()[0] === "*");
}
var Fs = /* @__PURE__ */ new WeakMap();
function $c(e) {
	return Fs.has(e) || Fs.set(e, Vc(e)), Fs.get(e);
}
var Oo = $c;
function wo(e, t) {
	let r = e.node;
	if (At(r)) return t.originalText.slice(w(r), I(r)).trimEnd();
	if (Oo(r)) return Kc(r);
	if (ce(r)) return [
		"/*",
		qe(r.value),
		"*/"
	];
	throw new Error("Not a comment: " + JSON.stringify(r));
}
function Kc(e) {
	let t = e.value.split(`
`);
	return [
		"/*",
		L(E, t.map((r, n) => n === 0 ? r.trimEnd() : " " + (n < t.length - 1 ? r.trim() : r.trimStart()))),
		"*/"
	];
}
function ds(e, t) {
	if (e.isRoot) return !1;
	let { node: r, key: n, parent: s } = e;
	if (t.__isInHtmlInterpolation && !t.bracketSpacing && el(r) && xr(e)) return !0;
	if (Qc(r)) return !1;
	if (r.type === "Identifier") {
		if (r.extra?.parenthesized && /^PRETTIER_HTML_PLACEHOLDER_\d+_\d+_IN_JS$/u.test(r.name) || n === "left" && (r.name === "async" && !s.await || r.name === "let") && s.type === "ForOfStatement") return !0;
		if (r.name === "let") {
			let i = e.findAncestor((o) => o.type === "ForOfStatement")?.left;
			if (i && ye(i, (o) => o === r)) return !0;
		}
		if (n === "object" && r.name === "let" && s.type === "MemberExpression" && s.computed && !s.optional) {
			let i = e.findAncestor((u) => u.type === "ExpressionStatement" || u.type === "ForStatement" || u.type === "ForInStatement"), o = i ? i.type === "ExpressionStatement" ? i.expression : i.type === "ForStatement" ? i.init : i.left : void 0;
			if (o && ye(o, (u) => u === r)) return !0;
		}
		if (n === "expression") switch (r.name) {
			case "await":
			case "interface":
			case "module":
			case "using":
			case "yield":
			case "let":
			case "component":
			case "hook":
			case "type": {
				let i = e.findAncestor((o) => !Ae(o));
				if (i !== s && i.type === "ExpressionStatement") return !0;
			}
		}
		return !1;
	}
	if (r.type === "ObjectExpression" || r.type === "FunctionExpression" || r.type === "ClassExpression" || r.type === "DoExpression") {
		let i = e.findAncestor((o) => o.type === "ExpressionStatement")?.expression;
		if (i && ye(i, (o) => o === r)) return !0;
	}
	if (r.type === "ObjectExpression") {
		let i = e.findAncestor((o) => o.type === "ArrowFunctionExpression")?.body;
		if (i && i.type !== "SequenceExpression" && i.type !== "AssignmentExpression" && ye(i, (o) => o === r)) return !0;
	}
	switch (s.type) {
		case "ParenthesizedExpression": return !1;
		case "ClassDeclaration":
		case "ClassExpression":
			if (n === "superClass" && (r.type === "ArrowFunctionExpression" || r.type === "AssignmentExpression" || r.type === "AwaitExpression" || r.type === "BinaryExpression" || r.type === "ConditionalExpression" || r.type === "LogicalExpression" || r.type === "NewExpression" || r.type === "ObjectExpression" || r.type === "SequenceExpression" || r.type === "TaggedTemplateExpression" || r.type === "UnaryExpression" || r.type === "UpdateExpression" || r.type === "YieldExpression" || r.type === "TSNonNullExpression" || r.type === "ClassExpression" && R(r.decorators))) return !0;
			break;
		case "ExportDefaultDeclaration": return _o(e, t) || r.type === "SequenceExpression";
		case "Decorator":
			if (n === "expression" && !rl(r)) return !0;
			break;
		case "TypeAnnotation":
			if (e.match(void 0, void 0, (i, o) => o === "returnType" && i.type === "ArrowFunctionExpression") && Zc(r)) return !0;
			break;
		case "BinaryExpression":
			if (n === "left" && (s.operator === "in" || s.operator === "instanceof") && r.type === "UnaryExpression") return !0;
			break;
		case "VariableDeclarator":
			if (n === "init" && e.match(void 0, void 0, (i, o) => o === "declarations" && i.type === "VariableDeclaration", (i, o) => o === "left" && i.type === "ForInStatement")) return !0;
			break;
	}
	switch (r.type) {
		case "UpdateExpression": if (s.type === "UnaryExpression") return r.prefix && (r.operator === "++" && s.operator === "+" || r.operator === "--" && s.operator === "-");
		case "UnaryExpression": switch (s.type) {
			case "UnaryExpression": return r.operator === s.operator && (r.operator === "+" || r.operator === "-");
			case "BindExpression": return !0;
			case "MemberExpression":
			case "OptionalMemberExpression": return n === "object";
			case "TaggedTemplateExpression": return !0;
			case "NewExpression":
			case "CallExpression":
			case "OptionalCallExpression": return n === "callee";
			case "BinaryExpression": return n === "left" && s.operator === "**";
			case "TSNonNullExpression": return !0;
			default: return !1;
		}
		case "BinaryExpression":
			if (s.type === "UpdateExpression" || r.operator === "in" && zc(e)) return !0;
			if (r.operator === "|>" && r.extra?.parenthesized) {
				let i = e.grandparent;
				if (i.type === "BinaryExpression" && i.operator === "|>") return !0;
			}
		case "TSTypeAssertion":
		case "TSAsExpression":
		case "TSSatisfiesExpression":
		case "AsExpression":
		case "AsConstExpression":
		case "SatisfiesExpression":
		case "LogicalExpression": switch (s.type) {
			case "TSAsExpression":
			case "TSSatisfiesExpression":
			case "AsExpression":
			case "AsConstExpression":
			case "SatisfiesExpression": return !Ae(r);
			case "ConditionalExpression": return Ae(r) || fi(r);
			case "CallExpression":
			case "NewExpression":
			case "OptionalCallExpression": return n === "callee";
			case "ClassExpression":
			case "ClassDeclaration": return n === "superClass";
			case "TSTypeAssertion":
			case "TaggedTemplateExpression":
			case "UnaryExpression":
			case "JSXSpreadAttribute":
			case "SpreadElement":
			case "BindExpression":
			case "AwaitExpression":
			case "TSNonNullExpression":
			case "UpdateExpression": return !0;
			case "MemberExpression":
			case "OptionalMemberExpression": return n === "object";
			case "AssignmentExpression":
			case "AssignmentPattern": return n === "left" && (r.type === "TSTypeAssertion" || Ae(r));
			case "LogicalExpression": if (r.type === "LogicalExpression") return s.operator !== r.operator;
			case "BinaryExpression": {
				let { operator: i, type: o } = r;
				if (!i && o !== "TSTypeAssertion") return !0;
				let u = yr(i), p = s.operator, c = yr(p);
				return !!(c > u || n === "right" && c === u || c === u && !dr(p, i) || c < u && i === "%" && (p === "+" || p === "-") || Ai(p));
			}
			default: return !1;
		}
		case "SequenceExpression": return s.type !== "ForStatement";
		case "YieldExpression": if (s.type === "AwaitExpression" || s.type === "TSTypeAssertion") return !0;
		case "AwaitExpression": switch (s.type) {
			case "TaggedTemplateExpression":
			case "UnaryExpression":
			case "LogicalExpression":
			case "SpreadElement":
			case "TSAsExpression":
			case "TSSatisfiesExpression":
			case "TSNonNullExpression":
			case "AsExpression":
			case "AsConstExpression":
			case "SatisfiesExpression":
			case "BindExpression": return !0;
			case "MemberExpression":
			case "OptionalMemberExpression": return n === "object";
			case "NewExpression":
			case "CallExpression":
			case "OptionalCallExpression": return n === "callee";
			case "ConditionalExpression": return n === "test";
			case "BinaryExpression": return !(!r.argument && s.operator === "|>");
			default: return !1;
		}
		case "TSFunctionType": if (e.match((i) => i.type === "TSFunctionType", (i, o) => o === "typeAnnotation" && i.type === "TSTypeAnnotation", (i, o) => o === "returnType" && i.type === "ArrowFunctionExpression")) return !0;
		case "TSConditionalType":
		case "TSConstructorType":
		case "ConditionalTypeAnnotation":
			if (n === "extendsType" && Ue(r) && s.type === r.type || n === "checkType" && Ue(s)) return !0;
			if (n === "extendsType" && s.type === "TSConditionalType") {
				let { typeAnnotation: i } = r.returnType || r.typeAnnotation;
				if (i.type === "TSTypePredicate" && i.typeAnnotation && (i = i.typeAnnotation.typeAnnotation), i.type === "TSInferType" && i.typeParameter.constraint) return !0;
			}
		case "TSUnionType":
		case "TSIntersectionType": if (Se(s) || xt(s)) return !0;
		case "TSInferType": if (r.type === "TSInferType") {
			if (s.type === "TSRestType") return !1;
			if (n === "types" && (s.type === "TSUnionType" || s.type === "TSIntersectionType") && r.typeParameter.type === "TSTypeParameter" && r.typeParameter.constraint) return !0;
		}
		case "TSTypeOperator": return s.type === "TSArrayType" || s.type === "TSOptionalType" || s.type === "TSRestType" || n === "objectType" && s.type === "TSIndexedAccessType" || s.type === "TSTypeOperator" || s.type === "TSTypeAnnotation" && e.grandparent.type.startsWith("TSJSDoc");
		case "TSTypeQuery": return n === "objectType" && s.type === "TSIndexedAccessType" || n === "elementType" && s.type === "TSArrayType";
		case "TypeOperator": return s.type === "ArrayTypeAnnotation" || s.type === "NullableTypeAnnotation" || n === "objectType" && (s.type === "IndexedAccessType" || s.type === "OptionalIndexedAccessType") || s.type === "TypeOperator";
		case "TypeofTypeAnnotation": return n === "objectType" && (s.type === "IndexedAccessType" || s.type === "OptionalIndexedAccessType") || n === "elementType" && s.type === "ArrayTypeAnnotation";
		case "ArrayTypeAnnotation": return s.type === "NullableTypeAnnotation";
		case "IntersectionTypeAnnotation":
		case "UnionTypeAnnotation": return s.type === "TypeOperator" || s.type === "KeyofTypeAnnotation" || s.type === "ArrayTypeAnnotation" || s.type === "NullableTypeAnnotation" || s.type === "IntersectionTypeAnnotation" || s.type === "UnionTypeAnnotation" || n === "objectType" && (s.type === "IndexedAccessType" || s.type === "OptionalIndexedAccessType");
		case "InferTypeAnnotation":
		case "NullableTypeAnnotation": return s.type === "ArrayTypeAnnotation" || n === "objectType" && (s.type === "IndexedAccessType" || s.type === "OptionalIndexedAccessType");
		case "ComponentTypeAnnotation":
		case "FunctionTypeAnnotation": {
			if (r.type === "ComponentTypeAnnotation" && (r.rendersType === null || r.rendersType === void 0)) return !1;
			if (e.match(void 0, (o, u) => u === "typeAnnotation" && o.type === "TypeAnnotation", (o, u) => u === "returnType" && o.type === "ArrowFunctionExpression") || e.match(void 0, (o, u) => u === "typeAnnotation" && o.type === "TypePredicate", (o, u) => u === "typeAnnotation" && o.type === "TypeAnnotation", (o, u) => u === "returnType" && o.type === "ArrowFunctionExpression")) return !0;
			let i = s.type === "NullableTypeAnnotation" ? e.grandparent : s;
			return i.type === "UnionTypeAnnotation" || i.type === "IntersectionTypeAnnotation" || i.type === "ArrayTypeAnnotation" || n === "objectType" && (i.type === "IndexedAccessType" || i.type === "OptionalIndexedAccessType") || n === "checkType" && s.type === "ConditionalTypeAnnotation" || n === "extendsType" && s.type === "ConditionalTypeAnnotation" && r.returnType?.type === "InferTypeAnnotation" && r.returnType?.typeParameter.bound || i.type === "NullableTypeAnnotation" || s.type === "FunctionTypeParam" && s.name === null && K(r).some((o) => o.typeAnnotation?.type === "NullableTypeAnnotation");
		}
		case "OptionalIndexedAccessType": return n === "objectType" && s.type === "IndexedAccessType";
		case "StringLiteral":
		case "NumericLiteral":
		case "Literal":
			if (typeof r.value == "string" && s.type === "ExpressionStatement" && typeof s.directive != "string") {
				let i = e.grandparent;
				return i.type === "Program" || i.type === "BlockStatement";
			}
			return n === "object" && J(s) && Ce(r);
		case "AssignmentExpression": return !((n === "init" || n === "update") && s.type === "ForStatement" || n === "expression" && r.left.type !== "ObjectPattern" && s.type === "ExpressionStatement" || n === "key" && s.type === "TSPropertySignature" || s.type === "AssignmentExpression" || n === "expressions" && s.type === "SequenceExpression" && e.match(void 0, void 0, (i, o) => (o === "init" || o === "update") && i.type === "ForStatement") || n === "value" && s.type === "Property" && e.match(void 0, void 0, (i, o) => o === "properties" && i.type === "ObjectPattern") || s.type === "NGChainedExpression" || n === "node" && s.type === "JsExpressionRoot");
		case "ConditionalExpression": switch (s.type) {
			case "TaggedTemplateExpression":
			case "UnaryExpression":
			case "SpreadElement":
			case "BinaryExpression":
			case "LogicalExpression":
			case "NGPipeExpression":
			case "ExportDefaultDeclaration":
			case "AwaitExpression":
			case "JSXSpreadAttribute":
			case "TSTypeAssertion":
			case "TypeCastExpression":
			case "TSAsExpression":
			case "TSSatisfiesExpression":
			case "AsExpression":
			case "AsConstExpression":
			case "SatisfiesExpression":
			case "TSNonNullExpression": return !0;
			case "NewExpression":
			case "CallExpression":
			case "OptionalCallExpression": return n === "callee";
			case "ConditionalExpression": return t.experimentalTernaries ? !1 : n === "test";
			case "MemberExpression":
			case "OptionalMemberExpression": return n === "object";
			default: return !1;
		}
		case "FunctionExpression": switch (s.type) {
			case "NewExpression":
			case "CallExpression":
			case "OptionalCallExpression": return n === "callee";
			case "TaggedTemplateExpression": return !0;
			default: return !1;
		}
		case "ArrowFunctionExpression": switch (s.type) {
			case "BinaryExpression": return s.operator !== "|>" || r.extra?.parenthesized;
			case "NewExpression":
			case "CallExpression":
			case "OptionalCallExpression": return n === "callee";
			case "MemberExpression":
			case "OptionalMemberExpression": return n === "object";
			case "TSAsExpression":
			case "TSSatisfiesExpression":
			case "AsExpression":
			case "AsConstExpression":
			case "SatisfiesExpression":
			case "TSNonNullExpression":
			case "BindExpression":
			case "TaggedTemplateExpression":
			case "UnaryExpression":
			case "LogicalExpression":
			case "AwaitExpression":
			case "TSTypeAssertion":
			case "MatchExpressionCase": return !0;
			case "TSInstantiationExpression": return n === "expression";
			case "ConditionalExpression": return n === "test";
			default: return !1;
		}
		case "ClassExpression": switch (s.type) {
			case "NewExpression": return n === "callee";
			default: return !1;
		}
		case "OptionalMemberExpression":
		case "OptionalCallExpression":
		case "CallExpression":
		case "MemberExpression": if (tl(e)) return !0;
		case "TaggedTemplateExpression":
		case "TSNonNullExpression":
			if (n === "callee" && (s.type === "BindExpression" || s.type === "NewExpression")) {
				let i = r;
				for (; i;) switch (i.type) {
					case "CallExpression":
					case "OptionalCallExpression": return !0;
					case "MemberExpression":
					case "OptionalMemberExpression":
					case "BindExpression":
						i = i.object;
						break;
					case "TaggedTemplateExpression":
						i = i.tag;
						break;
					case "TSNonNullExpression":
						i = i.expression;
						break;
					default: return !1;
				}
			}
			return !1;
		case "BindExpression": return n === "callee" && (s.type === "BindExpression" || s.type === "NewExpression") || n === "object" && J(s);
		case "NGPipeExpression": return !(s.type === "NGRoot" || s.type === "NGMicrosyntaxExpression" || s.type === "ObjectProperty" && !r.extra?.parenthesized || q(s) || n === "arguments" && M(s) || n === "right" && s.type === "NGPipeExpression" || n === "property" && s.type === "MemberExpression" || s.type === "AssignmentExpression");
		case "JSXFragment":
		case "JSXElement": return n === "callee" || n === "left" && s.type === "BinaryExpression" && s.operator === "<" || !q(s) && s.type !== "ArrowFunctionExpression" && s.type !== "AssignmentExpression" && s.type !== "AssignmentPattern" && s.type !== "BinaryExpression" && s.type !== "NewExpression" && s.type !== "ConditionalExpression" && s.type !== "ExpressionStatement" && s.type !== "JsExpressionRoot" && s.type !== "JSXAttribute" && s.type !== "JSXElement" && s.type !== "JSXExpressionContainer" && s.type !== "JSXFragment" && s.type !== "LogicalExpression" && !M(s) && !Oe(s) && s.type !== "ReturnStatement" && s.type !== "ThrowStatement" && s.type !== "TypeCastExpression" && s.type !== "VariableDeclarator" && s.type !== "YieldExpression" && s.type !== "MatchExpressionCase";
		case "TSInstantiationExpression": return n === "object" && J(s);
		case "MatchOrPattern": return s.type === "MatchAsPattern";
	}
	return !1;
}
var Qc = k([
	"BlockStatement",
	"BreakStatement",
	"ComponentDeclaration",
	"ClassBody",
	"ClassDeclaration",
	"ClassMethod",
	"ClassProperty",
	"PropertyDefinition",
	"ClassPrivateProperty",
	"ContinueStatement",
	"DebuggerStatement",
	"DeclareComponent",
	"DeclareClass",
	"DeclareExportAllDeclaration",
	"DeclareExportDeclaration",
	"DeclareFunction",
	"DeclareHook",
	"DeclareInterface",
	"DeclareModule",
	"DeclareModuleExports",
	"DeclareNamespace",
	"DeclareVariable",
	"DeclareEnum",
	"DoWhileStatement",
	"EnumDeclaration",
	"ExportAllDeclaration",
	"ExportDefaultDeclaration",
	"ExportNamedDeclaration",
	"ExpressionStatement",
	"ForInStatement",
	"ForOfStatement",
	"ForStatement",
	"FunctionDeclaration",
	"HookDeclaration",
	"IfStatement",
	"ImportDeclaration",
	"InterfaceDeclaration",
	"LabeledStatement",
	"MethodDefinition",
	"ReturnStatement",
	"SwitchStatement",
	"ThrowStatement",
	"TryStatement",
	"TSDeclareFunction",
	"TSEnumDeclaration",
	"TSImportEqualsDeclaration",
	"TSInterfaceDeclaration",
	"TSModuleDeclaration",
	"TSNamespaceExportDeclaration",
	"TypeAlias",
	"VariableDeclaration",
	"WhileStatement",
	"WithStatement"
]);
function zc(e) {
	let t = 0, { node: r } = e;
	for (; r;) {
		let n = e.getParentNode(t++);
		if (n?.type === "ForStatement" && n.init === r) return !0;
		r = n;
	}
	return !1;
}
function Zc(e) {
	return Er(e, (t) => t.type === "ObjectTypeAnnotation" && Er(t, (r) => r.type === "FunctionTypeAnnotation"));
}
function el(e) {
	return se(e);
}
function xr(e) {
	let { parent: t, key: r } = e;
	switch (t.type) {
		case "NGPipeExpression":
			if (r === "arguments" && e.isLast) return e.callParent(xr);
			break;
		case "ObjectProperty":
			if (r === "value") return e.callParent(() => e.key === "properties" && e.isLast);
			break;
		case "BinaryExpression":
		case "LogicalExpression":
			if (r === "right") return e.callParent(xr);
			break;
		case "ConditionalExpression":
			if (r === "alternate") return e.callParent(xr);
			break;
		case "UnaryExpression":
			if (t.prefix) return e.callParent(xr);
			break;
	}
	return !1;
}
function _o(e, t) {
	let { node: r, parent: n } = e;
	return r.type === "FunctionExpression" || r.type === "ClassExpression" ? n.type === "ExportDefaultDeclaration" || !ds(e, t) : !Xt(r) || n.type !== "ExportDefaultDeclaration" && ds(e, t) ? !1 : e.call(() => _o(e, t), ...Rr(r));
}
function tl(e) {
	return !!(e.match(void 0, (t, r) => r === "expression" && t.type === "ChainExpression", (t, r) => r === "tag" && t.type === "TaggedTemplateExpression") || e.match((t) => t.type === "OptionalCallExpression" || t.type === "OptionalMemberExpression", (t, r) => r === "tag" && t.type === "TaggedTemplateExpression") || e.match((t) => t.type === "OptionalCallExpression" || t.type === "OptionalMemberExpression", (t, r) => r === "expression" && t.type === "TSNonNullExpression", (t, r) => r === "tag" && t.type === "TaggedTemplateExpression") || e.match(void 0, (t, r) => r === "expression" && t.type === "ChainExpression", (t, r) => r === "expression" && t.type === "TSNonNullExpression", (t, r) => r === "tag" && t.type === "TaggedTemplateExpression") || e.match(void 0, (t, r) => r === "expression" && t.type === "TSNonNullExpression", (t, r) => r === "expression" && t.type === "ChainExpression", (t, r) => r === "tag" && t.type === "TaggedTemplateExpression") || e.match((t) => t.type === "OptionalMemberExpression" || t.type === "OptionalCallExpression", (t, r) => r === "object" && t.type === "MemberExpression" || r === "callee" && (t.type === "CallExpression" || t.type === "NewExpression")) || e.match((t) => t.type === "OptionalMemberExpression" || t.type === "OptionalCallExpression", (t, r) => r === "expression" && t.type === "TSNonNullExpression", (t, r) => r === "object" && t.type === "MemberExpression" || r === "callee" && t.type === "CallExpression") || e.match((t) => t.type === "CallExpression" || t.type === "MemberExpression", (t, r) => r === "expression" && t.type === "ChainExpression") && (e.match(void 0, void 0, (t, r) => r === "callee" && (t.type === "CallExpression" && !t.optional || t.type === "NewExpression") || r === "object" && t.type === "MemberExpression" && !t.optional) || e.match(void 0, void 0, (t, r) => r === "expression" && t.type === "TSNonNullExpression", (t, r) => r === "object" && t.type === "MemberExpression" || r === "callee" && t.type === "CallExpression")) || e.match((t) => t.type === "CallExpression" || t.type === "MemberExpression", (t, r) => r === "expression" && t.type === "TSNonNullExpression", (t, r) => r === "expression" && t.type === "ChainExpression", (t, r) => r === "object" && t.type === "MemberExpression" || r === "callee" && t.type === "CallExpression"));
}
function Cs(e) {
	return e.type === "Identifier" ? !0 : J(e) ? !e.computed && !e.optional && e.property.type === "Identifier" && Cs(e.object) : !1;
}
function rl(e) {
	return e.type === "ChainExpression" && (e = e.expression), Cs(e) || M(e) && !e.optional && Cs(e.callee);
}
var ge = ds;
function nl(e, t) {
	let r = t - 1;
	r = ze(e, r, { backwards: !0 }), r = Ze(e, r, { backwards: !0 }), r = ze(e, r, { backwards: !0 });
	let n = Ze(e, r, { backwards: !0 });
	return r !== n;
}
var Mo = nl;
var sl = () => !0;
function As(e, t) {
	let r = e.node;
	return r.printed = !0, t.printer.printComment(e, t);
}
function il(e, t) {
	let r = e.node, n = [As(e, t)], { printer: s, originalText: i, locStart: o, locEnd: u } = t;
	if (s.isBlockComment?.(r)) {
		let y = Z(i, u(r)) ? Z(i, o(r), { backwards: !0 }) ? E : A : " ";
		n.push(y);
	} else n.push(E);
	let c = Ze(i, ze(i, u(r)));
	return c !== !1 && Z(i, c) && n.push(E), n;
}
function ol(e, t, r) {
	let n = e.node, s = As(e, t), { printer: i, originalText: o, locStart: u } = t, p = i.isBlockComment?.(n);
	if (r?.hasLineSuffix && !r?.isBlock || Z(o, u(n), { backwards: !0 })) return {
		doc: us([
			E,
			Mo(o, u(n)) ? E : "",
			s
		]),
		isBlock: p,
		hasLineSuffix: !0
	};
	return !p || r?.hasLineSuffix ? {
		doc: [us([" ", s]), ke],
		isBlock: p,
		hasLineSuffix: !0
	} : {
		doc: [" ", s],
		isBlock: p,
		hasLineSuffix: !1
	};
}
function v(e, t, r = {}) {
	let { node: n } = e;
	if (!R(n?.comments)) return "";
	let { indent: s = !1, marker: i, filter: o = sl } = r, u = [];
	if (e.each(({ node: c }) => {
		c.leading || c.trailing || c.marker !== i || !o(c) || u.push(As(e, t));
	}, "comments"), u.length === 0) return "";
	let p = L(E, u);
	return s ? m([E, p]) : p;
}
function Mt(e, t) {
	let r = e.node;
	if (!r) return {};
	let n = t[Symbol.for("printedComments")];
	if ((r.comments || []).filter((p) => !n.has(p)).length === 0) return {
		leading: "",
		trailing: ""
	};
	let i = [], o = [], u;
	return e.each(() => {
		let p = e.node;
		if (n?.has(p)) return;
		let { leading: c, trailing: y } = p;
		c ? i.push(il(e, t)) : y && (u = ol(e, t, u), o.push(u.doc));
	}, "comments"), {
		leading: i,
		trailing: o
	};
}
function De(e, t, r) {
	let { leading: n, trailing: s } = Mt(e, r);
	return !n && !s ? t : Ar(t, (i) => [
		n,
		i,
		s
	]);
}
var Et = class extends Error {
	name = "ArgExpansionBailout";
};
function Ke(e, t, r, n, s) {
	let i = e.node, o = K(i), u = s && i.typeParameters ? r("typeParameters") : "";
	if (o.length === 0) return [
		u,
		"(",
		v(e, t, { filter: (d) => _e(t.originalText, I(d)) === ")" }),
		")"
	];
	let { parent: p } = e, c = It(p), y = No(i), D = [];
	if (xi(e, (d, b) => {
		let B = b === o.length - 1;
		B && i.rest && D.push("..."), D.push(r()), !B && (D.push(","), c || y ? D.push(" ") : oe(o[b], t) ? D.push(E, E) : D.push(A));
	}), n && !al(e)) {
		if (ne(u) || ne(D)) throw new Et();
		return l([
			_t(u),
			"(",
			_t(D),
			")"
		]);
	}
	let F = o.every((d) => !R(d.decorators));
	return y && F ? [
		u,
		"(",
		...D,
		")"
	] : c ? [
		u,
		"(",
		...D,
		")"
	] : (Gr(p) || Ei(p) || p.type === "TypeAlias" || p.type === "UnionTypeAnnotation" || p.type === "IntersectionTypeAnnotation" || p.type === "FunctionTypeAnnotation" && p.returnType === i) && o.length === 1 && o[0].name === null && i.this !== o[0] && o[0].typeAnnotation && i.typeParameters === null && Vt(o[0].typeAnnotation) && !i.rest ? t.arrowParens === "always" || i.type === "HookTypeAnnotation" ? [
		"(",
		...D,
		")"
	] : D : [
		u,
		"(",
		m([f, ...D]),
		P(!Ti(i) && ie(t, "all") && e.root.type !== "NGRoot" ? "," : ""),
		f,
		")"
	];
}
function No(e) {
	if (!e) return !1;
	let t = K(e);
	if (t.length !== 1) return !1;
	let [r] = t;
	return !T(r) && (r.type === "ObjectPattern" || r.type === "ArrayPattern" || r.type === "Identifier" && r.typeAnnotation && (r.typeAnnotation.type === "TypeAnnotation" || r.typeAnnotation.type === "TSTypeAnnotation") && Je(r.typeAnnotation.typeAnnotation) || r.type === "FunctionTypeParam" && Je(r.typeAnnotation) && r !== e.rest || r.type === "AssignmentPattern" && (r.left.type === "ObjectPattern" || r.left.type === "ArrayPattern") && (r.right.type === "Identifier" || se(r.right) && r.right.properties.length === 0 || q(r.right) && r.right.elements.length === 0));
}
function ul(e) {
	let t;
	return e.returnType ? (t = e.returnType, t.typeAnnotation && (t = t.typeAnnotation)) : e.typeAnnotation && (t = e.typeAnnotation), t;
}
function lt(e, t) {
	let r = ul(e);
	if (!r) return !1;
	let n = e.typeParameters?.params;
	if (n) {
		if (n.length > 1) return !1;
		if (n.length === 1) {
			let s = n[0];
			if (s.constraint || s.default) return !1;
		}
	}
	return K(e).length === 1 && (Je(r) || ne(t));
}
function al(e) {
	return e.match((t) => t.type === "ArrowFunctionExpression" && t.body.type === "BlockStatement", (t, r) => {
		if (t.type === "CallExpression" && r === "arguments" && t.arguments.length === 1 && t.callee.type === "CallExpression") {
			let n = t.callee.callee;
			return n.type === "Identifier" || n.type === "MemberExpression" && !n.computed && n.object.type === "Identifier" && n.property.type === "Identifier";
		}
		return !1;
	}, (t, r) => t.type === "VariableDeclarator" && r === "init" || t.type === "ExportDefaultDeclaration" && r === "declaration" || t.type === "TSExportAssignment" && r === "expression" || t.type === "AssignmentExpression" && r === "right" && t.left.type === "MemberExpression" && t.left.object.type === "Identifier" && t.left.object.name === "module" && t.left.property.type === "Identifier" && t.left.property.name === "exports", (t) => t.type !== "VariableDeclaration" || t.kind === "const" && t.declarations.length === 1);
}
function jo(e) {
	let t = K(e);
	return t.length > 1 && t.some((r) => r.type === "TSParameterProperty");
}
function Nt(e, t) {
	return (t === "params" || t === "this" || t === "rest") && No(e);
}
function X(e) {
	let { node: t } = e;
	return !t.optional || t.type === "Identifier" && t === e.parent.key ? "" : M(t) || J(t) && t.computed || t.type === "OptionalIndexedAccessType" ? "?." : "?";
}
function sn(e) {
	return e.node.definite || e.match(void 0, (t, r) => r === "id" && t.type === "VariableDeclarator" && t.definite) ? "!" : "";
}
var pl = k([
	"DeclareClass",
	"DeclareComponent",
	"DeclareFunction",
	"DeclareHook",
	"DeclareVariable",
	"DeclareExportDeclaration",
	"DeclareExportAllDeclaration",
	"DeclareOpaqueType",
	"DeclareTypeAlias",
	"DeclareEnum",
	"DeclareInterface"
]);
function Q(e) {
	let { node: t } = e;
	return t.declare || pl(t) && e.parent.type !== "DeclareExportDeclaration" ? "declare " : "";
}
var cl = k([
	"TSAbstractMethodDefinition",
	"TSAbstractPropertyDefinition",
	"TSAbstractAccessorProperty"
]);
function Zt({ node: e }) {
	return e.abstract || cl(e) ? "abstract " : "";
}
function Ft(e, t, r) {
	return e.type === "EmptyStatement" ? T(e, x.Leading) ? [" ", t] : t : e.type === "BlockStatement" || r ? [" ", t] : m([A, t]);
}
function jt(e) {
	return e.accessibility ? e.accessibility + " " : "";
}
var ll = /^[\$A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC][\$0-9A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]*$/, ml = (e) => ll.test(e), vo = ml;
function Dl(e) {
	return e.length === 1 ? e : e.toLowerCase().replace(/^([+-]?[\d.]+e)(?:\+|(-))?0*(?=\d)/u, "$1$2").replace(/^([+-]?[\d.]+)e[+-]?0+$/u, "$1").replace(/^([+-])?\./u, "$10.").replace(/(\.\d+?)0+(?=e|$)/u, "$1").replace(/\.(?=e|$)/u, "");
}
var dt = Dl;
var fl = 0;
function on(e, t, r) {
	let { node: n, parent: s, grandparent: i, key: o } = e, u = o !== "body" && (s.type === "IfStatement" || s.type === "WhileStatement" || s.type === "SwitchStatement" || s.type === "DoWhileStatement"), p = n.operator === "|>" && e.root.extra?.__isUsingHackPipeline, c = Ts(e, t, r, !1, u);
	if (u) return c;
	if (p) return l(c);
	if (o === "callee" && (M(s) || s.type === "NewExpression") || s.type === "UnaryExpression" || J(s) && !s.computed) return l([m([f, ...c]), f]);
	let y = s.type === "ReturnStatement" || s.type === "ThrowStatement" || s.type === "JSXExpressionContainer" && i.type === "JSXAttribute" || n.operator !== "|" && s.type === "JsExpressionRoot" || n.type !== "NGPipeExpression" && (s.type === "NGRoot" && t.parser === "__ng_binding" || s.type === "NGMicrosyntaxExpression" && i.type === "NGMicrosyntax" && i.body.length === 1) || n === s.body && s.type === "ArrowFunctionExpression" || n !== s.body && s.type === "ForStatement" || s.type === "ConditionalExpression" && i.type !== "ReturnStatement" && i.type !== "ThrowStatement" && !M(i) && i.type !== "NewExpression" || s.type === "TemplateLiteral" || El(e), D = s.type === "AssignmentExpression" || s.type === "VariableDeclarator" || s.type === "ClassProperty" || s.type === "PropertyDefinition" || s.type === "TSAbstractPropertyDefinition" || s.type === "ClassPrivateProperty" || Oe(s), F = Te(n.left) && dr(n.operator, n.left.operator);
	if (y || er(n) && !F || !er(n) && D) return l(c);
	if (c.length === 0) return "";
	let C = H(n.right), d = c.findIndex((S) => typeof S != "string" && !Array.isArray(S) && S.type === Fe), b = c.slice(0, d === -1 ? 1 : d + 1), B = c.slice(b.length, C ? -1 : void 0), O = Symbol("logicalChain-" + ++fl), h = l([...b, m(B)], { id: O });
	if (!C) return h;
	return l([h, yt(N(0, c, -1), { groupId: O })]);
}
function Ts(e, t, r, n, s) {
	let { node: i } = e;
	if (!Te(i)) return [l(r())];
	let o = [];
	dr(i.operator, i.left.operator) ? o = e.call(() => Ts(e, t, r, !0, s), "left") : o.push(l(r("left")));
	let u = er(i), p = i.right.type === "ChainExpression" ? i.right.expression : i.right, c = (i.operator === "|>" || i.type === "NGPipeExpression" || yl(e, t)) && !Ee(t.originalText, p), D = !T(p, x.Leading, Hr) && Ee(t.originalText, p), F = i.type === "NGPipeExpression" ? "|" : i.operator, C = i.type === "NGPipeExpression" && i.arguments.length > 0 ? l(m([
		f,
		": ",
		L([A, ": "], e.map(() => xe(2, l(r())), "arguments"))
	])) : "", d;
	if (u) d = [F, Ee(t.originalText, p) ? m([
		A,
		r("right"),
		C
	]) : [
		" ",
		r("right"),
		C
	]];
	else {
		let g = F === "|>" && e.root.extra?.__isUsingHackPipeline ? e.call(() => Ts(e, t, r, !0, s), "right") : r("right");
		if (t.experimentalOperatorPosition === "start") {
			let S = "";
			if (D) switch (We(g)) {
				case Be:
					S = g.splice(0, 1)[0];
					break;
				case Pe:
					S = g.contents.splice(0, 1)[0];
					break;
			}
			d = [
				A,
				S,
				F,
				" ",
				g,
				C
			];
		} else d = [
			c ? A : "",
			F,
			c ? " " : A,
			g,
			C
		];
	}
	let { parent: b } = e, B = T(i.left, x.Trailing | x.Line);
	if ((B || !(s && i.type === "LogicalExpression") && b.type !== i.type && i.left.type !== i.type && i.right.type !== i.type) && (d = l(d, { shouldBreak: B })), t.experimentalOperatorPosition === "start" ? o.push(u || D ? " " : "", d) : o.push(c ? "" : " ", d), n && T(i)) {
		let h = Qt(De(e, o, t));
		return h.type === Me ? h.parts : Array.isArray(h) ? h : [h];
	}
	return o;
}
function er(e) {
	return e.type !== "LogicalExpression" ? !1 : !!(se(e.right) && e.right.properties.length > 0 || q(e.right) && e.right.elements.length > 0 || H(e.right));
}
var Ro = (e) => e.type === "BinaryExpression" && e.operator === "|";
function yl(e, t) {
	return (t.parser === "__vue_expression" || t.parser === "__vue_ts_expression") && Ro(e.node) && !e.hasAncestor((r) => !Ro(r) && r.type !== "JsExpressionRoot");
}
function El(e) {
	if (e.key !== "arguments") return !1;
	let { parent: t } = e;
	if (!(M(t) && !t.optional && t.arguments.length === 1)) return !1;
	let { callee: r } = t;
	return r.type === "Identifier" && r.name === "Boolean";
}
function un(e, t, r) {
	let { node: n } = e, { parent: s } = e, i = s.type !== "TypeParameterInstantiation" && (!Ue(s) || !t.experimentalTernaries) && s.type !== "TSTypeParameterInstantiation" && s.type !== "GenericTypeAnnotation" && s.type !== "TSTypeReference" && s.type !== "TSTypeAssertion" && s.type !== "TupleTypeAnnotation" && s.type !== "TSTupleType" && !(s.type === "FunctionTypeParam" && !s.name && e.grandparent.this !== s) && !((Cr(s) || s.type === "VariableDeclarator") && Ee(t.originalText, n)) && !(Cr(s) && T(s.id, x.Trailing | x.Line)), o = xs(n), u = e.map(() => {
		let C = r();
		return o || (C = xe(2, C)), De(e, C, t);
	}, "types"), p = "", c = "";
	if (Yr(e) && ({leading: p, trailing: c} = Mt(e, t)), o) return [
		p,
		L(" | ", u),
		c
	];
	let D = [P([i && !Ee(t.originalText, n) ? A : "", "| "]), L([A, "| "], u)];
	if (ge(e, t)) return [
		p,
		l([m(D), f]),
		c
	];
	let F = [p, l(D)];
	return (s.type === "TupleTypeAnnotation" || s.type === "TSTupleType") && s[s.type === "TupleTypeAnnotation" && s.types ? "types" : "elementTypes"].length > 1 ? [l([
		m([P(["(", f]), F]),
		f,
		P(")")
	]), c] : [l(i ? m(F) : F), c];
}
var Fl = k([
	"VoidTypeAnnotation",
	"TSVoidKeyword",
	"NullLiteralTypeAnnotation",
	"TSNullKeyword"
]), dl = k([
	"ObjectTypeAnnotation",
	"TSTypeLiteral",
	"GenericTypeAnnotation",
	"TSTypeReference"
]);
function xs(e) {
	let { types: t } = e;
	if (t.some((n) => T(n))) return !1;
	let r = t.find((n) => dl(n));
	return r ? t.every((n) => n === r || Fl(n)) : !1;
}
function Jo(e) {
	return Vt(e) || Je(e) ? !0 : Se(e) ? xs(e) : !1;
}
var Cl = /* @__PURE__ */ new WeakSet();
function G(e, t, r = "typeAnnotation") {
	let { node: { [r]: n } } = e;
	if (!n) return "";
	let s = !1;
	if (n.type === "TSTypeAnnotation" || n.type === "TypeAnnotation") {
		let i = e.call(Go, r);
		(i === "=>" || i === ":" && T(n, x.Leading)) && (s = !0), Cl.add(n);
	}
	return s ? [" ", t(r)] : t(r);
}
var Go = (e) => e.match((t) => t.type === "TSTypeAnnotation", (t, r) => (r === "returnType" || r === "typeAnnotation") && (t.type === "TSFunctionType" || t.type === "TSConstructorType")) ? "=>" : e.match((t) => t.type === "TSTypeAnnotation", (t, r) => r === "typeAnnotation" && (t.type === "TSJSDocNullableType" || t.type === "TSJSDocNonNullableType" || t.type === "TSTypePredicate")) || e.match((t) => t.type === "TypeAnnotation", (t, r) => r === "typeAnnotation" && t.type === "Identifier", (t, r) => r === "id" && t.type === "DeclareFunction") || e.match((t) => t.type === "TypeAnnotation", (t, r) => r === "typeAnnotation" && t.type === "Identifier", (t, r) => r === "id" && t.type === "DeclareHook") || e.match((t) => t.type === "TypeAnnotation", (t, r) => r === "bound" && t.type === "TypeParameter" && t.usesExtendsBound) ? "" : ":";
function an(e, t, r) {
	let n = Go(e);
	return n ? [
		n,
		" ",
		r("typeAnnotation")
	] : r("typeAnnotation");
}
function Al(e, t, r, n) {
	let { node: s } = e, i = s.inexact ? "..." : "";
	return T(s, x.Dangling) ? l([
		r,
		i,
		v(e, t, { indent: !0 }),
		f,
		n
	]) : [
		r,
		i,
		n
	];
}
function tr(e, t, r) {
	let { node: n } = e, s = [], i = "[", o = "]", u = n.type === "TupleTypeAnnotation" && n.types ? "types" : n.type === "TSTupleType" || n.type === "TupleTypeAnnotation" ? "elementTypes" : "elements", p = n[u];
	if (p.length === 0) s.push(Al(e, t, i, o));
	else {
		let c = N(0, p, -1), y = c?.type !== "RestElement" && !n.inexact, D = c === null, F = Symbol("array"), C = !t.__inJestEach && p.length > 1 && p.every((B, O, h) => {
			let g = B?.type;
			if (!q(B) && !se(B)) return !1;
			let S = h[O + 1];
			if (S && g !== S.type) return !1;
			let j = q(B) ? "elements" : "properties";
			return B[j] && B[j].length > 1;
		}), d = gs(n, t), b = y ? D ? "," : ie(t) ? d ? P(",", "", { groupId: F }) : P(",") : "" : "";
		s.push(l([
			i,
			m([
				f,
				d ? xl(e, t, r, b) : [Tl(e, t, r, u, n.inexact), b],
				v(e, t)
			]),
			f,
			o
		], {
			shouldBreak: C,
			id: F
		}));
	}
	return s.push(X(e), G(e, r)), s;
}
function gs(e, t) {
	return q(e) && e.elements.length > 0 && e.elements.every((r) => r && (Ce(r) || Hn(r) && !T(r.argument)) && !T(r, x.Trailing | x.Line, (n) => !Z(t.originalText, w(n), { backwards: !0 })));
}
function Wo({ node: e }, { originalText: t }) {
	let r = I(e);
	if (r === w(e)) return !1;
	let { length: n } = t;
	for (; r < n && t[r] !== ",";) r = qt(t, Ut(t, r + 1));
	return Yt(t, r);
}
function Tl(e, t, r, n, s) {
	let i = [];
	return e.each(({ node: o, isLast: u }) => {
		i.push(o ? l(r()) : ""), (!u || s) && i.push([
			",",
			A,
			o && Wo(e, t) ? f : ""
		]);
	}, n), s && i.push("..."), i;
}
function xl(e, t, r, n) {
	let s = [];
	return e.each(({ isLast: i, next: o }) => {
		s.push([r(), i ? n : ","]), i || s.push(Wo(e, t) ? [E, E] : T(o, x.Leading | x.Line) ? E : A);
	}, "elements"), zr(s);
}
function gl(e, t, r) {
	let { node: n } = e, s = le(n);
	if (s.length === 0) return [
		"(",
		v(e, t),
		")"
	];
	let i = s.length - 1;
	if (Bl(s)) {
		let D = ["("];
		return $t(e, (F, C) => {
			D.push(r()), C !== i && D.push(", ");
		}), D.push(")"), D;
	}
	let o = !1, u = [];
	$t(e, ({ node: D }, F) => {
		let C = r();
		F === i || (oe(D, t) ? (o = !0, C = [
			C,
			",",
			E,
			E
		]) : C = [
			C,
			",",
			A
		]), u.push(C);
	});
	let p = !t.parser.startsWith("__ng_") && n.type !== "ImportExpression" && n.type !== "TSImportType" && n.type !== "TSExternalModuleReference" && ie(t, "all") ? "," : "";
	function c() {
		return l([
			"(",
			m([A, ...u]),
			p,
			A,
			")"
		], { shouldBreak: !0 });
	}
	if (o || e.parent.type !== "Decorator" && Ci(s)) return c();
	if (Sl(s)) {
		let D = u.slice(1);
		if (D.some(ne)) return c();
		let F;
		try {
			F = r($n(n, 0), { expandFirstArg: !0 });
		} catch (C) {
			if (C instanceof Et) return c();
			throw C;
		}
		return ne(F) ? [ke, nt([[
			"(",
			l(F, { shouldBreak: !0 }),
			", ",
			...D,
			")"
		], c()])] : nt([
			[
				"(",
				F,
				", ",
				...D,
				")"
			],
			[
				"(",
				l(F, { shouldBreak: !0 }),
				", ",
				...D,
				")"
			],
			c()
		]);
	}
	if (hl(s, u, t)) {
		let D = u.slice(0, -1);
		if (D.some(ne)) return c();
		let F;
		try {
			F = r($n(n, -1), { expandLastArg: !0 });
		} catch (C) {
			if (C instanceof Et) return c();
			throw C;
		}
		return ne(F) ? [ke, nt([[
			"(",
			...D,
			l(F, { shouldBreak: !0 }),
			")"
		], c()])] : nt([
			[
				"(",
				...D,
				F,
				")"
			],
			[
				"(",
				...D,
				l(F, { shouldBreak: !0 }),
				")"
			],
			c()
		]);
	}
	let y = [
		"(",
		m([f, ...u]),
		P(p),
		f,
		")"
	];
	return Ur(e) ? y : l(y, { shouldBreak: u.some(ne) || o });
}
function gr(e, t = !1) {
	return se(e) && (e.properties.length > 0 || T(e)) || q(e) && (e.elements.length > 0 || T(e)) || e.type === "TSTypeAssertion" && gr(e.expression) || Ae(e) && gr(e.expression) || e.type === "FunctionExpression" || e.type === "ArrowFunctionExpression" && (!e.returnType || !e.returnType.typeAnnotation || e.returnType.typeAnnotation.type !== "TSTypeReference" || bl(e.body)) && (e.body.type === "BlockStatement" || e.body.type === "ArrowFunctionExpression" && gr(e.body, !0) || se(e.body) || q(e.body) || !t && (M(e.body) || e.body.type === "ConditionalExpression") || H(e.body)) || e.type === "DoExpression" || e.type === "ModuleExpression";
}
function hl(e, t, r) {
	let n = N(0, e, -1);
	if (e.length === 1) {
		let i = N(0, t, -1);
		if (i.label?.embed && i.label?.hug !== !1) return !0;
	}
	let s = N(0, e, -2);
	return !T(n, x.Leading) && !T(n, x.Trailing) && gr(n) && (!s || s.type !== n.type) && (e.length !== 2 || s.type !== "ArrowFunctionExpression" || !q(n)) && !(e.length > 1 && gs(n, r));
}
function Sl(e) {
	if (e.length !== 2) return !1;
	let [t, r] = e;
	return t.type === "ModuleExpression" && Pl(r) ? !0 : !T(t) && (t.type === "FunctionExpression" || t.type === "ArrowFunctionExpression" && t.body.type === "BlockStatement") && r.type !== "FunctionExpression" && r.type !== "ArrowFunctionExpression" && r.type !== "ConditionalExpression" && Uo(r) && !gr(r);
}
function Uo(e) {
	if (e.type === "ParenthesizedExpression") return Uo(e.expression);
	if (Ae(e) || e.type === "TypeCastExpression") {
		let { typeAnnotation: t } = e;
		if (t.type === "TypeAnnotation" && (t = t.typeAnnotation), t.type === "TSArrayType" && (t = t.elementType, t.type === "TSArrayType" && (t = t.elementType)), t.type === "GenericTypeAnnotation" || t.type === "TSTypeReference") {
			let r = t.type === "GenericTypeAnnotation" ? t.typeParameters : t.typeArguments;
			r?.params.length === 1 && (t = r.params[0]);
		}
		return Vt(t) && Re(e.expression, 1);
	}
	return Dt(e) && le(e).length > 1 ? !1 : Te(e) ? Re(e.left, 1) && Re(e.right, 1) : Xn(e) || Re(e);
}
function Bl(e) {
	return e.length === 2 ? qo(e, 0) : e.length === 3 ? e[0].type === "Identifier" && qo(e, 1) : !1;
}
function qo(e, t) {
	let r = e[t], n = e[t + 1];
	return r.type === "ArrowFunctionExpression" && K(r).length === 0 && r.body.type === "BlockStatement" && n.type === "ArrayExpression" && !e.some((s) => T(s));
}
function bl(e) {
	return e.type === "BlockStatement" && (e.body.some((t) => t.type !== "EmptyStatement") || T(e, x.Dangling));
}
function Pl(e) {
	if (!(e.type === "ObjectExpression" && e.properties.length === 1)) return !1;
	let [t] = e.properties;
	return Oe(t) ? !t.computed && (t.key.type === "Identifier" && t.key.name === "type" || V(t.key) && t.key.value === "type") && V(t.value) && t.value.value === "module" : !1;
}
var hr = gl;
function Yo(e, t, r) {
	return [r("object"), l(m([f, hs(e, t, r)]))];
}
function hs(e, t, r) {
	return ["::", r("callee")];
}
var kl = (e) => ((e.type === "ChainExpression" || e.type === "TSNonNullExpression") && (e = e.expression), M(e) && le(e).length > 0);
function Il(e) {
	let { node: t, ancestors: r } = e;
	for (let n of r) {
		if (!(J(n) && n.object === t || n.type === "TSNonNullExpression" && n.expression === t)) return n.type === "NewExpression" && n.callee === t;
		t = n;
	}
	return !1;
}
function Ho(e, t, r) {
	let n = r("object"), s = Ss(e, t, r), { node: i } = e, o = e.findAncestor((c) => !(J(c) || c.type === "TSNonNullExpression")), u = e.findAncestor((c) => !(c.type === "ChainExpression" || c.type === "TSNonNullExpression")), p = o.type === "BindExpression" || o.type === "AssignmentExpression" && o.left.type !== "Identifier" || Il(e) || i.computed || i.object.type === "Identifier" && i.property.type === "Identifier" && !J(u) || (u.type === "AssignmentExpression" || u.type === "VariableDeclarator") && (kl(i.object) || n.label?.memberChain);
	return pt(n.label, [n, p ? s : l(m([f, s]))]);
}
function Ss(e, t, r) {
	let n = r("property"), { node: s } = e, i = X(e);
	return s.computed ? !s.property || Ce(s.property) ? [
		i,
		"[",
		n,
		"]"
	] : l([
		i,
		"[",
		m([f, n]),
		f,
		"]"
	]) : [
		i,
		".",
		n
	];
}
function Xo(e, t, r) {
	if (e.node.type === "ChainExpression") return e.call(() => Xo(e, t, r), "expression");
	let n = (e.parent.type === "ChainExpression" ? e.grandparent : e.parent).type === "ExpressionStatement", s = [];
	function i(_) {
		let { originalText: re } = t, ae = at(re, I(_));
		return re.charAt(ae) === ")" ? ae !== !1 && Yt(re, ae + 1) : oe(_, t);
	}
	function o() {
		let { node: _ } = e;
		if (_.type === "ChainExpression") return e.call(o, "expression");
		if (M(_) && (Tt(_.callee) || M(_.callee))) {
			let re = i(_);
			s.unshift({
				node: _,
				hasTrailingEmptyLine: re,
				printed: [De(e, [
					X(e),
					r("typeArguments"),
					hr(e, t, r)
				], t), re ? E : ""]
			}), e.call(o, "callee");
		} else Tt(_) ? (s.unshift({
			node: _,
			needsParens: ge(e, t),
			printed: De(e, J(_) ? Ss(e, t, r) : hs(e, t, r), t)
		}), e.call(o, "object")) : _.type === "TSNonNullExpression" ? (s.unshift({
			node: _,
			printed: De(e, "!", t)
		}), e.call(o, "expression")) : s.unshift({
			node: _,
			printed: r()
		});
	}
	let { node: u } = e;
	s.unshift({
		node: u,
		printed: [
			X(e),
			r("typeArguments"),
			hr(e, t, r)
		]
	}), u.callee && e.call(o, "callee");
	let p = [], c = [s[0]], y = 1;
	for (; y < s.length && (s[y].node.type === "TSNonNullExpression" || M(s[y].node) || J(s[y].node) && s[y].node.computed && Ce(s[y].node.property)); ++y) c.push(s[y]);
	if (!M(s[0].node)) for (; y + 1 < s.length && Tt(s[y].node) && Tt(s[y + 1].node); ++y) c.push(s[y]);
	p.push(c), c = [];
	let D = !1;
	for (; y < s.length; ++y) {
		if (D && Tt(s[y].node)) {
			if (s[y].node.computed && Ce(s[y].node.property)) {
				c.push(s[y]);
				continue;
			}
			p.push(c), c = [], D = !1;
		}
		(M(s[y].node) || s[y].node.type === "ImportExpression") && (D = !0), c.push(s[y]), T(s[y].node, x.Trailing) && (p.push(c), c = [], D = !1);
	}
	c.length > 0 && p.push(c);
	function F(_) {
		return /^[A-Z]|^[$_]+$/u.test(_);
	}
	function C(_) {
		return _.length <= t.tabWidth;
	}
	function d(_) {
		let re = _[1][0]?.node.computed;
		if (_[0].length === 1) {
			let it = _[0][0].node;
			return it.type === "ThisExpression" || it.type === "Identifier" && (F(it.name) || n && C(it.name) || re);
		}
		let ae = N(0, _[0], -1).node;
		return J(ae) && ae.property.type === "Identifier" && (F(ae.property.name) || re);
	}
	let b = p.length >= 2 && !T(p[1][0].node) && d(p);
	function B(_) {
		let re = _.map((ae) => ae.printed);
		return _.length > 0 && N(0, _, -1).needsParens ? [
			"(",
			...re,
			")"
		] : re;
	}
	function O(_) {
		return _.length === 0 ? "" : m([E, L(E, _.map(B))]);
	}
	let h = p.map(B), g = h, S = b ? 3 : 2, j = p.flat(), U = j.slice(1, -1).some((_) => T(_.node, x.Leading)) || j.slice(0, -1).some((_) => T(_.node, x.Trailing)) || p[S] && T(p[S][0].node, x.Leading);
	if (p.length <= S && !U && !p.some((_) => N(0, _, -1).hasTrailingEmptyLine)) return Ur(e) ? g : l(g);
	let fe = N(0, p[b ? 1 : 0], -1).node, Y = !M(fe) && i(fe), z = [
		B(p[0]),
		b ? p.slice(1, 2).map(B) : "",
		Y ? E : "",
		O(p.slice(b ? 2 : 1))
	], ee = s.map(({ node: _ }) => _).filter(M);
	function Ie() {
		let _ = N(0, N(0, p, -1), -1).node, re = N(0, h, -1);
		return M(_) && ne(re) && ee.slice(0, -1).some((ae) => ae.arguments.some(Ht));
	}
	let st;
	return U || ee.length > 2 && ee.some((_) => !_.arguments.every((re) => Re(re))) || h.slice(0, -1).some(ne) || Ie() ? st = l(z) : st = [ne(g) || Y ? ke : "", nt([g, z])], pt({ memberChain: !0 }, st);
}
var Vo = Xo;
function vt(e, t, r) {
	let { node: n } = e, s = n.type === "NewExpression", i = X(e), o = le(n), u = n.type !== "TSImportType" && n.typeArguments ? r("typeArguments") : "", p = o.length === 1 && Wr(o[0], t.originalText);
	if (p || Ol(e) || wl(e) || It(n, e.parent)) {
		let D = [];
		if ($t(e, () => {
			D.push(r());
		}), !(p && D[0].label?.embed)) return [
			s ? "new " : "",
			$o(e, r),
			i,
			u,
			"(",
			L(", ", D),
			")"
		];
	}
	let c = n.type === "ImportExpression" || n.type === "TSImportType" || n.type === "TSExternalModuleReference";
	if (!c && !s && Tt(n.callee) && !e.call(() => ge(e, t), "callee", ...n.callee.type === "ChainExpression" ? ["expression"] : [])) return Vo(e, t, r);
	let y = [
		s ? "new " : "",
		$o(e, r),
		i,
		u,
		hr(e, t, r)
	];
	return c || M(n.callee) ? l(y) : y;
}
function $o(e, t) {
	let { node: r } = e;
	return r.type === "ImportExpression" ? `import${r.phase ? `.${r.phase}` : ""}` : r.type === "TSImportType" ? "import" : r.type === "TSExternalModuleReference" ? "require" : t("callee");
}
var Ll = [
	"require",
	"require.resolve",
	"require.resolve.paths",
	"import.meta.resolve"
];
function Ol(e) {
	let { node: t } = e;
	if (!(t.type === "ImportExpression" || t.type === "TSImportType" || t.type === "TSExternalModuleReference" || t.type === "CallExpression" && !t.optional && Pt(t.callee, Ll))) return !1;
	let r = le(t);
	return r.length === 1 && V(r[0]) && !T(r[0]);
}
function wl(e) {
	let { node: t } = e;
	if (t.type !== "CallExpression" || t.optional || t.callee.type !== "Identifier") return !1;
	let r = le(t);
	return t.callee.name === "require" ? (r.length === 1 && V(r[0]) || r.length > 1) && !T(r[0]) : t.callee.name === "define" && e.parent.type === "ExpressionStatement" ? r.length === 1 || r.length === 2 && r[0].type === "ArrayExpression" || r.length === 3 && V(r[0]) && r[1].type === "ArrayExpression" : !1;
}
function ht(e, t, r, n, s, i) {
	let o = _l(e, t, r, n, i), u = i ? r(i, { assignmentLayout: o }) : "";
	switch (o) {
		case "break-after-operator": return l([
			l(n),
			s,
			l(m([A, u]))
		]);
		case "never-break-after-operator": return l([
			l(n),
			s,
			" ",
			u
		]);
		case "fluid": {
			let p = Symbol("assignment");
			return l([
				l(n),
				s,
				l(m(A), { id: p }),
				je,
				yt(u, { groupId: p })
			]);
		}
		case "break-lhs": return l([
			n,
			s,
			" ",
			l(u)
		]);
		case "chain": return [
			l(n),
			s,
			A,
			u
		];
		case "chain-tail": return [
			l(n),
			s,
			m([A, u])
		];
		case "chain-tail-arrow-chain": return [
			l(n),
			s,
			u
		];
		case "only-left": return n;
	}
}
function zo(e, t, r) {
	let { node: n } = e;
	return ht(e, t, r, r("left"), [" ", n.operator], "right");
}
function Zo(e, t, r) {
	return ht(e, t, r, r("id"), " =", "init");
}
function _l(e, t, r, n, s) {
	let { node: i } = e, o = i[s];
	if (!o) return "only-left";
	let u = !pn(o);
	if (e.match(pn, eu, (F) => !u || F.type !== "ExpressionStatement" && F.type !== "VariableDeclaration")) return u ? o.type === "ArrowFunctionExpression" && o.body.type === "ArrowFunctionExpression" ? "chain-tail-arrow-chain" : "chain-tail" : "chain";
	if (!u && pn(o.right) || Ee(t.originalText, o)) return "break-after-operator";
	if (i.type === "ImportAttribute" || o.type === "CallExpression" && o.callee.name === "require" || t.parser === "json5" || t.parser === "jsonc" || t.parser === "json") return "never-break-after-operator";
	let y = Xi(n);
	if (Nl(i) || Rl(i) || Bs(i) && y) return "break-lhs";
	let D = Jl(i, n, t);
	return e.call(() => Ml(e, t, r, D), s) ? "break-after-operator" : jl(i) ? "break-lhs" : !y && (D || o.type === "TemplateLiteral" || o.type === "TaggedTemplateExpression" || yi(o) || Ce(o) || o.type === "ClassExpression") ? "never-break-after-operator" : "fluid";
}
function Ml(e, t, r, n) {
	let s = e.node;
	if (Te(s) && !er(s)) return !0;
	switch (s.type) {
		case "StringLiteralTypeAnnotation":
		case "SequenceExpression": return !0;
		case "TSConditionalType":
		case "ConditionalTypeAnnotation":
			if (!t.experimentalTernaries && !ql(s)) break;
			return !0;
		case "ConditionalExpression": {
			if (!t.experimentalTernaries) {
				let { test: c } = s;
				return Te(c) && !er(c);
			}
			let { consequent: u, alternate: p } = s;
			return u.type === "ConditionalExpression" || p.type === "ConditionalExpression";
		}
		case "ClassExpression": return R(s.decorators);
	}
	if (n) return !1;
	let i = s, o = [];
	for (;;) if (i.type === "UnaryExpression" || i.type === "AwaitExpression" || i.type === "YieldExpression" && i.argument !== null) i = i.argument, o.push("argument");
	else if (i.type === "TSNonNullExpression") i = i.expression, o.push("expression");
	else break;
	return !!(V(i) || e.call(() => tu(e, t, r), ...o));
}
function Nl(e) {
	if (eu(e)) {
		let t = e.left || e.id;
		return t.type === "ObjectPattern" && t.properties.length > 2 && t.properties.some((r) => Oe(r) && (!r.shorthand || r.value?.type === "AssignmentPattern"));
	}
	return !1;
}
function pn(e) {
	return e.type === "AssignmentExpression";
}
function eu(e) {
	return pn(e) || e.type === "VariableDeclarator";
}
function jl(e) {
	let t = vl(e);
	if (R(t)) {
		let r = e.type === "TSTypeAliasDeclaration" ? "constraint" : "bound";
		if (t.length > 1 && t.some((n) => n[r] || n.default)) return !0;
	}
	return !1;
}
function vl(e) {
	if (Cr(e)) return e.typeParameters?.params;
}
function Rl(e) {
	if (e.type !== "VariableDeclarator") return !1;
	let { typeAnnotation: t } = e.id;
	if (!t || !t.typeAnnotation) return !1;
	let r = Ko(t.typeAnnotation);
	return R(r) && r.length > 1 && r.some((n) => R(Ko(n)) || n.type === "TSConditionalType");
}
function Bs(e) {
	return e.type === "VariableDeclarator" && e.init?.type === "ArrowFunctionExpression";
}
function Ko(e) {
	let t;
	switch (e.type) {
		case "GenericTypeAnnotation":
			t = e.typeParameters;
			break;
		case "TSTypeReference":
			t = e.typeArguments;
			break;
	}
	return t?.params;
}
function tu(e, t, r, n = !1) {
	let { node: s } = e, i = () => tu(e, t, r, !0);
	if (s.type === "ChainExpression" || s.type === "TSNonNullExpression") return e.call(i, "expression");
	if (M(s)) {
		if (vt(e, t, r).label?.memberChain) return !1;
		let u = le(s);
		return !(u.length === 0 || u.length === 1 && Fr(u[0], t)) || Gl(s, r) ? !1 : e.call(i, "callee");
	}
	return J(s) ? e.call(i, "object") : n && (s.type === "Identifier" || s.type === "ThisExpression");
}
function Jl(e, t, r) {
	return Oe(e) ? (t = Qt(t), typeof t == "string" && ot(t) < r.tabWidth + 3) : !1;
}
function Gl(e, t) {
	let r = Wl(e);
	if (R(r)) {
		if (r.length > 1) return !0;
		if (r.length === 1) {
			let s = r[0];
			if (Se(s) || xt(s) || s.type === "TSTypeLiteral" || s.type === "ObjectTypeAnnotation") return !0;
		}
		if (ne(t(e.typeParameters ? "typeParameters" : "typeArguments"))) return !0;
	}
	return !1;
}
function Wl(e) {
	return (e.typeParameters ?? e.typeArguments)?.params;
}
function Qo(e) {
	switch (e.type) {
		case "FunctionTypeAnnotation":
		case "GenericTypeAnnotation":
		case "TSFunctionType": return !!e.typeParameters;
		case "TSTypeReference": return !!e.typeArguments;
		default: return !1;
	}
}
function ql(e) {
	return Qo(e.checkType) || Qo(e.extendsType);
}
var cn = /* @__PURE__ */ new WeakMap();
function nu(e) {
	return /^(?:\d+|\d+\.\d+)$/u.test(e);
}
function ru(e, t) {
	return t.parser === "json" || t.parser === "jsonc" || !V(e.key) || ut(pe(e.key), t).slice(1, -1) !== e.key.value ? !1 : !!(vo(e.key.value) && !(t.parser === "babel-ts" && e.type === "ClassProperty" || (t.parser === "typescript" || t.parser === "oxc-ts") && e.type === "PropertyDefinition") || nu(e.key.value) && String(Number(e.key.value)) === e.key.value && e.type !== "ImportAttribute" && (t.parser === "babel" || t.parser === "acorn" || t.parser === "oxc" || t.parser === "espree" || t.parser === "meriyah" || t.parser === "__babel_estree"));
}
function Ul(e, t) {
	let { key: r } = e.node;
	return (r.type === "Identifier" || Ce(r) && nu(dt(pe(r))) && String(r.value) === dt(pe(r)) && !(t.parser === "typescript" || t.parser === "babel-ts" || t.parser === "oxc-ts")) && (t.parser === "json" || t.parser === "jsonc" || t.quoteProps === "consistent" && cn.get(e.parent));
}
function Ct(e, t, r) {
	let { node: n } = e;
	if (n.computed) return [
		"[",
		r("key"),
		"]"
	];
	let { parent: s } = e, { key: i } = n;
	if (t.quoteProps === "consistent" && !cn.has(s)) {
		let o = e.siblings.some((u) => !u.computed && V(u.key) && !ru(u, t));
		cn.set(s, o);
	}
	if (Ul(e, t)) {
		let o = ut(JSON.stringify(i.type === "Identifier" ? i.name : i.value.toString()), t);
		return e.call(() => De(e, o, t), "key");
	}
	return ru(n, t) && (t.quoteProps === "as-needed" || t.quoteProps === "consistent" && !cn.get(s)) ? e.call(() => De(e, /^\d/u.test(i.value) ? dt(i.value) : i.value, t), "key") : r("key");
}
function ln(e, t, r) {
	let { node: n } = e;
	return n.shorthand ? r("value") : ht(e, t, r, Ct(e, t, r), ":", "value");
}
var Yl = ({ node: e, key: t, parent: r }) => t === "value" && e.type === "FunctionExpression" && (r.type === "ObjectMethod" || r.type === "ClassMethod" || r.type === "ClassPrivateMethod" || r.type === "MethodDefinition" || r.type === "TSAbstractMethodDefinition" || r.type === "TSDeclareMethod" || r.type === "Property" && mt(r));
function mn(e, t, r, n) {
	if (Yl(e)) return Dn(e, t, r);
	let { node: s } = e, i = !1;
	if ((s.type === "FunctionDeclaration" || s.type === "FunctionExpression") && n?.expandLastArg) {
		let { parent: y } = e;
		M(y) && (le(y).length > 1 || K(s).every((D) => D.type === "Identifier" && !D.typeAnnotation)) && (i = !0);
	}
	let o = [
		Q(e),
		s.async ? "async " : "",
		`function${s.generator ? "*" : ""} `,
		s.id ? r("id") : ""
	], u = Ke(e, t, r, i), p = rr(e, r), c = lt(s, p);
	return o.push(r("typeParameters"), l([c ? l(u) : u, p]), s.body ? " " : "", r("body")), t.semi && (s.declare || !s.body) && o.push(";"), o;
}
function Sr(e, t, r) {
	let { node: n } = e, { kind: s } = n, i = n.value || n, o = [];
	return !s || s === "init" || s === "method" || s === "constructor" ? i.async && o.push("async ") : (Le(s === "get" || s === "set"), o.push(s, " ")), i.generator && o.push("*"), o.push(Ct(e, t, r), n.optional ? "?" : "", n === i ? Dn(e, t, r) : r("value")), o;
}
function Dn(e, t, r) {
	let { node: n } = e, s = Ke(e, t, r), i = rr(e, r), o = jo(n), u = lt(n, i), p = [r("typeParameters"), l([o ? l(s, { shouldBreak: !0 }) : u ? l(s) : s, i])];
	return n.body ? p.push(" ", r("body")) : p.push(t.semi ? ";" : ""), p;
}
function Hl(e) {
	let t = K(e);
	return t.length === 1 && !e.typeParameters && !T(e, x.Dangling) && t[0].type === "Identifier" && !t[0].typeAnnotation && !T(t[0]) && !t[0].optional && !e.predicate && !e.returnType;
}
function fn(e, t) {
	if (t.arrowParens === "always") return !1;
	if (t.arrowParens === "avoid") {
		let { node: r } = e;
		return Hl(r);
	}
	return !1;
}
function rr(e, t) {
	let { node: r } = e, s = [G(e, t, "returnType")];
	return r.predicate && s.push(t("predicate")), s;
}
function su(e, t, r) {
	let { node: n } = e, s = [];
	if (n.argument) {
		let u = r("argument");
		Xl(t, n.argument) ? u = [
			"(",
			m([E, u]),
			E,
			")"
		] : (Te(n.argument) || t.experimentalTernaries && n.argument.type === "ConditionalExpression" && (n.argument.consequent.type === "ConditionalExpression" || n.argument.alternate.type === "ConditionalExpression")) && (u = l([
			P("("),
			m([f, u]),
			f,
			P(")")
		])), s.push(" ", u);
	}
	let i = T(n, x.Dangling), o = t.semi && i && T(n, x.Last | x.Line);
	return o && s.push(";"), i && s.push(" ", v(e, t)), !o && t.semi && s.push(";"), s;
}
function iu(e, t, r) {
	return ["return", su(e, t, r)];
}
function ou(e, t, r) {
	return ["throw", su(e, t, r)];
}
function Xl(e, t) {
	if (Ee(e.originalText, t) || T(t, x.Leading, (r) => ue(e.originalText, w(r), I(r))) && !H(t)) return !0;
	if (Xt(t)) {
		let r = t, n;
		for (; n = mi(r);) if (r = n, Ee(e.originalText, r)) return !0;
	}
	return !1;
}
function uu(e, t) {
	if (t.semi || Ps(e, t) || Is(e, t) || ks(e, t)) return !1;
	let { node: r, key: n, parent: s } = e;
	return !!(r.type === "ExpressionStatement" && (n === "body" && (s.type === "Program" || s.type === "BlockStatement" || s.type === "StaticBlock" || s.type === "TSModuleBlock") || n === "consequent" && s.type === "SwitchCase") && e.call(() => au(e, t), "expression"));
}
function au(e, t) {
	let { node: r } = e;
	switch (r.type) {
		case "ParenthesizedExpression":
		case "TypeCastExpression":
		case "ArrayExpression":
		case "ArrayPattern":
		case "TemplateLiteral":
		case "TemplateElement":
		case "RegExpLiteral": return !0;
		case "ArrowFunctionExpression":
			if (!fn(e, t)) return !0;
			break;
		case "UnaryExpression": {
			let { prefix: n, operator: s } = r;
			if (n && (s === "+" || s === "-")) return !0;
			break;
		}
		case "BindExpression":
			if (!r.object) return !0;
			break;
		case "Literal":
			if (r.regex) return !0;
			break;
		default: if (H(r)) return !0;
	}
	return ge(e, t) ? !0 : Xt(r) ? e.call(() => au(e, t), ...Rr(r)) : !1;
}
var bs = ({ node: e, parent: t }) => e.type === "ExpressionStatement" && t.type === "Program" && t.body.length === 1 && (Array.isArray(t.directives) && t.directives.length === 0 || !t.directives);
function Ps(e, t) {
	return (t.parentParser === "markdown" || t.parentParser === "mdx") && bs(e) && H(e.node.expression);
}
function ks(e, t) {
	return t.__isHtmlInlineEventHandler && bs(e);
}
function Is(e, t) {
	return (t.parser === "__vue_event_binding" || t.parser === "__vue_ts_event_binding") && bs(e);
}
var Ls = class extends Error {
	name = "UnexpectedNodeError";
	constructor(t, r, n = "type") {
		super(`Unexpected ${r} node ${n}: ${JSON.stringify(t[n])}.`), this.node = t;
	}
}, Qe = Ls;
function Os(e) {
	if (typeof e != "string") throw new TypeError("Expected a string");
	return e.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
}
var ws = class {
	#e;
	constructor(t) {
		this.#e = new Set(t);
	}
	getLeadingWhitespaceCount(t) {
		let r = this.#e, n = 0;
		for (let s = 0; s < t.length && r.has(t.charAt(s)); s++) n++;
		return n;
	}
	getTrailingWhitespaceCount(t) {
		let r = this.#e, n = 0;
		for (let s = t.length - 1; s >= 0 && r.has(t.charAt(s)); s--) n++;
		return n;
	}
	getLeadingWhitespace(t) {
		let r = this.getLeadingWhitespaceCount(t);
		return t.slice(0, r);
	}
	getTrailingWhitespace(t) {
		let r = this.getTrailingWhitespaceCount(t);
		return t.slice(t.length - r);
	}
	hasLeadingWhitespace(t) {
		return this.#e.has(t.charAt(0));
	}
	hasTrailingWhitespace(t) {
		return this.#e.has(N(0, t, -1));
	}
	trimStart(t) {
		let r = this.getLeadingWhitespaceCount(t);
		return t.slice(r);
	}
	trimEnd(t) {
		let r = this.getTrailingWhitespaceCount(t);
		return t.slice(0, t.length - r);
	}
	trim(t) {
		return this.trimEnd(this.trimStart(t));
	}
	split(t, r = !1) {
		let n = `[${Os([...this.#e].join(""))}]+`, s = new RegExp(r ? `(${n})` : n, "u");
		return t.split(s);
	}
	hasWhitespaceCharacter(t) {
		let r = this.#e;
		return Array.prototype.some.call(t, (n) => r.has(n));
	}
	hasNonWhitespaceCharacter(t) {
		let r = this.#e;
		return Array.prototype.some.call(t, (n) => !r.has(n));
	}
	isWhitespaceOnly(t) {
		let r = this.#e;
		return Array.prototype.every.call(t, (n) => r.has(n));
	}
	#t(t) {
		let r = Number.POSITIVE_INFINITY;
		for (let n of t.split(`
`)) {
			if (n.length === 0) continue;
			let s = this.getLeadingWhitespaceCount(n);
			if (s === 0) return 0;
			n.length !== s && s < r && (r = s);
		}
		return r === Number.POSITIVE_INFINITY ? 0 : r;
	}
	dedentString(t) {
		let r = this.#t(t);
		return r === 0 ? t : t.split(`
`).map((n) => n.slice(r)).join(`
`);
	}
};
var yn = new ws(` 
\r	`), _s = (e) => e === "" || e === A || e === E || e === f;
function Vl(e, t, r) {
	let { node: n } = e;
	if (n.type === "JSXElement" && pm(n)) return [r("openingElement"), r("closingElement")];
	let s = n.type === "JSXElement" ? r("openingElement") : r("openingFragment"), i = n.type === "JSXElement" ? r("closingElement") : r("closingFragment");
	if (n.children.length === 1 && n.children[0].type === "JSXExpressionContainer" && (n.children[0].expression.type === "TemplateLiteral" || n.children[0].expression.type === "TaggedTemplateExpression")) return [
		s,
		...e.map(r, "children"),
		i
	];
	n.children = n.children.map((g) => cm(g) ? {
		type: "JSXText",
		value: " ",
		raw: " "
	} : g);
	let o = n.children.some(H), u = n.children.filter((g) => g.type === "JSXExpressionContainer").length > 1, p = n.type === "JSXElement" && n.openingElement.attributes.length > 1, c = ne(s) || o || p || u, y = e.parent.rootMarker === "mdx", D = t.singleQuote ? "{' '}" : "{\" \"}", F = y ? A : P([D, f], " "), d = $l(e, t, r, F, n.openingElement?.name?.name === "fbt"), b = n.children.some((g) => Br(g));
	for (let g = d.length - 2; g >= 0; g--) {
		let S = d[g] === "" && d[g + 1] === "", j = d[g] === E && d[g + 1] === "" && d[g + 2] === E, U = (d[g] === f || d[g] === E) && d[g + 1] === "" && d[g + 2] === F, fe = d[g] === F && d[g + 1] === "" && (d[g + 2] === f || d[g + 2] === E), Y = d[g] === F && d[g + 1] === "" && d[g + 2] === F, z = d[g] === f && d[g + 1] === "" && d[g + 2] === E || d[g] === E && d[g + 1] === "" && d[g + 2] === f;
		j && b || S || U || Y || z ? d.splice(g, 2) : fe && d.splice(g + 1, 2);
	}
	for (; d.length > 0 && _s(N(0, d, -1));) d.pop();
	for (; d.length > 1 && _s(d[0]) && _s(d[1]);) d.shift(), d.shift();
	let B = [""];
	for (let [g, S] of d.entries()) {
		if (S === F) {
			if (g === 1 && Vi(d[g - 1])) {
				if (d.length === 2) {
					B.push([B.pop(), D]);
					continue;
				}
				B.push([D, E], "");
				continue;
			} else if (g === d.length - 1) {
				B.push([B.pop(), D]);
				continue;
			} else if (d[g - 1] === "" && d[g - 2] === E) {
				B.push([B.pop(), D]);
				continue;
			}
		}
		g % 2 === 0 ? B.push([B.pop(), S]) : B.push(S, ""), ne(S) && (c = !0);
	}
	let O = b ? zr(B) : l(B, { shouldBreak: !0 });
	if (t.cursorNode?.type === "JSXText" && n.children.includes(t.cursorNode) ? O = [
		Tr,
		O,
		Tr
	] : t.nodeBeforeCursor?.type === "JSXText" && n.children.includes(t.nodeBeforeCursor) ? O = [Tr, O] : t.nodeAfterCursor?.type === "JSXText" && n.children.includes(t.nodeAfterCursor) && (O = [O, Tr]), y) return O;
	let h = l([
		s,
		m([E, O]),
		E,
		i
	]);
	return c ? h : nt([l([
		s,
		...d,
		i
	]), h]);
}
function $l(e, t, r, n, s) {
	let i = "", o = [i];
	function u(c) {
		i = c, o.push([o.pop(), c]);
	}
	function p(c) {
		c !== "" && (i = c, o.push(c, ""));
	}
	return e.each(({ node: c, next: y }) => {
		if (c.type === "JSXText") {
			let D = pe(c);
			if (Br(c)) {
				let F = yn.split(D, !0);
				F[0] === "" && (F.shift(), /\n/u.test(F[0]) ? p(lu(s, F[1], c, y)) : p(n), F.shift());
				let C;
				if (N(0, F, -1) === "" && (F.pop(), C = F.pop()), F.length === 0) return;
				for (let [d, b] of F.entries()) d % 2 === 1 ? p(A) : u(b);
				C !== void 0 ? /\n/u.test(C) ? p(lu(s, i, c, y)) : p(n) : p(cu(s, i, c, y));
			} else /\n/u.test(D) ? D.match(/\n/gu).length > 1 && p(E) : p(n);
		} else if (u(r()), y && Br(y)) {
			let C = yn.trim(pe(y)), [d] = yn.split(C);
			p(cu(s, d, c, y));
		} else p(E);
	}, "children"), o;
}
function cu(e, t, r, n) {
	return e ? "" : r.type === "JSXElement" && !r.closingElement || n?.type === "JSXElement" && !n.closingElement ? t.length === 1 ? f : E : f;
}
function lu(e, t, r, n) {
	return e ? E : t.length === 1 ? r.type === "JSXElement" && !r.closingElement || n?.type === "JSXElement" && !n.closingElement ? E : f : E;
}
var Kl = k([
	"ArrayExpression",
	"JSXAttribute",
	"JSXElement",
	"JSXExpressionContainer",
	"JSXFragment",
	"ExpressionStatement",
	"NewExpression",
	"CallExpression",
	"OptionalCallExpression",
	"ConditionalExpression",
	"JsExpressionRoot",
	"MatchExpressionCase"
]);
function Ql(e, t, r) {
	let { parent: n } = e;
	if (Kl(n)) return t;
	let s = zl(e), i = ge(e, r);
	return l([
		i ? "" : P("("),
		m([f, t]),
		f,
		i ? "" : P(")")
	], { shouldBreak: s });
}
function zl(e) {
	return e.match(void 0, (t, r) => r === "body" && t.type === "ArrowFunctionExpression", (t, r) => r === "arguments" && M(t)) && (e.match(void 0, void 0, void 0, (t, r) => r === "expression" && t.type === "JSXExpressionContainer") || e.match(void 0, void 0, void 0, (t, r) => r === "expression" && t.type === "ChainExpression", (t, r) => r === "expression" && t.type === "JSXExpressionContainer"));
}
function Zl(e, t, r) {
	let { node: n } = e, s = [r("name")];
	if (n.value) {
		let i;
		if (V(n.value)) {
			let u = W(0, W(0, pe(n.value).slice(1, -1), "&apos;", "'"), "&quot;", "\""), p = wr(u, t.jsxSingleQuote);
			u = p === "\"" ? W(0, u, "\"", "&quot;") : W(0, u, "'", "&apos;"), i = e.call(() => De(e, qe(p + u + p), t), "value");
		} else i = r("value");
		s.push("=", i);
	}
	return s;
}
function em(e, t, r) {
	let { node: n } = e, s = (i, o) => i.type === "JSXEmptyExpression" || !T(i) && (q(i) || se(i) || i.type === "ArrowFunctionExpression" || i.type === "AwaitExpression" && (s(i.argument, i) || i.argument.type === "JSXElement") || M(i) || i.type === "ChainExpression" && M(i.expression) || i.type === "FunctionExpression" || i.type === "TemplateLiteral" || i.type === "TaggedTemplateExpression" || i.type === "DoExpression" || H(o) && (i.type === "ConditionalExpression" || Te(i)));
	return s(n.expression, e.parent) ? l([
		"{",
		r("expression"),
		je,
		"}"
	]) : l([
		"{",
		m([f, r("expression")]),
		f,
		je,
		"}"
	]);
}
function tm(e, t, r) {
	let { node: n } = e, s = T(n.name) || T(n.typeArguments);
	if (n.selfClosing && n.attributes.length === 0 && !s) return [
		"<",
		r("name"),
		r("typeArguments"),
		" />"
	];
	if (n.attributes?.length === 1 && V(n.attributes[0].value) && !n.attributes[0].value.value.includes(`
`) && !s && !T(n.attributes[0])) return l([
		"<",
		r("name"),
		r("typeArguments"),
		" ",
		...e.map(r, "attributes"),
		n.selfClosing ? " />" : ">"
	]);
	let i = n.attributes?.some((u) => V(u.value) && u.value.value.includes(`
`)), o = t.singleAttributePerLine && n.attributes.length > 1 ? E : A;
	return l([
		"<",
		r("name"),
		r("typeArguments"),
		m(e.map(() => [o, r()], "attributes")),
		...rm(n, t, s)
	], { shouldBreak: i });
}
function rm(e, t, r) {
	return e.selfClosing ? [A, "/>"] : nm(e, t, r) ? [">"] : [f, ">"];
}
function nm(e, t, r) {
	let n = e.attributes.length > 0 && T(N(0, e.attributes, -1), x.Trailing);
	return e.attributes.length === 0 && !r || (t.bracketSameLine || t.jsxBracketSameLine) && (!r || e.attributes.length > 0) && !n;
}
function sm(e, t, r) {
	let { node: n } = e, s = ["</"], i = r("name");
	return T(n.name, x.Leading | x.Line) ? s.push(m([E, i]), E) : T(n.name, x.Leading | x.Block) ? s.push(" ", i) : s.push(i), s.push(">"), s;
}
function im(e, t) {
	let { node: r } = e, n = T(r), s = T(r, x.Line), i = r.type === "JSXOpeningFragment";
	return [
		i ? "<" : "</",
		m([s ? E : n && !i ? " " : "", v(e, t)]),
		s ? E : "",
		">"
	];
}
function om(e, t, r) {
	return Ql(e, De(e, Vl(e, t, r), t), t);
}
function um(e, t) {
	let { node: r } = e, n = T(r, x.Line);
	return [v(e, t, { indent: n }), n ? E : ""];
}
function am(e, t, r) {
	let { node: n } = e;
	return [
		"{",
		e.call(({ node: s }) => {
			let i = ["...", r()];
			return T(s) ? [m([f, De(e, i, t)]), f] : i;
		}, n.type === "JSXSpreadAttribute" ? "argument" : "expression"),
		"}"
	];
}
function mu(e, t, r) {
	let { node: n } = e;
	if (n.type.startsWith("JSX")) switch (n.type) {
		case "JSXAttribute": return Zl(e, t, r);
		case "JSXIdentifier": return n.name;
		case "JSXNamespacedName": return L(":", [r("namespace"), r("name")]);
		case "JSXMemberExpression": return L(".", [r("object"), r("property")]);
		case "JSXSpreadAttribute":
		case "JSXSpreadChild": return am(e, t, r);
		case "JSXExpressionContainer": return em(e, t, r);
		case "JSXFragment":
		case "JSXElement": return om(e, t, r);
		case "JSXOpeningElement": return tm(e, t, r);
		case "JSXClosingElement": return sm(e, t, r);
		case "JSXOpeningFragment":
		case "JSXClosingFragment": return im(e, t);
		case "JSXEmptyExpression": return um(e, t);
		case "JSXText": throw new Error("JSXText should be handled by JSXElement");
		default: throw new Qe(n, "JSX");
	}
}
function pm(e) {
	if (e.children.length === 0) return !0;
	if (e.children.length > 1) return !1;
	let t = e.children[0];
	return t.type === "JSXText" && !Br(t);
}
function Br(e) {
	return e.type === "JSXText" && (yn.hasNonWhitespaceCharacter(pe(e)) || !/\n/u.test(pe(e)));
}
function cm(e) {
	return e.type === "JSXExpressionContainer" && V(e.expression) && e.expression.value === " " && !T(e.expression);
}
function Du(e) {
	let { node: t, parent: r } = e;
	if (!H(t) || !H(r)) return !1;
	let { index: n, siblings: s } = e, i;
	for (let o = n; o > 0; o--) {
		let u = s[o - 1];
		if (!(u.type === "JSXText" && !Br(u))) {
			i = u;
			break;
		}
	}
	return i?.type === "JSXExpressionContainer" && i.expression.type === "JSXEmptyExpression" && Ot(i.expression);
}
function lm(e) {
	return Ot(e.node) || Du(e);
}
var nr = lm;
function yu(e, t, r) {
	let { node: n } = e;
	if (n.type.startsWith("NG")) switch (n.type) {
		case "NGRoot": return r("node");
		case "NGPipeExpression": return on(e, t, r);
		case "NGChainedExpression": return l(L([";", A], e.map(() => fm(e) ? r() : [
			"(",
			r(),
			")"
		], "expressions")));
		case "NGEmptyExpression": return "";
		case "NGMicrosyntax": return e.map(() => [e.isFirst ? "" : fu(e) ? " " : [";", A], r()], "body");
		case "NGMicrosyntaxKey": return /^[$_a-z][\w$]*(?:-[$_a-z][\w$])*$/iu.test(n.name) ? n.name : JSON.stringify(n.name);
		case "NGMicrosyntaxExpression": return [r("expression"), n.alias === null ? "" : [" as ", r("alias")]];
		case "NGMicrosyntaxKeyedExpression": {
			let { index: s, parent: i } = e, o = fu(e) || mm(e) || (s === 1 && (n.key.name === "then" || n.key.name === "else" || n.key.name === "as") || s === 2 && (n.key.name === "else" && i.body[s - 1].type === "NGMicrosyntaxKeyedExpression" && i.body[s - 1].key.name === "then" || n.key.name === "track")) && i.body[0].type === "NGMicrosyntaxExpression";
			return [
				r("key"),
				o ? " " : ": ",
				r("expression")
			];
		}
		case "NGMicrosyntaxLet": return [
			"let ",
			r("key"),
			n.value === null ? "" : [" = ", r("value")]
		];
		case "NGMicrosyntaxAs": return [
			r("key"),
			" as ",
			r("alias")
		];
		default: throw new Qe(n, "Angular");
	}
}
function fu({ node: e, index: t }) {
	return e.type === "NGMicrosyntaxKeyedExpression" && e.key.name === "of" && t === 1;
}
function mm(e) {
	let { node: t } = e;
	return e.parent.body[1].key.name === "of" && t.type === "NGMicrosyntaxKeyedExpression" && t.key.name === "track" && t.key.type === "NGMicrosyntaxKey";
}
var Dm = k([
	"CallExpression",
	"OptionalCallExpression",
	"AssignmentExpression"
]);
function fm({ node: e }) {
	return Er(e, Dm);
}
function Ms(e, t, r) {
	let { node: n } = e;
	return l([L(A, e.map(r, "decorators")), du(n, t) ? E : A]);
}
function Eu(e, t, r) {
	return Cu(e.node) ? [L(E, e.map(r, "declaration", "decorators")), E] : "";
}
function Fu(e, t, r) {
	let { node: n, parent: s } = e, { decorators: i } = n;
	if (!R(i) || Cu(s) || nr(e)) return "";
	let o = n.type === "ClassExpression" || n.type === "ClassDeclaration" || du(n, t);
	return [
		e.key === "declaration" && Di(s) ? E : o ? ke : "",
		L(A, e.map(r, "decorators")),
		A
	];
}
function du(e, t) {
	return e.decorators.some((r) => Z(t.originalText, I(r)));
}
function Cu(e) {
	if (e.type !== "ExportDefaultDeclaration" && e.type !== "ExportNamedDeclaration" && e.type !== "DeclareExportDeclaration") return !1;
	let t = e.declaration?.decorators;
	return R(t) && bt(e, t[0]);
}
var Ns = /* @__PURE__ */ new WeakMap();
function Au(e) {
	return Ns.has(e) || Ns.set(e, e.type === "ConditionalExpression" && !ye(e, (t) => t.type === "ObjectExpression")), Ns.get(e);
}
var ym = (e) => e.type === "SequenceExpression";
function Tu(e, t, r, n = {}) {
	let s = [], i, o = [], u = !1, p = !n.expandLastArg && e.node.body.type === "ArrowFunctionExpression", c;
	(function O() {
		let { node: h } = e, g = Em(e, t, r, n);
		if (s.length === 0) s.push(g);
		else {
			let { leading: S, trailing: j } = Mt(e, t);
			s.push([S, g]), o.unshift(j);
		}
		p && (u || (u = h.returnType && K(h).length > 0 || h.typeParameters || K(h).some((S) => S.type !== "Identifier"))), !p || h.body.type !== "ArrowFunctionExpression" ? (i = r("body", n), c = h.body) : e.call(O, "body");
	})();
	let y = !Ee(t.originalText, c) && (ym(c) || Fm(c, i, t) || !u && Au(c)), D = e.key === "callee" && Dt(e.parent), F = Symbol("arrow-chain"), C = dm(e, n, {
		signatureDocs: s,
		shouldBreak: u
	}), d = !1, b = !1, B = !1;
	return p && (D || n.assignmentLayout) && (b = !0, B = !T(e.node, x.Leading & x.Line), d = n.assignmentLayout === "chain-tail-arrow-chain" || D && !y), i = Cm(e, t, n, {
		bodyDoc: i,
		bodyComments: o,
		functionBody: c,
		shouldPutBodyOnSameLine: y
	}), l([
		l(b ? m([B ? f : "", C]) : C, {
			shouldBreak: d,
			id: F
		}),
		" =>",
		p ? yt(i, { groupId: F }) : l(i),
		p && D ? P(f, "", { groupId: F }) : ""
	]);
}
function Em(e, t, r, n) {
	let { node: s } = e, i = [];
	if (s.async && i.push("async "), fn(e, t)) i.push(r(["params", 0]));
	else {
		let u = n.expandLastArg || n.expandFirstArg, p = rr(e, r);
		if (u) {
			if (ne(p)) throw new Et();
			p = l(_t(p));
		}
		i.push(l([Ke(e, t, r, u, !0), p]));
	}
	let o = v(e, t, { filter(u) {
		let p = at(t.originalText, I(u));
		return p !== !1 && t.originalText.slice(p, p + 2) === "=>";
	} });
	return o && i.push(" ", o), i;
}
function Fm(e, t, r) {
	return q(e) || se(e) || e.type === "ArrowFunctionExpression" || e.type === "DoExpression" || e.type === "BlockStatement" || H(e) || t.label?.hug !== !1 && (t.label?.embed || Wr(e, r.originalText));
}
function dm(e, t, { signatureDocs: r, shouldBreak: n }) {
	if (r.length === 1) return r[0];
	let { parent: s, key: i } = e;
	return i !== "callee" && Dt(s) || Te(s) ? l([
		r[0],
		" =>",
		m([A, L([" =>", A], r.slice(1))])
	], { shouldBreak: n }) : i === "callee" && Dt(s) || t.assignmentLayout ? l(L([" =>", A], r), { shouldBreak: n }) : l(m(L([" =>", A], r)), { shouldBreak: n });
}
function Cm(e, t, r, { bodyDoc: n, bodyComments: s, functionBody: i, shouldPutBodyOnSameLine: o }) {
	let { node: u, parent: p } = e, c = r.expandLastArg && ie(t, "all") ? P(",") : "", y = (r.expandLastArg || p.type === "JSXExpressionContainer") && !T(u) ? f : "";
	return o && Au(i) ? [
		" ",
		l([
			P("", "("),
			m([f, n]),
			P("", ")"),
			c,
			y
		]),
		s
	] : o ? [
		" ",
		n,
		s
	] : [
		m([
			A,
			n,
			s
		]),
		c,
		y
	];
}
var Am = Array.prototype.findLast ?? function(e) {
	for (let t = this.length - 1; t >= 0; t--) {
		let r = this[t];
		if (e(r, t, this)) return r;
	}
}, xu = Wt("findLast", function() {
	if (Array.isArray(this)) return Am;
});
function br(e, t, r, n) {
	let { node: s } = e, i = [], o = xu(0, s[n], (u) => u.type !== "EmptyStatement");
	return e.each(({ node: u }) => {
		u.type !== "EmptyStatement" && (i.push(r()), u !== o && (i.push(E), oe(u, t) && i.push(E)));
	}, n), i;
}
function En(e, t, r) {
	let n = xm(e, t, r), { node: s, parent: i } = e;
	if (s.type === "Program" && i?.type !== "ModuleExpression") return n ? [n, E] : "";
	let o = [];
	if (s.type === "StaticBlock" && o.push("static "), o.push("{"), n) o.push(m([E, n]), E);
	else {
		let u = e.grandparent;
		i.type === "ArrowFunctionExpression" || i.type === "FunctionExpression" || i.type === "FunctionDeclaration" || i.type === "ComponentDeclaration" || i.type === "HookDeclaration" || i.type === "ObjectMethod" || i.type === "ClassMethod" || i.type === "ClassPrivateMethod" || i.type === "ForStatement" || i.type === "WhileStatement" || i.type === "DoWhileStatement" || i.type === "DoExpression" || i.type === "ModuleExpression" || i.type === "CatchClause" && !u.finalizer || i.type === "TSModuleDeclaration" || i.type === "MatchStatementCase" || s.type === "StaticBlock" || o.push(E);
	}
	return o.push("}"), o;
}
function xm(e, t, r) {
	let { node: n } = e, s = R(n.directives), i = n.body.some((p) => p.type !== "EmptyStatement"), o = T(n, x.Dangling);
	if (!s && !i && !o) return "";
	let u = [];
	return s && (u.push(br(e, t, r, "directives")), (i || o) && (u.push(E), oe(N(0, n.directives, -1), t) && u.push(E))), i && u.push(br(e, t, r, "body")), o && u.push(v(e, t)), u;
}
function gm(e) {
	let t = /* @__PURE__ */ new WeakMap();
	return function(r) {
		return t.has(r) || t.set(r, Symbol(e)), t.get(r);
	};
}
var gu = gm;
function Rt(e, t, r) {
	let { node: n } = e, s = [], i = n.type === "ObjectTypeAnnotation", o = !Su(e), u = o ? A : E, p = T(n, x.Dangling), [c, y] = i && n.exact ? ["{|", "|}"] : "{}", D;
	if (hm(e, ({ node: F, next: C, isLast: d }) => {
		if (D ?? (D = F), s.push(r()), o && i) {
			let { parent: b } = e;
			b.inexact || !d ? s.push(",") : ie(t) && s.push(P(","));
		}
		!o && (Sm({
			node: F,
			next: C
		}, t) || bu({
			node: F,
			next: C
		}, t)) && s.push(";"), d || (s.push(u), oe(F, t) && s.push(E));
	}), p && s.push(v(e, t)), n.type === "ObjectTypeAnnotation" && n.inexact) {
		let F;
		T(n, x.Dangling) ? F = [T(n, x.Line) || Z(t.originalText, I(N(0, et(n), -1))) ? E : A, "..."] : F = [D ? A : "", "..."], s.push(F);
	}
	if (o) {
		let F = p || t.objectWrap === "preserve" && D && ue(t.originalText, w(n), w(D)), C;
		if (s.length === 0) C = c + y;
		else {
			let d = t.bracketSpacing ? A : f;
			C = [
				c,
				m([d, ...s]),
				d,
				y
			];
		}
		return e.match(void 0, (d, b) => b === "typeAnnotation", (d, b) => b === "typeAnnotation", Nt) || e.match(void 0, (d, b) => d.type === "FunctionTypeParam" && b === "typeAnnotation", Nt) ? C : l(C, { shouldBreak: F });
	}
	return [
		c,
		s.length > 0 ? [m([E, s]), E] : "",
		y
	];
}
function Su(e) {
	let { node: t } = e;
	if (t.type === "ObjectTypeAnnotation") {
		let { key: r, parent: n } = e;
		return r === "body" && (n.type === "InterfaceDeclaration" || n.type === "DeclareInterface" || n.type === "DeclareClass");
	}
	return t.type === "ClassBody" || t.type === "TSInterfaceBody";
}
function hm(e, t) {
	let { node: r } = e;
	if (r.type === "ClassBody" || r.type === "TSInterfaceBody") {
		e.each(t, "body");
		return;
	}
	if (r.type === "TSTypeLiteral") {
		e.each(t, "members");
		return;
	}
	if (r.type === "ObjectTypeAnnotation") {
		let n = [
			"properties",
			"indexers",
			"callProperties",
			"internalSlots"
		].flatMap((s) => e.map(({ node: i, index: o }) => ({
			node: i,
			loc: w(i),
			selector: [s, o]
		}), s)).sort((s, i) => s.loc - i.loc);
		for (let [s, { node: i, selector: o }] of n.entries()) e.call(() => t({
			node: i,
			next: n[s + 1]?.node,
			isLast: s === n.length - 1
		}), ...o);
	}
}
function he(e, t) {
	let { parent: r } = e;
	return e.callParent(Su) ? t.semi || r.type === "ObjectTypeAnnotation" ? ";" : "" : r.type === "TSTypeLiteral" ? e.isLast ? t.semi ? P(";") : "" : t.semi || bu({
		node: e.node,
		next: e.next
	}, t) ? ";" : P("", ";") : "";
}
var hu = k([
	"ClassProperty",
	"PropertyDefinition",
	"ClassPrivateProperty",
	"ClassAccessorProperty",
	"AccessorProperty",
	"TSAbstractPropertyDefinition",
	"TSAbstractAccessorProperty"
]), Bu = (e) => {
	if (e.computed || e.typeAnnotation) return !1;
	let { type: t, name: r } = e.key;
	return t === "Identifier" && (r === "static" || r === "get" || r === "set");
};
function Sm({ node: e, next: t }, r) {
	if (r.semi || !hu(e)) return !1;
	if (!e.value && Bu(e)) return !0;
	if (!t || t.static || t.accessibility || t.readonly) return !1;
	if (!t.computed) {
		let n = t.key?.name;
		if (n === "in" || n === "instanceof") return !0;
	}
	if (hu(t) && t.variance && !t.static && !t.declare) return !0;
	switch (t.type) {
		case "ClassProperty":
		case "PropertyDefinition":
		case "TSAbstractPropertyDefinition": return t.computed;
		case "MethodDefinition":
		case "TSAbstractMethodDefinition":
		case "ClassMethod":
		case "ClassPrivateMethod": {
			if ((t.value ? t.value.async : t.async) || t.kind === "get" || t.kind === "set") return !1;
			let s = t.value ? t.value.generator : t.generator;
			return !!(t.computed || s);
		}
		case "TSIndexSignature": return !0;
	}
	return !1;
}
var Bm = k(["TSPropertySignature"]);
function bu({ node: e, next: t }, r) {
	if (r.semi || !Bm(e)) return !1;
	if (Bu(e)) return !0;
	if (!t) return !1;
	switch (t.type) {
		case "TSCallSignatureDeclaration": return !0;
	}
	return !1;
}
var bm = gu("heritageGroup"), Pm = k([
	"TSInterfaceDeclaration",
	"DeclareInterface",
	"InterfaceDeclaration",
	"InterfaceTypeAnnotation"
]);
function sr(e, t, r) {
	let { node: n } = e, s = Pm(n), i = [
		Q(e),
		Zt(e),
		s ? "interface" : "class"
	], o = ku(e), u = [], p = [];
	if (n.type !== "InterfaceTypeAnnotation") {
		n.id && u.push(" ");
		for (let y of ["id", "typeParameters"]) if (n[y]) {
			let { leading: D, trailing: F } = e.call(() => Mt(e, t), y);
			u.push(D, r(y), m(F));
		}
	}
	if (n.superClass) {
		let y = [Lm(e, t, r), r(n.superTypeArguments ? "superTypeArguments" : "superTypeParameters")], D = e.call(() => ["extends ", De(e, y, t)], "superClass");
		o ? p.push(A, l(D)) : p.push(" ", D);
	} else p.push(vs(e, t, r, "extends"));
	p.push(vs(e, t, r, "mixins"), vs(e, t, r, "implements"));
	let c;
	return o ? (c = bm(n), i.push(l([...u, m(p)], { id: c }))) : i.push(...u, ...p), !s && o && km(n.body) ? i.push(P(E, " ", { groupId: c })) : i.push(" "), i.push(r("body")), i;
}
function km(e) {
	return e.type === "ObjectTypeAnnotation" ? [
		"properties",
		"indexers",
		"callProperties",
		"internalSlots"
	].some((t) => R(e[t])) : R(e.body);
}
function Pu(e) {
	let t = e.superClass ? 1 : 0;
	for (let r of [
		"extends",
		"mixins",
		"implements"
	]) if (Array.isArray(e[r]) && (t += e[r].length), t > 1) return !0;
	return t > 1;
}
function Im(e) {
	let { node: t } = e;
	if (T(t.id, x.Trailing) || T(t.typeParameters, x.Trailing) || T(t.superClass) || Pu(t)) return !0;
	if (t.superClass) return e.parent.type === "AssignmentExpression" ? !1 : !(t.superTypeArguments ?? t.superTypeParameters) && J(t.superClass);
	let r = t.extends?.[0] ?? t.mixins?.[0] ?? t.implements?.[0];
	return r ? r.type === "InterfaceExtends" && r.id.type === "QualifiedTypeIdentifier" && !r.typeParameters || (r.type === "TSClassImplements" || r.type === "TSInterfaceHeritage") && J(r.expression) && !r.typeArguments : !1;
}
var js = /* @__PURE__ */ new WeakMap();
function ku(e) {
	let { node: t } = e;
	return js.has(t) || js.set(t, Im(e)), js.get(t);
}
function vs(e, t, r, n) {
	let { node: s } = e;
	if (!R(s[n])) return "";
	let i = v(e, t, { marker: n }), o = L([",", A], e.map(r, n));
	if (!Pu(s)) {
		let u = [
			`${n} `,
			i,
			o
		];
		return ku(e) ? [A, l(u)] : [" ", u];
	}
	return [
		A,
		i,
		i && E,
		n,
		l(m([A, o]))
	];
}
function Lm(e, t, r) {
	let n = r("superClass"), { parent: s } = e;
	return s.type === "AssignmentExpression" ? l(P([
		"(",
		m([f, n]),
		f,
		")"
	], n)) : n;
}
function Fn(e, t, r) {
	let { node: n } = e, s = [];
	return R(n.decorators) && s.push(Ms(e, t, r)), s.push(jt(n)), n.static && s.push("static "), s.push(Zt(e)), n.override && s.push("override "), s.push(Sr(e, t, r)), s;
}
function dn(e, t, r) {
	let { node: n } = e, s = [];
	R(n.decorators) && s.push(Ms(e, t, r)), s.push(Q(e), jt(n)), n.static && s.push("static "), s.push(Zt(e)), n.override && s.push("override "), n.readonly && s.push("readonly "), n.variance && s.push(r("variance")), (n.type === "ClassAccessorProperty" || n.type === "AccessorProperty" || n.type === "TSAbstractAccessorProperty") && s.push("accessor "), s.push(Ct(e, t, r), X(e), sn(e), G(e, r));
	return [ht(e, t, r, s, " =", n.type === "TSAbstractPropertyDefinition" || n.type === "TSAbstractAccessorProperty" ? void 0 : "value"), t.semi ? ";" : ""];
}
var Om = k([
	"TSAsExpression",
	"TSTypeAssertion",
	"TSNonNullExpression",
	"TSInstantiationExpression",
	"TSSatisfiesExpression"
]);
function Rs(e) {
	return Om(e) ? Rs(e.expression) : e;
}
var Iu = k(["FunctionExpression", "ArrowFunctionExpression"]);
function Lu(e) {
	return e.type === "MemberExpression" || e.type === "OptionalMemberExpression" || e.type === "Identifier" && e.name !== "undefined";
}
function wm(e, t) {
	if (Is(e, t)) {
		let r = Rs(e.node.expression);
		return Iu(r) || Lu(r);
	}
	return !(!t.semi || Ps(e, t) || ks(e, t));
}
function Ou(e, t, r) {
	return [r("expression"), wm(e, t) ? ";" : ""];
}
function wu(e, t, r) {
	if (t.__isVueBindings || t.__isVueForBindingLeft) {
		let n = e.map(r, "program", "body", 0, "params");
		if (n.length === 1) return n[0];
		let s = L([",", A], n);
		return t.__isVueForBindingLeft ? [
			"(",
			m([f, l(s)]),
			f,
			")"
		] : s;
	}
	if (t.__isEmbeddedTypescriptGenericParameters) {
		let n = e.map(r, "program", "body", 0, "typeParameters", "params");
		return L([",", A], n);
	}
}
function Nu(e, t) {
	let { node: r } = e;
	switch (r.type) {
		case "RegExpLiteral": return _u(r);
		case "BigIntLiteral": return Cn(r.extra.raw);
		case "NumericLiteral": return dt(r.extra.raw);
		case "StringLiteral": return qe(ut(r.extra.raw, t));
		case "NullLiteral": return "null";
		case "BooleanLiteral": return String(r.value);
		case "DirectiveLiteral": return Mu(r.extra.raw, t);
		case "Literal": {
			if (r.regex) return _u(r.regex);
			if (r.bigint) return Cn(r.raw);
			let { value: n } = r;
			return typeof n == "number" ? dt(r.raw) : typeof n == "string" ? _m(e) ? Mu(r.raw, t) : qe(ut(r.raw, t)) : String(n);
		}
	}
}
function _m(e) {
	if (e.key !== "expression") return;
	let { parent: t } = e;
	return t.type === "ExpressionStatement" && typeof t.directive == "string";
}
function Cn(e) {
	return e.toLowerCase();
}
function _u({ pattern: e, flags: t }) {
	return t = [...t].sort().join(""), `/${e}/${t}`;
}
var Mm = "use strict";
function Mu(e, t) {
	let r = e.slice(1, -1);
	if (r === Mm || !(r.includes("\"") || r.includes("'"))) {
		let n = t.singleQuote ? "'" : "\"";
		return n + r + n;
	}
	return e;
}
function Nm(e, t, r) {
	let n = e.originalText.slice(t, r);
	for (let s of e[Symbol.for("comments")]) {
		let i = w(s);
		if (i > r) break;
		let o = I(s);
		if (o < t) continue;
		let u = i - t, p = o - t;
		n = n.slice(0, u) + W(0, n.slice(u, p), /[^\n]/gu, " ") + n.slice(p);
	}
	return n;
}
var Jt = Nm;
var ju = k([
	"ImportDeclaration",
	"ExportDefaultDeclaration",
	"ExportNamedDeclaration",
	"ExportAllDeclaration",
	"DeclareExportDeclaration",
	"DeclareExportAllDeclaration"
]), jm = k([
	"EnumBooleanBody",
	"EnumNumberBody",
	"EnumBigIntBody",
	"EnumStringBody",
	"EnumSymbolBody"
]);
function ir(e, t, r) {
	let { node: n, parent: s } = e, i = jm(n), o = n.type === "TSEnumBody" || i, u = ju(n), p = i && n.hasUnknownMembers, c = o ? "members" : u ? "attributes" : "properties", y = n[c], D = o || n.type === "ObjectPattern" && s.type !== "FunctionDeclaration" && s.type !== "FunctionExpression" && s.type !== "ArrowFunctionExpression" && s.type !== "ObjectMethod" && s.type !== "ClassMethod" && s.type !== "ClassPrivateMethod" && s.type !== "AssignmentPattern" && s.type !== "CatchClause" && n.properties.some((B) => B.value && (B.value.type === "ObjectPattern" || B.value.type === "ArrayPattern")) || n.type !== "ObjectPattern" && t.objectWrap === "preserve" && y.length > 0 && vm(n, y[0], t), F = [], C = e.map(({ node: B }) => {
		let O = [...F, l(r())];
		return F = [",", A], oe(B, t) && F.push(E), O;
	}, c);
	if (p) {
		let B;
		if (T(n, x.Dangling)) {
			let O = T(n, x.Line);
			B = [
				v(e, t),
				O || Z(t.originalText, I(N(0, et(n), -1))) ? E : A,
				"..."
			];
		} else B = ["..."];
		C.push([...F, ...B]);
	}
	let d = !(p || N(0, y, -1)?.type === "RestElement"), b;
	if (C.length === 0) {
		if (!T(n, x.Dangling)) return ["{}", G(e, r)];
		b = l([
			"{",
			v(e, t, { indent: !0 }),
			f,
			"}",
			X(e),
			G(e, r)
		]);
	} else {
		let B = t.bracketSpacing ? A : f;
		b = [
			"{",
			m([B, ...C]),
			P(d && ie(t) ? "," : ""),
			B,
			"}",
			X(e),
			G(e, r)
		];
	}
	return e.match((B) => B.type === "ObjectPattern" && !R(B.decorators), Nt) || Je(n) && (e.match(void 0, (B, O) => O === "typeAnnotation", (B, O) => O === "typeAnnotation", Nt) || e.match(void 0, (B, O) => B.type === "FunctionTypeParam" && O === "typeAnnotation", Nt)) || !D && e.match((B) => B.type === "ObjectPattern", (B) => B.type === "AssignmentExpression" || B.type === "VariableDeclarator") ? b : l(b, { shouldBreak: D });
}
function vm(e, t, r) {
	let n = r.originalText, s = w(e), i = w(t);
	if (ju(e)) {
		let o = w(e);
		s = o + Jt(r, o, i).lastIndexOf("{");
	}
	return ue(n, s, i);
}
function vu(e, t, r) {
	let { node: n } = e;
	return [
		"import",
		n.phase ? ` ${n.phase}` : "",
		Gs(n),
		Gu(e, t, r),
		Ju(e, t, r),
		qu(e, t, r),
		t.semi ? ";" : ""
	];
}
var Ru = (e) => e.type === "ExportDefaultDeclaration" || e.type === "DeclareExportDeclaration" && e.default;
function An(e, t, r) {
	let { node: n } = e, s = [
		Eu(e, t, r),
		Q(e),
		"export",
		Ru(n) ? " default" : ""
	], { declaration: i, exported: o } = n;
	return T(n, x.Dangling) && (s.push(" ", v(e, t)), qr(n) && s.push(E)), i ? s.push(" ", r("declaration")) : (s.push(Gm(n)), n.type === "ExportAllDeclaration" || n.type === "DeclareExportAllDeclaration" ? (s.push(" *"), o && s.push(" as ", r("exported"))) : s.push(Gu(e, t, r)), s.push(Ju(e, t, r), qu(e, t, r))), s.push(Jm(n, t)), s;
}
var Rm = k([
	"ClassDeclaration",
	"ComponentDeclaration",
	"FunctionDeclaration",
	"TSInterfaceDeclaration",
	"DeclareClass",
	"DeclareComponent",
	"DeclareFunction",
	"DeclareHook",
	"HookDeclaration",
	"TSDeclareFunction",
	"EnumDeclaration"
]);
function Jm(e, t) {
	return t.semi && (!e.declaration || Ru(e) && !Rm(e.declaration)) ? ";" : "";
}
function Js(e, t = !0) {
	return e && e !== "value" ? `${t ? " " : ""}${e}${t ? "" : " "}` : "";
}
function Gs(e, t) {
	return Js(e.importKind, t);
}
function Gm(e) {
	return Js(e.exportKind);
}
function Ju(e, t, r) {
	let { node: n } = e;
	return n.source ? [
		Wu(n, t) ? " from" : "",
		" ",
		r("source")
	] : "";
}
function Gu(e, t, r) {
	let { node: n } = e;
	if (!Wu(n, t)) return "";
	let s = [" "];
	if (R(n.specifiers)) {
		let i = [], o = [];
		e.each(() => {
			let u = e.node.type;
			if (u === "ExportNamespaceSpecifier" || u === "ExportDefaultSpecifier" || u === "ImportNamespaceSpecifier" || u === "ImportDefaultSpecifier") i.push(r());
			else if (u === "ExportSpecifier" || u === "ImportSpecifier") o.push(r());
			else throw new Qe(n, "specifier");
		}, "specifiers"), s.push(L(", ", i)), o.length > 0 && (i.length > 0 && s.push(", "), o.length > 1 || i.length > 0 || n.specifiers.some((p) => T(p)) ? s.push(l([
			"{",
			m([t.bracketSpacing ? A : f, L([",", A], o)]),
			P(ie(t) ? "," : ""),
			t.bracketSpacing ? A : f,
			"}"
		])) : s.push([
			"{",
			t.bracketSpacing ? " " : "",
			...o,
			t.bracketSpacing ? " " : "",
			"}"
		]));
	} else s.push("{}");
	return s;
}
function Wu(e, t) {
	return e.type !== "ImportDeclaration" || R(e.specifiers) || e.importKind === "type" ? !0 : Jt(t, w(e), w(e.source)).trimEnd().endsWith("from");
}
function Wm(e, t) {
	if (e.extra?.deprecatedAssertSyntax) return "assert";
	let r = Jt(t, I(e.source), e.attributes?.[0] ? w(e.attributes[0]) : I(e)).trimStart();
	return r.startsWith("assert") ? "assert" : r.startsWith("with") || R(e.attributes) ? "with" : void 0;
}
var qm = (e) => {
	let { attributes: t } = e;
	if (t.length !== 1) return !1;
	let [r] = t, { type: n, key: s, value: i } = r;
	return n === "ImportAttribute" && (s.type === "Identifier" && s.name === "type" || V(s) && s.value === "type") && V(i) && !T(r) && !T(s) && !T(i);
};
function qu(e, t, r) {
	let { node: n } = e;
	if (!n.source) return "";
	let s = Wm(n, t);
	if (!s) return "";
	let i = ir(e, t, r);
	return qm(n) && (i = _t(i)), [` ${s} `, i];
}
function Uu(e, t, r) {
	let { node: n } = e, { type: s } = n, i = s.startsWith("Import"), o = i ? "imported" : "local", u = i ? "local" : "exported", p = n[o], c = n[u], y = "", D = "";
	return s === "ExportNamespaceSpecifier" || s === "ImportNamespaceSpecifier" ? y = "*" : p && (y = r(o)), c && !Um(n) && (D = r(u)), [
		Js(s === "ImportSpecifier" ? n.importKind : n.exportKind, !1),
		y,
		y && D ? " as " : "",
		D
	];
}
function Um(e) {
	if (e.type !== "ImportSpecifier" && e.type !== "ExportSpecifier") return !1;
	let { local: t, [e.type === "ImportSpecifier" ? "imported" : "exported"]: r } = e;
	if (t.type !== r.type || !ai(t, r)) return !1;
	if (V(t)) return t.value === r.value && pe(t) === pe(r);
	switch (t.type) {
		case "Identifier": return t.name === r.name;
		default: return !1;
	}
}
function or(e, t) {
	return [
		"...",
		t("argument"),
		G(e, t)
	];
}
function Ym(e) {
	let t = [e];
	for (let r = 0; r < t.length; r++) {
		let n = t[r];
		for (let s of [
			"test",
			"consequent",
			"alternate"
		]) {
			let i = n[s];
			if (H(i)) return !0;
			i.type === "ConditionalExpression" && t.push(i);
		}
	}
	return !1;
}
function Hm(e, t, r) {
	let { node: n } = e, s = n.type === "ConditionalExpression", i = s ? "alternate" : "falseType", { parent: o } = e, u = s ? r("test") : [
		r("checkType"),
		" ",
		"extends",
		" ",
		r("extendsType")
	];
	return o.type === n.type && o[i] === n ? xe(2, u) : u;
}
var Xm = new Map([
	["AssignmentExpression", "right"],
	["VariableDeclarator", "init"],
	["ReturnStatement", "argument"],
	["ThrowStatement", "argument"],
	["UnaryExpression", "argument"],
	["YieldExpression", "argument"],
	["AwaitExpression", "argument"]
]);
function Vm(e) {
	let { node: t } = e;
	if (t.type !== "ConditionalExpression") return !1;
	let r, n = t;
	for (let s = 0; !r; s++) {
		let i = e.getParentNode(s);
		if (i.type === "ChainExpression" && i.expression === n || M(i) && i.callee === n || J(i) && i.object === n || i.type === "TSNonNullExpression" && i.expression === n) {
			n = i;
			continue;
		}
		i.type === "NewExpression" && i.callee === n || Ae(i) && i.expression === n ? (r = e.getParentNode(s + 1), n = i) : r = i;
	}
	return n === t ? !1 : r[Xm.get(r.type)] === n;
}
function Yu(e, t, r) {
	let { node: n } = e, s = n.type === "ConditionalExpression", i = s ? "consequent" : "trueType", o = s ? "alternate" : "falseType", u = s ? ["test"] : ["checkType", "extendsType"], p = n[i], c = n[o], y = [], D = !1, { parent: F } = e, C = F.type === n.type && u.some((Y) => F[Y] === n), d = F.type === n.type && !C, b, B, O = 0;
	do
		B = b || n, b = e.getParentNode(O), O++;
	while (b && b.type === n.type && u.every((Y) => b[Y] !== B));
	let h = b || F, g = B;
	if (s && (H(n[u[0]]) || H(p) || H(c) || Ym(g))) {
		D = !0, d = !0;
		let Y = (ee) => [
			P("("),
			m([f, ee]),
			f,
			P(")")
		], z = (ee) => ee.type === "NullLiteral" || ee.type === "Literal" && ee.value === null || ee.type === "Identifier" && ee.name === "undefined";
		y.push(" ? ", z(p) ? r(i) : Y(r(i)), " : ", c.type === n.type || z(c) ? r(o) : Y(r(o)));
	} else {
		let Y = (ee) => t.useTabs ? m(r(ee)) : xe(2, r(ee)), z = [
			A,
			"? ",
			p.type === n.type ? P("", "(") : "",
			Y(i),
			p.type === n.type ? P("", ")") : "",
			A,
			": ",
			Y(o)
		];
		y.push(F.type !== n.type || F[o] === n || C ? z : t.useTabs ? Qr(m(z)) : xe(Math.max(0, t.tabWidth - 2), z));
	}
	let S = (Y) => F === h ? l(Y) : Y, j = !D && (J(F) || F.type === "NGPipeExpression" && F.left === n) && !F.computed, U = Vm(e), fe = S([
		Hm(e, t, r),
		d ? y : m(y),
		s && j && !U ? f : ""
	]);
	return C || U ? l([m([f, fe]), f]) : fe;
}
function $m(e, t) {
	return (J(t) || t.type === "NGPipeExpression" && t.left === e) && !t.computed;
}
function Km(e, t, r, n) {
	return [
		...e.map((i) => et(i)),
		et(t),
		et(r)
	].flat().some((i) => ce(i) && ue(n.originalText, w(i), I(i)));
}
var Qm = new Map([
	["AssignmentExpression", "right"],
	["VariableDeclarator", "init"],
	["ReturnStatement", "argument"],
	["ThrowStatement", "argument"],
	["UnaryExpression", "argument"],
	["YieldExpression", "argument"],
	["AwaitExpression", "argument"]
]);
function zm(e) {
	let { node: t } = e;
	if (t.type !== "ConditionalExpression") return !1;
	let r, n = t;
	for (let s = 0; !r; s++) {
		let i = e.getParentNode(s);
		if (i.type === "ChainExpression" && i.expression === n || M(i) && i.callee === n || J(i) && i.object === n || i.type === "TSNonNullExpression" && i.expression === n) {
			n = i;
			continue;
		}
		i.type === "NewExpression" && i.callee === n || Ae(i) && i.expression === n ? (r = e.getParentNode(s + 1), n = i) : r = i;
	}
	return n === t ? !1 : r[Qm.get(r.type)] === n;
}
var Ws = (e) => [
	P("("),
	m([f, e]),
	f,
	P(")")
];
function ur(e, t, r, n) {
	if (!t.experimentalTernaries) return Yu(e, t, r);
	let { node: s } = e, i = s.type === "ConditionalExpression", o = Ue(s), u = i ? "consequent" : "trueType", p = i ? "alternate" : "falseType", c = i ? ["test"] : ["checkType", "extendsType"], y = s[u], D = s[p], F = c.map((mr) => s[mr]), { parent: C } = e, d = C.type === s.type, b = d && c.some((mr) => C[mr] === s), B = d && C[p] === s, O = y.type === s.type, h = D.type === s.type, g = h || B, S = t.tabWidth > 2 || t.useTabs, j, U, fe = 0;
	do
		U = j || s, j = e.getParentNode(fe), fe++;
	while (j && j.type === s.type && c.every((mr) => j[mr] !== U));
	let Y = j || C, z = n && n.assignmentLayout && n.assignmentLayout !== "break-after-operator" && (C.type === "AssignmentExpression" || C.type === "VariableDeclarator" || C.type === "ClassProperty" || C.type === "PropertyDefinition" || C.type === "ClassPrivateProperty" || C.type === "ObjectProperty" || C.type === "Property"), ee = (C.type === "ReturnStatement" || C.type === "ThrowStatement") && !(O || h), Ie = i && Y.type === "JSXExpressionContainer" && e.grandparent.type !== "JSXAttribute", st = zm(e), _ = $m(s, C), re = o && ge(e, t), ae = S ? t.useTabs ? "	" : " ".repeat(t.tabWidth - 1) : "", it = Km(F, y, D, t) || O || h, Bt = !g && !d && !o && (Ie ? y.type === "NullLiteral" || y.type === "Literal" && y.value === null : Fr(y, t) && Vn(s.test, 3)), Mn = g || B || o && !d || d && i && Vn(s.test, 1) || Bt, Pr = [];
	!O && T(y, x.Dangling) && e.call(() => {
		Pr.push(v(e, t), E);
	}, "consequent");
	let cr = [];
	T(s.test, x.Dangling) && e.call(() => {
		cr.push(v(e, t));
	}, "test"), !h && T(D, x.Dangling) && e.call(() => {
		cr.push(v(e, t));
	}, "alternate"), T(s, x.Dangling) && cr.push(v(e, t));
	let Vs = Symbol("test"), xa = Symbol("consequent"), kr = Symbol("test-and-consequent"), $s = l([i ? [Ws(r("test")), s.test.type === "ConditionalExpression" ? ke : ""] : [
		r("checkType"),
		" ",
		"extends",
		" ",
		Ue(s.extendsType) || s.extendsType.type === "TSMappedType" ? r("extendsType") : l(Ws(r("extendsType")))
	], " ?"], { id: Vs }), ha = r(u), Ir = m([
		O || Ie && (H(y) || d || g) ? E : A,
		Pr,
		ha
	]), Sa = Mn ? l([$s, g ? Ir : P(Ir, l(Ir, { id: xa }), { groupId: Vs })], { id: kr }) : [$s, Ir], Nn = r(p), Ks = Bt ? P(Nn, Qr(Ws(Nn)), { groupId: kr }) : Nn, lr = [
		Sa,
		cr.length > 0 ? [m([E, cr]), E] : h ? E : Bt ? P(A, " ", { groupId: kr }) : A,
		":",
		h ? " " : S ? Mn ? P(ae, P(g || Bt ? " " : ae, " "), { groupId: kr }) : P(ae, " ") : " ",
		h ? Ks : l([m(Ks), Ie && !Bt ? f : ""]),
		_ && !st ? f : "",
		it ? ke : ""
	];
	return z && !it ? l(m([f, l(lr)])) : z || ee ? l(m(lr)) : st || o && b ? l([m([f, lr]), re ? f : ""]) : C === Y ? l(lr) : lr;
}
function Hu(e, t, r, n) {
	let { node: s } = e;
	if (Jr(s)) return Nu(e, t);
	switch (s.type) {
		case "JsExpressionRoot": return r("node");
		case "JsonRoot": return [
			v(e, t),
			r("node"),
			E
		];
		case "File": return wu(e, t, r) ?? r("program");
		case "ExpressionStatement": return Ou(e, t, r);
		case "ChainExpression": return r("expression");
		case "ParenthesizedExpression": return !T(s.expression) && (se(s.expression) || q(s.expression)) ? [
			"(",
			r("expression"),
			")"
		] : l([
			"(",
			m([f, r("expression")]),
			f,
			")"
		]);
		case "AssignmentExpression": return zo(e, t, r);
		case "VariableDeclarator": return Zo(e, t, r);
		case "BinaryExpression":
		case "LogicalExpression": return on(e, t, r);
		case "AssignmentPattern": return [
			r("left"),
			" = ",
			r("right")
		];
		case "OptionalMemberExpression":
		case "MemberExpression": return Ho(e, t, r);
		case "MetaProperty": return [
			r("meta"),
			".",
			r("property")
		];
		case "BindExpression": return Yo(e, t, r);
		case "Identifier": return [
			s.name,
			X(e),
			sn(e),
			G(e, r)
		];
		case "V8IntrinsicIdentifier": return ["%", s.name];
		case "SpreadElement": return or(e, r);
		case "RestElement": return or(e, r);
		case "FunctionDeclaration":
		case "FunctionExpression": return mn(e, t, r, n);
		case "ArrowFunctionExpression": return Tu(e, t, r, n);
		case "YieldExpression": return [`yield${s.delegate ? "*" : ""}`, s.argument ? [" ", r("argument")] : ""];
		case "AwaitExpression": {
			let i = ["await"];
			if (s.argument) {
				i.push(" ", r("argument"));
				let { parent: o } = e;
				if (M(o) && o.callee === s || J(o) && o.object === s) {
					i = [m([f, ...i]), f];
					let u = e.findAncestor((p) => p.type === "AwaitExpression" || p.type === "BlockStatement");
					if (u?.type !== "AwaitExpression" || !ye(u.argument, (p) => p === s)) return l(i);
				}
			}
			return i;
		}
		case "ExportDefaultDeclaration":
		case "ExportNamedDeclaration":
		case "ExportAllDeclaration": return An(e, t, r);
		case "ImportDeclaration": return vu(e, t, r);
		case "ImportSpecifier":
		case "ExportSpecifier":
		case "ImportNamespaceSpecifier":
		case "ExportNamespaceSpecifier":
		case "ImportDefaultSpecifier":
		case "ExportDefaultSpecifier": return Uu(e, t, r);
		case "ImportAttribute": return ln(e, t, r);
		case "Program":
		case "BlockStatement":
		case "StaticBlock": return En(e, t, r);
		case "ClassBody": return Rt(e, t, r);
		case "ThrowStatement": return ou(e, t, r);
		case "ReturnStatement": return iu(e, t, r);
		case "NewExpression":
		case "ImportExpression":
		case "OptionalCallExpression":
		case "CallExpression": return vt(e, t, r);
		case "ObjectExpression":
		case "ObjectPattern": return ir(e, t, r);
		case "Property": return mt(s) ? Sr(e, t, r) : ln(e, t, r);
		case "ObjectProperty": return ln(e, t, r);
		case "ObjectMethod": return Sr(e, t, r);
		case "Decorator": return ["@", r("expression")];
		case "ArrayExpression":
		case "ArrayPattern": return tr(e, t, r);
		case "SequenceExpression": {
			let { parent: i } = e;
			if (i.type === "ExpressionStatement" || i.type === "ForStatement") {
				let u = [];
				return e.each(({ isFirst: p }) => {
					p ? u.push(r()) : u.push(",", m([A, r()]));
				}, "expressions"), l(u);
			}
			let o = L([",", A], e.map(r, "expressions"));
			return (i.type === "ReturnStatement" || i.type === "ThrowStatement") && e.key === "argument" || i.type === "ArrowFunctionExpression" && e.key === "body" ? l(P([m([f, o]), f], o)) : l(o);
		}
		case "ThisExpression": return "this";
		case "Super": return "super";
		case "Directive": return [r("value"), t.semi ? ";" : ""];
		case "UnaryExpression": {
			let i = [s.operator];
			return /[a-z]$/u.test(s.operator) && i.push(" "), T(s.argument) ? i.push(l([
				"(",
				m([f, r("argument")]),
				f,
				")"
			])) : i.push(r("argument")), i;
		}
		case "UpdateExpression": return [
			s.prefix ? s.operator : "",
			r("argument"),
			s.prefix ? "" : s.operator
		];
		case "ConditionalExpression": return ur(e, t, r, n);
		case "VariableDeclaration": {
			let i = e.map(r, "declarations"), o = e.parent, u = o.type === "ForStatement" || o.type === "ForInStatement" || o.type === "ForOfStatement", p = s.declarations.some((y) => y.init), c;
			return i.length === 1 && !T(s.declarations[0]) ? c = i[0] : i.length > 0 && (c = m(i[0])), l([
				Q(e),
				s.kind,
				c ? [" ", c] : "",
				m(i.slice(1).map((y) => [
					",",
					p && !u ? E : A,
					y
				])),
				t.semi && !(u && o.body !== s) ? ";" : ""
			]);
		}
		case "WithStatement": return l([
			"with (",
			r("object"),
			")",
			Ft(s.body, r("body"))
		]);
		case "IfStatement": {
			let i = Ft(s.consequent, r("consequent")), u = [l([
				"if (",
				l([m([f, r("test")]), f]),
				")",
				i
			])];
			if (s.alternate) {
				let p = T(s.consequent, x.Trailing | x.Line) || qr(s), c = s.consequent.type === "BlockStatement" && !p;
				u.push(c ? " " : E), T(s, x.Dangling) && u.push(v(e, t), p ? E : " "), u.push("else", l(Ft(s.alternate, r("alternate"), s.alternate.type === "IfStatement")));
			}
			return u;
		}
		case "ForStatement": {
			let i = Ft(s.body, r("body")), o = v(e, t), u = o ? [o, f] : "";
			return !s.init && !s.test && !s.update ? [u, l(["for (;;)", i])] : [u, l([
				"for (",
				l([m([
					f,
					r("init"),
					";",
					A,
					r("test"),
					";",
					s.update ? [A, r("update")] : P("", A)
				]), f]),
				")",
				i
			])];
		}
		case "WhileStatement": return l([
			"while (",
			l([m([f, r("test")]), f]),
			")",
			Ft(s.body, r("body"))
		]);
		case "ForInStatement": return l([
			"for (",
			r("left"),
			" in ",
			r("right"),
			")",
			Ft(s.body, r("body"))
		]);
		case "ForOfStatement": return l([
			"for",
			s.await ? " await" : "",
			" (",
			r("left"),
			" of ",
			r("right"),
			")",
			Ft(s.body, r("body"))
		]);
		case "DoWhileStatement": return [
			l(["do", Ft(s.body, r("body"))]),
			s.body.type === "BlockStatement" ? " " : E,
			"while (",
			l([m([f, r("test")]), f]),
			")",
			t.semi ? ";" : ""
		];
		case "DoExpression": return [
			s.async ? "async " : "",
			"do ",
			r("body")
		];
		case "BreakStatement":
		case "ContinueStatement": return [
			s.type === "BreakStatement" ? "break" : "continue",
			s.label ? [" ", r("label")] : "",
			t.semi ? ";" : ""
		];
		case "LabeledStatement": return [
			r("label"),
			`:${s.body.type === "EmptyStatement" && !T(s.body, x.Leading) ? "" : " "}`,
			r("body")
		];
		case "TryStatement": return [
			"try ",
			r("block"),
			s.handler ? [" ", r("handler")] : "",
			s.finalizer ? [" finally ", r("finalizer")] : ""
		];
		case "CatchClause":
			if (s.param) {
				let i = T(s.param, (u) => !ce(u) || u.leading && Z(t.originalText, I(u)) || u.trailing && Z(t.originalText, w(u), { backwards: !0 })), o = r("param");
				return [
					"catch ",
					i ? [
						"(",
						m([f, o]),
						f,
						") "
					] : [
						"(",
						o,
						") "
					],
					r("body")
				];
			}
			return ["catch ", r("body")];
		case "SwitchStatement": return [
			l([
				"switch (",
				m([f, r("discriminant")]),
				f,
				")"
			]),
			" {",
			s.cases.length > 0 ? m([E, L(E, e.map(({ node: i, isLast: o }) => [r(), !o && oe(i, t) ? E : ""], "cases"))]) : "",
			E,
			"}"
		];
		case "SwitchCase": {
			let i = [];
			s.test ? i.push("case ", r("test"), ":") : i.push("default:"), T(s, x.Dangling) && i.push(" ", v(e, t));
			let o = s.consequent.filter((u) => u.type !== "EmptyStatement");
			if (o.length > 0) {
				let u = br(e, t, r, "consequent");
				i.push(o.length === 1 && o[0].type === "BlockStatement" ? [" ", u] : m([E, u]));
			}
			return i;
		}
		case "DebuggerStatement": return ["debugger", t.semi ? ";" : ""];
		case "ClassDeclaration":
		case "ClassExpression": return sr(e, t, r);
		case "ClassMethod":
		case "ClassPrivateMethod":
		case "MethodDefinition": return Fn(e, t, r);
		case "ClassProperty":
		case "PropertyDefinition":
		case "ClassPrivateProperty":
		case "ClassAccessorProperty":
		case "AccessorProperty": return dn(e, t, r);
		case "TemplateElement": return qe(s.value.raw);
		case "TemplateLiteral": return en(e, t, r);
		case "TaggedTemplateExpression": return io(e, t, r);
		case "PrivateIdentifier": return ["#", s.name];
		case "PrivateName": return ["#", r("id")];
		case "TopicReference": return "%";
		case "ArgumentPlaceholder": return "?";
		case "ModuleExpression": return ["module ", r("body")];
		case "VoidPattern": return "void";
		case "EmptyStatement": if (kt(e)) return ";";
		default: throw new Qe(s, "ESTree");
	}
}
function Tn(e) {
	return [e("elementType"), "[]"];
}
var Zm = k(["SatisfiesExpression", "TSSatisfiesExpression"]);
function xn(e, t, r) {
	let { parent: n, node: s, key: i } = e, u = s.type === "AsConstExpression" ? "const" : r("typeAnnotation"), p = [
		r("expression"),
		" ",
		Zm(s) ? "satisfies" : "as",
		" ",
		u
	];
	return i === "callee" && M(n) || i === "object" && J(n) ? l([m([f, ...p]), f]) : p;
}
function Xu(e, t, r) {
	let { node: n } = e, s = [Q(e), "component"];
	n.id && s.push(" ", r("id")), s.push(r("typeParameters"));
	let i = eD(e, t, r);
	return n.rendersType ? s.push(l([
		i,
		" ",
		r("rendersType")
	])) : s.push(l([i])), n.body && s.push(" ", r("body")), t.semi && n.type === "DeclareComponent" && s.push(";"), s;
}
function eD(e, t, r) {
	let { node: n } = e, s = n.params;
	if (n.rest && (s = [...s, n.rest]), s.length === 0) return [
		"(",
		v(e, t, { filter: (o) => _e(t.originalText, I(o)) === ")" }),
		")"
	];
	let i = [];
	return rD(e, (o, u) => {
		let p = u === s.length - 1;
		p && n.rest && i.push("..."), i.push(r()), !p && (i.push(","), oe(s[u], t) ? i.push(E, E) : i.push(A));
	}), [
		"(",
		m([f, ...i]),
		P(ie(t, "all") && !tD(n, s) ? "," : ""),
		f,
		")"
	];
}
function tD(e, t) {
	return e.rest || N(0, t, -1)?.type === "RestElement";
}
function rD(e, t) {
	let { node: r } = e, n = 0, s = (i) => t(i, n++);
	e.each(s, "params"), r.rest && e.call(s, "rest");
}
function Vu(e, t, r) {
	let { node: n } = e;
	return n.shorthand ? r("local") : [
		r("name"),
		" as ",
		r("local")
	];
}
function $u(e, t, r) {
	let { node: n } = e, s = [];
	return n.name && s.push(r("name"), n.optional ? "?: " : ": "), s.push(r("typeAnnotation")), s;
}
function qs(e, t, r) {
	return ir(e, t, r);
}
function Ku(e, t, r) {
	let { node: n } = e;
	return [n.type === "EnumSymbolBody" || n.explicitType ? `of ${n.type.slice(4, -4).toLowerCase()} ` : "", qs(e, t, r)];
}
function gn(e, t) {
	let { node: r } = e, n = t("id");
	r.computed && (n = [
		"[",
		n,
		"]"
	]);
	let s = "";
	return r.initializer && (s = t("initializer")), r.init && (s = t("init")), s ? [
		n,
		" = ",
		s
	] : n;
}
function hn(e, t) {
	let { node: r } = e;
	return [
		Q(e),
		r.const ? "const " : "",
		"enum ",
		t("id"),
		" ",
		t("body")
	];
}
function Sn(e, t, r) {
	let { node: n } = e, s = [Zt(e)];
	(n.type === "TSConstructorType" || n.type === "TSConstructSignatureDeclaration") && s.push("new ");
	let i = Ke(e, t, r, !1, !0), o = [];
	return n.type === "FunctionTypeAnnotation" ? o.push(nD(e) ? " => " : ": ", r("returnType")) : o.push(G(e, r, "returnType")), lt(n, o) && (i = l(i)), s.push(i, o), [l(s), n.type === "TSConstructSignatureDeclaration" || n.type === "TSCallSignatureDeclaration" ? he(e, t) : ""];
}
function nD(e) {
	let { node: t, parent: r } = e;
	return t.type === "FunctionTypeAnnotation" && (Gr(r) || !((r.type === "ObjectTypeProperty" || r.type === "ObjectTypeInternalSlot") && !r.variance && !r.optional && bt(r, t) || r.type === "ObjectTypeCallProperty" || e.getParentNode(2)?.type === "DeclareFunction"));
}
function zu(e, t, r) {
	let { node: n } = e, s = ["hook"];
	n.id && s.push(" ", r("id"));
	let i = Ke(e, t, r, !1, !0), o = rr(e, r), u = lt(n, o);
	return s.push(l([u ? l(i) : i, o]), n.body ? " " : "", r("body")), s;
}
function Zu(e, t, r) {
	let { node: n } = e, s = [Q(e), "hook"];
	return n.id && s.push(" ", r("id")), t.semi && s.push(";"), s;
}
function Qu(e) {
	let { node: t } = e;
	return t.type === "HookTypeAnnotation" && e.getParentNode(2)?.type === "DeclareHook";
}
function ea(e, t, r) {
	let { node: n } = e, s = Ke(e, t, r, !1, !0), i = [Qu(e) ? ": " : " => ", r("returnType")];
	return l([
		Qu(e) ? "" : "hook ",
		lt(n, i) ? l(s) : s,
		i
	]);
}
function Bn(e, t, r) {
	return [
		r("objectType"),
		X(e),
		"[",
		r("indexType"),
		"]"
	];
}
function bn(e, t, r) {
	return ["infer ", r("typeParameter")];
}
function Pn(e, t, r) {
	let n = !1;
	return l(e.map(({ isFirst: s, previous: i, node: o, index: u }) => {
		let p = r();
		if (s) return p;
		let c = Je(o), y = Je(i);
		return y && c ? [" & ", n ? m(p) : p] : !y && !c || Ee(t.originalText, o) ? t.experimentalOperatorPosition === "start" ? m([
			A,
			"& ",
			p
		]) : m([
			" &",
			A,
			p
		]) : (u > 1 && (n = !0), [" & ", u > 1 ? m(p) : p]);
	}, "types"));
}
function sD(e) {
	switch (e) {
		case null: return "";
		case "PlusOptional": return "+?";
		case "MinusOptional": return "-?";
		case "Optional": return "?";
	}
}
function ra(e, t, r) {
	let { node: n } = e;
	return [l([
		n.variance ? r("variance") : "",
		"[",
		m([
			r("keyTparam"),
			" in ",
			r("sourceType")
		]),
		"]",
		sD(n.optional),
		": ",
		r("propType")
	]), he(e, t)];
}
function ta(e, t) {
	return e === "+" || e === "-" ? e + t : t;
}
function na(e, t, r) {
	let { node: n } = e, s = !1;
	if (t.objectWrap === "preserve") {
		let i = w(n), o = Jt(t, i + 1, w(n.key)), u = i + 1 + o.search(/\S/u);
		ue(t.originalText, i, u) && (s = !0);
	}
	return l([
		"{",
		m([
			t.bracketSpacing ? A : f,
			T(n, x.Dangling) ? l([v(e, t), E]) : "",
			l([
				n.readonly ? [ta(n.readonly, "readonly"), " "] : "",
				"[",
				r("key"),
				" in ",
				r("constraint"),
				n.nameType ? [" as ", r("nameType")] : "",
				"]",
				n.optional ? ta(n.optional, "?") : "",
				n.typeAnnotation ? ": " : "",
				r("typeAnnotation")
			]),
			t.semi ? P(";") : ""
		]),
		t.bracketSpacing ? A : f,
		"}"
	], { shouldBreak: s });
}
function sa(e, t, r) {
	let { node: n } = e;
	return [
		l([
			"match (",
			m([f, r("argument")]),
			f,
			")"
		]),
		" {",
		n.cases.length > 0 ? m([E, L(E, e.map(({ node: s, isLast: i }) => [r(), !i && oe(s, t) ? E : ""], "cases"))]) : "",
		E,
		"}"
	];
}
function ia(e, t, r) {
	let { node: n } = e, s = T(n, x.Dangling) ? [" ", v(e, t)] : [], i = n.type === "MatchStatementCase" ? [" ", r("body")] : m([
		A,
		r("body"),
		","
	]);
	return [
		r("pattern"),
		n.guard ? l([m([
			A,
			"if (",
			r("guard"),
			")"
		])]) : "",
		l([
			" =>",
			s,
			i
		])
	];
}
function oa(e, t, r) {
	let { node: n } = e;
	switch (n.type) {
		case "MatchOrPattern": return uD(e, t, r);
		case "MatchAsPattern": return [
			r("pattern"),
			" as ",
			r("target")
		];
		case "MatchWildcardPattern": return ["_"];
		case "MatchLiteralPattern": return r("literal");
		case "MatchUnaryPattern": return [n.operator, r("argument")];
		case "MatchIdentifierPattern": return r("id");
		case "MatchMemberPattern": {
			let s = n.property.type === "Identifier" ? [".", r("property")] : [
				"[",
				m([f, r("property")]),
				f,
				"]"
			];
			return l([r("base"), s]);
		}
		case "MatchBindingPattern": return [
			n.kind,
			" ",
			r("id")
		];
		case "MatchObjectPattern": {
			let s = e.map(r, "properties");
			return n.rest && s.push(r("rest")), l([
				"{",
				m([f, L([",", A], s)]),
				n.rest ? "" : P(","),
				f,
				"}"
			]);
		}
		case "MatchArrayPattern": {
			let s = e.map(r, "elements");
			return n.rest && s.push(r("rest")), l([
				"[",
				m([f, L([",", A], s)]),
				n.rest ? "" : P(","),
				f,
				"]"
			]);
		}
		case "MatchObjectPatternProperty": return n.shorthand ? r("pattern") : l([
			r("key"),
			":",
			m([A, r("pattern")])
		]);
		case "MatchRestPattern": {
			let s = ["..."];
			return n.argument && s.push(r("argument")), s;
		}
	}
}
var ua = k([
	"MatchWildcardPattern",
	"MatchLiteralPattern",
	"MatchUnaryPattern",
	"MatchIdentifierPattern"
]);
function iD(e) {
	let { patterns: t } = e;
	if (t.some((n) => T(n))) return !1;
	let r = t.find((n) => n.type === "MatchObjectPattern");
	return r ? t.every((n) => n === r || ua(n)) : !1;
}
function oD(e) {
	return ua(e) || e.type === "MatchObjectPattern" ? !0 : e.type === "MatchOrPattern" ? iD(e) : !1;
}
function uD(e, t, r) {
	let { node: n } = e, { parent: s } = e, i = s.type !== "MatchStatementCase" && s.type !== "MatchExpressionCase" && s.type !== "MatchArrayPattern" && s.type !== "MatchObjectPatternProperty" && !Ee(t.originalText, n), o = oD(n), u = e.map(() => {
		let c = r();
		return o || (c = xe(2, c)), De(e, c, t);
	}, "patterns");
	if (o) return L(" | ", u);
	let p = [P(["| "]), L([A, "| "], u)];
	return ge(e, t) ? l([m([P([f]), p]), f]) : s.type === "MatchArrayPattern" && s.elements.length > 1 ? l([
		m([P(["(", f]), p]),
		f,
		P(")")
	]) : l(i ? m(p) : p);
}
function aa(e, t, r) {
	let { node: n } = e, s = [
		Q(e),
		"opaque type ",
		r("id"),
		r("typeParameters")
	];
	if (n.supertype && s.push(": ", r("supertype")), n.lowerBound || n.upperBound) {
		let i = [];
		n.lowerBound && i.push(m([
			A,
			"super ",
			r("lowerBound")
		])), n.upperBound && i.push(m([
			A,
			"extends ",
			r("upperBound")
		])), s.push(l(i));
	}
	return n.impltype && s.push(" = ", r("impltype")), s.push(t.semi ? ";" : ""), s;
}
function kn(e, t, r) {
	let { node: n } = e;
	return [
		"...",
		...n.type === "TupleTypeSpreadElement" && n.label ? [r("label"), ": "] : [],
		r("typeAnnotation")
	];
}
function In(e, t, r) {
	let { node: n } = e;
	return [
		n.variance ? r("variance") : "",
		r("label"),
		n.optional ? "?" : "",
		": ",
		r("elementType")
	];
}
function Ln(e, t, r) {
	let { node: n } = e;
	return [ht(e, t, r, [
		Q(e),
		"type ",
		r("id"),
		r("typeParameters")
	], " =", n.type === "TSTypeAliasDeclaration" ? "typeAnnotation" : "right"), t.semi ? ";" : ""];
}
function aD(e, t, r) {
	let { node: n } = e;
	return K(n).length === 1 && n.type.startsWith("TS") && !n[r][0].constraint && e.parent.type === "ArrowFunctionExpression" && !(t.filepath && /\.ts$/u.test(t.filepath));
}
function Gt(e, t, r, n) {
	let { node: s } = e;
	if (!s[n]) return "";
	if (!Array.isArray(s[n])) return r(n);
	let i = It(e.grandparent), o = e.match((c) => !(c[n].length === 1 && Je(c[n][0])), void 0, (c, y) => y === "typeAnnotation", (c) => c.type === "Identifier", Bs);
	if (s[n].length === 0 || !o && (i || s[n].length === 1 && (s[n][0].type === "NullableTypeAnnotation" || Jo(s[n][0])))) return [
		"<",
		L(", ", e.map(r, n)),
		pD(e, t),
		">"
	];
	let p = s.type === "TSTypeParameterInstantiation" ? "" : aD(e, t, n) ? "," : ie(t) ? P(",") : "";
	return l([
		"<",
		m([f, L([",", A], e.map(r, n))]),
		p,
		f,
		">"
	]);
}
function pD(e, t) {
	let { node: r } = e;
	if (!T(r, x.Dangling)) return "";
	let n = !T(r, x.Line), s = v(e, t, { indent: !n });
	return n ? s : [s, E];
}
function On(e, t, r) {
	let { node: n } = e, s = [n.const ? "const " : ""], i = n.type === "TSTypeParameter" ? r("name") : n.name;
	if (n.variance && s.push(r("variance")), n.in && s.push("in "), n.out && s.push("out "), s.push(i), n.bound && (n.usesExtendsBound && s.push(" extends "), s.push(G(e, r, "bound"))), n.constraint) {
		let o = Symbol("constraint");
		s.push(" extends", l(m(A), { id: o }), je, yt(r("constraint"), { groupId: o }));
	}
	if (n.default) {
		let o = Symbol("default");
		s.push(" =", l(m(A), { id: o }), je, yt(r("default"), { groupId: o }));
	}
	return l(s);
}
function wn(e, t) {
	let { node: r } = e;
	return [
		r.type === "TSTypePredicate" && r.asserts ? "asserts " : r.type === "TypePredicate" && r.kind ? `${r.kind} ` : "",
		t("parameterName"),
		r.typeAnnotation ? [" is ", G(e, t)] : ""
	];
}
function _n({ node: e }, t) {
	return [
		"typeof ",
		t(e.type === "TSTypeQuery" ? "exprName" : "argument"),
		t("typeArguments")
	];
}
function pa(e, t, r) {
	let { node: n } = e;
	if (Nr(n)) return n.type.slice(0, -14).toLowerCase();
	switch (n.type) {
		case "ComponentDeclaration":
		case "DeclareComponent":
		case "ComponentTypeAnnotation": return Xu(e, t, r);
		case "ComponentParameter": return Vu(e, t, r);
		case "ComponentTypeParameter": return $u(e, t, r);
		case "HookDeclaration": return zu(e, t, r);
		case "DeclareHook": return Zu(e, t, r);
		case "HookTypeAnnotation": return ea(e, t, r);
		case "DeclareFunction": return [
			Q(e),
			"function ",
			r("id"),
			r("predicate"),
			t.semi ? ";" : ""
		];
		case "DeclareModule": return [
			"declare module ",
			r("id"),
			" ",
			r("body")
		];
		case "DeclareModuleExports": return [
			"declare module.exports",
			G(e, r),
			t.semi ? ";" : ""
		];
		case "DeclareNamespace": return [
			"declare namespace ",
			r("id"),
			" ",
			r("body")
		];
		case "DeclareVariable": return [
			Q(e),
			n.kind ?? "var",
			" ",
			r("id"),
			t.semi ? ";" : ""
		];
		case "DeclareExportDeclaration":
		case "DeclareExportAllDeclaration": return An(e, t, r);
		case "DeclareOpaqueType":
		case "OpaqueType": return aa(e, t, r);
		case "DeclareTypeAlias":
		case "TypeAlias": return Ln(e, t, r);
		case "IntersectionTypeAnnotation": return Pn(e, t, r);
		case "UnionTypeAnnotation": return un(e, t, r);
		case "ConditionalTypeAnnotation": return ur(e, t, r);
		case "InferTypeAnnotation": return bn(e, t, r);
		case "FunctionTypeAnnotation": return Sn(e, t, r);
		case "TupleTypeAnnotation": return tr(e, t, r);
		case "TupleTypeLabeledElement": return In(e, t, r);
		case "TupleTypeSpreadElement": return kn(e, t, r);
		case "GenericTypeAnnotation": return [r("id"), Gt(e, t, r, "typeParameters")];
		case "IndexedAccessType":
		case "OptionalIndexedAccessType": return Bn(e, t, r);
		case "TypeAnnotation": return an(e, t, r);
		case "TypeParameter": return On(e, t, r);
		case "TypeofTypeAnnotation": return _n(e, r);
		case "ExistsTypeAnnotation": return "*";
		case "ArrayTypeAnnotation": return Tn(r);
		case "DeclareEnum":
		case "EnumDeclaration": return hn(e, r);
		case "EnumBooleanBody":
		case "EnumNumberBody":
		case "EnumBigIntBody":
		case "EnumStringBody":
		case "EnumSymbolBody": return Ku(e, t, r);
		case "EnumBooleanMember":
		case "EnumNumberMember":
		case "EnumBigIntMember":
		case "EnumStringMember":
		case "EnumDefaultedMember": return gn(e, r);
		case "FunctionTypeParam": {
			let s = n.name ? r("name") : e.parent.this === n ? "this" : "";
			return [
				s,
				X(e),
				s ? ": " : "",
				r("typeAnnotation")
			];
		}
		case "DeclareClass":
		case "DeclareInterface":
		case "InterfaceDeclaration":
		case "InterfaceTypeAnnotation": return sr(e, t, r);
		case "ObjectTypeAnnotation": return Rt(e, t, r);
		case "ClassImplements":
		case "InterfaceExtends": return [r("id"), r("typeParameters")];
		case "NullableTypeAnnotation": return ["?", r("typeAnnotation")];
		case "Variance": {
			let { kind: s } = n;
			return Le(s === "plus" || s === "minus"), s === "plus" ? "+" : "-";
		}
		case "KeyofTypeAnnotation": return ["keyof ", r("argument")];
		case "ObjectTypeCallProperty": return [
			n.static ? "static " : "",
			r("value"),
			he(e, t)
		];
		case "ObjectTypeMappedTypeProperty": return ra(e, t, r);
		case "ObjectTypeIndexer": return [
			n.static ? "static " : "",
			n.variance ? r("variance") : "",
			"[",
			r("id"),
			n.id ? ": " : "",
			r("key"),
			"]: ",
			r("value"),
			he(e, t)
		];
		case "ObjectTypeProperty": {
			let s = "";
			return n.proto ? s = "proto " : n.static && (s = "static "), [
				s,
				n.kind !== "init" ? n.kind + " " : "",
				n.variance ? r("variance") : "",
				Ct(e, t, r),
				X(e),
				mt(n) ? "" : ": ",
				r("value"),
				he(e, t)
			];
		}
		case "ObjectTypeInternalSlot": return [
			n.static ? "static " : "",
			"[[",
			r("id"),
			"]]",
			X(e),
			n.method ? "" : ": ",
			r("value"),
			he(e, t)
		];
		case "ObjectTypeSpreadProperty": return or(e, r);
		case "QualifiedTypeofIdentifier":
		case "QualifiedTypeIdentifier": return [
			r("qualification"),
			".",
			r("id")
		];
		case "NullLiteralTypeAnnotation": return "null";
		case "BooleanLiteralTypeAnnotation": return String(n.value);
		case "StringLiteralTypeAnnotation": return qe(ut(pe(n), t));
		case "NumberLiteralTypeAnnotation": return dt(pe(n));
		case "BigIntLiteralTypeAnnotation": return Cn(pe(n));
		case "TypeCastExpression": return [
			"(",
			r("expression"),
			G(e, r),
			")"
		];
		case "TypePredicate": return wn(e, r);
		case "TypeOperator": return [
			n.operator,
			" ",
			r("typeAnnotation")
		];
		case "TypeParameterDeclaration":
		case "TypeParameterInstantiation": return Gt(e, t, r, "params");
		case "InferredPredicate":
		case "DeclaredPredicate": return [
			e.key === "predicate" && e.parent.type !== "DeclareFunction" && !e.parent.returnType ? ": " : " ",
			"%checks",
			...n.type === "DeclaredPredicate" ? [
				"(",
				r("value"),
				")"
			] : []
		];
		case "AsExpression":
		case "AsConstExpression":
		case "SatisfiesExpression": return xn(e, t, r);
		case "MatchExpression":
		case "MatchStatement": return sa(e, t, r);
		case "MatchExpressionCase":
		case "MatchStatementCase": return ia(e, t, r);
		case "MatchOrPattern":
		case "MatchAsPattern":
		case "MatchWildcardPattern":
		case "MatchLiteralPattern":
		case "MatchUnaryPattern":
		case "MatchIdentifierPattern":
		case "MatchMemberPattern":
		case "MatchBindingPattern":
		case "MatchObjectPattern":
		case "MatchObjectPatternProperty":
		case "MatchRestPattern":
		case "MatchArrayPattern": return oa(e, t, r);
	}
}
function ca(e, t, r) {
	let { node: n } = e, s = n.parameters.length > 1 ? P(ie(t) ? "," : "") : "", i = l([
		m([f, L([", ", f], e.map(r, "parameters"))]),
		s,
		f
	]);
	return [
		e.key === "body" && e.parent.type === "ClassBody" && n.static ? "static " : "",
		n.readonly ? "readonly " : "",
		"[",
		n.parameters ? i : "",
		"]",
		G(e, r),
		he(e, t)
	];
}
function Us(e, t, r) {
	let { node: n } = e;
	return [
		n.postfix ? "" : r,
		G(e, t),
		n.postfix ? r : ""
	];
}
function la(e, t, r) {
	let { node: n } = e, s = [], i = n.kind && n.kind !== "method" ? `${n.kind} ` : "";
	s.push(jt(n), i, n.computed ? "[" : "", r("key"), n.computed ? "]" : "", X(e));
	let o = Ke(e, t, r, !1, !0), u = G(e, r, "returnType"), p = lt(n, u);
	return s.push(p ? l(o) : o), n.returnType && s.push(l(u)), [l(s), he(e, t)];
}
function ma(e, t, r) {
	let { node: n } = e;
	return [
		Q(e),
		n.kind === "global" ? "" : `${n.kind} `,
		r("id"),
		n.body ? [" ", l(r("body"))] : t.semi ? ";" : ""
	];
}
function Da(e, t, r) {
	let { node: n } = e, s = !(q(n.expression) || se(n.expression)), i = l([
		"<",
		m([f, r("typeAnnotation")]),
		f,
		">"
	]), o = [
		P("("),
		m([f, r("expression")]),
		f,
		P(")")
	];
	return s ? nt([
		[i, r("expression")],
		[i, l(o, { shouldBreak: !0 })],
		[i, r("expression")]
	]) : l([i, r("expression")]);
}
function fa(e, t, r) {
	let { node: n } = e;
	if (n.type.startsWith("TS")) {
		if (jr(n)) return n.type.slice(2, -7).toLowerCase();
		switch (n.type) {
			case "TSThisType": return "this";
			case "TSTypeAssertion": return Da(e, t, r);
			case "TSDeclareFunction": return mn(e, t, r);
			case "TSExportAssignment": return [
				"export = ",
				r("expression"),
				t.semi ? ";" : ""
			];
			case "TSModuleBlock": return En(e, t, r);
			case "TSInterfaceBody":
			case "TSTypeLiteral": return Rt(e, t, r);
			case "TSTypeAliasDeclaration": return Ln(e, t, r);
			case "TSQualifiedName": return [
				r("left"),
				".",
				r("right")
			];
			case "TSAbstractMethodDefinition":
			case "TSDeclareMethod": return Fn(e, t, r);
			case "TSAbstractAccessorProperty":
			case "TSAbstractPropertyDefinition": return dn(e, t, r);
			case "TSInterfaceHeritage":
			case "TSClassImplements":
			case "TSInstantiationExpression": return [r("expression"), r("typeArguments")];
			case "TSTemplateLiteralType": return en(e, t, r);
			case "TSNamedTupleMember": return In(e, t, r);
			case "TSRestType": return kn(e, t, r);
			case "TSOptionalType": return [r("typeAnnotation"), "?"];
			case "TSInterfaceDeclaration": return sr(e, t, r);
			case "TSTypeParameterDeclaration":
			case "TSTypeParameterInstantiation": return Gt(e, t, r, "params");
			case "TSTypeParameter": return On(e, t, r);
			case "TSAsExpression":
			case "TSSatisfiesExpression": return xn(e, t, r);
			case "TSArrayType": return Tn(r);
			case "TSPropertySignature": return [
				n.readonly ? "readonly " : "",
				Ct(e, t, r),
				X(e),
				G(e, r),
				he(e, t)
			];
			case "TSParameterProperty": return [
				jt(n),
				n.static ? "static " : "",
				n.override ? "override " : "",
				n.readonly ? "readonly " : "",
				r("parameter")
			];
			case "TSTypeQuery": return _n(e, r);
			case "TSIndexSignature": return ca(e, t, r);
			case "TSTypePredicate": return wn(e, r);
			case "TSNonNullExpression": return [r("expression"), "!"];
			case "TSImportType": return [
				vt(e, t, r),
				n.qualifier ? [".", r("qualifier")] : "",
				Gt(e, t, r, "typeArguments")
			];
			case "TSLiteralType": return r("literal");
			case "TSIndexedAccessType": return Bn(e, t, r);
			case "TSTypeOperator": return [
				n.operator,
				" ",
				r("typeAnnotation")
			];
			case "TSMappedType": return na(e, t, r);
			case "TSMethodSignature": return la(e, t, r);
			case "TSNamespaceExportDeclaration": return [
				"export as namespace ",
				r("id"),
				t.semi ? ";" : ""
			];
			case "TSEnumDeclaration": return hn(e, r);
			case "TSEnumBody": return qs(e, t, r);
			case "TSEnumMember": return gn(e, r);
			case "TSImportEqualsDeclaration": return [
				"import ",
				Gs(n, !1),
				r("id"),
				" = ",
				r("moduleReference"),
				t.semi ? ";" : ""
			];
			case "TSExternalModuleReference": return vt(e, t, r);
			case "TSModuleDeclaration": return ma(e, t, r);
			case "TSConditionalType": return ur(e, t, r);
			case "TSInferType": return bn(e, t, r);
			case "TSIntersectionType": return Pn(e, t, r);
			case "TSUnionType": return un(e, t, r);
			case "TSFunctionType":
			case "TSCallSignatureDeclaration":
			case "TSConstructorType":
			case "TSConstructSignatureDeclaration": return Sn(e, t, r);
			case "TSTupleType": return tr(e, t, r);
			case "TSTypeReference": return [r("typeName"), Gt(e, t, r, "typeArguments")];
			case "TSTypeAnnotation": return an(e, t, r);
			case "TSEmptyBodyFunctionExpression": return Dn(e, t, r);
			case "TSJSDocAllType": return "*";
			case "TSJSDocUnknownType": return "?";
			case "TSJSDocNullableType": return Us(e, r, "?");
			case "TSJSDocNonNullableType": return Us(e, r, "!");
			default: throw new Qe(n, "TypeScript");
		}
	}
}
function cD(e, t, r, n) {
	for (let s of [
		yu,
		mu,
		pa,
		fa,
		Hu
	]) {
		let i = s(e, t, r, n);
		if (i !== void 0) return i;
	}
}
var lD = k([
	"ClassMethod",
	"ClassPrivateMethod",
	"ClassProperty",
	"ClassAccessorProperty",
	"AccessorProperty",
	"TSAbstractAccessorProperty",
	"PropertyDefinition",
	"TSAbstractPropertyDefinition",
	"ClassPrivateProperty",
	"MethodDefinition",
	"TSAbstractMethodDefinition",
	"TSDeclareMethod"
]);
function mD(e, t, r, n) {
	e.isRoot && t.__onHtmlBindingRoot?.(e.node, t);
	let { node: s } = e, i = nr(e) ? t.originalText.slice(w(s), I(s)) : cD(e, t, r, n);
	if (!i) return "";
	if (lD(s)) return i;
	let o = R(s.decorators), u = Fu(e, t, r), p = s.type === "ClassExpression";
	if (o && !p) return Ar(i, (D) => l([u, D]));
	let c = ge(e, t), y = uu(e, t);
	return !u && !c && !y ? i : Ar(i, (D) => [
		y ? ";" : "",
		c ? "(" : "",
		c && p && o ? [m([
			A,
			u,
			D
		]), A] : [u, D],
		c ? ")" : ""
	]);
}
var Ys = mD;
var DD = { experimental_avoidAstMutation: !0 };
var ya = [
	{
		name: "JSON.stringify",
		type: "data",
		aceMode: "json",
		extensions: [".importmap"],
		filenames: [
			"package.json",
			"package-lock.json",
			"composer.json"
		],
		tmScope: "source.json",
		aliases: [
			"geojson",
			"jsonl",
			"sarif",
			"topojson"
		],
		codemirrorMode: "javascript",
		codemirrorMimeType: "application/json",
		parsers: ["json-stringify"],
		vscodeLanguageIds: ["json"],
		linguistLanguageId: 174
	},
	{
		name: "JSON",
		type: "data",
		aceMode: "json",
		extensions: [
			".json",
			".4DForm",
			".4DProject",
			".avsc",
			".geojson",
			".gltf",
			".har",
			".ice",
			".JSON-tmLanguage",
			".json.example",
			".mcmeta",
			".sarif",
			".tact",
			".tfstate",
			".tfstate.backup",
			".topojson",
			".webapp",
			".webmanifest",
			".yy",
			".yyp"
		],
		filenames: [
			".all-contributorsrc",
			".arcconfig",
			".auto-changelog",
			".c8rc",
			".htmlhintrc",
			".imgbotconfig",
			".nycrc",
			".tern-config",
			".tern-project",
			".watchmanconfig",
			".babelrc",
			".jscsrc",
			".jshintrc",
			".jslintrc",
			".swcrc"
		],
		tmScope: "source.json",
		aliases: [
			"geojson",
			"jsonl",
			"sarif",
			"topojson"
		],
		codemirrorMode: "javascript",
		codemirrorMimeType: "application/json",
		parsers: ["json"],
		vscodeLanguageIds: ["json"],
		linguistLanguageId: 174
	},
	{
		name: "JSON with Comments",
		type: "data",
		aceMode: "javascript",
		extensions: [
			".jsonc",
			".code-snippets",
			".code-workspace",
			".sublime-build",
			".sublime-color-scheme",
			".sublime-commands",
			".sublime-completions",
			".sublime-keymap",
			".sublime-macro",
			".sublime-menu",
			".sublime-mousemap",
			".sublime-project",
			".sublime-settings",
			".sublime-theme",
			".sublime-workspace",
			".sublime_metrics",
			".sublime_session"
		],
		filenames: [],
		tmScope: "source.json.comments",
		aliases: ["jsonc"],
		codemirrorMode: "javascript",
		codemirrorMimeType: "text/javascript",
		group: "JSON",
		parsers: ["jsonc"],
		vscodeLanguageIds: ["jsonc"],
		linguistLanguageId: 423
	},
	{
		name: "JSON5",
		type: "data",
		aceMode: "json5",
		extensions: [".json5"],
		tmScope: "source.js",
		codemirrorMode: "javascript",
		codemirrorMimeType: "application/json",
		parsers: ["json5"],
		vscodeLanguageIds: ["json5"],
		linguistLanguageId: 175
	}
];
var Xs = {};
jn(Xs, {
	getVisitorKeys: () => Fa,
	massageAstNode: () => Ca,
	print: () => yD
});
var ar = [[]];
var Fa = _r({
	JsonRoot: ["node"],
	ArrayExpression: ["elements"],
	ObjectExpression: ["properties"],
	ObjectProperty: ["key", "value"],
	UnaryExpression: ["argument"],
	NullLiteral: ar[0],
	BooleanLiteral: ar[0],
	StringLiteral: ar[0],
	NumericLiteral: ar[0],
	Identifier: ar[0],
	TemplateLiteral: ["quasis"],
	TemplateElement: ar[0]
});
function yD(e, t, r) {
	let { node: n } = e;
	switch (n.type) {
		case "JsonRoot": return [r("node"), E];
		case "ArrayExpression": {
			if (n.elements.length === 0) return "[]";
			let s = e.map(() => e.node === null ? "null" : r(), "elements");
			return [
				"[",
				m([E, L([",", E], s)]),
				E,
				"]"
			];
		}
		case "ObjectExpression": return n.properties.length === 0 ? "{}" : [
			"{",
			m([E, L([",", E], e.map(r, "properties"))]),
			E,
			"}"
		];
		case "ObjectProperty": return [
			r("key"),
			": ",
			r("value")
		];
		case "UnaryExpression": return [n.operator === "+" ? "" : n.operator, r("argument")];
		case "NullLiteral": return "null";
		case "BooleanLiteral": return n.value ? "true" : "false";
		case "StringLiteral": return JSON.stringify(n.value);
		case "NumericLiteral": return da(e) ? JSON.stringify(String(n.value)) : JSON.stringify(n.value);
		case "Identifier": return da(e) ? JSON.stringify(n.name) : n.name;
		case "TemplateLiteral": return r(["quasis", 0]);
		case "TemplateElement": return JSON.stringify(n.value.cooked);
		default: throw new Qe(n, "JSON");
	}
}
function da(e) {
	return e.key === "key" && e.parent.type === "ObjectProperty";
}
var ED = new Set([
	"start",
	"end",
	"extra",
	"loc",
	"comments",
	"leadingComments",
	"trailingComments",
	"innerComments",
	"errors",
	"range",
	"tokens"
]);
function Ca(e, t) {
	let { type: r } = e;
	if (r === "ObjectProperty") {
		let { key: n } = e;
		n.type === "Identifier" ? t.key = {
			type: "StringLiteral",
			value: n.name
		} : n.type === "NumericLiteral" && (t.key = {
			type: "StringLiteral",
			value: String(n.value)
		});
		return;
	}
	if (r === "UnaryExpression" && e.operator === "+") return t.argument;
	if (r === "ArrayExpression") {
		for (let [n, s] of e.elements.entries()) s === null && t.elements.splice(n, 0, { type: "NullLiteral" });
		return;
	}
	if (r === "TemplateLiteral") return {
		type: "StringLiteral",
		value: e.quasis[0].value.cooked
	};
}
Ca.ignoredProperties = ED;
var pr = {
	bracketSpacing: {
		category: "Common",
		type: "boolean",
		default: !0,
		description: "Print spaces between brackets.",
		oppositeDescription: "Do not print spaces between brackets."
	},
	objectWrap: {
		category: "Common",
		type: "choice",
		default: "preserve",
		description: "How to wrap object literals.",
		choices: [{
			value: "preserve",
			description: "Keep as multi-line, if there is a newline between the opening brace and first property."
		}, {
			value: "collapse",
			description: "Fit to a single line when possible."
		}]
	},
	singleQuote: {
		category: "Common",
		type: "boolean",
		default: !1,
		description: "Use single quotes instead of double quotes."
	},
	proseWrap: {
		category: "Common",
		type: "choice",
		default: "preserve",
		description: "How to wrap prose.",
		choices: [
			{
				value: "always",
				description: "Wrap prose if it exceeds the print width."
			},
			{
				value: "never",
				description: "Do not wrap prose."
			},
			{
				value: "preserve",
				description: "Wrap prose as-is."
			}
		]
	},
	bracketSameLine: {
		category: "Common",
		type: "boolean",
		default: !1,
		description: "Put > of opening tags on the last line instead of on a new line."
	},
	singleAttributePerLine: {
		category: "Common",
		type: "boolean",
		default: !1,
		description: "Enforce single attribute per line in HTML, Vue and JSX."
	}
};
var St = "JavaScript", Aa = {
	arrowParens: {
		category: St,
		type: "choice",
		default: "always",
		description: "Include parentheses around a sole arrow function parameter.",
		choices: [{
			value: "always",
			description: "Always include parens. Example: `(x) => x`"
		}, {
			value: "avoid",
			description: "Omit parens when possible. Example: `x => x`"
		}]
	},
	bracketSameLine: pr.bracketSameLine,
	objectWrap: pr.objectWrap,
	bracketSpacing: pr.bracketSpacing,
	jsxBracketSameLine: {
		category: St,
		type: "boolean",
		description: "Put > on the last line instead of at a new line.",
		deprecated: "2.4.0"
	},
	semi: {
		category: St,
		type: "boolean",
		default: !0,
		description: "Print semicolons.",
		oppositeDescription: "Do not print semicolons, except at the beginning of lines which may need them."
	},
	experimentalOperatorPosition: {
		category: St,
		type: "choice",
		default: "end",
		description: "Where to print operators when binary expressions wrap lines.",
		choices: [{
			value: "start",
			description: "Print operators at the start of new lines."
		}, {
			value: "end",
			description: "Print operators at the end of previous lines."
		}]
	},
	experimentalTernaries: {
		category: St,
		type: "boolean",
		default: !1,
		description: "Use curious ternaries, with the question mark after the condition.",
		oppositeDescription: "Default behavior of ternaries; keep question marks on the same line as the consequent."
	},
	singleQuote: pr.singleQuote,
	jsxSingleQuote: {
		category: St,
		type: "boolean",
		default: !1,
		description: "Use single quotes in JSX."
	},
	quoteProps: {
		category: St,
		type: "choice",
		default: "as-needed",
		description: "Change when properties in objects are quoted.",
		choices: [
			{
				value: "as-needed",
				description: "Only add quotes around object properties where required."
			},
			{
				value: "consistent",
				description: "If at least one property in an object requires quotes, quote all properties."
			},
			{
				value: "preserve",
				description: "Respect the input use of quotes in object properties."
			}
		]
	},
	trailingComma: {
		category: St,
		type: "choice",
		default: "all",
		description: "Print trailing commas wherever possible when multi-line.",
		choices: [
			{
				value: "all",
				description: "Trailing commas wherever possible (including function arguments)."
			},
			{
				value: "es5",
				description: "Trailing commas where valid in ES5 (objects, arrays, etc.)"
			},
			{
				value: "none",
				description: "No trailing commas."
			}
		]
	},
	singleAttributePerLine: pr.singleAttributePerLine
};
var dD = {
	estree: Hs,
	"estree-json": Xs
}, CD = [...Qs, ...ya];
//#endregion
export { Ta as default, CD as languages, Aa as options, dD as printers };
