@zenithbuild/core 0.6.2 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compiler/runtime/transformIR.ts +3 -3
- package/dist/cli.js +2 -0
- package/dist/zen-build.js +539 -269
- package/dist/zen-dev.js +539 -269
- package/dist/zen-preview.js +539 -269
- package/dist/zenith.js +539 -269
- package/package.json +2 -2
- package/runtime/bundle-generator.ts +26 -16
package/dist/zenith.js
CHANGED
|
@@ -43,7 +43,7 @@ var __export = (target, all) => {
|
|
|
43
43
|
};
|
|
44
44
|
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
45
45
|
|
|
46
|
-
// node_modules/picocolors/picocolors.js
|
|
46
|
+
// ../node_modules/.bun/picocolors@1.1.1/node_modules/picocolors/picocolors.js
|
|
47
47
|
var require_picocolors = __commonJS((exports, module) => {
|
|
48
48
|
var p = process || {};
|
|
49
49
|
var argv = p.argv || [];
|
|
@@ -113,7 +113,7 @@ var require_picocolors = __commonJS((exports, module) => {
|
|
|
113
113
|
module.exports.createColors = createColors;
|
|
114
114
|
});
|
|
115
115
|
|
|
116
|
-
// node_modules/parse5/dist/common/unicode.js
|
|
116
|
+
// ../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/common/unicode.js
|
|
117
117
|
function isSurrogate(cp) {
|
|
118
118
|
return cp >= 55296 && cp <= 57343;
|
|
119
119
|
}
|
|
@@ -205,7 +205,7 @@ var init_unicode = __esm(() => {
|
|
|
205
205
|
};
|
|
206
206
|
});
|
|
207
207
|
|
|
208
|
-
// node_modules/parse5/dist/common/error-codes.js
|
|
208
|
+
// ../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/common/error-codes.js
|
|
209
209
|
var ERR;
|
|
210
210
|
var init_error_codes = __esm(() => {
|
|
211
211
|
(function(ERR2) {
|
|
@@ -272,7 +272,7 @@ var init_error_codes = __esm(() => {
|
|
|
272
272
|
})(ERR || (ERR = {}));
|
|
273
273
|
});
|
|
274
274
|
|
|
275
|
-
// node_modules/parse5/dist/tokenizer/preprocessor.js
|
|
275
|
+
// ../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/tokenizer/preprocessor.js
|
|
276
276
|
class Preprocessor {
|
|
277
277
|
constructor(handler) {
|
|
278
278
|
this.handler = handler;
|
|
@@ -445,7 +445,7 @@ var init_preprocessor = __esm(() => {
|
|
|
445
445
|
DEFAULT_BUFFER_WATERLINE = 1 << 16;
|
|
446
446
|
});
|
|
447
447
|
|
|
448
|
-
// node_modules/parse5/dist/common/token.js
|
|
448
|
+
// ../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/common/token.js
|
|
449
449
|
function getTokenAttr(token, attrName) {
|
|
450
450
|
for (let i = token.attrs.length - 1;i >= 0; i--) {
|
|
451
451
|
if (token.attrs[i].name === attrName) {
|
|
@@ -469,13 +469,13 @@ var init_token = __esm(() => {
|
|
|
469
469
|
})(TokenType || (TokenType = {}));
|
|
470
470
|
});
|
|
471
471
|
|
|
472
|
-
// node_modules/entities/dist/esm/generated/decode-data-html.js
|
|
472
|
+
// ../node_modules/.bun/entities@6.0.1/node_modules/entities/dist/esm/generated/decode-data-html.js
|
|
473
473
|
var htmlDecodeTree;
|
|
474
474
|
var init_decode_data_html = __esm(() => {
|
|
475
475
|
htmlDecodeTree = /* @__PURE__ */ new Uint16Array(/* @__PURE__ */ "\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\x00\x00\x00\x00\x00\x00\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\uD835\uDD04rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\uD835\uDD38plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\uD835\uDC9Cign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\uD835\uDD05pf;\uC000\uD835\uDD39eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\uD835\uDC9Ep\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\uD835\uDD07\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\x00\x00\x00\u0342\u0354\x00\u0405f;\uC000\uD835\uDD3B\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\x00\x00\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\x00\x00\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\x00\u0446\x00\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\x00\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\uD835\uDC9Frok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\uD835\uDD08rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\x00\x00\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\uD835\uDD3Csilon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\uD835\uDD09lled\u0253\u0597\x00\x00\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\x00\u05BF\x00\x00\u05C4f;\uC000\uD835\uDD3DAll;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\uD835\uDD0A;\u62D9pf;\uC000\uD835\uDD3Eeater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\uD835\uDCA2;\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\x00\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\x00\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\uD835\uDD40a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\x00\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\uD835\uDD0Dpf;\uC000\uD835\uDD41\u01E3\u07C7\x00\u07CCr;\uC000\uD835\uDCA5rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\uD835\uDD0Epf;\uC000\uD835\uDD42cr;\uC000\uD835\uDCA6\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\x00\u08C3bleBracket;\u67E6n\u01D4\u08C8\x00\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\uD835\uDD0F\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\uD835\uDD43er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\uD835\uDD10nusPlus;\u6213pf;\uC000\uD835\uDD44c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\uD835\uDD11\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\uD835\uDCA9ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\uD835\uDD12rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\uD835\uDD46enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\uD835\uDCAAash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\uD835\uDD13i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\uD835\uDCAB;\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B\"\u4022r;\uC000\uD835\uDD14pf;\u611Acr;\uC000\uD835\uDCAC\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\x00\u1005bleBracket;\u67E7n\u01D4\u100A\x00\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\uD835\uDD16ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\uD835\uDD4A\u0272\u116D\x00\x00\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\uD835\uDCAEar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\uD835\uDD17\u0100ei\u127B\u1289\u01F2\u1280\x00\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\uD835\uDD4BipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\uD835\uDCAFrok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\x00\u132C\u1331\x00\x00\x00\x00\x00\u1338\u133D\u1377\u1385\x00\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\x00\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\uD835\uDD18rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\uD835\uDD4C\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\uD835\uDCB0ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\uD835\uDD19pf;\uC000\uD835\uDD4Dcr;\uC000\uD835\uDCB1dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\uD835\uDD1Apf;\uC000\uD835\uDD4Ecr;\uC000\uD835\uDCB2\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\uD835\uDD1B;\u439Epf;\uC000\uD835\uDD4Fcr;\uC000\uD835\uDCB3\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\uD835\uDD1Cpf;\uC000\uD835\uDD50cr;\uC000\uD835\uDCB4ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\x00\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\uD835\uDCB5\u0BE1\u1583\u158A\u1590\x00\u15B0\u15B6\u15BF\x00\x00\x00\x00\u15C6\u15DB\u15EB\u165F\u166D\x00\u1695\u169B\u16B2\u16B9\x00\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\uD835\uDD1Erave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\x00\x00\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\uD835\uDD52\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\uD835\uDCB6;\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\uD835\uDD1Fg\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\x00\x00\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\x00\u1833\u01B2\u182F\x00\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\uD835\uDD53\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\uD835\uDCB7mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\x00\u19E8\u1A11\u1A15\u1A32\x00\u1A37\u1A50\x00\x00\u1AB4\x00\x00\u1AC1\x00\x00\u1B21\u1B2E\u1B4D\u1B52\x00\u1BFD\x00\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\x00\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\uD835\uDD20\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\x00\x00\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\x00\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\x00\x00\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\x00\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\uD835\uDD54o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\uD835\uDCB8\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\x00\x00\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\x00\x00\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\uD835\uDD21ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\x00\x00\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\uD835\uDD55\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\x00\x00\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\uD835\uDCB9;\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\uD835\uDD22\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\uD835\uDD56\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\x00\x00\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\x00\u1F9E\x00\u1FA1\u1FA7\x00\x00\u1FC6\u1FCC\x00\u1FD3\x00\u1FE6\u1FEA\u2000\x00\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\x00\x00\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\uD835\uDD23lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\x00\u1FF3f;\uC000\uD835\uDD57\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\x00\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\x00\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\x00\u2036;\u6154;\u6156\u02B4\u203E\u2041\x00\x00\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\x00\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\uD835\uDCBB\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\uD835\uDD24\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\uD835\uDD58\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\x00\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\uD835\uDD25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\uD835\uDD59bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\uD835\uDCBDas\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\x00\u22AA\x00\u22B8\u22C5\u22CE\x00\u22D5\u22F3\x00\x00\u22F8\u2322\u2367\u2362\u237F\x00\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\uD835\uDD26rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\uD835\uDD5Aa;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\uD835\uDCBEn\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\x00\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\uD835\uDD27ath;\u4237pf;\uC000\uD835\uDD5B\u01E3\u23EC\x00\u23F1r;\uC000\uD835\uDCBFrcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\uD835\uDD28reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\uD835\uDD5Ccr;\uC000\uD835\uDCC0\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\x00\u24AA\x00\u24B1\x00\x00\x00\x00\x00\u24B5\u24BA\x00\u24C6\u24C8\u24CD\x00\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\uD835\uDD29\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\uD835\uDD5Dus;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\uD835\uDCC1m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\uD835\uDD2Ao;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\uD835\uDD5E\u0100ct\u28F8\u28FDr;\uC000\uD835\uDCC2pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\x00\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\x00\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\uD835\uDD2B\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\uD835\uDD5F\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\uD835\uDCC3ort\u026D\u2B05\x00\x00\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\u2D2D\x00\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\x00\x00\u2D8D\u2DAB\x00\u2DC8\u2DCE\x00\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\uD835\uDD2C\u036F\u2D79\x00\x00\u2D7C\x00\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\uD835\uDD60\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\x00\u2E7D\x00\u2E80\u2E9D\x00\u2EA2\u2EB9\x00\x00\u2ECB\u0E9C\x00\u2F13\x00\x00\u2F2B\u2FBC\x00\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\x00\x00\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\uD835\uDD2D\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\uD835\uDD61nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\uD835\uDCC5;\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\uD835\uDD2Epf;\uC000\uD835\uDD62rime;\u6057cr;\uC000\uD835\uDCC6\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\uD835\uDD2F\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\uD835\uDD63us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\uD835\uDCC7\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\x00\u337A\u33A4\x00\x00\u33EC\u33F0\x00\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\x00\u3616\x00\x00\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\x00\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\uD835\uDD30\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\x00\x00\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\uD835\uDD64a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\uD835\uDCC8tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\x00\u367E\u36C2\x00\x00\x00\x00\x00\u36DB\u3703\x00\u3709\u376C\x00\x00\x00\u3787\u0272\u3656\x00\x00\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\uD835\uDD31\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\x00\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\uD835\uDD65rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\uD835\uDCC9;\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\x00\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\uD835\uDD32rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\x00\x00\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\uD835\uDD66\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\x00\x00\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\uD835\uDCCA\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\uD835\uDD33tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\uD835\uDD67ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\uD835\uDCCB\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\uD835\uDD34pf;\uC000\uD835\uDD68\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\uD835\uDCCC\u0AE3\u178E\u3A87\x00\u3A8B\x00\u3A90\u3A9B\x00\x00\u3A9D\u3AA8\u3AAB\u3AAF\x00\x00\u3AC3\u3ACE\x00\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\uD835\uDD35\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\uD835\uDD69im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\uD835\uDCCD\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\uD835\uDD36cy;\u4457pf;\uC000\uD835\uDD6Acr;\uC000\uD835\uDCCE\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\uD835\uDD37cy;\u4436grarr;\u61DDpf;\uC000\uD835\uDD6Bcr;\uC000\uD835\uDCCF\u0100jn\u3B85\u3B87;\u600Dj;\u600C".split("").map((c) => c.charCodeAt(0)));
|
|
476
476
|
});
|
|
477
477
|
|
|
478
|
-
// node_modules/entities/dist/esm/decode-codepoint.js
|
|
478
|
+
// ../node_modules/.bun/entities@6.0.1/node_modules/entities/dist/esm/decode-codepoint.js
|
|
479
479
|
function replaceCodePoint(codePoint) {
|
|
480
480
|
var _a2;
|
|
481
481
|
if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {
|
|
@@ -527,7 +527,7 @@ var init_decode_codepoint = __esm(() => {
|
|
|
527
527
|
};
|
|
528
528
|
});
|
|
529
529
|
|
|
530
|
-
// node_modules/entities/dist/esm/decode.js
|
|
530
|
+
// ../node_modules/.bun/entities@6.0.1/node_modules/entities/dist/esm/decode.js
|
|
531
531
|
function isNumber(code) {
|
|
532
532
|
return code >= CharCodes.ZERO && code <= CharCodes.NINE;
|
|
533
533
|
}
|
|
@@ -778,7 +778,7 @@ var init_decode = __esm(() => {
|
|
|
778
778
|
})(DecodingMode || (DecodingMode = {}));
|
|
779
779
|
});
|
|
780
780
|
|
|
781
|
-
// node_modules/parse5/dist/common/html.js
|
|
781
|
+
// ../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/common/html.js
|
|
782
782
|
function getTagID(tagName) {
|
|
783
783
|
var _a2;
|
|
784
784
|
return (_a2 = TAG_NAME_TO_ID.get(tagName)) !== null && _a2 !== undefined ? _a2 : TAG_ID.UNKNOWN;
|
|
@@ -1287,7 +1287,7 @@ var init_html = __esm(() => {
|
|
|
1287
1287
|
]);
|
|
1288
1288
|
});
|
|
1289
1289
|
|
|
1290
|
-
// node_modules/parse5/dist/tokenizer/index.js
|
|
1290
|
+
// ../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/tokenizer/index.js
|
|
1291
1291
|
function isAsciiDigit(cp) {
|
|
1292
1292
|
return cp >= CODE_POINTS.DIGIT_0 && cp <= CODE_POINTS.DIGIT_9;
|
|
1293
1293
|
}
|
|
@@ -3744,12 +3744,12 @@ var init_tokenizer = __esm(() => {
|
|
|
3744
3744
|
};
|
|
3745
3745
|
});
|
|
3746
3746
|
|
|
3747
|
-
// node_modules/parse5/dist/parser/open-element-stack.js
|
|
3747
|
+
// ../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/parser/open-element-stack.js
|
|
3748
3748
|
class OpenElementStack {
|
|
3749
3749
|
get currentTmplContentOrNode() {
|
|
3750
3750
|
return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;
|
|
3751
3751
|
}
|
|
3752
|
-
constructor(
|
|
3752
|
+
constructor(document, treeAdapter, handler) {
|
|
3753
3753
|
this.treeAdapter = treeAdapter;
|
|
3754
3754
|
this.handler = handler;
|
|
3755
3755
|
this.items = [];
|
|
@@ -3757,7 +3757,7 @@ class OpenElementStack {
|
|
|
3757
3757
|
this.stackTop = -1;
|
|
3758
3758
|
this.tmplCount = 0;
|
|
3759
3759
|
this.currentTagId = TAG_ID.UNKNOWN;
|
|
3760
|
-
this.current =
|
|
3760
|
+
this.current = document;
|
|
3761
3761
|
}
|
|
3762
3762
|
_indexOf(element) {
|
|
3763
3763
|
return this.items.lastIndexOf(element, this.stackTop);
|
|
@@ -4059,7 +4059,7 @@ var init_open_element_stack = __esm(() => {
|
|
|
4059
4059
|
TABLE_CELLS = new Set([TAG_ID.TD, TAG_ID.TH]);
|
|
4060
4060
|
});
|
|
4061
4061
|
|
|
4062
|
-
// node_modules/parse5/dist/parser/formatting-element-list.js
|
|
4062
|
+
// ../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/parser/formatting-element-list.js
|
|
4063
4063
|
class FormattingElementList {
|
|
4064
4064
|
constructor(treeAdapter) {
|
|
4065
4065
|
this.treeAdapter = treeAdapter;
|
|
@@ -4155,7 +4155,7 @@ var init_formatting_element_list = __esm(() => {
|
|
|
4155
4155
|
MARKER = { type: EntryType.Marker };
|
|
4156
4156
|
});
|
|
4157
4157
|
|
|
4158
|
-
// node_modules/parse5/dist/tree-adapters/default.js
|
|
4158
|
+
// ../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/tree-adapters/default.js
|
|
4159
4159
|
var defaultTreeAdapter;
|
|
4160
4160
|
var init_default = __esm(() => {
|
|
4161
4161
|
init_html();
|
|
@@ -4212,8 +4212,8 @@ var init_default = __esm(() => {
|
|
|
4212
4212
|
getTemplateContent(templateElement) {
|
|
4213
4213
|
return templateElement.content;
|
|
4214
4214
|
},
|
|
4215
|
-
setDocumentType(
|
|
4216
|
-
const doctypeNode =
|
|
4215
|
+
setDocumentType(document, name, publicId, systemId) {
|
|
4216
|
+
const doctypeNode = document.childNodes.find((node) => node.nodeName === "#documentType");
|
|
4217
4217
|
if (doctypeNode) {
|
|
4218
4218
|
doctypeNode.name = name;
|
|
4219
4219
|
doctypeNode.publicId = publicId;
|
|
@@ -4226,14 +4226,14 @@ var init_default = __esm(() => {
|
|
|
4226
4226
|
systemId,
|
|
4227
4227
|
parentNode: null
|
|
4228
4228
|
};
|
|
4229
|
-
defaultTreeAdapter.appendChild(
|
|
4229
|
+
defaultTreeAdapter.appendChild(document, node);
|
|
4230
4230
|
}
|
|
4231
4231
|
},
|
|
4232
|
-
setDocumentMode(
|
|
4233
|
-
|
|
4232
|
+
setDocumentMode(document, mode) {
|
|
4233
|
+
document.mode = mode;
|
|
4234
4234
|
},
|
|
4235
|
-
getDocumentMode(
|
|
4236
|
-
return
|
|
4235
|
+
getDocumentMode(document) {
|
|
4236
|
+
return document.mode;
|
|
4237
4237
|
},
|
|
4238
4238
|
detachNode(node) {
|
|
4239
4239
|
if (node.parentNode) {
|
|
@@ -4325,7 +4325,7 @@ var init_default = __esm(() => {
|
|
|
4325
4325
|
};
|
|
4326
4326
|
});
|
|
4327
4327
|
|
|
4328
|
-
// node_modules/parse5/dist/common/doctype.js
|
|
4328
|
+
// ../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/common/doctype.js
|
|
4329
4329
|
function hasPrefix(publicId, prefixes) {
|
|
4330
4330
|
return prefixes.some((prefix) => publicId.startsWith(prefix));
|
|
4331
4331
|
}
|
|
@@ -4435,7 +4435,7 @@ var init_doctype = __esm(() => {
|
|
|
4435
4435
|
];
|
|
4436
4436
|
});
|
|
4437
4437
|
|
|
4438
|
-
// node_modules/parse5/dist/common/foreign-content.js
|
|
4438
|
+
// ../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/common/foreign-content.js
|
|
4439
4439
|
function causesExit(startTagToken) {
|
|
4440
4440
|
const tn = startTagToken.tagID;
|
|
4441
4441
|
const isFontWithAttrs = tn === TAG_ID.FONT && startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);
|
|
@@ -4657,9 +4657,9 @@ var init_foreign_content = __esm(() => {
|
|
|
4657
4657
|
]);
|
|
4658
4658
|
});
|
|
4659
4659
|
|
|
4660
|
-
// node_modules/parse5/dist/parser/index.js
|
|
4660
|
+
// ../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/parser/index.js
|
|
4661
4661
|
class Parser {
|
|
4662
|
-
constructor(options,
|
|
4662
|
+
constructor(options, document, fragmentContext = null, scriptHandler = null) {
|
|
4663
4663
|
this.fragmentContext = fragmentContext;
|
|
4664
4664
|
this.scriptHandler = scriptHandler;
|
|
4665
4665
|
this.currentToken = null;
|
|
@@ -4684,7 +4684,7 @@ class Parser {
|
|
|
4684
4684
|
if (this.onParseError) {
|
|
4685
4685
|
this.options.sourceCodeLocationInfo = true;
|
|
4686
4686
|
}
|
|
4687
|
-
this.document =
|
|
4687
|
+
this.document = document !== null && document !== undefined ? document : this.treeAdapter.createDocument();
|
|
4688
4688
|
this.tokenizer = new Tokenizer(this.options, this);
|
|
4689
4689
|
this.activeFormattingElements = new FormattingElementList(this.treeAdapter);
|
|
4690
4690
|
this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : TAG_ID.UNKNOWN;
|
|
@@ -7614,7 +7614,7 @@ var init_parser = __esm(() => {
|
|
|
7614
7614
|
TABLE_VOID_ELEMENTS = new Set([TAG_ID.CAPTION, TAG_ID.COL, TAG_ID.COLGROUP, TAG_ID.TBODY, TAG_ID.TD, TAG_ID.TFOOT, TAG_ID.TH, TAG_ID.THEAD, TAG_ID.TR]);
|
|
7615
7615
|
});
|
|
7616
7616
|
|
|
7617
|
-
// node_modules/parse5/dist/serializer/index.js
|
|
7617
|
+
// ../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/serializer/index.js
|
|
7618
7618
|
var VOID_ELEMENTS;
|
|
7619
7619
|
var init_serializer = __esm(() => {
|
|
7620
7620
|
init_html();
|
|
@@ -7641,7 +7641,7 @@ var init_serializer = __esm(() => {
|
|
|
7641
7641
|
]);
|
|
7642
7642
|
});
|
|
7643
7643
|
|
|
7644
|
-
// node_modules/parse5/dist/index.js
|
|
7644
|
+
// ../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/index.js
|
|
7645
7645
|
function parseFragment(fragmentContext, html, options) {
|
|
7646
7646
|
if (typeof fragmentContext === "string") {
|
|
7647
7647
|
options = html;
|
|
@@ -9284,7 +9284,7 @@ import process2 from "process";
|
|
|
9284
9284
|
|
|
9285
9285
|
// cli/commands/dev.ts
|
|
9286
9286
|
import path8 from "path";
|
|
9287
|
-
import
|
|
9287
|
+
import fs7 from "fs";
|
|
9288
9288
|
var {serve } = globalThis.Bun;
|
|
9289
9289
|
|
|
9290
9290
|
// cli/utils/project.ts
|
|
@@ -10718,154 +10718,6 @@ ${registryCode}
|
|
|
10718
10718
|
}`;
|
|
10719
10719
|
}
|
|
10720
10720
|
|
|
10721
|
-
// compiler/runtime/navigation.ts
|
|
10722
|
-
var routeCache = new Map;
|
|
10723
|
-
function generateNavigationRuntime() {
|
|
10724
|
-
return `
|
|
10725
|
-
// Zenith Navigation Runtime (Phase 7)
|
|
10726
|
-
(function() {
|
|
10727
|
-
'use strict';
|
|
10728
|
-
|
|
10729
|
-
// Route cache
|
|
10730
|
-
const __zen_routeCache = new Map();
|
|
10731
|
-
|
|
10732
|
-
// Current route state
|
|
10733
|
-
let __zen_currentRoute = '';
|
|
10734
|
-
let __zen_navigationInProgress = false;
|
|
10735
|
-
|
|
10736
|
-
/**
|
|
10737
|
-
* Prefetch a route
|
|
10738
|
-
*/
|
|
10739
|
-
async function prefetchRoute(routePath) {
|
|
10740
|
-
const normalizedPath = routePath === '' ? '/' : routePath;
|
|
10741
|
-
|
|
10742
|
-
if (__zen_routeCache.has(normalizedPath)) {
|
|
10743
|
-
return Promise.resolve();
|
|
10744
|
-
}
|
|
10745
|
-
|
|
10746
|
-
try {
|
|
10747
|
-
// Fetch compiled HTML + JS
|
|
10748
|
-
// This is a placeholder - in production, fetch from build output
|
|
10749
|
-
const cacheEntry = {
|
|
10750
|
-
html: '<!-- Prefetched: ' + normalizedPath + ' -->',
|
|
10751
|
-
js: '// Prefetched runtime: ' + normalizedPath,
|
|
10752
|
-
styles: [],
|
|
10753
|
-
routePath: normalizedPath,
|
|
10754
|
-
compiledAt: Date.now()
|
|
10755
|
-
};
|
|
10756
|
-
|
|
10757
|
-
__zen_routeCache.set(normalizedPath, cacheEntry);
|
|
10758
|
-
} catch (error) {
|
|
10759
|
-
console.warn('[Zenith] Prefetch failed:', routePath, error);
|
|
10760
|
-
throw error;
|
|
10761
|
-
}
|
|
10762
|
-
}
|
|
10763
|
-
|
|
10764
|
-
/**
|
|
10765
|
-
* Navigate to route with explicit data
|
|
10766
|
-
*/
|
|
10767
|
-
async function navigate(routePath, options) {
|
|
10768
|
-
options = options || {};
|
|
10769
|
-
|
|
10770
|
-
if (__zen_navigationInProgress) {
|
|
10771
|
-
console.warn('[Zenith] Navigation in progress');
|
|
10772
|
-
return;
|
|
10773
|
-
}
|
|
10774
|
-
|
|
10775
|
-
__zen_navigationInProgress = true;
|
|
10776
|
-
|
|
10777
|
-
try {
|
|
10778
|
-
const normalizedPath = routePath === '' ? '/' : routePath;
|
|
10779
|
-
|
|
10780
|
-
// Get cached route or prefetch
|
|
10781
|
-
let cacheEntry = __zen_routeCache.get(normalizedPath);
|
|
10782
|
-
if (!cacheEntry && options.prefetch !== false) {
|
|
10783
|
-
await prefetchRoute(normalizedPath);
|
|
10784
|
-
cacheEntry = __zen_routeCache.get(normalizedPath);
|
|
10785
|
-
}
|
|
10786
|
-
|
|
10787
|
-
if (!cacheEntry) {
|
|
10788
|
-
throw new Error('Route not found: ' + normalizedPath);
|
|
10789
|
-
}
|
|
10790
|
-
|
|
10791
|
-
// Get outlet
|
|
10792
|
-
const outlet = document.querySelector('#zenith-outlet') || document.querySelector('[data-zen-outlet]');
|
|
10793
|
-
if (!outlet) {
|
|
10794
|
-
throw new Error('Router outlet not found');
|
|
10795
|
-
}
|
|
10796
|
-
|
|
10797
|
-
// Mount HTML
|
|
10798
|
-
outlet.innerHTML = cacheEntry.html;
|
|
10799
|
-
|
|
10800
|
-
// Execute runtime JS
|
|
10801
|
-
if (cacheEntry.js) {
|
|
10802
|
-
const script = document.createElement('script');
|
|
10803
|
-
script.textContent = cacheEntry.js;
|
|
10804
|
-
document.head.appendChild(script);
|
|
10805
|
-
document.head.removeChild(script);
|
|
10806
|
-
}
|
|
10807
|
-
|
|
10808
|
-
// Hydrate with explicit data
|
|
10809
|
-
if (window.zenithHydrate) {
|
|
10810
|
-
const state = window.__ZENITH_STATE__ || {};
|
|
10811
|
-
window.zenithHydrate(
|
|
10812
|
-
state,
|
|
10813
|
-
options.loaderData || {},
|
|
10814
|
-
options.props || {},
|
|
10815
|
-
options.stores || {},
|
|
10816
|
-
outlet
|
|
10817
|
-
);
|
|
10818
|
-
}
|
|
10819
|
-
|
|
10820
|
-
// Update history
|
|
10821
|
-
const url = normalizedPath + (window.location.search || '');
|
|
10822
|
-
if (options.replace) {
|
|
10823
|
-
window.history.replaceState({ route: normalizedPath }, '', url);
|
|
10824
|
-
} else {
|
|
10825
|
-
window.history.pushState({ route: normalizedPath }, '', url);
|
|
10826
|
-
}
|
|
10827
|
-
|
|
10828
|
-
__zen_currentRoute = normalizedPath;
|
|
10829
|
-
|
|
10830
|
-
// Dispatch event
|
|
10831
|
-
window.dispatchEvent(new CustomEvent('zenith:navigate', {
|
|
10832
|
-
detail: { route: normalizedPath, options: options }
|
|
10833
|
-
}));
|
|
10834
|
-
} catch (error) {
|
|
10835
|
-
console.error('[Zenith] Navigation error:', error);
|
|
10836
|
-
throw error;
|
|
10837
|
-
} finally {
|
|
10838
|
-
__zen_navigationInProgress = false;
|
|
10839
|
-
}
|
|
10840
|
-
}
|
|
10841
|
-
|
|
10842
|
-
/**
|
|
10843
|
-
* Handle browser history
|
|
10844
|
-
*/
|
|
10845
|
-
function setupHistoryHandling() {
|
|
10846
|
-
window.addEventListener('popstate', function(event) {
|
|
10847
|
-
const state = event.state;
|
|
10848
|
-
const routePath = state && state.route ? state.route : window.location.pathname;
|
|
10849
|
-
|
|
10850
|
-
navigate(routePath, { replace: true, prefetch: false }).catch(function(error) {
|
|
10851
|
-
console.error('[Zenith] History navigation error:', error);
|
|
10852
|
-
});
|
|
10853
|
-
});
|
|
10854
|
-
}
|
|
10855
|
-
|
|
10856
|
-
// Initialize history handling
|
|
10857
|
-
setupHistoryHandling();
|
|
10858
|
-
|
|
10859
|
-
// Expose API
|
|
10860
|
-
if (typeof window !== 'undefined') {
|
|
10861
|
-
window.__zenith_navigate = navigate;
|
|
10862
|
-
window.__zenith_prefetch = prefetchRoute;
|
|
10863
|
-
window.navigate = navigate; // Global convenience
|
|
10864
|
-
}
|
|
10865
|
-
})();
|
|
10866
|
-
`;
|
|
10867
|
-
}
|
|
10868
|
-
|
|
10869
10721
|
// compiler/parse/scriptAnalysis.ts
|
|
10870
10722
|
function extractStateDeclarations(script) {
|
|
10871
10723
|
const states = new Map;
|
|
@@ -10901,7 +10753,7 @@ function transformStateDeclarations(script) {
|
|
|
10901
10753
|
return transformed.trim();
|
|
10902
10754
|
}
|
|
10903
10755
|
|
|
10904
|
-
// node_modules/acorn/dist/acorn.mjs
|
|
10756
|
+
// ../node_modules/.bun/acorn@8.15.0/node_modules/acorn/dist/acorn.mjs
|
|
10905
10757
|
var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
|
|
10906
10758
|
var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191];
|
|
10907
10759
|
var nonASCIIidentifierChars = "\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0897-\u089F\u08CA-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3C\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0CF3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECE\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u180F-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1ABF-\u1ACE\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DFF\u200C\u200D\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\u30FB\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F\uFF65";
|
|
@@ -16469,7 +16321,7 @@ async function transformIR(ir) {
|
|
|
16469
16321
|
const renderFunction = generateDOMFunction(ir.template.nodes, ir.template.expressions, "renderDynamicPage");
|
|
16470
16322
|
const hydrateFunction = generateHydrateFunction();
|
|
16471
16323
|
const hydrationRuntime = generateHydrationRuntime();
|
|
16472
|
-
const navigationRuntime =
|
|
16324
|
+
const navigationRuntime = "";
|
|
16473
16325
|
const expressionRegistry = generateExpressionRegistry(ir.template.expressions);
|
|
16474
16326
|
const stylesCode = generateStyleInjection(ir.styles);
|
|
16475
16327
|
const scriptContent = ir.script?.raw || "";
|
|
@@ -17053,7 +16905,6 @@ ${mergedStyles}
|
|
|
17053
16905
|
}
|
|
17054
16906
|
|
|
17055
16907
|
// router/manifest.ts
|
|
17056
|
-
import fs4 from "fs";
|
|
17057
16908
|
import path4 from "path";
|
|
17058
16909
|
var SEGMENT_SCORES = {
|
|
17059
16910
|
["static" /* STATIC */]: 10,
|
|
@@ -17061,24 +16912,6 @@ var SEGMENT_SCORES = {
|
|
|
17061
16912
|
["catch_all" /* CATCH_ALL */]: 1,
|
|
17062
16913
|
["optional_catch_all" /* OPTIONAL_CATCH_ALL */]: 0
|
|
17063
16914
|
};
|
|
17064
|
-
function discoverPages(pagesDir) {
|
|
17065
|
-
const pages = [];
|
|
17066
|
-
function walk(dir) {
|
|
17067
|
-
if (!fs4.existsSync(dir))
|
|
17068
|
-
return;
|
|
17069
|
-
const entries = fs4.readdirSync(dir, { withFileTypes: true });
|
|
17070
|
-
for (const entry of entries) {
|
|
17071
|
-
const fullPath = path4.join(dir, entry.name);
|
|
17072
|
-
if (entry.isDirectory()) {
|
|
17073
|
-
walk(fullPath);
|
|
17074
|
-
} else if (entry.isFile() && entry.name.endsWith(".zen")) {
|
|
17075
|
-
pages.push(fullPath);
|
|
17076
|
-
}
|
|
17077
|
-
}
|
|
17078
|
-
}
|
|
17079
|
-
walk(pagesDir);
|
|
17080
|
-
return pages;
|
|
17081
|
-
}
|
|
17082
16915
|
function filePathToRoutePath(filePath, pagesDir) {
|
|
17083
16916
|
const relativePath = path4.relative(pagesDir, filePath);
|
|
17084
16917
|
const withoutExt = relativePath.replace(/\.zen$/, "");
|
|
@@ -18036,6 +17869,320 @@ function generateBundleJS() {
|
|
|
18036
17869
|
global.processRawSections = processRawSections;
|
|
18037
17870
|
global.slugify = slugify;
|
|
18038
17871
|
|
|
17872
|
+
// ============================================
|
|
17873
|
+
// SPA Router Runtime
|
|
17874
|
+
// ============================================
|
|
17875
|
+
|
|
17876
|
+
// Router state
|
|
17877
|
+
// Current route state
|
|
17878
|
+
var currentRoute = {
|
|
17879
|
+
path: '/',
|
|
17880
|
+
params: {},
|
|
17881
|
+
query: {}
|
|
17882
|
+
};
|
|
17883
|
+
|
|
17884
|
+
// Route listeners
|
|
17885
|
+
var routeListeners = new Set();
|
|
17886
|
+
|
|
17887
|
+
// Router outlet element
|
|
17888
|
+
var routerOutlet = null;
|
|
17889
|
+
|
|
17890
|
+
// Page modules registry
|
|
17891
|
+
var pageModules = {};
|
|
17892
|
+
|
|
17893
|
+
// Route manifest
|
|
17894
|
+
var routeManifest = [];
|
|
17895
|
+
|
|
17896
|
+
/**
|
|
17897
|
+
* Parse query string
|
|
17898
|
+
*/
|
|
17899
|
+
function parseQueryString(search) {
|
|
17900
|
+
var query = {};
|
|
17901
|
+
if (!search || search === '?') return query;
|
|
17902
|
+
var params = new URLSearchParams(search);
|
|
17903
|
+
params.forEach(function(value, key) { query[key] = value; });
|
|
17904
|
+
return query;
|
|
17905
|
+
}
|
|
17906
|
+
|
|
17907
|
+
/**
|
|
17908
|
+
* Resolve route from pathname
|
|
17909
|
+
*/
|
|
17910
|
+
function resolveRoute(pathname) {
|
|
17911
|
+
var normalizedPath = pathname === '' ? '/' : pathname;
|
|
17912
|
+
|
|
17913
|
+
for (var i = 0; i < routeManifest.length; i++) {
|
|
17914
|
+
var route = routeManifest[i];
|
|
17915
|
+
var match = route.regex.exec(normalizedPath);
|
|
17916
|
+
if (match) {
|
|
17917
|
+
var params = {};
|
|
17918
|
+
for (var j = 0; j < route.paramNames.length; j++) {
|
|
17919
|
+
var paramValue = match[j + 1];
|
|
17920
|
+
if (paramValue !== undefined) {
|
|
17921
|
+
params[route.paramNames[j]] = decodeURIComponent(paramValue);
|
|
17922
|
+
}
|
|
17923
|
+
}
|
|
17924
|
+
return { record: route, params: params };
|
|
17925
|
+
}
|
|
17926
|
+
}
|
|
17927
|
+
return null;
|
|
17928
|
+
}
|
|
17929
|
+
|
|
17930
|
+
/**
|
|
17931
|
+
* Clean up previous page
|
|
17932
|
+
*/
|
|
17933
|
+
function cleanupPreviousPage() {
|
|
17934
|
+
// Trigger unmount lifecycle hooks
|
|
17935
|
+
if (global.__zenith && global.__zenith.triggerUnmount) {
|
|
17936
|
+
global.__zenith.triggerUnmount();
|
|
17937
|
+
}
|
|
17938
|
+
|
|
17939
|
+
// Remove previous page styles
|
|
17940
|
+
var prevStyles = document.querySelectorAll('style[data-zen-page-style]');
|
|
17941
|
+
prevStyles.forEach(function(s) { s.remove(); });
|
|
17942
|
+
|
|
17943
|
+
// Clean up window properties
|
|
17944
|
+
if (global.__zenith_cleanup) {
|
|
17945
|
+
global.__zenith_cleanup.forEach(function(key) {
|
|
17946
|
+
try { delete global[key]; } catch(e) {}
|
|
17947
|
+
});
|
|
17948
|
+
}
|
|
17949
|
+
global.__zenith_cleanup = [];
|
|
17950
|
+
}
|
|
17951
|
+
|
|
17952
|
+
/**
|
|
17953
|
+
* Inject styles
|
|
17954
|
+
*/
|
|
17955
|
+
function injectStyles(styles) {
|
|
17956
|
+
styles.forEach(function(content, i) {
|
|
17957
|
+
var style = document.createElement('style');
|
|
17958
|
+
style.setAttribute('data-zen-page-style', String(i));
|
|
17959
|
+
style.textContent = content;
|
|
17960
|
+
document.head.appendChild(style);
|
|
17961
|
+
});
|
|
17962
|
+
}
|
|
17963
|
+
|
|
17964
|
+
/**
|
|
17965
|
+
* Execute scripts
|
|
17966
|
+
*/
|
|
17967
|
+
function executeScripts(scripts) {
|
|
17968
|
+
scripts.forEach(function(content) {
|
|
17969
|
+
try {
|
|
17970
|
+
var fn = new Function(content);
|
|
17971
|
+
fn();
|
|
17972
|
+
} catch (e) {
|
|
17973
|
+
console.error('[Zenith Router] Script error:', e);
|
|
17974
|
+
}
|
|
17975
|
+
});
|
|
17976
|
+
}
|
|
17977
|
+
|
|
17978
|
+
/**
|
|
17979
|
+
* Render page
|
|
17980
|
+
*/
|
|
17981
|
+
function renderPage(pageModule) {
|
|
17982
|
+
if (!routerOutlet) {
|
|
17983
|
+
console.warn('[Zenith Router] No router outlet');
|
|
17984
|
+
return;
|
|
17985
|
+
}
|
|
17986
|
+
|
|
17987
|
+
cleanupPreviousPage();
|
|
17988
|
+
routerOutlet.innerHTML = pageModule.html;
|
|
17989
|
+
injectStyles(pageModule.styles);
|
|
17990
|
+
executeScripts(pageModule.scripts);
|
|
17991
|
+
|
|
17992
|
+
// Trigger mount lifecycle hooks after scripts are executed
|
|
17993
|
+
if (global.__zenith && global.__zenith.triggerMount) {
|
|
17994
|
+
global.__zenith.triggerMount();
|
|
17995
|
+
}
|
|
17996
|
+
}
|
|
17997
|
+
|
|
17998
|
+
/**
|
|
17999
|
+
* Notify listeners
|
|
18000
|
+
*/
|
|
18001
|
+
function notifyListeners(route, prevRoute) {
|
|
18002
|
+
routeListeners.forEach(function(listener) {
|
|
18003
|
+
try { listener(route, prevRoute); } catch(e) {}
|
|
18004
|
+
});
|
|
18005
|
+
}
|
|
18006
|
+
|
|
18007
|
+
/**
|
|
18008
|
+
* Resolve and render
|
|
18009
|
+
*/
|
|
18010
|
+
function resolveAndRender(path, query, updateHistory, replace) {
|
|
18011
|
+
replace = replace || false;
|
|
18012
|
+
var prevRoute = Object.assign({}, currentRoute);
|
|
18013
|
+
var resolved = resolveRoute(path);
|
|
18014
|
+
|
|
18015
|
+
if (resolved) {
|
|
18016
|
+
currentRoute = {
|
|
18017
|
+
path: path,
|
|
18018
|
+
params: resolved.params,
|
|
18019
|
+
query: query,
|
|
18020
|
+
matched: resolved.record
|
|
18021
|
+
};
|
|
18022
|
+
|
|
18023
|
+
var pageModule = pageModules[resolved.record.path];
|
|
18024
|
+
if (pageModule) {
|
|
18025
|
+
renderPage(pageModule);
|
|
18026
|
+
}
|
|
18027
|
+
} else {
|
|
18028
|
+
currentRoute = { path: path, params: {}, query: query, matched: undefined };
|
|
18029
|
+
console.warn('[Zenith Router] No route matched:', path);
|
|
18030
|
+
|
|
18031
|
+
// Render 404 if available
|
|
18032
|
+
if (routerOutlet) {
|
|
18033
|
+
routerOutlet.innerHTML = '<div style="padding: 2rem; text-align: center;"><h1>404</h1><p>Page not found</p></div>';
|
|
18034
|
+
}
|
|
18035
|
+
}
|
|
18036
|
+
|
|
18037
|
+
if (updateHistory) {
|
|
18038
|
+
var url = path + (Object.keys(query).length ? '?' + new URLSearchParams(query) : '');
|
|
18039
|
+
if (replace) {
|
|
18040
|
+
history.replaceState(null, '', url);
|
|
18041
|
+
} else {
|
|
18042
|
+
history.pushState(null, '', url);
|
|
18043
|
+
}
|
|
18044
|
+
}
|
|
18045
|
+
|
|
18046
|
+
notifyListeners(currentRoute, prevRoute);
|
|
18047
|
+
global.__zenith_route = currentRoute;
|
|
18048
|
+
}
|
|
18049
|
+
|
|
18050
|
+
/**
|
|
18051
|
+
* Handle popstate
|
|
18052
|
+
*/
|
|
18053
|
+
function handlePopState() {
|
|
18054
|
+
resolveAndRender(
|
|
18055
|
+
location.pathname,
|
|
18056
|
+
parseQueryString(location.search),
|
|
18057
|
+
false,
|
|
18058
|
+
false
|
|
18059
|
+
);
|
|
18060
|
+
}
|
|
18061
|
+
|
|
18062
|
+
/**
|
|
18063
|
+
* Navigate (public API)
|
|
18064
|
+
*/
|
|
18065
|
+
function navigate(to, options) {
|
|
18066
|
+
options = options || {};
|
|
18067
|
+
var path, query = {};
|
|
18068
|
+
|
|
18069
|
+
if (to.includes('?')) {
|
|
18070
|
+
var parts = to.split('?');
|
|
18071
|
+
path = parts[0];
|
|
18072
|
+
query = parseQueryString('?' + parts[1]);
|
|
18073
|
+
} else {
|
|
18074
|
+
path = to;
|
|
18075
|
+
}
|
|
18076
|
+
|
|
18077
|
+
if (!path.startsWith('/')) {
|
|
18078
|
+
var currentDir = currentRoute.path.split('/').slice(0, -1).join('/');
|
|
18079
|
+
path = currentDir + '/' + path;
|
|
18080
|
+
}
|
|
18081
|
+
|
|
18082
|
+
var normalizedPath = path === '' ? '/' : path;
|
|
18083
|
+
var currentPath = currentRoute.path === '' ? '/' : currentRoute.path;
|
|
18084
|
+
var isSamePath = normalizedPath === currentPath;
|
|
18085
|
+
|
|
18086
|
+
if (isSamePath && JSON.stringify(query) === JSON.stringify(currentRoute.query)) {
|
|
18087
|
+
return;
|
|
18088
|
+
}
|
|
18089
|
+
|
|
18090
|
+
// Dev mode: If no route manifest is loaded, use browser navigation
|
|
18091
|
+
// This allows ZenLink to work in dev server where pages are served fresh
|
|
18092
|
+
if (routeManifest.length === 0) {
|
|
18093
|
+
var url = normalizedPath + (Object.keys(query).length ? '?' + new URLSearchParams(query) : '');
|
|
18094
|
+
if (options.replace) {
|
|
18095
|
+
location.replace(url);
|
|
18096
|
+
} else {
|
|
18097
|
+
location.href = url;
|
|
18098
|
+
}
|
|
18099
|
+
return;
|
|
18100
|
+
}
|
|
18101
|
+
|
|
18102
|
+
resolveAndRender(path, query, true, options.replace || false);
|
|
18103
|
+
}
|
|
18104
|
+
|
|
18105
|
+
/**
|
|
18106
|
+
* Get current route
|
|
18107
|
+
*/
|
|
18108
|
+
function getRoute() {
|
|
18109
|
+
return Object.assign({}, currentRoute);
|
|
18110
|
+
}
|
|
18111
|
+
|
|
18112
|
+
/**
|
|
18113
|
+
* Subscribe to route changes
|
|
18114
|
+
*/
|
|
18115
|
+
function onRouteChange(listener) {
|
|
18116
|
+
routeListeners.add(listener);
|
|
18117
|
+
return function() { routeListeners.delete(listener); };
|
|
18118
|
+
}
|
|
18119
|
+
|
|
18120
|
+
/**
|
|
18121
|
+
* Check if path is active
|
|
18122
|
+
*/
|
|
18123
|
+
function isActive(path, exact) {
|
|
18124
|
+
if (exact) return currentRoute.path === path;
|
|
18125
|
+
return currentRoute.path.startsWith(path);
|
|
18126
|
+
}
|
|
18127
|
+
|
|
18128
|
+
/**
|
|
18129
|
+
* Prefetch a route
|
|
18130
|
+
*/
|
|
18131
|
+
var prefetchedRoutes = new Set();
|
|
18132
|
+
function prefetch(path) {
|
|
18133
|
+
var normalizedPath = path === '' ? '/' : path;
|
|
18134
|
+
|
|
18135
|
+
if (prefetchedRoutes.has(normalizedPath)) {
|
|
18136
|
+
return Promise.resolve();
|
|
18137
|
+
}
|
|
18138
|
+
prefetchedRoutes.add(normalizedPath);
|
|
18139
|
+
|
|
18140
|
+
var resolved = resolveRoute(normalizedPath);
|
|
18141
|
+
if (!resolved) {
|
|
18142
|
+
return Promise.resolve();
|
|
18143
|
+
}
|
|
18144
|
+
|
|
18145
|
+
// In SPA build, all modules are already loaded
|
|
18146
|
+
return Promise.resolve();
|
|
18147
|
+
}
|
|
18148
|
+
|
|
18149
|
+
/**
|
|
18150
|
+
* Initialize router
|
|
18151
|
+
*/
|
|
18152
|
+
function initRouter(manifest, modules, outlet) {
|
|
18153
|
+
routeManifest = manifest;
|
|
18154
|
+
Object.assign(pageModules, modules);
|
|
18155
|
+
|
|
18156
|
+
if (outlet) {
|
|
18157
|
+
routerOutlet = typeof outlet === 'string'
|
|
18158
|
+
? document.querySelector(outlet)
|
|
18159
|
+
: outlet;
|
|
18160
|
+
}
|
|
18161
|
+
|
|
18162
|
+
window.addEventListener('popstate', handlePopState);
|
|
18163
|
+
|
|
18164
|
+
// Initial route resolution
|
|
18165
|
+
resolveAndRender(
|
|
18166
|
+
location.pathname,
|
|
18167
|
+
parseQueryString(location.search),
|
|
18168
|
+
false
|
|
18169
|
+
);
|
|
18170
|
+
}
|
|
18171
|
+
|
|
18172
|
+
// Expose router API globally
|
|
18173
|
+
global.__zenith_router = {
|
|
18174
|
+
navigate: navigate,
|
|
18175
|
+
getRoute: getRoute,
|
|
18176
|
+
onRouteChange: onRouteChange,
|
|
18177
|
+
isActive: isActive,
|
|
18178
|
+
prefetch: prefetch,
|
|
18179
|
+
initRouter: initRouter
|
|
18180
|
+
};
|
|
18181
|
+
|
|
18182
|
+
// Also expose navigate directly for convenience
|
|
18183
|
+
global.navigate = navigate;
|
|
18184
|
+
|
|
18185
|
+
|
|
18039
18186
|
// ============================================
|
|
18040
18187
|
// HMR Client (Development Only)
|
|
18041
18188
|
// ============================================
|
|
@@ -18086,10 +18233,10 @@ function generateBundleJS() {
|
|
|
18086
18233
|
}
|
|
18087
18234
|
|
|
18088
18235
|
// cli/utils/content.ts
|
|
18089
|
-
import
|
|
18236
|
+
import fs4 from "fs";
|
|
18090
18237
|
import path5 from "path";
|
|
18091
18238
|
|
|
18092
|
-
// node_modules/marked/lib/marked.esm.js
|
|
18239
|
+
// ../node_modules/.bun/marked@17.0.1/node_modules/marked/lib/marked.esm.js
|
|
18093
18240
|
function L() {
|
|
18094
18241
|
return { async: false, breaks: false, extensions: null, gfm: true, hooks: null, pedantic: false, renderer: null, silent: false, tokenizer: null, walkTokens: null };
|
|
18095
18242
|
}
|
|
@@ -19356,7 +19503,7 @@ var jt = x.lex;
|
|
|
19356
19503
|
|
|
19357
19504
|
// cli/utils/content.ts
|
|
19358
19505
|
function loadContent(contentDir) {
|
|
19359
|
-
if (!
|
|
19506
|
+
if (!fs4.existsSync(contentDir)) {
|
|
19360
19507
|
return {};
|
|
19361
19508
|
}
|
|
19362
19509
|
const collections = {};
|
|
@@ -19369,7 +19516,7 @@ function loadContent(contentDir) {
|
|
|
19369
19516
|
continue;
|
|
19370
19517
|
const slug = relativePath.replace(/\.(md|mdx|json)$/, "").replace(/\\/g, "/");
|
|
19371
19518
|
const id = slug;
|
|
19372
|
-
const rawContent =
|
|
19519
|
+
const rawContent = fs4.readFileSync(filePath, "utf-8");
|
|
19373
19520
|
if (!collections[collection]) {
|
|
19374
19521
|
collections[collection] = [];
|
|
19375
19522
|
}
|
|
@@ -19400,10 +19547,10 @@ function loadContent(contentDir) {
|
|
|
19400
19547
|
return collections;
|
|
19401
19548
|
}
|
|
19402
19549
|
function getAllFiles(dir, fileList = []) {
|
|
19403
|
-
const files =
|
|
19550
|
+
const files = fs4.readdirSync(dir);
|
|
19404
19551
|
files.forEach((file) => {
|
|
19405
19552
|
const name = path5.join(dir, file);
|
|
19406
|
-
if (
|
|
19553
|
+
if (fs4.statSync(name).isDirectory()) {
|
|
19407
19554
|
getAllFiles(name, fileList);
|
|
19408
19555
|
} else {
|
|
19409
19556
|
fileList.push(name);
|
|
@@ -19445,7 +19592,7 @@ function parseMarkdown(content) {
|
|
|
19445
19592
|
}
|
|
19446
19593
|
|
|
19447
19594
|
// core/config/loader.ts
|
|
19448
|
-
import
|
|
19595
|
+
import fs5 from "fs";
|
|
19449
19596
|
import path6 from "path";
|
|
19450
19597
|
async function loadZenithConfig(projectRoot) {
|
|
19451
19598
|
const configPaths = [
|
|
@@ -19455,7 +19602,7 @@ async function loadZenithConfig(projectRoot) {
|
|
|
19455
19602
|
];
|
|
19456
19603
|
let configPath = null;
|
|
19457
19604
|
for (const p of configPaths) {
|
|
19458
|
-
if (
|
|
19605
|
+
if (fs5.existsSync(p)) {
|
|
19459
19606
|
configPath = p;
|
|
19460
19607
|
break;
|
|
19461
19608
|
}
|
|
@@ -19522,11 +19669,11 @@ function createPluginContext(projectRoot, contentSetter) {
|
|
|
19522
19669
|
// compiler/css/index.ts
|
|
19523
19670
|
import { spawn, spawnSync } from "child_process";
|
|
19524
19671
|
import path7 from "path";
|
|
19525
|
-
import
|
|
19672
|
+
import fs6 from "fs";
|
|
19526
19673
|
function compileCss(options) {
|
|
19527
19674
|
const startTime = performance.now();
|
|
19528
19675
|
const { input, output, minify = false } = options;
|
|
19529
|
-
if (!
|
|
19676
|
+
if (!fs6.existsSync(input)) {
|
|
19530
19677
|
return {
|
|
19531
19678
|
css: "",
|
|
19532
19679
|
duration: 0,
|
|
@@ -19566,8 +19713,8 @@ function compileCss(options) {
|
|
|
19566
19713
|
let css = "";
|
|
19567
19714
|
if (useStdout) {
|
|
19568
19715
|
css = result.stdout?.toString() || "";
|
|
19569
|
-
} else if (
|
|
19570
|
-
css =
|
|
19716
|
+
} else if (fs6.existsSync(output)) {
|
|
19717
|
+
css = fs6.readFileSync(output, "utf-8");
|
|
19571
19718
|
}
|
|
19572
19719
|
return {
|
|
19573
19720
|
css,
|
|
@@ -19587,7 +19734,7 @@ async function compileCssAsync(options) {
|
|
|
19587
19734
|
return new Promise((resolve) => {
|
|
19588
19735
|
const startTime = performance.now();
|
|
19589
19736
|
const { input, output, minify = false } = options;
|
|
19590
|
-
if (!
|
|
19737
|
+
if (!fs6.existsSync(input)) {
|
|
19591
19738
|
resolve({
|
|
19592
19739
|
css: "",
|
|
19593
19740
|
duration: 0,
|
|
@@ -19635,8 +19782,8 @@ async function compileCssAsync(options) {
|
|
|
19635
19782
|
let css = "";
|
|
19636
19783
|
if (useStdout) {
|
|
19637
19784
|
css = stdout;
|
|
19638
|
-
} else if (
|
|
19639
|
-
css =
|
|
19785
|
+
} else if (fs6.existsSync(output)) {
|
|
19786
|
+
css = fs6.readFileSync(output, "utf-8");
|
|
19640
19787
|
}
|
|
19641
19788
|
resolve({
|
|
19642
19789
|
css,
|
|
@@ -19656,10 +19803,10 @@ async function compileCssAsync(options) {
|
|
|
19656
19803
|
}
|
|
19657
19804
|
function resolveGlobalsCss(projectRoot) {
|
|
19658
19805
|
const globalsPath = path7.join(projectRoot, "src", "styles", "globals.css");
|
|
19659
|
-
if (
|
|
19806
|
+
if (fs6.existsSync(globalsPath))
|
|
19660
19807
|
return globalsPath;
|
|
19661
19808
|
const globalPath = path7.join(projectRoot, "src", "styles", "global.css");
|
|
19662
|
-
if (
|
|
19809
|
+
if (fs6.existsSync(globalPath))
|
|
19663
19810
|
return globalPath;
|
|
19664
19811
|
return null;
|
|
19665
19812
|
}
|
|
@@ -19671,12 +19818,12 @@ async function bundlePageScript(script, projectRoot) {
|
|
|
19671
19818
|
return script;
|
|
19672
19819
|
}
|
|
19673
19820
|
const tempDir = path8.join(projectRoot, ".zenith-cache");
|
|
19674
|
-
if (!
|
|
19675
|
-
|
|
19821
|
+
if (!fs7.existsSync(tempDir)) {
|
|
19822
|
+
fs7.mkdirSync(tempDir, { recursive: true });
|
|
19676
19823
|
}
|
|
19677
19824
|
const tempFile = path8.join(tempDir, `bundle-${Date.now()}.js`);
|
|
19678
19825
|
try {
|
|
19679
|
-
|
|
19826
|
+
fs7.writeFileSync(tempFile, script, "utf-8");
|
|
19680
19827
|
const result = await Bun.build({
|
|
19681
19828
|
entrypoints: [tempFile],
|
|
19682
19829
|
target: "browser",
|
|
@@ -19695,7 +19842,7 @@ async function bundlePageScript(script, projectRoot) {
|
|
|
19695
19842
|
return script;
|
|
19696
19843
|
} finally {
|
|
19697
19844
|
try {
|
|
19698
|
-
|
|
19845
|
+
fs7.unlinkSync(tempFile);
|
|
19699
19846
|
} catch {}
|
|
19700
19847
|
}
|
|
19701
19848
|
}
|
|
@@ -19767,13 +19914,13 @@ async function dev(options = {}) {
|
|
|
19767
19914
|
const layoutsDir = path8.join(pagesDir, "../layouts");
|
|
19768
19915
|
const componentsDir = path8.join(pagesDir, "../components");
|
|
19769
19916
|
const layouts = discoverLayouts(layoutsDir);
|
|
19770
|
-
const source =
|
|
19917
|
+
const source = fs7.readFileSync(pagePath, "utf-8");
|
|
19771
19918
|
let processedSource = source;
|
|
19772
19919
|
let layoutToUse = layouts.get("DefaultLayout");
|
|
19773
19920
|
if (layoutToUse)
|
|
19774
19921
|
processedSource = processLayout(source, layoutToUse);
|
|
19775
19922
|
const result = await compileZenSource(processedSource, pagePath, {
|
|
19776
|
-
componentsDir:
|
|
19923
|
+
componentsDir: fs7.existsSync(componentsDir) ? componentsDir : undefined
|
|
19777
19924
|
});
|
|
19778
19925
|
if (!result.finalized)
|
|
19779
19926
|
throw new Error("Compilation failed");
|
|
@@ -19791,7 +19938,7 @@ async function dev(options = {}) {
|
|
|
19791
19938
|
return null;
|
|
19792
19939
|
}
|
|
19793
19940
|
}
|
|
19794
|
-
const watcher =
|
|
19941
|
+
const watcher = fs7.watch(path8.join(pagesDir, ".."), { recursive: true }, async (event, filename) => {
|
|
19795
19942
|
if (!filename)
|
|
19796
19943
|
return;
|
|
19797
19944
|
if (filename.endsWith(".zen")) {
|
|
@@ -19866,7 +20013,7 @@ async function dev(options = {}) {
|
|
|
19866
20013
|
}
|
|
19867
20014
|
if (STATIC_EXTENSIONS.has(ext)) {
|
|
19868
20015
|
const publicPath = path8.join(pagesDir, "../public", pathname);
|
|
19869
|
-
if (
|
|
20016
|
+
if (fs7.existsSync(publicPath)) {
|
|
19870
20017
|
const response = new Response(Bun.file(publicPath));
|
|
19871
20018
|
route("GET", pathname, 200, Math.round(performance.now() - startTime), 0, Math.round(performance.now() - startTime));
|
|
19872
20019
|
return response;
|
|
@@ -19876,7 +20023,7 @@ async function dev(options = {}) {
|
|
|
19876
20023
|
if (pagePath) {
|
|
19877
20024
|
const compileStart = performance.now();
|
|
19878
20025
|
let cached = pageCache.get(pagePath);
|
|
19879
|
-
const stat =
|
|
20026
|
+
const stat = fs7.statSync(pagePath);
|
|
19880
20027
|
if (!cached || stat.mtimeMs > cached.lastModified) {
|
|
19881
20028
|
cached = await compilePageInMemory(pagePath) || undefined;
|
|
19882
20029
|
if (cached)
|
|
@@ -19916,24 +20063,24 @@ async function dev(options = {}) {
|
|
|
19916
20063
|
}
|
|
19917
20064
|
function findPageForRoute(route2, pagesDir) {
|
|
19918
20065
|
const exactPath = path8.join(pagesDir, route2 === "/" ? "index.zen" : `${route2.slice(1)}.zen`);
|
|
19919
|
-
if (
|
|
20066
|
+
if (fs7.existsSync(exactPath))
|
|
19920
20067
|
return exactPath;
|
|
19921
20068
|
const indexPath = path8.join(pagesDir, route2 === "/" ? "index.zen" : `${route2.slice(1)}/index.zen`);
|
|
19922
|
-
if (
|
|
20069
|
+
if (fs7.existsSync(indexPath))
|
|
19923
20070
|
return indexPath;
|
|
19924
20071
|
const segments = route2 === "/" ? [] : route2.slice(1).split("/").filter(Boolean);
|
|
19925
20072
|
for (let i2 = segments.length - 1;i2 >= 0; i2--) {
|
|
19926
20073
|
const staticPart = segments.slice(0, i2).join("/");
|
|
19927
20074
|
const baseDir = staticPart ? path8.join(pagesDir, staticPart) : pagesDir;
|
|
19928
20075
|
const singleDynamicPath = path8.join(baseDir, "[slug].zen");
|
|
19929
|
-
if (
|
|
20076
|
+
if (fs7.existsSync(singleDynamicPath))
|
|
19930
20077
|
return singleDynamicPath;
|
|
19931
20078
|
const catchAllPath = path8.join(baseDir, "[...slug].zen");
|
|
19932
|
-
if (
|
|
20079
|
+
if (fs7.existsSync(catchAllPath))
|
|
19933
20080
|
return catchAllPath;
|
|
19934
20081
|
}
|
|
19935
20082
|
const rootCatchAll = path8.join(pagesDir, "[...slug].zen");
|
|
19936
|
-
if (
|
|
20083
|
+
if (fs7.existsSync(rootCatchAll))
|
|
19937
20084
|
return rootCatchAll;
|
|
19938
20085
|
return null;
|
|
19939
20086
|
}
|
|
@@ -20009,7 +20156,130 @@ async function preview(options = {}) {
|
|
|
20009
20156
|
|
|
20010
20157
|
// compiler/ssg-build.ts
|
|
20011
20158
|
import fs9 from "fs";
|
|
20159
|
+
import path11 from "path";
|
|
20160
|
+
|
|
20161
|
+
// ../node_modules/.bun/@zenithbuild+router@0.1.1+1fb4c65d43e298b9/node_modules/@zenithbuild/router/src/manifest.ts
|
|
20162
|
+
import fs8 from "fs";
|
|
20012
20163
|
import path10 from "path";
|
|
20164
|
+
var SEGMENT_SCORES2 = {
|
|
20165
|
+
["static" /* STATIC */]: 10,
|
|
20166
|
+
["dynamic" /* DYNAMIC */]: 5,
|
|
20167
|
+
["catch_all" /* CATCH_ALL */]: 1,
|
|
20168
|
+
["optional_catch_all" /* OPTIONAL_CATCH_ALL */]: 0
|
|
20169
|
+
};
|
|
20170
|
+
function discoverPages(pagesDir) {
|
|
20171
|
+
const pages = [];
|
|
20172
|
+
function walk(dir) {
|
|
20173
|
+
if (!fs8.existsSync(dir))
|
|
20174
|
+
return;
|
|
20175
|
+
const entries = fs8.readdirSync(dir, { withFileTypes: true });
|
|
20176
|
+
for (const entry of entries) {
|
|
20177
|
+
const fullPath = path10.join(dir, entry.name);
|
|
20178
|
+
if (entry.isDirectory()) {
|
|
20179
|
+
walk(fullPath);
|
|
20180
|
+
} else if (entry.isFile() && entry.name.endsWith(".zen")) {
|
|
20181
|
+
pages.push(fullPath);
|
|
20182
|
+
}
|
|
20183
|
+
}
|
|
20184
|
+
}
|
|
20185
|
+
walk(pagesDir);
|
|
20186
|
+
return pages;
|
|
20187
|
+
}
|
|
20188
|
+
function filePathToRoutePath2(filePath, pagesDir) {
|
|
20189
|
+
const relativePath = path10.relative(pagesDir, filePath);
|
|
20190
|
+
const withoutExt = relativePath.replace(/\.zen$/, "");
|
|
20191
|
+
const segments = withoutExt.split(path10.sep);
|
|
20192
|
+
const routeSegments = [];
|
|
20193
|
+
for (const segment of segments) {
|
|
20194
|
+
if (segment === "index") {
|
|
20195
|
+
continue;
|
|
20196
|
+
}
|
|
20197
|
+
const optionalCatchAllMatch = segment.match(/^\[\[\.\.\.(\w+)\]\]$/);
|
|
20198
|
+
if (optionalCatchAllMatch) {
|
|
20199
|
+
routeSegments.push(`*${optionalCatchAllMatch[1]}?`);
|
|
20200
|
+
continue;
|
|
20201
|
+
}
|
|
20202
|
+
const catchAllMatch = segment.match(/^\[\.\.\.(\w+)\]$/);
|
|
20203
|
+
if (catchAllMatch) {
|
|
20204
|
+
routeSegments.push(`*${catchAllMatch[1]}`);
|
|
20205
|
+
continue;
|
|
20206
|
+
}
|
|
20207
|
+
const dynamicMatch = segment.match(/^\[(\w+)\]$/);
|
|
20208
|
+
if (dynamicMatch) {
|
|
20209
|
+
routeSegments.push(`:${dynamicMatch[1]}`);
|
|
20210
|
+
continue;
|
|
20211
|
+
}
|
|
20212
|
+
routeSegments.push(segment);
|
|
20213
|
+
}
|
|
20214
|
+
const routePath = "/" + routeSegments.join("/");
|
|
20215
|
+
return routePath === "/" ? "/" : routePath.replace(/\/$/, "");
|
|
20216
|
+
}
|
|
20217
|
+
function parseRouteSegments2(routePath) {
|
|
20218
|
+
if (routePath === "/") {
|
|
20219
|
+
return [];
|
|
20220
|
+
}
|
|
20221
|
+
const segments = routePath.slice(1).split("/");
|
|
20222
|
+
const parsed = [];
|
|
20223
|
+
for (const segment of segments) {
|
|
20224
|
+
if (segment.startsWith("*") && segment.endsWith("?")) {
|
|
20225
|
+
parsed.push({
|
|
20226
|
+
type: "optional_catch_all" /* OPTIONAL_CATCH_ALL */,
|
|
20227
|
+
paramName: segment.slice(1, -1),
|
|
20228
|
+
raw: segment
|
|
20229
|
+
});
|
|
20230
|
+
continue;
|
|
20231
|
+
}
|
|
20232
|
+
if (segment.startsWith("*")) {
|
|
20233
|
+
parsed.push({
|
|
20234
|
+
type: "catch_all" /* CATCH_ALL */,
|
|
20235
|
+
paramName: segment.slice(1),
|
|
20236
|
+
raw: segment
|
|
20237
|
+
});
|
|
20238
|
+
continue;
|
|
20239
|
+
}
|
|
20240
|
+
if (segment.startsWith(":")) {
|
|
20241
|
+
parsed.push({
|
|
20242
|
+
type: "dynamic" /* DYNAMIC */,
|
|
20243
|
+
paramName: segment.slice(1),
|
|
20244
|
+
raw: segment
|
|
20245
|
+
});
|
|
20246
|
+
continue;
|
|
20247
|
+
}
|
|
20248
|
+
parsed.push({
|
|
20249
|
+
type: "static" /* STATIC */,
|
|
20250
|
+
raw: segment
|
|
20251
|
+
});
|
|
20252
|
+
}
|
|
20253
|
+
return parsed;
|
|
20254
|
+
}
|
|
20255
|
+
function calculateRouteScore2(segments) {
|
|
20256
|
+
if (segments.length === 0) {
|
|
20257
|
+
return 100;
|
|
20258
|
+
}
|
|
20259
|
+
let score = 0;
|
|
20260
|
+
for (const segment of segments) {
|
|
20261
|
+
score += SEGMENT_SCORES2[segment.type];
|
|
20262
|
+
}
|
|
20263
|
+
const staticCount = segments.filter((s) => s.type === "static" /* STATIC */).length;
|
|
20264
|
+
score += staticCount * 2;
|
|
20265
|
+
return score;
|
|
20266
|
+
}
|
|
20267
|
+
function extractParamNames2(segments) {
|
|
20268
|
+
return segments.filter((s) => s.paramName !== undefined).map((s) => s.paramName);
|
|
20269
|
+
}
|
|
20270
|
+
function generateRouteDefinition2(filePath, pagesDir) {
|
|
20271
|
+
const routePath = filePathToRoutePath2(filePath, pagesDir);
|
|
20272
|
+
const segments = parseRouteSegments2(routePath);
|
|
20273
|
+
const paramNames = extractParamNames2(segments);
|
|
20274
|
+
const score = calculateRouteScore2(segments);
|
|
20275
|
+
return {
|
|
20276
|
+
path: routePath,
|
|
20277
|
+
segments,
|
|
20278
|
+
paramNames,
|
|
20279
|
+
score,
|
|
20280
|
+
filePath
|
|
20281
|
+
};
|
|
20282
|
+
}
|
|
20013
20283
|
|
|
20014
20284
|
// compiler/build-analyzer.ts
|
|
20015
20285
|
function analyzePageSource(source) {
|
|
@@ -20073,7 +20343,7 @@ function getBuildOutputType(analysis) {
|
|
|
20073
20343
|
async function compilePage(pagePath, pagesDir, baseDir = process.cwd()) {
|
|
20074
20344
|
const source = fs9.readFileSync(pagePath, "utf-8");
|
|
20075
20345
|
const analysis = analyzePageSource(source);
|
|
20076
|
-
const layoutsDir =
|
|
20346
|
+
const layoutsDir = path11.join(baseDir, "layouts");
|
|
20077
20347
|
const layouts = discoverLayouts(layoutsDir);
|
|
20078
20348
|
let processedSource = source;
|
|
20079
20349
|
const layoutToUse = layouts.get("DefaultLayout");
|
|
@@ -20087,7 +20357,7 @@ async function compilePage(pagePath, pagesDir, baseDir = process.cwd()) {
|
|
|
20087
20357
|
const html = result.finalized.html;
|
|
20088
20358
|
const js = result.finalized.js || "";
|
|
20089
20359
|
const styles = result.finalized.styles || [];
|
|
20090
|
-
const routeDef =
|
|
20360
|
+
const routeDef = generateRouteDefinition2(pagePath, pagesDir);
|
|
20091
20361
|
let outputDir = routeDef.path === "/" ? "index" : routeDef.path.replace(/^\//, "");
|
|
20092
20362
|
outputDir = outputDir.replace(/\[([^\]]+)\]/g, "_$1_");
|
|
20093
20363
|
return {
|
|
@@ -20174,8 +20444,8 @@ ${page.pageScript}
|
|
|
20174
20444
|
`;
|
|
20175
20445
|
}
|
|
20176
20446
|
async function buildSSG(options) {
|
|
20177
|
-
const { pagesDir, outDir, baseDir =
|
|
20178
|
-
const contentDir =
|
|
20447
|
+
const { pagesDir, outDir, baseDir = path11.dirname(pagesDir) } = options;
|
|
20448
|
+
const contentDir = path11.join(baseDir, "content");
|
|
20179
20449
|
const contentData = loadContent(contentDir);
|
|
20180
20450
|
console.log("\uD83D\uDD28 Zenith SSG Build");
|
|
20181
20451
|
console.log(` Pages: ${pagesDir}`);
|
|
@@ -20185,7 +20455,7 @@ async function buildSSG(options) {
|
|
|
20185
20455
|
fs9.rmSync(outDir, { recursive: true, force: true });
|
|
20186
20456
|
}
|
|
20187
20457
|
fs9.mkdirSync(outDir, { recursive: true });
|
|
20188
|
-
fs9.mkdirSync(
|
|
20458
|
+
fs9.mkdirSync(path11.join(outDir, "assets"), { recursive: true });
|
|
20189
20459
|
const pageFiles = discoverPages(pagesDir);
|
|
20190
20460
|
if (pageFiles.length === 0) {
|
|
20191
20461
|
console.warn("\u26A0\uFE0F No pages found in", pagesDir);
|
|
@@ -20195,7 +20465,7 @@ async function buildSSG(options) {
|
|
|
20195
20465
|
const compiledPages = [];
|
|
20196
20466
|
let hasHydratedPages = false;
|
|
20197
20467
|
for (const pageFile of pageFiles) {
|
|
20198
|
-
const relativePath =
|
|
20468
|
+
const relativePath = path11.relative(pagesDir, pageFile);
|
|
20199
20469
|
console.log(` Compiling: ${relativePath}`);
|
|
20200
20470
|
try {
|
|
20201
20471
|
const compiled = await compilePage(pageFile, pagesDir, baseDir);
|
|
@@ -20215,8 +20485,8 @@ async function buildSSG(options) {
|
|
|
20215
20485
|
let globalStyles = "";
|
|
20216
20486
|
const globalsCssPath = resolveGlobalsCss(baseDir);
|
|
20217
20487
|
if (globalsCssPath) {
|
|
20218
|
-
console.log("\uD83D\uDCE6 Compiling CSS:",
|
|
20219
|
-
const cssOutputPath =
|
|
20488
|
+
console.log("\uD83D\uDCE6 Compiling CSS:", path11.relative(baseDir, globalsCssPath));
|
|
20489
|
+
const cssOutputPath = path11.join(outDir, "assets", "styles.css");
|
|
20220
20490
|
const result = compileCss({
|
|
20221
20491
|
input: globalsCssPath,
|
|
20222
20492
|
output: cssOutputPath,
|
|
@@ -20231,40 +20501,40 @@ async function buildSSG(options) {
|
|
|
20231
20501
|
}
|
|
20232
20502
|
if (hasHydratedPages) {
|
|
20233
20503
|
const bundleJS = generateBundleJS();
|
|
20234
|
-
fs9.writeFileSync(
|
|
20504
|
+
fs9.writeFileSync(path11.join(outDir, "assets", "bundle.js"), bundleJS);
|
|
20235
20505
|
console.log("\uD83D\uDCE6 Generated assets/bundle.js");
|
|
20236
20506
|
}
|
|
20237
20507
|
for (const page of compiledPages) {
|
|
20238
|
-
const pageOutDir =
|
|
20508
|
+
const pageOutDir = path11.join(outDir, page.outputDir);
|
|
20239
20509
|
fs9.mkdirSync(pageOutDir, { recursive: true });
|
|
20240
20510
|
const html = generatePageHTML(page, globalStyles, contentData);
|
|
20241
|
-
fs9.writeFileSync(
|
|
20511
|
+
fs9.writeFileSync(path11.join(pageOutDir, "index.html"), html);
|
|
20242
20512
|
if (page.pageScript) {
|
|
20243
20513
|
const pageJsName = page.routePath === "/" ? "page_index.js" : `page_${page.routePath.replace(/^\//, "").replace(/\//g, "_")}.js`;
|
|
20244
20514
|
const pageJS = generatePageJS(page);
|
|
20245
|
-
fs9.writeFileSync(
|
|
20515
|
+
fs9.writeFileSync(path11.join(outDir, "assets", pageJsName), pageJS);
|
|
20246
20516
|
}
|
|
20247
20517
|
console.log(`\u2705 ${page.outputDir}/index.html`);
|
|
20248
20518
|
}
|
|
20249
|
-
const faviconPath =
|
|
20519
|
+
const faviconPath = path11.join(baseDir, "favicon.ico");
|
|
20250
20520
|
if (fs9.existsSync(faviconPath)) {
|
|
20251
|
-
fs9.copyFileSync(faviconPath,
|
|
20521
|
+
fs9.copyFileSync(faviconPath, path11.join(outDir, "favicon.ico"));
|
|
20252
20522
|
console.log("\uD83D\uDCE6 Copied favicon.ico");
|
|
20253
20523
|
}
|
|
20254
20524
|
const custom404Candidates = ["404.zen", "+404.zen", "not-found.zen"];
|
|
20255
20525
|
let has404 = false;
|
|
20256
20526
|
for (const candidate of custom404Candidates) {
|
|
20257
|
-
const custom404Path =
|
|
20527
|
+
const custom404Path = path11.join(pagesDir, candidate);
|
|
20258
20528
|
if (fs9.existsSync(custom404Path)) {
|
|
20259
20529
|
try {
|
|
20260
20530
|
const compiled = await compilePage(custom404Path, pagesDir, baseDir);
|
|
20261
20531
|
const html = generatePageHTML(compiled, globalStyles, contentData);
|
|
20262
|
-
fs9.writeFileSync(
|
|
20532
|
+
fs9.writeFileSync(path11.join(outDir, "404.html"), html);
|
|
20263
20533
|
console.log("\uD83D\uDCE6 Generated 404.html (custom)");
|
|
20264
20534
|
has404 = true;
|
|
20265
20535
|
if (compiled.pageScript) {
|
|
20266
20536
|
const pageJS = generatePageJS(compiled);
|
|
20267
|
-
fs9.writeFileSync(
|
|
20537
|
+
fs9.writeFileSync(path11.join(outDir, "assets", "page_404.js"), pageJS);
|
|
20268
20538
|
}
|
|
20269
20539
|
} catch (error3) {
|
|
20270
20540
|
console.warn(` \u26A0\uFE0F Could not compile ${candidate}: ${error3.message}`);
|
|
@@ -20298,7 +20568,7 @@ async function buildSSG(options) {
|
|
|
20298
20568
|
</div>
|
|
20299
20569
|
</body>
|
|
20300
20570
|
</html>`;
|
|
20301
|
-
fs9.writeFileSync(
|
|
20571
|
+
fs9.writeFileSync(path11.join(outDir, "404.html"), default404HTML);
|
|
20302
20572
|
console.log("\uD83D\uDCE6 Generated 404.html (default)");
|
|
20303
20573
|
}
|
|
20304
20574
|
console.log("");
|
|
@@ -20337,14 +20607,14 @@ async function build(options = {}) {
|
|
|
20337
20607
|
|
|
20338
20608
|
// cli/utils/plugin-manager.ts
|
|
20339
20609
|
import fs10 from "fs";
|
|
20340
|
-
import
|
|
20610
|
+
import path12 from "path";
|
|
20341
20611
|
var PLUGINS_FILE = "zenith.plugins.json";
|
|
20342
20612
|
function getPluginsPath() {
|
|
20343
20613
|
const root = findProjectRoot();
|
|
20344
20614
|
if (!root) {
|
|
20345
20615
|
throw new Error("Not in a Zenith project");
|
|
20346
20616
|
}
|
|
20347
|
-
return
|
|
20617
|
+
return path12.join(root, PLUGINS_FILE);
|
|
20348
20618
|
}
|
|
20349
20619
|
function readPlugins() {
|
|
20350
20620
|
const pluginsPath = getPluginsPath();
|
|
@@ -20434,7 +20704,7 @@ async function remove(pluginName) {
|
|
|
20434
20704
|
|
|
20435
20705
|
// cli/commands/create.ts
|
|
20436
20706
|
import fs11 from "fs";
|
|
20437
|
-
import
|
|
20707
|
+
import path13 from "path";
|
|
20438
20708
|
import { execSync } from "child_process";
|
|
20439
20709
|
import readline from "readline";
|
|
20440
20710
|
async function prompt(question, defaultValue) {
|
|
@@ -20473,7 +20743,7 @@ async function create(appName) {
|
|
|
20473
20743
|
configSpinner.succeed("Configurations generated");
|
|
20474
20744
|
const installSpinner = new Spinner("Installing dependencies...");
|
|
20475
20745
|
installSpinner.start();
|
|
20476
|
-
const targetDir =
|
|
20746
|
+
const targetDir = path13.resolve(process.cwd(), options.name);
|
|
20477
20747
|
process.chdir(targetDir);
|
|
20478
20748
|
try {
|
|
20479
20749
|
execSync("bun install", { stdio: "pipe" });
|
|
@@ -20504,7 +20774,7 @@ async function gatherOptions(providedName) {
|
|
|
20504
20774
|
process.exit(1);
|
|
20505
20775
|
}
|
|
20506
20776
|
}
|
|
20507
|
-
const targetDir =
|
|
20777
|
+
const targetDir = path13.resolve(process.cwd(), name);
|
|
20508
20778
|
if (fs11.existsSync(targetDir)) {
|
|
20509
20779
|
error2(`Directory "${name}" already exists`);
|
|
20510
20780
|
process.exit(1);
|
|
@@ -20526,14 +20796,14 @@ async function gatherOptions(providedName) {
|
|
|
20526
20796
|
};
|
|
20527
20797
|
}
|
|
20528
20798
|
async function createProject(options) {
|
|
20529
|
-
const targetDir =
|
|
20799
|
+
const targetDir = path13.resolve(process.cwd(), options.name);
|
|
20530
20800
|
const baseDir = options.directory;
|
|
20531
|
-
const appDir =
|
|
20801
|
+
const appDir = path13.join(targetDir, baseDir);
|
|
20532
20802
|
fs11.mkdirSync(targetDir, { recursive: true });
|
|
20533
|
-
fs11.mkdirSync(
|
|
20534
|
-
fs11.mkdirSync(
|
|
20535
|
-
fs11.mkdirSync(
|
|
20536
|
-
fs11.mkdirSync(
|
|
20803
|
+
fs11.mkdirSync(path13.join(appDir, "pages"), { recursive: true });
|
|
20804
|
+
fs11.mkdirSync(path13.join(appDir, "layouts"), { recursive: true });
|
|
20805
|
+
fs11.mkdirSync(path13.join(appDir, "components"), { recursive: true });
|
|
20806
|
+
fs11.mkdirSync(path13.join(appDir, "styles"), { recursive: true });
|
|
20537
20807
|
const pkg = {
|
|
20538
20808
|
name: options.name,
|
|
20539
20809
|
version: "0.1.0",
|
|
@@ -20563,14 +20833,14 @@ async function createProject(options) {
|
|
|
20563
20833
|
devDeps["prettier"] = "^3.0.0";
|
|
20564
20834
|
pkg.scripts = { ...pkg.scripts, format: "prettier --write ." };
|
|
20565
20835
|
}
|
|
20566
|
-
fs11.writeFileSync(
|
|
20567
|
-
fs11.writeFileSync(
|
|
20568
|
-
fs11.writeFileSync(
|
|
20569
|
-
fs11.writeFileSync(
|
|
20570
|
-
fs11.writeFileSync(
|
|
20836
|
+
fs11.writeFileSync(path13.join(targetDir, "package.json"), JSON.stringify(pkg, null, 4));
|
|
20837
|
+
fs11.writeFileSync(path13.join(targetDir, baseDir, "pages", "index.zen"), generateIndexPage());
|
|
20838
|
+
fs11.writeFileSync(path13.join(targetDir, baseDir, "layouts", "DefaultLayout.zen"), generateDefaultLayout());
|
|
20839
|
+
fs11.writeFileSync(path13.join(appDir, "styles", "global.css"), generateGlobalCSS());
|
|
20840
|
+
fs11.writeFileSync(path13.join(targetDir, ".gitignore"), generateGitignore());
|
|
20571
20841
|
}
|
|
20572
20842
|
async function generateConfigs(options) {
|
|
20573
|
-
const targetDir =
|
|
20843
|
+
const targetDir = path13.resolve(process.cwd(), options.name);
|
|
20574
20844
|
const tsconfig = {
|
|
20575
20845
|
compilerOptions: {
|
|
20576
20846
|
target: "ESNext",
|
|
@@ -20594,7 +20864,7 @@ async function generateConfigs(options) {
|
|
|
20594
20864
|
"@/*": [`./${options.directory}/*`]
|
|
20595
20865
|
};
|
|
20596
20866
|
}
|
|
20597
|
-
fs11.writeFileSync(
|
|
20867
|
+
fs11.writeFileSync(path13.join(targetDir, "tsconfig.json"), JSON.stringify(tsconfig, null, 4));
|
|
20598
20868
|
if (options.eslint) {
|
|
20599
20869
|
const eslintConfig = {
|
|
20600
20870
|
root: true,
|
|
@@ -20615,7 +20885,7 @@ async function generateConfigs(options) {
|
|
|
20615
20885
|
},
|
|
20616
20886
|
ignorePatterns: ["dist", "node_modules"]
|
|
20617
20887
|
};
|
|
20618
|
-
fs11.writeFileSync(
|
|
20888
|
+
fs11.writeFileSync(path13.join(targetDir, ".eslintrc.json"), JSON.stringify(eslintConfig, null, 4));
|
|
20619
20889
|
}
|
|
20620
20890
|
if (options.prettier) {
|
|
20621
20891
|
const prettierConfig = {
|
|
@@ -20625,8 +20895,8 @@ async function generateConfigs(options) {
|
|
|
20625
20895
|
trailingComma: "es5",
|
|
20626
20896
|
printWidth: 100
|
|
20627
20897
|
};
|
|
20628
|
-
fs11.writeFileSync(
|
|
20629
|
-
fs11.writeFileSync(
|
|
20898
|
+
fs11.writeFileSync(path13.join(targetDir, ".prettierrc"), JSON.stringify(prettierConfig, null, 4));
|
|
20899
|
+
fs11.writeFileSync(path13.join(targetDir, ".prettierignore"), `dist
|
|
20630
20900
|
node_modules
|
|
20631
20901
|
bun.lock
|
|
20632
20902
|
`);
|