zen-fs-webdav 0.1.0
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/LICENSE +21 -0
- package/README.md +261 -0
- package/dist/index.d.mts +278 -0
- package/dist/index.d.ts +278 -0
- package/dist/index.js +768 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +752 -0
- package/dist/index.mjs.map +1 -0
- package/dist/index.umd.js +2374 -0
- package/dist/index.umd.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/he/he.js","../src/index.ts","../src/errors.ts","../src/constants.ts","../node_modules/fast-xml-parser/src/util.js","../node_modules/fast-xml-parser/src/validator.js","../node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","../node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","../node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","../node_modules/strnum/strnum.js","../node_modules/fast-xml-parser/src/ignoreAttributes.js","../node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","../node_modules/fast-xml-parser/src/xmlparser/node2json.js","../node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","../src/utils.ts","../src/webdav-fs.ts","../src/webdav.ts"],"sourcesContent":["/*! https://mths.be/he v1.2.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t// All astral symbols.\n\tvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\t// All ASCII symbols (not just printable ASCII) except those listed in the\n\t// first column of the overrides table.\n\t// https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides\n\tvar regexAsciiWhitelist = /[\\x01-\\x7F]/g;\n\t// All BMP symbols that are not ASCII newlines, printable ASCII symbols, or\n\t// code points listed in the first column of the overrides table on\n\t// https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides.\n\tvar regexBmpWhitelist = /[\\x01-\\t\\x0B\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g;\n\n\tvar regexEncodeNonAscii = /<\\u20D2|=\\u20E5|>\\u20D2|\\u205F\\u200A|\\u219D\\u0338|\\u2202\\u0338|\\u2220\\u20D2|\\u2229\\uFE00|\\u222A\\uFE00|\\u223C\\u20D2|\\u223D\\u0331|\\u223E\\u0333|\\u2242\\u0338|\\u224B\\u0338|\\u224D\\u20D2|\\u224E\\u0338|\\u224F\\u0338|\\u2250\\u0338|\\u2261\\u20E5|\\u2264\\u20D2|\\u2265\\u20D2|\\u2266\\u0338|\\u2267\\u0338|\\u2268\\uFE00|\\u2269\\uFE00|\\u226A\\u0338|\\u226A\\u20D2|\\u226B\\u0338|\\u226B\\u20D2|\\u227F\\u0338|\\u2282\\u20D2|\\u2283\\u20D2|\\u228A\\uFE00|\\u228B\\uFE00|\\u228F\\u0338|\\u2290\\u0338|\\u2293\\uFE00|\\u2294\\uFE00|\\u22B4\\u20D2|\\u22B5\\u20D2|\\u22D8\\u0338|\\u22D9\\u0338|\\u22DA\\uFE00|\\u22DB\\uFE00|\\u22F5\\u0338|\\u22F9\\u0338|\\u2933\\u0338|\\u29CF\\u0338|\\u29D0\\u0338|\\u2A6D\\u0338|\\u2A70\\u0338|\\u2A7D\\u0338|\\u2A7E\\u0338|\\u2AA1\\u0338|\\u2AA2\\u0338|\\u2AAC\\uFE00|\\u2AAD\\uFE00|\\u2AAF\\u0338|\\u2AB0\\u0338|\\u2AC5\\u0338|\\u2AC6\\u0338|\\u2ACB\\uFE00|\\u2ACC\\uFE00|\\u2AFD\\u20E5|[\\xA0-\\u0113\\u0116-\\u0122\\u0124-\\u012B\\u012E-\\u014D\\u0150-\\u017E\\u0192\\u01B5\\u01F5\\u0237\\u02C6\\u02C7\\u02D8-\\u02DD\\u0311\\u0391-\\u03A1\\u03A3-\\u03A9\\u03B1-\\u03C9\\u03D1\\u03D2\\u03D5\\u03D6\\u03DC\\u03DD\\u03F0\\u03F1\\u03F5\\u03F6\\u0401-\\u040C\\u040E-\\u044F\\u0451-\\u045C\\u045E\\u045F\\u2002-\\u2005\\u2007-\\u2010\\u2013-\\u2016\\u2018-\\u201A\\u201C-\\u201E\\u2020-\\u2022\\u2025\\u2026\\u2030-\\u2035\\u2039\\u203A\\u203E\\u2041\\u2043\\u2044\\u204F\\u2057\\u205F-\\u2063\\u20AC\\u20DB\\u20DC\\u2102\\u2105\\u210A-\\u2113\\u2115-\\u211E\\u2122\\u2124\\u2127-\\u2129\\u212C\\u212D\\u212F-\\u2131\\u2133-\\u2138\\u2145-\\u2148\\u2153-\\u215E\\u2190-\\u219B\\u219D-\\u21A7\\u21A9-\\u21AE\\u21B0-\\u21B3\\u21B5-\\u21B7\\u21BA-\\u21DB\\u21DD\\u21E4\\u21E5\\u21F5\\u21FD-\\u2205\\u2207-\\u2209\\u220B\\u220C\\u220F-\\u2214\\u2216-\\u2218\\u221A\\u221D-\\u2238\\u223A-\\u2257\\u2259\\u225A\\u225C\\u225F-\\u2262\\u2264-\\u228B\\u228D-\\u229B\\u229D-\\u22A5\\u22A7-\\u22B0\\u22B2-\\u22BB\\u22BD-\\u22DB\\u22DE-\\u22E3\\u22E6-\\u22F7\\u22F9-\\u22FE\\u2305\\u2306\\u2308-\\u2310\\u2312\\u2313\\u2315\\u2316\\u231C-\\u231F\\u2322\\u2323\\u232D\\u232E\\u2336\\u233D\\u233F\\u237C\\u23B0\\u23B1\\u23B4-\\u23B6\\u23DC-\\u23DF\\u23E2\\u23E7\\u2423\\u24C8\\u2500\\u2502\\u250C\\u2510\\u2514\\u2518\\u251C\\u2524\\u252C\\u2534\\u253C\\u2550-\\u256C\\u2580\\u2584\\u2588\\u2591-\\u2593\\u25A1\\u25AA\\u25AB\\u25AD\\u25AE\\u25B1\\u25B3-\\u25B5\\u25B8\\u25B9\\u25BD-\\u25BF\\u25C2\\u25C3\\u25CA\\u25CB\\u25EC\\u25EF\\u25F8-\\u25FC\\u2605\\u2606\\u260E\\u2640\\u2642\\u2660\\u2663\\u2665\\u2666\\u266A\\u266D-\\u266F\\u2713\\u2717\\u2720\\u2736\\u2758\\u2772\\u2773\\u27C8\\u27C9\\u27E6-\\u27ED\\u27F5-\\u27FA\\u27FC\\u27FF\\u2902-\\u2905\\u290C-\\u2913\\u2916\\u2919-\\u2920\\u2923-\\u292A\\u2933\\u2935-\\u2939\\u293C\\u293D\\u2945\\u2948-\\u294B\\u294E-\\u2976\\u2978\\u2979\\u297B-\\u297F\\u2985\\u2986\\u298B-\\u2996\\u299A\\u299C\\u299D\\u29A4-\\u29B7\\u29B9\\u29BB\\u29BC\\u29BE-\\u29C5\\u29C9\\u29CD-\\u29D0\\u29DC-\\u29DE\\u29E3-\\u29E5\\u29EB\\u29F4\\u29F6\\u2A00-\\u2A02\\u2A04\\u2A06\\u2A0C\\u2A0D\\u2A10-\\u2A17\\u2A22-\\u2A27\\u2A29\\u2A2A\\u2A2D-\\u2A31\\u2A33-\\u2A3C\\u2A3F\\u2A40\\u2A42-\\u2A4D\\u2A50\\u2A53-\\u2A58\\u2A5A-\\u2A5D\\u2A5F\\u2A66\\u2A6A\\u2A6D-\\u2A75\\u2A77-\\u2A9A\\u2A9D-\\u2AA2\\u2AA4-\\u2AB0\\u2AB3-\\u2AC8\\u2ACB\\u2ACC\\u2ACF-\\u2ADB\\u2AE4\\u2AE6-\\u2AE9\\u2AEB-\\u2AF3\\u2AFD\\uFB00-\\uFB04]|\\uD835[\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDD6B]/g;\n\tvar encodeMap = {'\\xAD':'shy','\\u200C':'zwnj','\\u200D':'zwj','\\u200E':'lrm','\\u2063':'ic','\\u2062':'it','\\u2061':'af','\\u200F':'rlm','\\u200B':'ZeroWidthSpace','\\u2060':'NoBreak','\\u0311':'DownBreve','\\u20DB':'tdot','\\u20DC':'DotDot','\\t':'Tab','\\n':'NewLine','\\u2008':'puncsp','\\u205F':'MediumSpace','\\u2009':'thinsp','\\u200A':'hairsp','\\u2004':'emsp13','\\u2002':'ensp','\\u2005':'emsp14','\\u2003':'emsp','\\u2007':'numsp','\\xA0':'nbsp','\\u205F\\u200A':'ThickSpace','\\u203E':'oline','_':'lowbar','\\u2010':'dash','\\u2013':'ndash','\\u2014':'mdash','\\u2015':'horbar',',':'comma',';':'semi','\\u204F':'bsemi',':':'colon','\\u2A74':'Colone','!':'excl','\\xA1':'iexcl','?':'quest','\\xBF':'iquest','.':'period','\\u2025':'nldr','\\u2026':'mldr','\\xB7':'middot','\\'':'apos','\\u2018':'lsquo','\\u2019':'rsquo','\\u201A':'sbquo','\\u2039':'lsaquo','\\u203A':'rsaquo','\"':'quot','\\u201C':'ldquo','\\u201D':'rdquo','\\u201E':'bdquo','\\xAB':'laquo','\\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\\u2308':'lceil','\\u2309':'rceil','\\u230A':'lfloor','\\u230B':'rfloor','\\u2985':'lopar','\\u2986':'ropar','\\u298B':'lbrke','\\u298C':'rbrke','\\u298D':'lbrkslu','\\u298E':'rbrksld','\\u298F':'lbrksld','\\u2990':'rbrkslu','\\u2991':'langd','\\u2992':'rangd','\\u2993':'lparlt','\\u2994':'rpargt','\\u2995':'gtlPar','\\u2996':'ltrPar','\\u27E6':'lobrk','\\u27E7':'robrk','\\u27E8':'lang','\\u27E9':'rang','\\u27EA':'Lang','\\u27EB':'Rang','\\u27EC':'loang','\\u27ED':'roang','\\u2772':'lbbrk','\\u2773':'rbbrk','\\u2016':'Vert','\\xA7':'sect','\\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\\u2030':'permil','\\u2031':'pertenk','\\u2020':'dagger','\\u2021':'Dagger','\\u2022':'bull','\\u2043':'hybull','\\u2032':'prime','\\u2033':'Prime','\\u2034':'tprime','\\u2057':'qprime','\\u2035':'bprime','\\u2041':'caret','`':'grave','\\xB4':'acute','\\u02DC':'tilde','^':'Hat','\\xAF':'macr','\\u02D8':'breve','\\u02D9':'dot','\\xA8':'die','\\u02DA':'ring','\\u02DD':'dblac','\\xB8':'cedil','\\u02DB':'ogon','\\u02C6':'circ','\\u02C7':'caron','\\xB0':'deg','\\xA9':'copy','\\xAE':'reg','\\u2117':'copysr','\\u2118':'wp','\\u211E':'rx','\\u2127':'mho','\\u2129':'iiota','\\u2190':'larr','\\u219A':'nlarr','\\u2192':'rarr','\\u219B':'nrarr','\\u2191':'uarr','\\u2193':'darr','\\u2194':'harr','\\u21AE':'nharr','\\u2195':'varr','\\u2196':'nwarr','\\u2197':'nearr','\\u2198':'searr','\\u2199':'swarr','\\u219D':'rarrw','\\u219D\\u0338':'nrarrw','\\u219E':'Larr','\\u219F':'Uarr','\\u21A0':'Rarr','\\u21A1':'Darr','\\u21A2':'larrtl','\\u21A3':'rarrtl','\\u21A4':'mapstoleft','\\u21A5':'mapstoup','\\u21A6':'map','\\u21A7':'mapstodown','\\u21A9':'larrhk','\\u21AA':'rarrhk','\\u21AB':'larrlp','\\u21AC':'rarrlp','\\u21AD':'harrw','\\u21B0':'lsh','\\u21B1':'rsh','\\u21B2':'ldsh','\\u21B3':'rdsh','\\u21B5':'crarr','\\u21B6':'cularr','\\u21B7':'curarr','\\u21BA':'olarr','\\u21BB':'orarr','\\u21BC':'lharu','\\u21BD':'lhard','\\u21BE':'uharr','\\u21BF':'uharl','\\u21C0':'rharu','\\u21C1':'rhard','\\u21C2':'dharr','\\u21C3':'dharl','\\u21C4':'rlarr','\\u21C5':'udarr','\\u21C6':'lrarr','\\u21C7':'llarr','\\u21C8':'uuarr','\\u21C9':'rrarr','\\u21CA':'ddarr','\\u21CB':'lrhar','\\u21CC':'rlhar','\\u21D0':'lArr','\\u21CD':'nlArr','\\u21D1':'uArr','\\u21D2':'rArr','\\u21CF':'nrArr','\\u21D3':'dArr','\\u21D4':'iff','\\u21CE':'nhArr','\\u21D5':'vArr','\\u21D6':'nwArr','\\u21D7':'neArr','\\u21D8':'seArr','\\u21D9':'swArr','\\u21DA':'lAarr','\\u21DB':'rAarr','\\u21DD':'zigrarr','\\u21E4':'larrb','\\u21E5':'rarrb','\\u21F5':'duarr','\\u21FD':'loarr','\\u21FE':'roarr','\\u21FF':'hoarr','\\u2200':'forall','\\u2201':'comp','\\u2202':'part','\\u2202\\u0338':'npart','\\u2203':'exist','\\u2204':'nexist','\\u2205':'empty','\\u2207':'Del','\\u2208':'in','\\u2209':'notin','\\u220B':'ni','\\u220C':'notni','\\u03F6':'bepsi','\\u220F':'prod','\\u2210':'coprod','\\u2211':'sum','+':'plus','\\xB1':'pm','\\xF7':'div','\\xD7':'times','<':'lt','\\u226E':'nlt','<\\u20D2':'nvlt','=':'equals','\\u2260':'ne','=\\u20E5':'bne','\\u2A75':'Equal','>':'gt','\\u226F':'ngt','>\\u20D2':'nvgt','\\xAC':'not','|':'vert','\\xA6':'brvbar','\\u2212':'minus','\\u2213':'mp','\\u2214':'plusdo','\\u2044':'frasl','\\u2216':'setmn','\\u2217':'lowast','\\u2218':'compfn','\\u221A':'Sqrt','\\u221D':'prop','\\u221E':'infin','\\u221F':'angrt','\\u2220':'ang','\\u2220\\u20D2':'nang','\\u2221':'angmsd','\\u2222':'angsph','\\u2223':'mid','\\u2224':'nmid','\\u2225':'par','\\u2226':'npar','\\u2227':'and','\\u2228':'or','\\u2229':'cap','\\u2229\\uFE00':'caps','\\u222A':'cup','\\u222A\\uFE00':'cups','\\u222B':'int','\\u222C':'Int','\\u222D':'tint','\\u2A0C':'qint','\\u222E':'oint','\\u222F':'Conint','\\u2230':'Cconint','\\u2231':'cwint','\\u2232':'cwconint','\\u2233':'awconint','\\u2234':'there4','\\u2235':'becaus','\\u2236':'ratio','\\u2237':'Colon','\\u2238':'minusd','\\u223A':'mDDot','\\u223B':'homtht','\\u223C':'sim','\\u2241':'nsim','\\u223C\\u20D2':'nvsim','\\u223D':'bsim','\\u223D\\u0331':'race','\\u223E':'ac','\\u223E\\u0333':'acE','\\u223F':'acd','\\u2240':'wr','\\u2242':'esim','\\u2242\\u0338':'nesim','\\u2243':'sime','\\u2244':'nsime','\\u2245':'cong','\\u2247':'ncong','\\u2246':'simne','\\u2248':'ap','\\u2249':'nap','\\u224A':'ape','\\u224B':'apid','\\u224B\\u0338':'napid','\\u224C':'bcong','\\u224D':'CupCap','\\u226D':'NotCupCap','\\u224D\\u20D2':'nvap','\\u224E':'bump','\\u224E\\u0338':'nbump','\\u224F':'bumpe','\\u224F\\u0338':'nbumpe','\\u2250':'doteq','\\u2250\\u0338':'nedot','\\u2251':'eDot','\\u2252':'efDot','\\u2253':'erDot','\\u2254':'colone','\\u2255':'ecolon','\\u2256':'ecir','\\u2257':'cire','\\u2259':'wedgeq','\\u225A':'veeeq','\\u225C':'trie','\\u225F':'equest','\\u2261':'equiv','\\u2262':'nequiv','\\u2261\\u20E5':'bnequiv','\\u2264':'le','\\u2270':'nle','\\u2264\\u20D2':'nvle','\\u2265':'ge','\\u2271':'nge','\\u2265\\u20D2':'nvge','\\u2266':'lE','\\u2266\\u0338':'nlE','\\u2267':'gE','\\u2267\\u0338':'ngE','\\u2268\\uFE00':'lvnE','\\u2268':'lnE','\\u2269':'gnE','\\u2269\\uFE00':'gvnE','\\u226A':'ll','\\u226A\\u0338':'nLtv','\\u226A\\u20D2':'nLt','\\u226B':'gg','\\u226B\\u0338':'nGtv','\\u226B\\u20D2':'nGt','\\u226C':'twixt','\\u2272':'lsim','\\u2274':'nlsim','\\u2273':'gsim','\\u2275':'ngsim','\\u2276':'lg','\\u2278':'ntlg','\\u2277':'gl','\\u2279':'ntgl','\\u227A':'pr','\\u2280':'npr','\\u227B':'sc','\\u2281':'nsc','\\u227C':'prcue','\\u22E0':'nprcue','\\u227D':'sccue','\\u22E1':'nsccue','\\u227E':'prsim','\\u227F':'scsim','\\u227F\\u0338':'NotSucceedsTilde','\\u2282':'sub','\\u2284':'nsub','\\u2282\\u20D2':'vnsub','\\u2283':'sup','\\u2285':'nsup','\\u2283\\u20D2':'vnsup','\\u2286':'sube','\\u2288':'nsube','\\u2287':'supe','\\u2289':'nsupe','\\u228A\\uFE00':'vsubne','\\u228A':'subne','\\u228B\\uFE00':'vsupne','\\u228B':'supne','\\u228D':'cupdot','\\u228E':'uplus','\\u228F':'sqsub','\\u228F\\u0338':'NotSquareSubset','\\u2290':'sqsup','\\u2290\\u0338':'NotSquareSuperset','\\u2291':'sqsube','\\u22E2':'nsqsube','\\u2292':'sqsupe','\\u22E3':'nsqsupe','\\u2293':'sqcap','\\u2293\\uFE00':'sqcaps','\\u2294':'sqcup','\\u2294\\uFE00':'sqcups','\\u2295':'oplus','\\u2296':'ominus','\\u2297':'otimes','\\u2298':'osol','\\u2299':'odot','\\u229A':'ocir','\\u229B':'oast','\\u229D':'odash','\\u229E':'plusb','\\u229F':'minusb','\\u22A0':'timesb','\\u22A1':'sdotb','\\u22A2':'vdash','\\u22AC':'nvdash','\\u22A3':'dashv','\\u22A4':'top','\\u22A5':'bot','\\u22A7':'models','\\u22A8':'vDash','\\u22AD':'nvDash','\\u22A9':'Vdash','\\u22AE':'nVdash','\\u22AA':'Vvdash','\\u22AB':'VDash','\\u22AF':'nVDash','\\u22B0':'prurel','\\u22B2':'vltri','\\u22EA':'nltri','\\u22B3':'vrtri','\\u22EB':'nrtri','\\u22B4':'ltrie','\\u22EC':'nltrie','\\u22B4\\u20D2':'nvltrie','\\u22B5':'rtrie','\\u22ED':'nrtrie','\\u22B5\\u20D2':'nvrtrie','\\u22B6':'origof','\\u22B7':'imof','\\u22B8':'mumap','\\u22B9':'hercon','\\u22BA':'intcal','\\u22BB':'veebar','\\u22BD':'barvee','\\u22BE':'angrtvb','\\u22BF':'lrtri','\\u22C0':'Wedge','\\u22C1':'Vee','\\u22C2':'xcap','\\u22C3':'xcup','\\u22C4':'diam','\\u22C5':'sdot','\\u22C6':'Star','\\u22C7':'divonx','\\u22C8':'bowtie','\\u22C9':'ltimes','\\u22CA':'rtimes','\\u22CB':'lthree','\\u22CC':'rthree','\\u22CD':'bsime','\\u22CE':'cuvee','\\u22CF':'cuwed','\\u22D0':'Sub','\\u22D1':'Sup','\\u22D2':'Cap','\\u22D3':'Cup','\\u22D4':'fork','\\u22D5':'epar','\\u22D6':'ltdot','\\u22D7':'gtdot','\\u22D8':'Ll','\\u22D8\\u0338':'nLl','\\u22D9':'Gg','\\u22D9\\u0338':'nGg','\\u22DA\\uFE00':'lesg','\\u22DA':'leg','\\u22DB':'gel','\\u22DB\\uFE00':'gesl','\\u22DE':'cuepr','\\u22DF':'cuesc','\\u22E6':'lnsim','\\u22E7':'gnsim','\\u22E8':'prnsim','\\u22E9':'scnsim','\\u22EE':'vellip','\\u22EF':'ctdot','\\u22F0':'utdot','\\u22F1':'dtdot','\\u22F2':'disin','\\u22F3':'isinsv','\\u22F4':'isins','\\u22F5':'isindot','\\u22F5\\u0338':'notindot','\\u22F6':'notinvc','\\u22F7':'notinvb','\\u22F9':'isinE','\\u22F9\\u0338':'notinE','\\u22FA':'nisd','\\u22FB':'xnis','\\u22FC':'nis','\\u22FD':'notnivc','\\u22FE':'notnivb','\\u2305':'barwed','\\u2306':'Barwed','\\u230C':'drcrop','\\u230D':'dlcrop','\\u230E':'urcrop','\\u230F':'ulcrop','\\u2310':'bnot','\\u2312':'profline','\\u2313':'profsurf','\\u2315':'telrec','\\u2316':'target','\\u231C':'ulcorn','\\u231D':'urcorn','\\u231E':'dlcorn','\\u231F':'drcorn','\\u2322':'frown','\\u2323':'smile','\\u232D':'cylcty','\\u232E':'profalar','\\u2336':'topbot','\\u233D':'ovbar','\\u233F':'solbar','\\u237C':'angzarr','\\u23B0':'lmoust','\\u23B1':'rmoust','\\u23B4':'tbrk','\\u23B5':'bbrk','\\u23B6':'bbrktbrk','\\u23DC':'OverParenthesis','\\u23DD':'UnderParenthesis','\\u23DE':'OverBrace','\\u23DF':'UnderBrace','\\u23E2':'trpezium','\\u23E7':'elinters','\\u2423':'blank','\\u2500':'boxh','\\u2502':'boxv','\\u250C':'boxdr','\\u2510':'boxdl','\\u2514':'boxur','\\u2518':'boxul','\\u251C':'boxvr','\\u2524':'boxvl','\\u252C':'boxhd','\\u2534':'boxhu','\\u253C':'boxvh','\\u2550':'boxH','\\u2551':'boxV','\\u2552':'boxdR','\\u2553':'boxDr','\\u2554':'boxDR','\\u2555':'boxdL','\\u2556':'boxDl','\\u2557':'boxDL','\\u2558':'boxuR','\\u2559':'boxUr','\\u255A':'boxUR','\\u255B':'boxuL','\\u255C':'boxUl','\\u255D':'boxUL','\\u255E':'boxvR','\\u255F':'boxVr','\\u2560':'boxVR','\\u2561':'boxvL','\\u2562':'boxVl','\\u2563':'boxVL','\\u2564':'boxHd','\\u2565':'boxhD','\\u2566':'boxHD','\\u2567':'boxHu','\\u2568':'boxhU','\\u2569':'boxHU','\\u256A':'boxvH','\\u256B':'boxVh','\\u256C':'boxVH','\\u2580':'uhblk','\\u2584':'lhblk','\\u2588':'block','\\u2591':'blk14','\\u2592':'blk12','\\u2593':'blk34','\\u25A1':'squ','\\u25AA':'squf','\\u25AB':'EmptyVerySmallSquare','\\u25AD':'rect','\\u25AE':'marker','\\u25B1':'fltns','\\u25B3':'xutri','\\u25B4':'utrif','\\u25B5':'utri','\\u25B8':'rtrif','\\u25B9':'rtri','\\u25BD':'xdtri','\\u25BE':'dtrif','\\u25BF':'dtri','\\u25C2':'ltrif','\\u25C3':'ltri','\\u25CA':'loz','\\u25CB':'cir','\\u25EC':'tridot','\\u25EF':'xcirc','\\u25F8':'ultri','\\u25F9':'urtri','\\u25FA':'lltri','\\u25FB':'EmptySmallSquare','\\u25FC':'FilledSmallSquare','\\u2605':'starf','\\u2606':'star','\\u260E':'phone','\\u2640':'female','\\u2642':'male','\\u2660':'spades','\\u2663':'clubs','\\u2665':'hearts','\\u2666':'diams','\\u266A':'sung','\\u2713':'check','\\u2717':'cross','\\u2720':'malt','\\u2736':'sext','\\u2758':'VerticalSeparator','\\u27C8':'bsolhsub','\\u27C9':'suphsol','\\u27F5':'xlarr','\\u27F6':'xrarr','\\u27F7':'xharr','\\u27F8':'xlArr','\\u27F9':'xrArr','\\u27FA':'xhArr','\\u27FC':'xmap','\\u27FF':'dzigrarr','\\u2902':'nvlArr','\\u2903':'nvrArr','\\u2904':'nvHarr','\\u2905':'Map','\\u290C':'lbarr','\\u290D':'rbarr','\\u290E':'lBarr','\\u290F':'rBarr','\\u2910':'RBarr','\\u2911':'DDotrahd','\\u2912':'UpArrowBar','\\u2913':'DownArrowBar','\\u2916':'Rarrtl','\\u2919':'latail','\\u291A':'ratail','\\u291B':'lAtail','\\u291C':'rAtail','\\u291D':'larrfs','\\u291E':'rarrfs','\\u291F':'larrbfs','\\u2920':'rarrbfs','\\u2923':'nwarhk','\\u2924':'nearhk','\\u2925':'searhk','\\u2926':'swarhk','\\u2927':'nwnear','\\u2928':'toea','\\u2929':'tosa','\\u292A':'swnwar','\\u2933':'rarrc','\\u2933\\u0338':'nrarrc','\\u2935':'cudarrr','\\u2936':'ldca','\\u2937':'rdca','\\u2938':'cudarrl','\\u2939':'larrpl','\\u293C':'curarrm','\\u293D':'cularrp','\\u2945':'rarrpl','\\u2948':'harrcir','\\u2949':'Uarrocir','\\u294A':'lurdshar','\\u294B':'ldrushar','\\u294E':'LeftRightVector','\\u294F':'RightUpDownVector','\\u2950':'DownLeftRightVector','\\u2951':'LeftUpDownVector','\\u2952':'LeftVectorBar','\\u2953':'RightVectorBar','\\u2954':'RightUpVectorBar','\\u2955':'RightDownVectorBar','\\u2956':'DownLeftVectorBar','\\u2957':'DownRightVectorBar','\\u2958':'LeftUpVectorBar','\\u2959':'LeftDownVectorBar','\\u295A':'LeftTeeVector','\\u295B':'RightTeeVector','\\u295C':'RightUpTeeVector','\\u295D':'RightDownTeeVector','\\u295E':'DownLeftTeeVector','\\u295F':'DownRightTeeVector','\\u2960':'LeftUpTeeVector','\\u2961':'LeftDownTeeVector','\\u2962':'lHar','\\u2963':'uHar','\\u2964':'rHar','\\u2965':'dHar','\\u2966':'luruhar','\\u2967':'ldrdhar','\\u2968':'ruluhar','\\u2969':'rdldhar','\\u296A':'lharul','\\u296B':'llhard','\\u296C':'rharul','\\u296D':'lrhard','\\u296E':'udhar','\\u296F':'duhar','\\u2970':'RoundImplies','\\u2971':'erarr','\\u2972':'simrarr','\\u2973':'larrsim','\\u2974':'rarrsim','\\u2975':'rarrap','\\u2976':'ltlarr','\\u2978':'gtrarr','\\u2979':'subrarr','\\u297B':'suplarr','\\u297C':'lfisht','\\u297D':'rfisht','\\u297E':'ufisht','\\u297F':'dfisht','\\u299A':'vzigzag','\\u299C':'vangrt','\\u299D':'angrtvbd','\\u29A4':'ange','\\u29A5':'range','\\u29A6':'dwangle','\\u29A7':'uwangle','\\u29A8':'angmsdaa','\\u29A9':'angmsdab','\\u29AA':'angmsdac','\\u29AB':'angmsdad','\\u29AC':'angmsdae','\\u29AD':'angmsdaf','\\u29AE':'angmsdag','\\u29AF':'angmsdah','\\u29B0':'bemptyv','\\u29B1':'demptyv','\\u29B2':'cemptyv','\\u29B3':'raemptyv','\\u29B4':'laemptyv','\\u29B5':'ohbar','\\u29B6':'omid','\\u29B7':'opar','\\u29B9':'operp','\\u29BB':'olcross','\\u29BC':'odsold','\\u29BE':'olcir','\\u29BF':'ofcir','\\u29C0':'olt','\\u29C1':'ogt','\\u29C2':'cirscir','\\u29C3':'cirE','\\u29C4':'solb','\\u29C5':'bsolb','\\u29C9':'boxbox','\\u29CD':'trisb','\\u29CE':'rtriltri','\\u29CF':'LeftTriangleBar','\\u29CF\\u0338':'NotLeftTriangleBar','\\u29D0':'RightTriangleBar','\\u29D0\\u0338':'NotRightTriangleBar','\\u29DC':'iinfin','\\u29DD':'infintie','\\u29DE':'nvinfin','\\u29E3':'eparsl','\\u29E4':'smeparsl','\\u29E5':'eqvparsl','\\u29EB':'lozf','\\u29F4':'RuleDelayed','\\u29F6':'dsol','\\u2A00':'xodot','\\u2A01':'xoplus','\\u2A02':'xotime','\\u2A04':'xuplus','\\u2A06':'xsqcup','\\u2A0D':'fpartint','\\u2A10':'cirfnint','\\u2A11':'awint','\\u2A12':'rppolint','\\u2A13':'scpolint','\\u2A14':'npolint','\\u2A15':'pointint','\\u2A16':'quatint','\\u2A17':'intlarhk','\\u2A22':'pluscir','\\u2A23':'plusacir','\\u2A24':'simplus','\\u2A25':'plusdu','\\u2A26':'plussim','\\u2A27':'plustwo','\\u2A29':'mcomma','\\u2A2A':'minusdu','\\u2A2D':'loplus','\\u2A2E':'roplus','\\u2A2F':'Cross','\\u2A30':'timesd','\\u2A31':'timesbar','\\u2A33':'smashp','\\u2A34':'lotimes','\\u2A35':'rotimes','\\u2A36':'otimesas','\\u2A37':'Otimes','\\u2A38':'odiv','\\u2A39':'triplus','\\u2A3A':'triminus','\\u2A3B':'tritime','\\u2A3C':'iprod','\\u2A3F':'amalg','\\u2A40':'capdot','\\u2A42':'ncup','\\u2A43':'ncap','\\u2A44':'capand','\\u2A45':'cupor','\\u2A46':'cupcap','\\u2A47':'capcup','\\u2A48':'cupbrcap','\\u2A49':'capbrcup','\\u2A4A':'cupcup','\\u2A4B':'capcap','\\u2A4C':'ccups','\\u2A4D':'ccaps','\\u2A50':'ccupssm','\\u2A53':'And','\\u2A54':'Or','\\u2A55':'andand','\\u2A56':'oror','\\u2A57':'orslope','\\u2A58':'andslope','\\u2A5A':'andv','\\u2A5B':'orv','\\u2A5C':'andd','\\u2A5D':'ord','\\u2A5F':'wedbar','\\u2A66':'sdote','\\u2A6A':'simdot','\\u2A6D':'congdot','\\u2A6D\\u0338':'ncongdot','\\u2A6E':'easter','\\u2A6F':'apacir','\\u2A70':'apE','\\u2A70\\u0338':'napE','\\u2A71':'eplus','\\u2A72':'pluse','\\u2A73':'Esim','\\u2A77':'eDDot','\\u2A78':'equivDD','\\u2A79':'ltcir','\\u2A7A':'gtcir','\\u2A7B':'ltquest','\\u2A7C':'gtquest','\\u2A7D':'les','\\u2A7D\\u0338':'nles','\\u2A7E':'ges','\\u2A7E\\u0338':'nges','\\u2A7F':'lesdot','\\u2A80':'gesdot','\\u2A81':'lesdoto','\\u2A82':'gesdoto','\\u2A83':'lesdotor','\\u2A84':'gesdotol','\\u2A85':'lap','\\u2A86':'gap','\\u2A87':'lne','\\u2A88':'gne','\\u2A89':'lnap','\\u2A8A':'gnap','\\u2A8B':'lEg','\\u2A8C':'gEl','\\u2A8D':'lsime','\\u2A8E':'gsime','\\u2A8F':'lsimg','\\u2A90':'gsiml','\\u2A91':'lgE','\\u2A92':'glE','\\u2A93':'lesges','\\u2A94':'gesles','\\u2A95':'els','\\u2A96':'egs','\\u2A97':'elsdot','\\u2A98':'egsdot','\\u2A99':'el','\\u2A9A':'eg','\\u2A9D':'siml','\\u2A9E':'simg','\\u2A9F':'simlE','\\u2AA0':'simgE','\\u2AA1':'LessLess','\\u2AA1\\u0338':'NotNestedLessLess','\\u2AA2':'GreaterGreater','\\u2AA2\\u0338':'NotNestedGreaterGreater','\\u2AA4':'glj','\\u2AA5':'gla','\\u2AA6':'ltcc','\\u2AA7':'gtcc','\\u2AA8':'lescc','\\u2AA9':'gescc','\\u2AAA':'smt','\\u2AAB':'lat','\\u2AAC':'smte','\\u2AAC\\uFE00':'smtes','\\u2AAD':'late','\\u2AAD\\uFE00':'lates','\\u2AAE':'bumpE','\\u2AAF':'pre','\\u2AAF\\u0338':'npre','\\u2AB0':'sce','\\u2AB0\\u0338':'nsce','\\u2AB3':'prE','\\u2AB4':'scE','\\u2AB5':'prnE','\\u2AB6':'scnE','\\u2AB7':'prap','\\u2AB8':'scap','\\u2AB9':'prnap','\\u2ABA':'scnap','\\u2ABB':'Pr','\\u2ABC':'Sc','\\u2ABD':'subdot','\\u2ABE':'supdot','\\u2ABF':'subplus','\\u2AC0':'supplus','\\u2AC1':'submult','\\u2AC2':'supmult','\\u2AC3':'subedot','\\u2AC4':'supedot','\\u2AC5':'subE','\\u2AC5\\u0338':'nsubE','\\u2AC6':'supE','\\u2AC6\\u0338':'nsupE','\\u2AC7':'subsim','\\u2AC8':'supsim','\\u2ACB\\uFE00':'vsubnE','\\u2ACB':'subnE','\\u2ACC\\uFE00':'vsupnE','\\u2ACC':'supnE','\\u2ACF':'csub','\\u2AD0':'csup','\\u2AD1':'csube','\\u2AD2':'csupe','\\u2AD3':'subsup','\\u2AD4':'supsub','\\u2AD5':'subsub','\\u2AD6':'supsup','\\u2AD7':'suphsub','\\u2AD8':'supdsub','\\u2AD9':'forkv','\\u2ADA':'topfork','\\u2ADB':'mlcp','\\u2AE4':'Dashv','\\u2AE6':'Vdashl','\\u2AE7':'Barv','\\u2AE8':'vBar','\\u2AE9':'vBarv','\\u2AEB':'Vbar','\\u2AEC':'Not','\\u2AED':'bNot','\\u2AEE':'rnmid','\\u2AEF':'cirmid','\\u2AF0':'midcir','\\u2AF1':'topcir','\\u2AF2':'nhpar','\\u2AF3':'parsim','\\u2AFD':'parsl','\\u2AFD\\u20E5':'nparsl','\\u266D':'flat','\\u266E':'natur','\\u266F':'sharp','\\xA4':'curren','\\xA2':'cent','$':'dollar','\\xA3':'pound','\\xA5':'yen','\\u20AC':'euro','\\xB9':'sup1','\\xBD':'half','\\u2153':'frac13','\\xBC':'frac14','\\u2155':'frac15','\\u2159':'frac16','\\u215B':'frac18','\\xB2':'sup2','\\u2154':'frac23','\\u2156':'frac25','\\xB3':'sup3','\\xBE':'frac34','\\u2157':'frac35','\\u215C':'frac38','\\u2158':'frac45','\\u215A':'frac56','\\u215D':'frac58','\\u215E':'frac78','\\uD835\\uDCB6':'ascr','\\uD835\\uDD52':'aopf','\\uD835\\uDD1E':'afr','\\uD835\\uDD38':'Aopf','\\uD835\\uDD04':'Afr','\\uD835\\uDC9C':'Ascr','\\xAA':'ordf','\\xE1':'aacute','\\xC1':'Aacute','\\xE0':'agrave','\\xC0':'Agrave','\\u0103':'abreve','\\u0102':'Abreve','\\xE2':'acirc','\\xC2':'Acirc','\\xE5':'aring','\\xC5':'angst','\\xE4':'auml','\\xC4':'Auml','\\xE3':'atilde','\\xC3':'Atilde','\\u0105':'aogon','\\u0104':'Aogon','\\u0101':'amacr','\\u0100':'Amacr','\\xE6':'aelig','\\xC6':'AElig','\\uD835\\uDCB7':'bscr','\\uD835\\uDD53':'bopf','\\uD835\\uDD1F':'bfr','\\uD835\\uDD39':'Bopf','\\u212C':'Bscr','\\uD835\\uDD05':'Bfr','\\uD835\\uDD20':'cfr','\\uD835\\uDCB8':'cscr','\\uD835\\uDD54':'copf','\\u212D':'Cfr','\\uD835\\uDC9E':'Cscr','\\u2102':'Copf','\\u0107':'cacute','\\u0106':'Cacute','\\u0109':'ccirc','\\u0108':'Ccirc','\\u010D':'ccaron','\\u010C':'Ccaron','\\u010B':'cdot','\\u010A':'Cdot','\\xE7':'ccedil','\\xC7':'Ccedil','\\u2105':'incare','\\uD835\\uDD21':'dfr','\\u2146':'dd','\\uD835\\uDD55':'dopf','\\uD835\\uDCB9':'dscr','\\uD835\\uDC9F':'Dscr','\\uD835\\uDD07':'Dfr','\\u2145':'DD','\\uD835\\uDD3B':'Dopf','\\u010F':'dcaron','\\u010E':'Dcaron','\\u0111':'dstrok','\\u0110':'Dstrok','\\xF0':'eth','\\xD0':'ETH','\\u2147':'ee','\\u212F':'escr','\\uD835\\uDD22':'efr','\\uD835\\uDD56':'eopf','\\u2130':'Escr','\\uD835\\uDD08':'Efr','\\uD835\\uDD3C':'Eopf','\\xE9':'eacute','\\xC9':'Eacute','\\xE8':'egrave','\\xC8':'Egrave','\\xEA':'ecirc','\\xCA':'Ecirc','\\u011B':'ecaron','\\u011A':'Ecaron','\\xEB':'euml','\\xCB':'Euml','\\u0117':'edot','\\u0116':'Edot','\\u0119':'eogon','\\u0118':'Eogon','\\u0113':'emacr','\\u0112':'Emacr','\\uD835\\uDD23':'ffr','\\uD835\\uDD57':'fopf','\\uD835\\uDCBB':'fscr','\\uD835\\uDD09':'Ffr','\\uD835\\uDD3D':'Fopf','\\u2131':'Fscr','\\uFB00':'fflig','\\uFB03':'ffilig','\\uFB04':'ffllig','\\uFB01':'filig','fj':'fjlig','\\uFB02':'fllig','\\u0192':'fnof','\\u210A':'gscr','\\uD835\\uDD58':'gopf','\\uD835\\uDD24':'gfr','\\uD835\\uDCA2':'Gscr','\\uD835\\uDD3E':'Gopf','\\uD835\\uDD0A':'Gfr','\\u01F5':'gacute','\\u011F':'gbreve','\\u011E':'Gbreve','\\u011D':'gcirc','\\u011C':'Gcirc','\\u0121':'gdot','\\u0120':'Gdot','\\u0122':'Gcedil','\\uD835\\uDD25':'hfr','\\u210E':'planckh','\\uD835\\uDCBD':'hscr','\\uD835\\uDD59':'hopf','\\u210B':'Hscr','\\u210C':'Hfr','\\u210D':'Hopf','\\u0125':'hcirc','\\u0124':'Hcirc','\\u210F':'hbar','\\u0127':'hstrok','\\u0126':'Hstrok','\\uD835\\uDD5A':'iopf','\\uD835\\uDD26':'ifr','\\uD835\\uDCBE':'iscr','\\u2148':'ii','\\uD835\\uDD40':'Iopf','\\u2110':'Iscr','\\u2111':'Im','\\xED':'iacute','\\xCD':'Iacute','\\xEC':'igrave','\\xCC':'Igrave','\\xEE':'icirc','\\xCE':'Icirc','\\xEF':'iuml','\\xCF':'Iuml','\\u0129':'itilde','\\u0128':'Itilde','\\u0130':'Idot','\\u012F':'iogon','\\u012E':'Iogon','\\u012B':'imacr','\\u012A':'Imacr','\\u0133':'ijlig','\\u0132':'IJlig','\\u0131':'imath','\\uD835\\uDCBF':'jscr','\\uD835\\uDD5B':'jopf','\\uD835\\uDD27':'jfr','\\uD835\\uDCA5':'Jscr','\\uD835\\uDD0D':'Jfr','\\uD835\\uDD41':'Jopf','\\u0135':'jcirc','\\u0134':'Jcirc','\\u0237':'jmath','\\uD835\\uDD5C':'kopf','\\uD835\\uDCC0':'kscr','\\uD835\\uDD28':'kfr','\\uD835\\uDCA6':'Kscr','\\uD835\\uDD42':'Kopf','\\uD835\\uDD0E':'Kfr','\\u0137':'kcedil','\\u0136':'Kcedil','\\uD835\\uDD29':'lfr','\\uD835\\uDCC1':'lscr','\\u2113':'ell','\\uD835\\uDD5D':'lopf','\\u2112':'Lscr','\\uD835\\uDD0F':'Lfr','\\uD835\\uDD43':'Lopf','\\u013A':'lacute','\\u0139':'Lacute','\\u013E':'lcaron','\\u013D':'Lcaron','\\u013C':'lcedil','\\u013B':'Lcedil','\\u0142':'lstrok','\\u0141':'Lstrok','\\u0140':'lmidot','\\u013F':'Lmidot','\\uD835\\uDD2A':'mfr','\\uD835\\uDD5E':'mopf','\\uD835\\uDCC2':'mscr','\\uD835\\uDD10':'Mfr','\\uD835\\uDD44':'Mopf','\\u2133':'Mscr','\\uD835\\uDD2B':'nfr','\\uD835\\uDD5F':'nopf','\\uD835\\uDCC3':'nscr','\\u2115':'Nopf','\\uD835\\uDCA9':'Nscr','\\uD835\\uDD11':'Nfr','\\u0144':'nacute','\\u0143':'Nacute','\\u0148':'ncaron','\\u0147':'Ncaron','\\xF1':'ntilde','\\xD1':'Ntilde','\\u0146':'ncedil','\\u0145':'Ncedil','\\u2116':'numero','\\u014B':'eng','\\u014A':'ENG','\\uD835\\uDD60':'oopf','\\uD835\\uDD2C':'ofr','\\u2134':'oscr','\\uD835\\uDCAA':'Oscr','\\uD835\\uDD12':'Ofr','\\uD835\\uDD46':'Oopf','\\xBA':'ordm','\\xF3':'oacute','\\xD3':'Oacute','\\xF2':'ograve','\\xD2':'Ograve','\\xF4':'ocirc','\\xD4':'Ocirc','\\xF6':'ouml','\\xD6':'Ouml','\\u0151':'odblac','\\u0150':'Odblac','\\xF5':'otilde','\\xD5':'Otilde','\\xF8':'oslash','\\xD8':'Oslash','\\u014D':'omacr','\\u014C':'Omacr','\\u0153':'oelig','\\u0152':'OElig','\\uD835\\uDD2D':'pfr','\\uD835\\uDCC5':'pscr','\\uD835\\uDD61':'popf','\\u2119':'Popf','\\uD835\\uDD13':'Pfr','\\uD835\\uDCAB':'Pscr','\\uD835\\uDD62':'qopf','\\uD835\\uDD2E':'qfr','\\uD835\\uDCC6':'qscr','\\uD835\\uDCAC':'Qscr','\\uD835\\uDD14':'Qfr','\\u211A':'Qopf','\\u0138':'kgreen','\\uD835\\uDD2F':'rfr','\\uD835\\uDD63':'ropf','\\uD835\\uDCC7':'rscr','\\u211B':'Rscr','\\u211C':'Re','\\u211D':'Ropf','\\u0155':'racute','\\u0154':'Racute','\\u0159':'rcaron','\\u0158':'Rcaron','\\u0157':'rcedil','\\u0156':'Rcedil','\\uD835\\uDD64':'sopf','\\uD835\\uDCC8':'sscr','\\uD835\\uDD30':'sfr','\\uD835\\uDD4A':'Sopf','\\uD835\\uDD16':'Sfr','\\uD835\\uDCAE':'Sscr','\\u24C8':'oS','\\u015B':'sacute','\\u015A':'Sacute','\\u015D':'scirc','\\u015C':'Scirc','\\u0161':'scaron','\\u0160':'Scaron','\\u015F':'scedil','\\u015E':'Scedil','\\xDF':'szlig','\\uD835\\uDD31':'tfr','\\uD835\\uDCC9':'tscr','\\uD835\\uDD65':'topf','\\uD835\\uDCAF':'Tscr','\\uD835\\uDD17':'Tfr','\\uD835\\uDD4B':'Topf','\\u0165':'tcaron','\\u0164':'Tcaron','\\u0163':'tcedil','\\u0162':'Tcedil','\\u2122':'trade','\\u0167':'tstrok','\\u0166':'Tstrok','\\uD835\\uDCCA':'uscr','\\uD835\\uDD66':'uopf','\\uD835\\uDD32':'ufr','\\uD835\\uDD4C':'Uopf','\\uD835\\uDD18':'Ufr','\\uD835\\uDCB0':'Uscr','\\xFA':'uacute','\\xDA':'Uacute','\\xF9':'ugrave','\\xD9':'Ugrave','\\u016D':'ubreve','\\u016C':'Ubreve','\\xFB':'ucirc','\\xDB':'Ucirc','\\u016F':'uring','\\u016E':'Uring','\\xFC':'uuml','\\xDC':'Uuml','\\u0171':'udblac','\\u0170':'Udblac','\\u0169':'utilde','\\u0168':'Utilde','\\u0173':'uogon','\\u0172':'Uogon','\\u016B':'umacr','\\u016A':'Umacr','\\uD835\\uDD33':'vfr','\\uD835\\uDD67':'vopf','\\uD835\\uDCCB':'vscr','\\uD835\\uDD19':'Vfr','\\uD835\\uDD4D':'Vopf','\\uD835\\uDCB1':'Vscr','\\uD835\\uDD68':'wopf','\\uD835\\uDCCC':'wscr','\\uD835\\uDD34':'wfr','\\uD835\\uDCB2':'Wscr','\\uD835\\uDD4E':'Wopf','\\uD835\\uDD1A':'Wfr','\\u0175':'wcirc','\\u0174':'Wcirc','\\uD835\\uDD35':'xfr','\\uD835\\uDCCD':'xscr','\\uD835\\uDD69':'xopf','\\uD835\\uDD4F':'Xopf','\\uD835\\uDD1B':'Xfr','\\uD835\\uDCB3':'Xscr','\\uD835\\uDD36':'yfr','\\uD835\\uDCCE':'yscr','\\uD835\\uDD6A':'yopf','\\uD835\\uDCB4':'Yscr','\\uD835\\uDD1C':'Yfr','\\uD835\\uDD50':'Yopf','\\xFD':'yacute','\\xDD':'Yacute','\\u0177':'ycirc','\\u0176':'Ycirc','\\xFF':'yuml','\\u0178':'Yuml','\\uD835\\uDCCF':'zscr','\\uD835\\uDD37':'zfr','\\uD835\\uDD6B':'zopf','\\u2128':'Zfr','\\u2124':'Zopf','\\uD835\\uDCB5':'Zscr','\\u017A':'zacute','\\u0179':'Zacute','\\u017E':'zcaron','\\u017D':'Zcaron','\\u017C':'zdot','\\u017B':'Zdot','\\u01B5':'imped','\\xFE':'thorn','\\xDE':'THORN','\\u0149':'napos','\\u03B1':'alpha','\\u0391':'Alpha','\\u03B2':'beta','\\u0392':'Beta','\\u03B3':'gamma','\\u0393':'Gamma','\\u03B4':'delta','\\u0394':'Delta','\\u03B5':'epsi','\\u03F5':'epsiv','\\u0395':'Epsilon','\\u03DD':'gammad','\\u03DC':'Gammad','\\u03B6':'zeta','\\u0396':'Zeta','\\u03B7':'eta','\\u0397':'Eta','\\u03B8':'theta','\\u03D1':'thetav','\\u0398':'Theta','\\u03B9':'iota','\\u0399':'Iota','\\u03BA':'kappa','\\u03F0':'kappav','\\u039A':'Kappa','\\u03BB':'lambda','\\u039B':'Lambda','\\u03BC':'mu','\\xB5':'micro','\\u039C':'Mu','\\u03BD':'nu','\\u039D':'Nu','\\u03BE':'xi','\\u039E':'Xi','\\u03BF':'omicron','\\u039F':'Omicron','\\u03C0':'pi','\\u03D6':'piv','\\u03A0':'Pi','\\u03C1':'rho','\\u03F1':'rhov','\\u03A1':'Rho','\\u03C3':'sigma','\\u03A3':'Sigma','\\u03C2':'sigmaf','\\u03C4':'tau','\\u03A4':'Tau','\\u03C5':'upsi','\\u03A5':'Upsilon','\\u03D2':'Upsi','\\u03C6':'phi','\\u03D5':'phiv','\\u03A6':'Phi','\\u03C7':'chi','\\u03A7':'Chi','\\u03C8':'psi','\\u03A8':'Psi','\\u03C9':'omega','\\u03A9':'ohm','\\u0430':'acy','\\u0410':'Acy','\\u0431':'bcy','\\u0411':'Bcy','\\u0432':'vcy','\\u0412':'Vcy','\\u0433':'gcy','\\u0413':'Gcy','\\u0453':'gjcy','\\u0403':'GJcy','\\u0434':'dcy','\\u0414':'Dcy','\\u0452':'djcy','\\u0402':'DJcy','\\u0435':'iecy','\\u0415':'IEcy','\\u0451':'iocy','\\u0401':'IOcy','\\u0454':'jukcy','\\u0404':'Jukcy','\\u0436':'zhcy','\\u0416':'ZHcy','\\u0437':'zcy','\\u0417':'Zcy','\\u0455':'dscy','\\u0405':'DScy','\\u0438':'icy','\\u0418':'Icy','\\u0456':'iukcy','\\u0406':'Iukcy','\\u0457':'yicy','\\u0407':'YIcy','\\u0439':'jcy','\\u0419':'Jcy','\\u0458':'jsercy','\\u0408':'Jsercy','\\u043A':'kcy','\\u041A':'Kcy','\\u045C':'kjcy','\\u040C':'KJcy','\\u043B':'lcy','\\u041B':'Lcy','\\u0459':'ljcy','\\u0409':'LJcy','\\u043C':'mcy','\\u041C':'Mcy','\\u043D':'ncy','\\u041D':'Ncy','\\u045A':'njcy','\\u040A':'NJcy','\\u043E':'ocy','\\u041E':'Ocy','\\u043F':'pcy','\\u041F':'Pcy','\\u0440':'rcy','\\u0420':'Rcy','\\u0441':'scy','\\u0421':'Scy','\\u0442':'tcy','\\u0422':'Tcy','\\u045B':'tshcy','\\u040B':'TSHcy','\\u0443':'ucy','\\u0423':'Ucy','\\u045E':'ubrcy','\\u040E':'Ubrcy','\\u0444':'fcy','\\u0424':'Fcy','\\u0445':'khcy','\\u0425':'KHcy','\\u0446':'tscy','\\u0426':'TScy','\\u0447':'chcy','\\u0427':'CHcy','\\u045F':'dzcy','\\u040F':'DZcy','\\u0448':'shcy','\\u0428':'SHcy','\\u0449':'shchcy','\\u0429':'SHCHcy','\\u044A':'hardcy','\\u042A':'HARDcy','\\u044B':'ycy','\\u042B':'Ycy','\\u044C':'softcy','\\u042C':'SOFTcy','\\u044D':'ecy','\\u042D':'Ecy','\\u044E':'yucy','\\u042E':'YUcy','\\u044F':'yacy','\\u042F':'YAcy','\\u2135':'aleph','\\u2136':'beth','\\u2137':'gimel','\\u2138':'daleth'};\n\n\tvar regexEscape = /[\"&'<>`]/g;\n\tvar escapeMap = {\n\t\t'\"': '"',\n\t\t'&': '&',\n\t\t'\\'': ''',\n\t\t'<': '<',\n\t\t// See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the\n\t\t// following is not strictly necessary unless it’s part of a tag or an\n\t\t// unquoted attribute value. We’re only escaping it to support those\n\t\t// situations, and for XML support.\n\t\t'>': '>',\n\t\t// In Internet Explorer ≤ 8, the backtick character can be used\n\t\t// to break out of (un)quoted attribute values or HTML comments.\n\t\t// See http://html5sec.org/#102, http://html5sec.org/#108, and\n\t\t// http://html5sec.org/#133.\n\t\t'`': '`'\n\t};\n\n\tvar regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;\n\tvar regexInvalidRawCodePoint = /[\\0-\\x08\\x0B\\x0E-\\x1F\\x7F-\\x9F\\uFDD0-\\uFDEF\\uFFFE\\uFFFF]|[\\uD83F\\uD87F\\uD8BF\\uD8FF\\uD93F\\uD97F\\uD9BF\\uD9FF\\uDA3F\\uDA7F\\uDABF\\uDAFF\\uDB3F\\uDB7F\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\tvar regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g;\n\tvar decodeMap = {'aacute':'\\xE1','Aacute':'\\xC1','abreve':'\\u0103','Abreve':'\\u0102','ac':'\\u223E','acd':'\\u223F','acE':'\\u223E\\u0333','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','acy':'\\u0430','Acy':'\\u0410','aelig':'\\xE6','AElig':'\\xC6','af':'\\u2061','afr':'\\uD835\\uDD1E','Afr':'\\uD835\\uDD04','agrave':'\\xE0','Agrave':'\\xC0','alefsym':'\\u2135','aleph':'\\u2135','alpha':'\\u03B1','Alpha':'\\u0391','amacr':'\\u0101','Amacr':'\\u0100','amalg':'\\u2A3F','amp':'&','AMP':'&','and':'\\u2227','And':'\\u2A53','andand':'\\u2A55','andd':'\\u2A5C','andslope':'\\u2A58','andv':'\\u2A5A','ang':'\\u2220','ange':'\\u29A4','angle':'\\u2220','angmsd':'\\u2221','angmsdaa':'\\u29A8','angmsdab':'\\u29A9','angmsdac':'\\u29AA','angmsdad':'\\u29AB','angmsdae':'\\u29AC','angmsdaf':'\\u29AD','angmsdag':'\\u29AE','angmsdah':'\\u29AF','angrt':'\\u221F','angrtvb':'\\u22BE','angrtvbd':'\\u299D','angsph':'\\u2222','angst':'\\xC5','angzarr':'\\u237C','aogon':'\\u0105','Aogon':'\\u0104','aopf':'\\uD835\\uDD52','Aopf':'\\uD835\\uDD38','ap':'\\u2248','apacir':'\\u2A6F','ape':'\\u224A','apE':'\\u2A70','apid':'\\u224B','apos':'\\'','ApplyFunction':'\\u2061','approx':'\\u2248','approxeq':'\\u224A','aring':'\\xE5','Aring':'\\xC5','ascr':'\\uD835\\uDCB6','Ascr':'\\uD835\\uDC9C','Assign':'\\u2254','ast':'*','asymp':'\\u2248','asympeq':'\\u224D','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','awconint':'\\u2233','awint':'\\u2A11','backcong':'\\u224C','backepsilon':'\\u03F6','backprime':'\\u2035','backsim':'\\u223D','backsimeq':'\\u22CD','Backslash':'\\u2216','Barv':'\\u2AE7','barvee':'\\u22BD','barwed':'\\u2305','Barwed':'\\u2306','barwedge':'\\u2305','bbrk':'\\u23B5','bbrktbrk':'\\u23B6','bcong':'\\u224C','bcy':'\\u0431','Bcy':'\\u0411','bdquo':'\\u201E','becaus':'\\u2235','because':'\\u2235','Because':'\\u2235','bemptyv':'\\u29B0','bepsi':'\\u03F6','bernou':'\\u212C','Bernoullis':'\\u212C','beta':'\\u03B2','Beta':'\\u0392','beth':'\\u2136','between':'\\u226C','bfr':'\\uD835\\uDD1F','Bfr':'\\uD835\\uDD05','bigcap':'\\u22C2','bigcirc':'\\u25EF','bigcup':'\\u22C3','bigodot':'\\u2A00','bigoplus':'\\u2A01','bigotimes':'\\u2A02','bigsqcup':'\\u2A06','bigstar':'\\u2605','bigtriangledown':'\\u25BD','bigtriangleup':'\\u25B3','biguplus':'\\u2A04','bigvee':'\\u22C1','bigwedge':'\\u22C0','bkarow':'\\u290D','blacklozenge':'\\u29EB','blacksquare':'\\u25AA','blacktriangle':'\\u25B4','blacktriangledown':'\\u25BE','blacktriangleleft':'\\u25C2','blacktriangleright':'\\u25B8','blank':'\\u2423','blk12':'\\u2592','blk14':'\\u2591','blk34':'\\u2593','block':'\\u2588','bne':'=\\u20E5','bnequiv':'\\u2261\\u20E5','bnot':'\\u2310','bNot':'\\u2AED','bopf':'\\uD835\\uDD53','Bopf':'\\uD835\\uDD39','bot':'\\u22A5','bottom':'\\u22A5','bowtie':'\\u22C8','boxbox':'\\u29C9','boxdl':'\\u2510','boxdL':'\\u2555','boxDl':'\\u2556','boxDL':'\\u2557','boxdr':'\\u250C','boxdR':'\\u2552','boxDr':'\\u2553','boxDR':'\\u2554','boxh':'\\u2500','boxH':'\\u2550','boxhd':'\\u252C','boxhD':'\\u2565','boxHd':'\\u2564','boxHD':'\\u2566','boxhu':'\\u2534','boxhU':'\\u2568','boxHu':'\\u2567','boxHU':'\\u2569','boxminus':'\\u229F','boxplus':'\\u229E','boxtimes':'\\u22A0','boxul':'\\u2518','boxuL':'\\u255B','boxUl':'\\u255C','boxUL':'\\u255D','boxur':'\\u2514','boxuR':'\\u2558','boxUr':'\\u2559','boxUR':'\\u255A','boxv':'\\u2502','boxV':'\\u2551','boxvh':'\\u253C','boxvH':'\\u256A','boxVh':'\\u256B','boxVH':'\\u256C','boxvl':'\\u2524','boxvL':'\\u2561','boxVl':'\\u2562','boxVL':'\\u2563','boxvr':'\\u251C','boxvR':'\\u255E','boxVr':'\\u255F','boxVR':'\\u2560','bprime':'\\u2035','breve':'\\u02D8','Breve':'\\u02D8','brvbar':'\\xA6','bscr':'\\uD835\\uDCB7','Bscr':'\\u212C','bsemi':'\\u204F','bsim':'\\u223D','bsime':'\\u22CD','bsol':'\\\\','bsolb':'\\u29C5','bsolhsub':'\\u27C8','bull':'\\u2022','bullet':'\\u2022','bump':'\\u224E','bumpe':'\\u224F','bumpE':'\\u2AAE','bumpeq':'\\u224F','Bumpeq':'\\u224E','cacute':'\\u0107','Cacute':'\\u0106','cap':'\\u2229','Cap':'\\u22D2','capand':'\\u2A44','capbrcup':'\\u2A49','capcap':'\\u2A4B','capcup':'\\u2A47','capdot':'\\u2A40','CapitalDifferentialD':'\\u2145','caps':'\\u2229\\uFE00','caret':'\\u2041','caron':'\\u02C7','Cayleys':'\\u212D','ccaps':'\\u2A4D','ccaron':'\\u010D','Ccaron':'\\u010C','ccedil':'\\xE7','Ccedil':'\\xC7','ccirc':'\\u0109','Ccirc':'\\u0108','Cconint':'\\u2230','ccups':'\\u2A4C','ccupssm':'\\u2A50','cdot':'\\u010B','Cdot':'\\u010A','cedil':'\\xB8','Cedilla':'\\xB8','cemptyv':'\\u29B2','cent':'\\xA2','centerdot':'\\xB7','CenterDot':'\\xB7','cfr':'\\uD835\\uDD20','Cfr':'\\u212D','chcy':'\\u0447','CHcy':'\\u0427','check':'\\u2713','checkmark':'\\u2713','chi':'\\u03C7','Chi':'\\u03A7','cir':'\\u25CB','circ':'\\u02C6','circeq':'\\u2257','circlearrowleft':'\\u21BA','circlearrowright':'\\u21BB','circledast':'\\u229B','circledcirc':'\\u229A','circleddash':'\\u229D','CircleDot':'\\u2299','circledR':'\\xAE','circledS':'\\u24C8','CircleMinus':'\\u2296','CirclePlus':'\\u2295','CircleTimes':'\\u2297','cire':'\\u2257','cirE':'\\u29C3','cirfnint':'\\u2A10','cirmid':'\\u2AEF','cirscir':'\\u29C2','ClockwiseContourIntegral':'\\u2232','CloseCurlyDoubleQuote':'\\u201D','CloseCurlyQuote':'\\u2019','clubs':'\\u2663','clubsuit':'\\u2663','colon':':','Colon':'\\u2237','colone':'\\u2254','Colone':'\\u2A74','coloneq':'\\u2254','comma':',','commat':'@','comp':'\\u2201','compfn':'\\u2218','complement':'\\u2201','complexes':'\\u2102','cong':'\\u2245','congdot':'\\u2A6D','Congruent':'\\u2261','conint':'\\u222E','Conint':'\\u222F','ContourIntegral':'\\u222E','copf':'\\uD835\\uDD54','Copf':'\\u2102','coprod':'\\u2210','Coproduct':'\\u2210','copy':'\\xA9','COPY':'\\xA9','copysr':'\\u2117','CounterClockwiseContourIntegral':'\\u2233','crarr':'\\u21B5','cross':'\\u2717','Cross':'\\u2A2F','cscr':'\\uD835\\uDCB8','Cscr':'\\uD835\\uDC9E','csub':'\\u2ACF','csube':'\\u2AD1','csup':'\\u2AD0','csupe':'\\u2AD2','ctdot':'\\u22EF','cudarrl':'\\u2938','cudarrr':'\\u2935','cuepr':'\\u22DE','cuesc':'\\u22DF','cularr':'\\u21B6','cularrp':'\\u293D','cup':'\\u222A','Cup':'\\u22D3','cupbrcap':'\\u2A48','cupcap':'\\u2A46','CupCap':'\\u224D','cupcup':'\\u2A4A','cupdot':'\\u228D','cupor':'\\u2A45','cups':'\\u222A\\uFE00','curarr':'\\u21B7','curarrm':'\\u293C','curlyeqprec':'\\u22DE','curlyeqsucc':'\\u22DF','curlyvee':'\\u22CE','curlywedge':'\\u22CF','curren':'\\xA4','curvearrowleft':'\\u21B6','curvearrowright':'\\u21B7','cuvee':'\\u22CE','cuwed':'\\u22CF','cwconint':'\\u2232','cwint':'\\u2231','cylcty':'\\u232D','dagger':'\\u2020','Dagger':'\\u2021','daleth':'\\u2138','darr':'\\u2193','dArr':'\\u21D3','Darr':'\\u21A1','dash':'\\u2010','dashv':'\\u22A3','Dashv':'\\u2AE4','dbkarow':'\\u290F','dblac':'\\u02DD','dcaron':'\\u010F','Dcaron':'\\u010E','dcy':'\\u0434','Dcy':'\\u0414','dd':'\\u2146','DD':'\\u2145','ddagger':'\\u2021','ddarr':'\\u21CA','DDotrahd':'\\u2911','ddotseq':'\\u2A77','deg':'\\xB0','Del':'\\u2207','delta':'\\u03B4','Delta':'\\u0394','demptyv':'\\u29B1','dfisht':'\\u297F','dfr':'\\uD835\\uDD21','Dfr':'\\uD835\\uDD07','dHar':'\\u2965','dharl':'\\u21C3','dharr':'\\u21C2','DiacriticalAcute':'\\xB4','DiacriticalDot':'\\u02D9','DiacriticalDoubleAcute':'\\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\\u02DC','diam':'\\u22C4','diamond':'\\u22C4','Diamond':'\\u22C4','diamondsuit':'\\u2666','diams':'\\u2666','die':'\\xA8','DifferentialD':'\\u2146','digamma':'\\u03DD','disin':'\\u22F2','div':'\\xF7','divide':'\\xF7','divideontimes':'\\u22C7','divonx':'\\u22C7','djcy':'\\u0452','DJcy':'\\u0402','dlcorn':'\\u231E','dlcrop':'\\u230D','dollar':'$','dopf':'\\uD835\\uDD55','Dopf':'\\uD835\\uDD3B','dot':'\\u02D9','Dot':'\\xA8','DotDot':'\\u20DC','doteq':'\\u2250','doteqdot':'\\u2251','DotEqual':'\\u2250','dotminus':'\\u2238','dotplus':'\\u2214','dotsquare':'\\u22A1','doublebarwedge':'\\u2306','DoubleContourIntegral':'\\u222F','DoubleDot':'\\xA8','DoubleDownArrow':'\\u21D3','DoubleLeftArrow':'\\u21D0','DoubleLeftRightArrow':'\\u21D4','DoubleLeftTee':'\\u2AE4','DoubleLongLeftArrow':'\\u27F8','DoubleLongLeftRightArrow':'\\u27FA','DoubleLongRightArrow':'\\u27F9','DoubleRightArrow':'\\u21D2','DoubleRightTee':'\\u22A8','DoubleUpArrow':'\\u21D1','DoubleUpDownArrow':'\\u21D5','DoubleVerticalBar':'\\u2225','downarrow':'\\u2193','Downarrow':'\\u21D3','DownArrow':'\\u2193','DownArrowBar':'\\u2913','DownArrowUpArrow':'\\u21F5','DownBreve':'\\u0311','downdownarrows':'\\u21CA','downharpoonleft':'\\u21C3','downharpoonright':'\\u21C2','DownLeftRightVector':'\\u2950','DownLeftTeeVector':'\\u295E','DownLeftVector':'\\u21BD','DownLeftVectorBar':'\\u2956','DownRightTeeVector':'\\u295F','DownRightVector':'\\u21C1','DownRightVectorBar':'\\u2957','DownTee':'\\u22A4','DownTeeArrow':'\\u21A7','drbkarow':'\\u2910','drcorn':'\\u231F','drcrop':'\\u230C','dscr':'\\uD835\\uDCB9','Dscr':'\\uD835\\uDC9F','dscy':'\\u0455','DScy':'\\u0405','dsol':'\\u29F6','dstrok':'\\u0111','Dstrok':'\\u0110','dtdot':'\\u22F1','dtri':'\\u25BF','dtrif':'\\u25BE','duarr':'\\u21F5','duhar':'\\u296F','dwangle':'\\u29A6','dzcy':'\\u045F','DZcy':'\\u040F','dzigrarr':'\\u27FF','eacute':'\\xE9','Eacute':'\\xC9','easter':'\\u2A6E','ecaron':'\\u011B','Ecaron':'\\u011A','ecir':'\\u2256','ecirc':'\\xEA','Ecirc':'\\xCA','ecolon':'\\u2255','ecy':'\\u044D','Ecy':'\\u042D','eDDot':'\\u2A77','edot':'\\u0117','eDot':'\\u2251','Edot':'\\u0116','ee':'\\u2147','efDot':'\\u2252','efr':'\\uD835\\uDD22','Efr':'\\uD835\\uDD08','eg':'\\u2A9A','egrave':'\\xE8','Egrave':'\\xC8','egs':'\\u2A96','egsdot':'\\u2A98','el':'\\u2A99','Element':'\\u2208','elinters':'\\u23E7','ell':'\\u2113','els':'\\u2A95','elsdot':'\\u2A97','emacr':'\\u0113','Emacr':'\\u0112','empty':'\\u2205','emptyset':'\\u2205','EmptySmallSquare':'\\u25FB','emptyv':'\\u2205','EmptyVerySmallSquare':'\\u25AB','emsp':'\\u2003','emsp13':'\\u2004','emsp14':'\\u2005','eng':'\\u014B','ENG':'\\u014A','ensp':'\\u2002','eogon':'\\u0119','Eogon':'\\u0118','eopf':'\\uD835\\uDD56','Eopf':'\\uD835\\uDD3C','epar':'\\u22D5','eparsl':'\\u29E3','eplus':'\\u2A71','epsi':'\\u03B5','epsilon':'\\u03B5','Epsilon':'\\u0395','epsiv':'\\u03F5','eqcirc':'\\u2256','eqcolon':'\\u2255','eqsim':'\\u2242','eqslantgtr':'\\u2A96','eqslantless':'\\u2A95','Equal':'\\u2A75','equals':'=','EqualTilde':'\\u2242','equest':'\\u225F','Equilibrium':'\\u21CC','equiv':'\\u2261','equivDD':'\\u2A78','eqvparsl':'\\u29E5','erarr':'\\u2971','erDot':'\\u2253','escr':'\\u212F','Escr':'\\u2130','esdot':'\\u2250','esim':'\\u2242','Esim':'\\u2A73','eta':'\\u03B7','Eta':'\\u0397','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','euro':'\\u20AC','excl':'!','exist':'\\u2203','Exists':'\\u2203','expectation':'\\u2130','exponentiale':'\\u2147','ExponentialE':'\\u2147','fallingdotseq':'\\u2252','fcy':'\\u0444','Fcy':'\\u0424','female':'\\u2640','ffilig':'\\uFB03','fflig':'\\uFB00','ffllig':'\\uFB04','ffr':'\\uD835\\uDD23','Ffr':'\\uD835\\uDD09','filig':'\\uFB01','FilledSmallSquare':'\\u25FC','FilledVerySmallSquare':'\\u25AA','fjlig':'fj','flat':'\\u266D','fllig':'\\uFB02','fltns':'\\u25B1','fnof':'\\u0192','fopf':'\\uD835\\uDD57','Fopf':'\\uD835\\uDD3D','forall':'\\u2200','ForAll':'\\u2200','fork':'\\u22D4','forkv':'\\u2AD9','Fouriertrf':'\\u2131','fpartint':'\\u2A0D','frac12':'\\xBD','frac13':'\\u2153','frac14':'\\xBC','frac15':'\\u2155','frac16':'\\u2159','frac18':'\\u215B','frac23':'\\u2154','frac25':'\\u2156','frac34':'\\xBE','frac35':'\\u2157','frac38':'\\u215C','frac45':'\\u2158','frac56':'\\u215A','frac58':'\\u215D','frac78':'\\u215E','frasl':'\\u2044','frown':'\\u2322','fscr':'\\uD835\\uDCBB','Fscr':'\\u2131','gacute':'\\u01F5','gamma':'\\u03B3','Gamma':'\\u0393','gammad':'\\u03DD','Gammad':'\\u03DC','gap':'\\u2A86','gbreve':'\\u011F','Gbreve':'\\u011E','Gcedil':'\\u0122','gcirc':'\\u011D','Gcirc':'\\u011C','gcy':'\\u0433','Gcy':'\\u0413','gdot':'\\u0121','Gdot':'\\u0120','ge':'\\u2265','gE':'\\u2267','gel':'\\u22DB','gEl':'\\u2A8C','geq':'\\u2265','geqq':'\\u2267','geqslant':'\\u2A7E','ges':'\\u2A7E','gescc':'\\u2AA9','gesdot':'\\u2A80','gesdoto':'\\u2A82','gesdotol':'\\u2A84','gesl':'\\u22DB\\uFE00','gesles':'\\u2A94','gfr':'\\uD835\\uDD24','Gfr':'\\uD835\\uDD0A','gg':'\\u226B','Gg':'\\u22D9','ggg':'\\u22D9','gimel':'\\u2137','gjcy':'\\u0453','GJcy':'\\u0403','gl':'\\u2277','gla':'\\u2AA5','glE':'\\u2A92','glj':'\\u2AA4','gnap':'\\u2A8A','gnapprox':'\\u2A8A','gne':'\\u2A88','gnE':'\\u2269','gneq':'\\u2A88','gneqq':'\\u2269','gnsim':'\\u22E7','gopf':'\\uD835\\uDD58','Gopf':'\\uD835\\uDD3E','grave':'`','GreaterEqual':'\\u2265','GreaterEqualLess':'\\u22DB','GreaterFullEqual':'\\u2267','GreaterGreater':'\\u2AA2','GreaterLess':'\\u2277','GreaterSlantEqual':'\\u2A7E','GreaterTilde':'\\u2273','gscr':'\\u210A','Gscr':'\\uD835\\uDCA2','gsim':'\\u2273','gsime':'\\u2A8E','gsiml':'\\u2A90','gt':'>','Gt':'\\u226B','GT':'>','gtcc':'\\u2AA7','gtcir':'\\u2A7A','gtdot':'\\u22D7','gtlPar':'\\u2995','gtquest':'\\u2A7C','gtrapprox':'\\u2A86','gtrarr':'\\u2978','gtrdot':'\\u22D7','gtreqless':'\\u22DB','gtreqqless':'\\u2A8C','gtrless':'\\u2277','gtrsim':'\\u2273','gvertneqq':'\\u2269\\uFE00','gvnE':'\\u2269\\uFE00','Hacek':'\\u02C7','hairsp':'\\u200A','half':'\\xBD','hamilt':'\\u210B','hardcy':'\\u044A','HARDcy':'\\u042A','harr':'\\u2194','hArr':'\\u21D4','harrcir':'\\u2948','harrw':'\\u21AD','Hat':'^','hbar':'\\u210F','hcirc':'\\u0125','Hcirc':'\\u0124','hearts':'\\u2665','heartsuit':'\\u2665','hellip':'\\u2026','hercon':'\\u22B9','hfr':'\\uD835\\uDD25','Hfr':'\\u210C','HilbertSpace':'\\u210B','hksearow':'\\u2925','hkswarow':'\\u2926','hoarr':'\\u21FF','homtht':'\\u223B','hookleftarrow':'\\u21A9','hookrightarrow':'\\u21AA','hopf':'\\uD835\\uDD59','Hopf':'\\u210D','horbar':'\\u2015','HorizontalLine':'\\u2500','hscr':'\\uD835\\uDCBD','Hscr':'\\u210B','hslash':'\\u210F','hstrok':'\\u0127','Hstrok':'\\u0126','HumpDownHump':'\\u224E','HumpEqual':'\\u224F','hybull':'\\u2043','hyphen':'\\u2010','iacute':'\\xED','Iacute':'\\xCD','ic':'\\u2063','icirc':'\\xEE','Icirc':'\\xCE','icy':'\\u0438','Icy':'\\u0418','Idot':'\\u0130','iecy':'\\u0435','IEcy':'\\u0415','iexcl':'\\xA1','iff':'\\u21D4','ifr':'\\uD835\\uDD26','Ifr':'\\u2111','igrave':'\\xEC','Igrave':'\\xCC','ii':'\\u2148','iiiint':'\\u2A0C','iiint':'\\u222D','iinfin':'\\u29DC','iiota':'\\u2129','ijlig':'\\u0133','IJlig':'\\u0132','Im':'\\u2111','imacr':'\\u012B','Imacr':'\\u012A','image':'\\u2111','ImaginaryI':'\\u2148','imagline':'\\u2110','imagpart':'\\u2111','imath':'\\u0131','imof':'\\u22B7','imped':'\\u01B5','Implies':'\\u21D2','in':'\\u2208','incare':'\\u2105','infin':'\\u221E','infintie':'\\u29DD','inodot':'\\u0131','int':'\\u222B','Int':'\\u222C','intcal':'\\u22BA','integers':'\\u2124','Integral':'\\u222B','intercal':'\\u22BA','Intersection':'\\u22C2','intlarhk':'\\u2A17','intprod':'\\u2A3C','InvisibleComma':'\\u2063','InvisibleTimes':'\\u2062','iocy':'\\u0451','IOcy':'\\u0401','iogon':'\\u012F','Iogon':'\\u012E','iopf':'\\uD835\\uDD5A','Iopf':'\\uD835\\uDD40','iota':'\\u03B9','Iota':'\\u0399','iprod':'\\u2A3C','iquest':'\\xBF','iscr':'\\uD835\\uDCBE','Iscr':'\\u2110','isin':'\\u2208','isindot':'\\u22F5','isinE':'\\u22F9','isins':'\\u22F4','isinsv':'\\u22F3','isinv':'\\u2208','it':'\\u2062','itilde':'\\u0129','Itilde':'\\u0128','iukcy':'\\u0456','Iukcy':'\\u0406','iuml':'\\xEF','Iuml':'\\xCF','jcirc':'\\u0135','Jcirc':'\\u0134','jcy':'\\u0439','Jcy':'\\u0419','jfr':'\\uD835\\uDD27','Jfr':'\\uD835\\uDD0D','jmath':'\\u0237','jopf':'\\uD835\\uDD5B','Jopf':'\\uD835\\uDD41','jscr':'\\uD835\\uDCBF','Jscr':'\\uD835\\uDCA5','jsercy':'\\u0458','Jsercy':'\\u0408','jukcy':'\\u0454','Jukcy':'\\u0404','kappa':'\\u03BA','Kappa':'\\u039A','kappav':'\\u03F0','kcedil':'\\u0137','Kcedil':'\\u0136','kcy':'\\u043A','Kcy':'\\u041A','kfr':'\\uD835\\uDD28','Kfr':'\\uD835\\uDD0E','kgreen':'\\u0138','khcy':'\\u0445','KHcy':'\\u0425','kjcy':'\\u045C','KJcy':'\\u040C','kopf':'\\uD835\\uDD5C','Kopf':'\\uD835\\uDD42','kscr':'\\uD835\\uDCC0','Kscr':'\\uD835\\uDCA6','lAarr':'\\u21DA','lacute':'\\u013A','Lacute':'\\u0139','laemptyv':'\\u29B4','lagran':'\\u2112','lambda':'\\u03BB','Lambda':'\\u039B','lang':'\\u27E8','Lang':'\\u27EA','langd':'\\u2991','langle':'\\u27E8','lap':'\\u2A85','Laplacetrf':'\\u2112','laquo':'\\xAB','larr':'\\u2190','lArr':'\\u21D0','Larr':'\\u219E','larrb':'\\u21E4','larrbfs':'\\u291F','larrfs':'\\u291D','larrhk':'\\u21A9','larrlp':'\\u21AB','larrpl':'\\u2939','larrsim':'\\u2973','larrtl':'\\u21A2','lat':'\\u2AAB','latail':'\\u2919','lAtail':'\\u291B','late':'\\u2AAD','lates':'\\u2AAD\\uFE00','lbarr':'\\u290C','lBarr':'\\u290E','lbbrk':'\\u2772','lbrace':'{','lbrack':'[','lbrke':'\\u298B','lbrksld':'\\u298F','lbrkslu':'\\u298D','lcaron':'\\u013E','Lcaron':'\\u013D','lcedil':'\\u013C','Lcedil':'\\u013B','lceil':'\\u2308','lcub':'{','lcy':'\\u043B','Lcy':'\\u041B','ldca':'\\u2936','ldquo':'\\u201C','ldquor':'\\u201E','ldrdhar':'\\u2967','ldrushar':'\\u294B','ldsh':'\\u21B2','le':'\\u2264','lE':'\\u2266','LeftAngleBracket':'\\u27E8','leftarrow':'\\u2190','Leftarrow':'\\u21D0','LeftArrow':'\\u2190','LeftArrowBar':'\\u21E4','LeftArrowRightArrow':'\\u21C6','leftarrowtail':'\\u21A2','LeftCeiling':'\\u2308','LeftDoubleBracket':'\\u27E6','LeftDownTeeVector':'\\u2961','LeftDownVector':'\\u21C3','LeftDownVectorBar':'\\u2959','LeftFloor':'\\u230A','leftharpoondown':'\\u21BD','leftharpoonup':'\\u21BC','leftleftarrows':'\\u21C7','leftrightarrow':'\\u2194','Leftrightarrow':'\\u21D4','LeftRightArrow':'\\u2194','leftrightarrows':'\\u21C6','leftrightharpoons':'\\u21CB','leftrightsquigarrow':'\\u21AD','LeftRightVector':'\\u294E','LeftTee':'\\u22A3','LeftTeeArrow':'\\u21A4','LeftTeeVector':'\\u295A','leftthreetimes':'\\u22CB','LeftTriangle':'\\u22B2','LeftTriangleBar':'\\u29CF','LeftTriangleEqual':'\\u22B4','LeftUpDownVector':'\\u2951','LeftUpTeeVector':'\\u2960','LeftUpVector':'\\u21BF','LeftUpVectorBar':'\\u2958','LeftVector':'\\u21BC','LeftVectorBar':'\\u2952','leg':'\\u22DA','lEg':'\\u2A8B','leq':'\\u2264','leqq':'\\u2266','leqslant':'\\u2A7D','les':'\\u2A7D','lescc':'\\u2AA8','lesdot':'\\u2A7F','lesdoto':'\\u2A81','lesdotor':'\\u2A83','lesg':'\\u22DA\\uFE00','lesges':'\\u2A93','lessapprox':'\\u2A85','lessdot':'\\u22D6','lesseqgtr':'\\u22DA','lesseqqgtr':'\\u2A8B','LessEqualGreater':'\\u22DA','LessFullEqual':'\\u2266','LessGreater':'\\u2276','lessgtr':'\\u2276','LessLess':'\\u2AA1','lesssim':'\\u2272','LessSlantEqual':'\\u2A7D','LessTilde':'\\u2272','lfisht':'\\u297C','lfloor':'\\u230A','lfr':'\\uD835\\uDD29','Lfr':'\\uD835\\uDD0F','lg':'\\u2276','lgE':'\\u2A91','lHar':'\\u2962','lhard':'\\u21BD','lharu':'\\u21BC','lharul':'\\u296A','lhblk':'\\u2584','ljcy':'\\u0459','LJcy':'\\u0409','ll':'\\u226A','Ll':'\\u22D8','llarr':'\\u21C7','llcorner':'\\u231E','Lleftarrow':'\\u21DA','llhard':'\\u296B','lltri':'\\u25FA','lmidot':'\\u0140','Lmidot':'\\u013F','lmoust':'\\u23B0','lmoustache':'\\u23B0','lnap':'\\u2A89','lnapprox':'\\u2A89','lne':'\\u2A87','lnE':'\\u2268','lneq':'\\u2A87','lneqq':'\\u2268','lnsim':'\\u22E6','loang':'\\u27EC','loarr':'\\u21FD','lobrk':'\\u27E6','longleftarrow':'\\u27F5','Longleftarrow':'\\u27F8','LongLeftArrow':'\\u27F5','longleftrightarrow':'\\u27F7','Longleftrightarrow':'\\u27FA','LongLeftRightArrow':'\\u27F7','longmapsto':'\\u27FC','longrightarrow':'\\u27F6','Longrightarrow':'\\u27F9','LongRightArrow':'\\u27F6','looparrowleft':'\\u21AB','looparrowright':'\\u21AC','lopar':'\\u2985','lopf':'\\uD835\\uDD5D','Lopf':'\\uD835\\uDD43','loplus':'\\u2A2D','lotimes':'\\u2A34','lowast':'\\u2217','lowbar':'_','LowerLeftArrow':'\\u2199','LowerRightArrow':'\\u2198','loz':'\\u25CA','lozenge':'\\u25CA','lozf':'\\u29EB','lpar':'(','lparlt':'\\u2993','lrarr':'\\u21C6','lrcorner':'\\u231F','lrhar':'\\u21CB','lrhard':'\\u296D','lrm':'\\u200E','lrtri':'\\u22BF','lsaquo':'\\u2039','lscr':'\\uD835\\uDCC1','Lscr':'\\u2112','lsh':'\\u21B0','Lsh':'\\u21B0','lsim':'\\u2272','lsime':'\\u2A8D','lsimg':'\\u2A8F','lsqb':'[','lsquo':'\\u2018','lsquor':'\\u201A','lstrok':'\\u0142','Lstrok':'\\u0141','lt':'<','Lt':'\\u226A','LT':'<','ltcc':'\\u2AA6','ltcir':'\\u2A79','ltdot':'\\u22D6','lthree':'\\u22CB','ltimes':'\\u22C9','ltlarr':'\\u2976','ltquest':'\\u2A7B','ltri':'\\u25C3','ltrie':'\\u22B4','ltrif':'\\u25C2','ltrPar':'\\u2996','lurdshar':'\\u294A','luruhar':'\\u2966','lvertneqq':'\\u2268\\uFE00','lvnE':'\\u2268\\uFE00','macr':'\\xAF','male':'\\u2642','malt':'\\u2720','maltese':'\\u2720','map':'\\u21A6','Map':'\\u2905','mapsto':'\\u21A6','mapstodown':'\\u21A7','mapstoleft':'\\u21A4','mapstoup':'\\u21A5','marker':'\\u25AE','mcomma':'\\u2A29','mcy':'\\u043C','Mcy':'\\u041C','mdash':'\\u2014','mDDot':'\\u223A','measuredangle':'\\u2221','MediumSpace':'\\u205F','Mellintrf':'\\u2133','mfr':'\\uD835\\uDD2A','Mfr':'\\uD835\\uDD10','mho':'\\u2127','micro':'\\xB5','mid':'\\u2223','midast':'*','midcir':'\\u2AF0','middot':'\\xB7','minus':'\\u2212','minusb':'\\u229F','minusd':'\\u2238','minusdu':'\\u2A2A','MinusPlus':'\\u2213','mlcp':'\\u2ADB','mldr':'\\u2026','mnplus':'\\u2213','models':'\\u22A7','mopf':'\\uD835\\uDD5E','Mopf':'\\uD835\\uDD44','mp':'\\u2213','mscr':'\\uD835\\uDCC2','Mscr':'\\u2133','mstpos':'\\u223E','mu':'\\u03BC','Mu':'\\u039C','multimap':'\\u22B8','mumap':'\\u22B8','nabla':'\\u2207','nacute':'\\u0144','Nacute':'\\u0143','nang':'\\u2220\\u20D2','nap':'\\u2249','napE':'\\u2A70\\u0338','napid':'\\u224B\\u0338','napos':'\\u0149','napprox':'\\u2249','natur':'\\u266E','natural':'\\u266E','naturals':'\\u2115','nbsp':'\\xA0','nbump':'\\u224E\\u0338','nbumpe':'\\u224F\\u0338','ncap':'\\u2A43','ncaron':'\\u0148','Ncaron':'\\u0147','ncedil':'\\u0146','Ncedil':'\\u0145','ncong':'\\u2247','ncongdot':'\\u2A6D\\u0338','ncup':'\\u2A42','ncy':'\\u043D','Ncy':'\\u041D','ndash':'\\u2013','ne':'\\u2260','nearhk':'\\u2924','nearr':'\\u2197','neArr':'\\u21D7','nearrow':'\\u2197','nedot':'\\u2250\\u0338','NegativeMediumSpace':'\\u200B','NegativeThickSpace':'\\u200B','NegativeThinSpace':'\\u200B','NegativeVeryThinSpace':'\\u200B','nequiv':'\\u2262','nesear':'\\u2928','nesim':'\\u2242\\u0338','NestedGreaterGreater':'\\u226B','NestedLessLess':'\\u226A','NewLine':'\\n','nexist':'\\u2204','nexists':'\\u2204','nfr':'\\uD835\\uDD2B','Nfr':'\\uD835\\uDD11','nge':'\\u2271','ngE':'\\u2267\\u0338','ngeq':'\\u2271','ngeqq':'\\u2267\\u0338','ngeqslant':'\\u2A7E\\u0338','nges':'\\u2A7E\\u0338','nGg':'\\u22D9\\u0338','ngsim':'\\u2275','ngt':'\\u226F','nGt':'\\u226B\\u20D2','ngtr':'\\u226F','nGtv':'\\u226B\\u0338','nharr':'\\u21AE','nhArr':'\\u21CE','nhpar':'\\u2AF2','ni':'\\u220B','nis':'\\u22FC','nisd':'\\u22FA','niv':'\\u220B','njcy':'\\u045A','NJcy':'\\u040A','nlarr':'\\u219A','nlArr':'\\u21CD','nldr':'\\u2025','nle':'\\u2270','nlE':'\\u2266\\u0338','nleftarrow':'\\u219A','nLeftarrow':'\\u21CD','nleftrightarrow':'\\u21AE','nLeftrightarrow':'\\u21CE','nleq':'\\u2270','nleqq':'\\u2266\\u0338','nleqslant':'\\u2A7D\\u0338','nles':'\\u2A7D\\u0338','nless':'\\u226E','nLl':'\\u22D8\\u0338','nlsim':'\\u2274','nlt':'\\u226E','nLt':'\\u226A\\u20D2','nltri':'\\u22EA','nltrie':'\\u22EC','nLtv':'\\u226A\\u0338','nmid':'\\u2224','NoBreak':'\\u2060','NonBreakingSpace':'\\xA0','nopf':'\\uD835\\uDD5F','Nopf':'\\u2115','not':'\\xAC','Not':'\\u2AEC','NotCongruent':'\\u2262','NotCupCap':'\\u226D','NotDoubleVerticalBar':'\\u2226','NotElement':'\\u2209','NotEqual':'\\u2260','NotEqualTilde':'\\u2242\\u0338','NotExists':'\\u2204','NotGreater':'\\u226F','NotGreaterEqual':'\\u2271','NotGreaterFullEqual':'\\u2267\\u0338','NotGreaterGreater':'\\u226B\\u0338','NotGreaterLess':'\\u2279','NotGreaterSlantEqual':'\\u2A7E\\u0338','NotGreaterTilde':'\\u2275','NotHumpDownHump':'\\u224E\\u0338','NotHumpEqual':'\\u224F\\u0338','notin':'\\u2209','notindot':'\\u22F5\\u0338','notinE':'\\u22F9\\u0338','notinva':'\\u2209','notinvb':'\\u22F7','notinvc':'\\u22F6','NotLeftTriangle':'\\u22EA','NotLeftTriangleBar':'\\u29CF\\u0338','NotLeftTriangleEqual':'\\u22EC','NotLess':'\\u226E','NotLessEqual':'\\u2270','NotLessGreater':'\\u2278','NotLessLess':'\\u226A\\u0338','NotLessSlantEqual':'\\u2A7D\\u0338','NotLessTilde':'\\u2274','NotNestedGreaterGreater':'\\u2AA2\\u0338','NotNestedLessLess':'\\u2AA1\\u0338','notni':'\\u220C','notniva':'\\u220C','notnivb':'\\u22FE','notnivc':'\\u22FD','NotPrecedes':'\\u2280','NotPrecedesEqual':'\\u2AAF\\u0338','NotPrecedesSlantEqual':'\\u22E0','NotReverseElement':'\\u220C','NotRightTriangle':'\\u22EB','NotRightTriangleBar':'\\u29D0\\u0338','NotRightTriangleEqual':'\\u22ED','NotSquareSubset':'\\u228F\\u0338','NotSquareSubsetEqual':'\\u22E2','NotSquareSuperset':'\\u2290\\u0338','NotSquareSupersetEqual':'\\u22E3','NotSubset':'\\u2282\\u20D2','NotSubsetEqual':'\\u2288','NotSucceeds':'\\u2281','NotSucceedsEqual':'\\u2AB0\\u0338','NotSucceedsSlantEqual':'\\u22E1','NotSucceedsTilde':'\\u227F\\u0338','NotSuperset':'\\u2283\\u20D2','NotSupersetEqual':'\\u2289','NotTilde':'\\u2241','NotTildeEqual':'\\u2244','NotTildeFullEqual':'\\u2247','NotTildeTilde':'\\u2249','NotVerticalBar':'\\u2224','npar':'\\u2226','nparallel':'\\u2226','nparsl':'\\u2AFD\\u20E5','npart':'\\u2202\\u0338','npolint':'\\u2A14','npr':'\\u2280','nprcue':'\\u22E0','npre':'\\u2AAF\\u0338','nprec':'\\u2280','npreceq':'\\u2AAF\\u0338','nrarr':'\\u219B','nrArr':'\\u21CF','nrarrc':'\\u2933\\u0338','nrarrw':'\\u219D\\u0338','nrightarrow':'\\u219B','nRightarrow':'\\u21CF','nrtri':'\\u22EB','nrtrie':'\\u22ED','nsc':'\\u2281','nsccue':'\\u22E1','nsce':'\\u2AB0\\u0338','nscr':'\\uD835\\uDCC3','Nscr':'\\uD835\\uDCA9','nshortmid':'\\u2224','nshortparallel':'\\u2226','nsim':'\\u2241','nsime':'\\u2244','nsimeq':'\\u2244','nsmid':'\\u2224','nspar':'\\u2226','nsqsube':'\\u22E2','nsqsupe':'\\u22E3','nsub':'\\u2284','nsube':'\\u2288','nsubE':'\\u2AC5\\u0338','nsubset':'\\u2282\\u20D2','nsubseteq':'\\u2288','nsubseteqq':'\\u2AC5\\u0338','nsucc':'\\u2281','nsucceq':'\\u2AB0\\u0338','nsup':'\\u2285','nsupe':'\\u2289','nsupE':'\\u2AC6\\u0338','nsupset':'\\u2283\\u20D2','nsupseteq':'\\u2289','nsupseteqq':'\\u2AC6\\u0338','ntgl':'\\u2279','ntilde':'\\xF1','Ntilde':'\\xD1','ntlg':'\\u2278','ntriangleleft':'\\u22EA','ntrianglelefteq':'\\u22EC','ntriangleright':'\\u22EB','ntrianglerighteq':'\\u22ED','nu':'\\u03BD','Nu':'\\u039D','num':'#','numero':'\\u2116','numsp':'\\u2007','nvap':'\\u224D\\u20D2','nvdash':'\\u22AC','nvDash':'\\u22AD','nVdash':'\\u22AE','nVDash':'\\u22AF','nvge':'\\u2265\\u20D2','nvgt':'>\\u20D2','nvHarr':'\\u2904','nvinfin':'\\u29DE','nvlArr':'\\u2902','nvle':'\\u2264\\u20D2','nvlt':'<\\u20D2','nvltrie':'\\u22B4\\u20D2','nvrArr':'\\u2903','nvrtrie':'\\u22B5\\u20D2','nvsim':'\\u223C\\u20D2','nwarhk':'\\u2923','nwarr':'\\u2196','nwArr':'\\u21D6','nwarrow':'\\u2196','nwnear':'\\u2927','oacute':'\\xF3','Oacute':'\\xD3','oast':'\\u229B','ocir':'\\u229A','ocirc':'\\xF4','Ocirc':'\\xD4','ocy':'\\u043E','Ocy':'\\u041E','odash':'\\u229D','odblac':'\\u0151','Odblac':'\\u0150','odiv':'\\u2A38','odot':'\\u2299','odsold':'\\u29BC','oelig':'\\u0153','OElig':'\\u0152','ofcir':'\\u29BF','ofr':'\\uD835\\uDD2C','Ofr':'\\uD835\\uDD12','ogon':'\\u02DB','ograve':'\\xF2','Ograve':'\\xD2','ogt':'\\u29C1','ohbar':'\\u29B5','ohm':'\\u03A9','oint':'\\u222E','olarr':'\\u21BA','olcir':'\\u29BE','olcross':'\\u29BB','oline':'\\u203E','olt':'\\u29C0','omacr':'\\u014D','Omacr':'\\u014C','omega':'\\u03C9','Omega':'\\u03A9','omicron':'\\u03BF','Omicron':'\\u039F','omid':'\\u29B6','ominus':'\\u2296','oopf':'\\uD835\\uDD60','Oopf':'\\uD835\\uDD46','opar':'\\u29B7','OpenCurlyDoubleQuote':'\\u201C','OpenCurlyQuote':'\\u2018','operp':'\\u29B9','oplus':'\\u2295','or':'\\u2228','Or':'\\u2A54','orarr':'\\u21BB','ord':'\\u2A5D','order':'\\u2134','orderof':'\\u2134','ordf':'\\xAA','ordm':'\\xBA','origof':'\\u22B6','oror':'\\u2A56','orslope':'\\u2A57','orv':'\\u2A5B','oS':'\\u24C8','oscr':'\\u2134','Oscr':'\\uD835\\uDCAA','oslash':'\\xF8','Oslash':'\\xD8','osol':'\\u2298','otilde':'\\xF5','Otilde':'\\xD5','otimes':'\\u2297','Otimes':'\\u2A37','otimesas':'\\u2A36','ouml':'\\xF6','Ouml':'\\xD6','ovbar':'\\u233D','OverBar':'\\u203E','OverBrace':'\\u23DE','OverBracket':'\\u23B4','OverParenthesis':'\\u23DC','par':'\\u2225','para':'\\xB6','parallel':'\\u2225','parsim':'\\u2AF3','parsl':'\\u2AFD','part':'\\u2202','PartialD':'\\u2202','pcy':'\\u043F','Pcy':'\\u041F','percnt':'%','period':'.','permil':'\\u2030','perp':'\\u22A5','pertenk':'\\u2031','pfr':'\\uD835\\uDD2D','Pfr':'\\uD835\\uDD13','phi':'\\u03C6','Phi':'\\u03A6','phiv':'\\u03D5','phmmat':'\\u2133','phone':'\\u260E','pi':'\\u03C0','Pi':'\\u03A0','pitchfork':'\\u22D4','piv':'\\u03D6','planck':'\\u210F','planckh':'\\u210E','plankv':'\\u210F','plus':'+','plusacir':'\\u2A23','plusb':'\\u229E','pluscir':'\\u2A22','plusdo':'\\u2214','plusdu':'\\u2A25','pluse':'\\u2A72','PlusMinus':'\\xB1','plusmn':'\\xB1','plussim':'\\u2A26','plustwo':'\\u2A27','pm':'\\xB1','Poincareplane':'\\u210C','pointint':'\\u2A15','popf':'\\uD835\\uDD61','Popf':'\\u2119','pound':'\\xA3','pr':'\\u227A','Pr':'\\u2ABB','prap':'\\u2AB7','prcue':'\\u227C','pre':'\\u2AAF','prE':'\\u2AB3','prec':'\\u227A','precapprox':'\\u2AB7','preccurlyeq':'\\u227C','Precedes':'\\u227A','PrecedesEqual':'\\u2AAF','PrecedesSlantEqual':'\\u227C','PrecedesTilde':'\\u227E','preceq':'\\u2AAF','precnapprox':'\\u2AB9','precneqq':'\\u2AB5','precnsim':'\\u22E8','precsim':'\\u227E','prime':'\\u2032','Prime':'\\u2033','primes':'\\u2119','prnap':'\\u2AB9','prnE':'\\u2AB5','prnsim':'\\u22E8','prod':'\\u220F','Product':'\\u220F','profalar':'\\u232E','profline':'\\u2312','profsurf':'\\u2313','prop':'\\u221D','Proportion':'\\u2237','Proportional':'\\u221D','propto':'\\u221D','prsim':'\\u227E','prurel':'\\u22B0','pscr':'\\uD835\\uDCC5','Pscr':'\\uD835\\uDCAB','psi':'\\u03C8','Psi':'\\u03A8','puncsp':'\\u2008','qfr':'\\uD835\\uDD2E','Qfr':'\\uD835\\uDD14','qint':'\\u2A0C','qopf':'\\uD835\\uDD62','Qopf':'\\u211A','qprime':'\\u2057','qscr':'\\uD835\\uDCC6','Qscr':'\\uD835\\uDCAC','quaternions':'\\u210D','quatint':'\\u2A16','quest':'?','questeq':'\\u225F','quot':'\"','QUOT':'\"','rAarr':'\\u21DB','race':'\\u223D\\u0331','racute':'\\u0155','Racute':'\\u0154','radic':'\\u221A','raemptyv':'\\u29B3','rang':'\\u27E9','Rang':'\\u27EB','rangd':'\\u2992','range':'\\u29A5','rangle':'\\u27E9','raquo':'\\xBB','rarr':'\\u2192','rArr':'\\u21D2','Rarr':'\\u21A0','rarrap':'\\u2975','rarrb':'\\u21E5','rarrbfs':'\\u2920','rarrc':'\\u2933','rarrfs':'\\u291E','rarrhk':'\\u21AA','rarrlp':'\\u21AC','rarrpl':'\\u2945','rarrsim':'\\u2974','rarrtl':'\\u21A3','Rarrtl':'\\u2916','rarrw':'\\u219D','ratail':'\\u291A','rAtail':'\\u291C','ratio':'\\u2236','rationals':'\\u211A','rbarr':'\\u290D','rBarr':'\\u290F','RBarr':'\\u2910','rbbrk':'\\u2773','rbrace':'}','rbrack':']','rbrke':'\\u298C','rbrksld':'\\u298E','rbrkslu':'\\u2990','rcaron':'\\u0159','Rcaron':'\\u0158','rcedil':'\\u0157','Rcedil':'\\u0156','rceil':'\\u2309','rcub':'}','rcy':'\\u0440','Rcy':'\\u0420','rdca':'\\u2937','rdldhar':'\\u2969','rdquo':'\\u201D','rdquor':'\\u201D','rdsh':'\\u21B3','Re':'\\u211C','real':'\\u211C','realine':'\\u211B','realpart':'\\u211C','reals':'\\u211D','rect':'\\u25AD','reg':'\\xAE','REG':'\\xAE','ReverseElement':'\\u220B','ReverseEquilibrium':'\\u21CB','ReverseUpEquilibrium':'\\u296F','rfisht':'\\u297D','rfloor':'\\u230B','rfr':'\\uD835\\uDD2F','Rfr':'\\u211C','rHar':'\\u2964','rhard':'\\u21C1','rharu':'\\u21C0','rharul':'\\u296C','rho':'\\u03C1','Rho':'\\u03A1','rhov':'\\u03F1','RightAngleBracket':'\\u27E9','rightarrow':'\\u2192','Rightarrow':'\\u21D2','RightArrow':'\\u2192','RightArrowBar':'\\u21E5','RightArrowLeftArrow':'\\u21C4','rightarrowtail':'\\u21A3','RightCeiling':'\\u2309','RightDoubleBracket':'\\u27E7','RightDownTeeVector':'\\u295D','RightDownVector':'\\u21C2','RightDownVectorBar':'\\u2955','RightFloor':'\\u230B','rightharpoondown':'\\u21C1','rightharpoonup':'\\u21C0','rightleftarrows':'\\u21C4','rightleftharpoons':'\\u21CC','rightrightarrows':'\\u21C9','rightsquigarrow':'\\u219D','RightTee':'\\u22A2','RightTeeArrow':'\\u21A6','RightTeeVector':'\\u295B','rightthreetimes':'\\u22CC','RightTriangle':'\\u22B3','RightTriangleBar':'\\u29D0','RightTriangleEqual':'\\u22B5','RightUpDownVector':'\\u294F','RightUpTeeVector':'\\u295C','RightUpVector':'\\u21BE','RightUpVectorBar':'\\u2954','RightVector':'\\u21C0','RightVectorBar':'\\u2953','ring':'\\u02DA','risingdotseq':'\\u2253','rlarr':'\\u21C4','rlhar':'\\u21CC','rlm':'\\u200F','rmoust':'\\u23B1','rmoustache':'\\u23B1','rnmid':'\\u2AEE','roang':'\\u27ED','roarr':'\\u21FE','robrk':'\\u27E7','ropar':'\\u2986','ropf':'\\uD835\\uDD63','Ropf':'\\u211D','roplus':'\\u2A2E','rotimes':'\\u2A35','RoundImplies':'\\u2970','rpar':')','rpargt':'\\u2994','rppolint':'\\u2A12','rrarr':'\\u21C9','Rrightarrow':'\\u21DB','rsaquo':'\\u203A','rscr':'\\uD835\\uDCC7','Rscr':'\\u211B','rsh':'\\u21B1','Rsh':'\\u21B1','rsqb':']','rsquo':'\\u2019','rsquor':'\\u2019','rthree':'\\u22CC','rtimes':'\\u22CA','rtri':'\\u25B9','rtrie':'\\u22B5','rtrif':'\\u25B8','rtriltri':'\\u29CE','RuleDelayed':'\\u29F4','ruluhar':'\\u2968','rx':'\\u211E','sacute':'\\u015B','Sacute':'\\u015A','sbquo':'\\u201A','sc':'\\u227B','Sc':'\\u2ABC','scap':'\\u2AB8','scaron':'\\u0161','Scaron':'\\u0160','sccue':'\\u227D','sce':'\\u2AB0','scE':'\\u2AB4','scedil':'\\u015F','Scedil':'\\u015E','scirc':'\\u015D','Scirc':'\\u015C','scnap':'\\u2ABA','scnE':'\\u2AB6','scnsim':'\\u22E9','scpolint':'\\u2A13','scsim':'\\u227F','scy':'\\u0441','Scy':'\\u0421','sdot':'\\u22C5','sdotb':'\\u22A1','sdote':'\\u2A66','searhk':'\\u2925','searr':'\\u2198','seArr':'\\u21D8','searrow':'\\u2198','sect':'\\xA7','semi':';','seswar':'\\u2929','setminus':'\\u2216','setmn':'\\u2216','sext':'\\u2736','sfr':'\\uD835\\uDD30','Sfr':'\\uD835\\uDD16','sfrown':'\\u2322','sharp':'\\u266F','shchcy':'\\u0449','SHCHcy':'\\u0429','shcy':'\\u0448','SHcy':'\\u0428','ShortDownArrow':'\\u2193','ShortLeftArrow':'\\u2190','shortmid':'\\u2223','shortparallel':'\\u2225','ShortRightArrow':'\\u2192','ShortUpArrow':'\\u2191','shy':'\\xAD','sigma':'\\u03C3','Sigma':'\\u03A3','sigmaf':'\\u03C2','sigmav':'\\u03C2','sim':'\\u223C','simdot':'\\u2A6A','sime':'\\u2243','simeq':'\\u2243','simg':'\\u2A9E','simgE':'\\u2AA0','siml':'\\u2A9D','simlE':'\\u2A9F','simne':'\\u2246','simplus':'\\u2A24','simrarr':'\\u2972','slarr':'\\u2190','SmallCircle':'\\u2218','smallsetminus':'\\u2216','smashp':'\\u2A33','smeparsl':'\\u29E4','smid':'\\u2223','smile':'\\u2323','smt':'\\u2AAA','smte':'\\u2AAC','smtes':'\\u2AAC\\uFE00','softcy':'\\u044C','SOFTcy':'\\u042C','sol':'/','solb':'\\u29C4','solbar':'\\u233F','sopf':'\\uD835\\uDD64','Sopf':'\\uD835\\uDD4A','spades':'\\u2660','spadesuit':'\\u2660','spar':'\\u2225','sqcap':'\\u2293','sqcaps':'\\u2293\\uFE00','sqcup':'\\u2294','sqcups':'\\u2294\\uFE00','Sqrt':'\\u221A','sqsub':'\\u228F','sqsube':'\\u2291','sqsubset':'\\u228F','sqsubseteq':'\\u2291','sqsup':'\\u2290','sqsupe':'\\u2292','sqsupset':'\\u2290','sqsupseteq':'\\u2292','squ':'\\u25A1','square':'\\u25A1','Square':'\\u25A1','SquareIntersection':'\\u2293','SquareSubset':'\\u228F','SquareSubsetEqual':'\\u2291','SquareSuperset':'\\u2290','SquareSupersetEqual':'\\u2292','SquareUnion':'\\u2294','squarf':'\\u25AA','squf':'\\u25AA','srarr':'\\u2192','sscr':'\\uD835\\uDCC8','Sscr':'\\uD835\\uDCAE','ssetmn':'\\u2216','ssmile':'\\u2323','sstarf':'\\u22C6','star':'\\u2606','Star':'\\u22C6','starf':'\\u2605','straightepsilon':'\\u03F5','straightphi':'\\u03D5','strns':'\\xAF','sub':'\\u2282','Sub':'\\u22D0','subdot':'\\u2ABD','sube':'\\u2286','subE':'\\u2AC5','subedot':'\\u2AC3','submult':'\\u2AC1','subne':'\\u228A','subnE':'\\u2ACB','subplus':'\\u2ABF','subrarr':'\\u2979','subset':'\\u2282','Subset':'\\u22D0','subseteq':'\\u2286','subseteqq':'\\u2AC5','SubsetEqual':'\\u2286','subsetneq':'\\u228A','subsetneqq':'\\u2ACB','subsim':'\\u2AC7','subsub':'\\u2AD5','subsup':'\\u2AD3','succ':'\\u227B','succapprox':'\\u2AB8','succcurlyeq':'\\u227D','Succeeds':'\\u227B','SucceedsEqual':'\\u2AB0','SucceedsSlantEqual':'\\u227D','SucceedsTilde':'\\u227F','succeq':'\\u2AB0','succnapprox':'\\u2ABA','succneqq':'\\u2AB6','succnsim':'\\u22E9','succsim':'\\u227F','SuchThat':'\\u220B','sum':'\\u2211','Sum':'\\u2211','sung':'\\u266A','sup':'\\u2283','Sup':'\\u22D1','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','supdot':'\\u2ABE','supdsub':'\\u2AD8','supe':'\\u2287','supE':'\\u2AC6','supedot':'\\u2AC4','Superset':'\\u2283','SupersetEqual':'\\u2287','suphsol':'\\u27C9','suphsub':'\\u2AD7','suplarr':'\\u297B','supmult':'\\u2AC2','supne':'\\u228B','supnE':'\\u2ACC','supplus':'\\u2AC0','supset':'\\u2283','Supset':'\\u22D1','supseteq':'\\u2287','supseteqq':'\\u2AC6','supsetneq':'\\u228B','supsetneqq':'\\u2ACC','supsim':'\\u2AC8','supsub':'\\u2AD4','supsup':'\\u2AD6','swarhk':'\\u2926','swarr':'\\u2199','swArr':'\\u21D9','swarrow':'\\u2199','swnwar':'\\u292A','szlig':'\\xDF','Tab':'\\t','target':'\\u2316','tau':'\\u03C4','Tau':'\\u03A4','tbrk':'\\u23B4','tcaron':'\\u0165','Tcaron':'\\u0164','tcedil':'\\u0163','Tcedil':'\\u0162','tcy':'\\u0442','Tcy':'\\u0422','tdot':'\\u20DB','telrec':'\\u2315','tfr':'\\uD835\\uDD31','Tfr':'\\uD835\\uDD17','there4':'\\u2234','therefore':'\\u2234','Therefore':'\\u2234','theta':'\\u03B8','Theta':'\\u0398','thetasym':'\\u03D1','thetav':'\\u03D1','thickapprox':'\\u2248','thicksim':'\\u223C','ThickSpace':'\\u205F\\u200A','thinsp':'\\u2009','ThinSpace':'\\u2009','thkap':'\\u2248','thksim':'\\u223C','thorn':'\\xFE','THORN':'\\xDE','tilde':'\\u02DC','Tilde':'\\u223C','TildeEqual':'\\u2243','TildeFullEqual':'\\u2245','TildeTilde':'\\u2248','times':'\\xD7','timesb':'\\u22A0','timesbar':'\\u2A31','timesd':'\\u2A30','tint':'\\u222D','toea':'\\u2928','top':'\\u22A4','topbot':'\\u2336','topcir':'\\u2AF1','topf':'\\uD835\\uDD65','Topf':'\\uD835\\uDD4B','topfork':'\\u2ADA','tosa':'\\u2929','tprime':'\\u2034','trade':'\\u2122','TRADE':'\\u2122','triangle':'\\u25B5','triangledown':'\\u25BF','triangleleft':'\\u25C3','trianglelefteq':'\\u22B4','triangleq':'\\u225C','triangleright':'\\u25B9','trianglerighteq':'\\u22B5','tridot':'\\u25EC','trie':'\\u225C','triminus':'\\u2A3A','TripleDot':'\\u20DB','triplus':'\\u2A39','trisb':'\\u29CD','tritime':'\\u2A3B','trpezium':'\\u23E2','tscr':'\\uD835\\uDCC9','Tscr':'\\uD835\\uDCAF','tscy':'\\u0446','TScy':'\\u0426','tshcy':'\\u045B','TSHcy':'\\u040B','tstrok':'\\u0167','Tstrok':'\\u0166','twixt':'\\u226C','twoheadleftarrow':'\\u219E','twoheadrightarrow':'\\u21A0','uacute':'\\xFA','Uacute':'\\xDA','uarr':'\\u2191','uArr':'\\u21D1','Uarr':'\\u219F','Uarrocir':'\\u2949','ubrcy':'\\u045E','Ubrcy':'\\u040E','ubreve':'\\u016D','Ubreve':'\\u016C','ucirc':'\\xFB','Ucirc':'\\xDB','ucy':'\\u0443','Ucy':'\\u0423','udarr':'\\u21C5','udblac':'\\u0171','Udblac':'\\u0170','udhar':'\\u296E','ufisht':'\\u297E','ufr':'\\uD835\\uDD32','Ufr':'\\uD835\\uDD18','ugrave':'\\xF9','Ugrave':'\\xD9','uHar':'\\u2963','uharl':'\\u21BF','uharr':'\\u21BE','uhblk':'\\u2580','ulcorn':'\\u231C','ulcorner':'\\u231C','ulcrop':'\\u230F','ultri':'\\u25F8','umacr':'\\u016B','Umacr':'\\u016A','uml':'\\xA8','UnderBar':'_','UnderBrace':'\\u23DF','UnderBracket':'\\u23B5','UnderParenthesis':'\\u23DD','Union':'\\u22C3','UnionPlus':'\\u228E','uogon':'\\u0173','Uogon':'\\u0172','uopf':'\\uD835\\uDD66','Uopf':'\\uD835\\uDD4C','uparrow':'\\u2191','Uparrow':'\\u21D1','UpArrow':'\\u2191','UpArrowBar':'\\u2912','UpArrowDownArrow':'\\u21C5','updownarrow':'\\u2195','Updownarrow':'\\u21D5','UpDownArrow':'\\u2195','UpEquilibrium':'\\u296E','upharpoonleft':'\\u21BF','upharpoonright':'\\u21BE','uplus':'\\u228E','UpperLeftArrow':'\\u2196','UpperRightArrow':'\\u2197','upsi':'\\u03C5','Upsi':'\\u03D2','upsih':'\\u03D2','upsilon':'\\u03C5','Upsilon':'\\u03A5','UpTee':'\\u22A5','UpTeeArrow':'\\u21A5','upuparrows':'\\u21C8','urcorn':'\\u231D','urcorner':'\\u231D','urcrop':'\\u230E','uring':'\\u016F','Uring':'\\u016E','urtri':'\\u25F9','uscr':'\\uD835\\uDCCA','Uscr':'\\uD835\\uDCB0','utdot':'\\u22F0','utilde':'\\u0169','Utilde':'\\u0168','utri':'\\u25B5','utrif':'\\u25B4','uuarr':'\\u21C8','uuml':'\\xFC','Uuml':'\\xDC','uwangle':'\\u29A7','vangrt':'\\u299C','varepsilon':'\\u03F5','varkappa':'\\u03F0','varnothing':'\\u2205','varphi':'\\u03D5','varpi':'\\u03D6','varpropto':'\\u221D','varr':'\\u2195','vArr':'\\u21D5','varrho':'\\u03F1','varsigma':'\\u03C2','varsubsetneq':'\\u228A\\uFE00','varsubsetneqq':'\\u2ACB\\uFE00','varsupsetneq':'\\u228B\\uFE00','varsupsetneqq':'\\u2ACC\\uFE00','vartheta':'\\u03D1','vartriangleleft':'\\u22B2','vartriangleright':'\\u22B3','vBar':'\\u2AE8','Vbar':'\\u2AEB','vBarv':'\\u2AE9','vcy':'\\u0432','Vcy':'\\u0412','vdash':'\\u22A2','vDash':'\\u22A8','Vdash':'\\u22A9','VDash':'\\u22AB','Vdashl':'\\u2AE6','vee':'\\u2228','Vee':'\\u22C1','veebar':'\\u22BB','veeeq':'\\u225A','vellip':'\\u22EE','verbar':'|','Verbar':'\\u2016','vert':'|','Vert':'\\u2016','VerticalBar':'\\u2223','VerticalLine':'|','VerticalSeparator':'\\u2758','VerticalTilde':'\\u2240','VeryThinSpace':'\\u200A','vfr':'\\uD835\\uDD33','Vfr':'\\uD835\\uDD19','vltri':'\\u22B2','vnsub':'\\u2282\\u20D2','vnsup':'\\u2283\\u20D2','vopf':'\\uD835\\uDD67','Vopf':'\\uD835\\uDD4D','vprop':'\\u221D','vrtri':'\\u22B3','vscr':'\\uD835\\uDCCB','Vscr':'\\uD835\\uDCB1','vsubne':'\\u228A\\uFE00','vsubnE':'\\u2ACB\\uFE00','vsupne':'\\u228B\\uFE00','vsupnE':'\\u2ACC\\uFE00','Vvdash':'\\u22AA','vzigzag':'\\u299A','wcirc':'\\u0175','Wcirc':'\\u0174','wedbar':'\\u2A5F','wedge':'\\u2227','Wedge':'\\u22C0','wedgeq':'\\u2259','weierp':'\\u2118','wfr':'\\uD835\\uDD34','Wfr':'\\uD835\\uDD1A','wopf':'\\uD835\\uDD68','Wopf':'\\uD835\\uDD4E','wp':'\\u2118','wr':'\\u2240','wreath':'\\u2240','wscr':'\\uD835\\uDCCC','Wscr':'\\uD835\\uDCB2','xcap':'\\u22C2','xcirc':'\\u25EF','xcup':'\\u22C3','xdtri':'\\u25BD','xfr':'\\uD835\\uDD35','Xfr':'\\uD835\\uDD1B','xharr':'\\u27F7','xhArr':'\\u27FA','xi':'\\u03BE','Xi':'\\u039E','xlarr':'\\u27F5','xlArr':'\\u27F8','xmap':'\\u27FC','xnis':'\\u22FB','xodot':'\\u2A00','xopf':'\\uD835\\uDD69','Xopf':'\\uD835\\uDD4F','xoplus':'\\u2A01','xotime':'\\u2A02','xrarr':'\\u27F6','xrArr':'\\u27F9','xscr':'\\uD835\\uDCCD','Xscr':'\\uD835\\uDCB3','xsqcup':'\\u2A06','xuplus':'\\u2A04','xutri':'\\u25B3','xvee':'\\u22C1','xwedge':'\\u22C0','yacute':'\\xFD','Yacute':'\\xDD','yacy':'\\u044F','YAcy':'\\u042F','ycirc':'\\u0177','Ycirc':'\\u0176','ycy':'\\u044B','Ycy':'\\u042B','yen':'\\xA5','yfr':'\\uD835\\uDD36','Yfr':'\\uD835\\uDD1C','yicy':'\\u0457','YIcy':'\\u0407','yopf':'\\uD835\\uDD6A','Yopf':'\\uD835\\uDD50','yscr':'\\uD835\\uDCCE','Yscr':'\\uD835\\uDCB4','yucy':'\\u044E','YUcy':'\\u042E','yuml':'\\xFF','Yuml':'\\u0178','zacute':'\\u017A','Zacute':'\\u0179','zcaron':'\\u017E','Zcaron':'\\u017D','zcy':'\\u0437','Zcy':'\\u0417','zdot':'\\u017C','Zdot':'\\u017B','zeetrf':'\\u2128','ZeroWidthSpace':'\\u200B','zeta':'\\u03B6','Zeta':'\\u0396','zfr':'\\uD835\\uDD37','Zfr':'\\u2128','zhcy':'\\u0436','ZHcy':'\\u0416','zigrarr':'\\u21DD','zopf':'\\uD835\\uDD6B','Zopf':'\\u2124','zscr':'\\uD835\\uDCCF','Zscr':'\\uD835\\uDCB5','zwj':'\\u200D','zwnj':'\\u200C'};\n\tvar decodeMapLegacy = {'aacute':'\\xE1','Aacute':'\\xC1','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','aelig':'\\xE6','AElig':'\\xC6','agrave':'\\xE0','Agrave':'\\xC0','amp':'&','AMP':'&','aring':'\\xE5','Aring':'\\xC5','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','brvbar':'\\xA6','ccedil':'\\xE7','Ccedil':'\\xC7','cedil':'\\xB8','cent':'\\xA2','copy':'\\xA9','COPY':'\\xA9','curren':'\\xA4','deg':'\\xB0','divide':'\\xF7','eacute':'\\xE9','Eacute':'\\xC9','ecirc':'\\xEA','Ecirc':'\\xCA','egrave':'\\xE8','Egrave':'\\xC8','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','frac12':'\\xBD','frac14':'\\xBC','frac34':'\\xBE','gt':'>','GT':'>','iacute':'\\xED','Iacute':'\\xCD','icirc':'\\xEE','Icirc':'\\xCE','iexcl':'\\xA1','igrave':'\\xEC','Igrave':'\\xCC','iquest':'\\xBF','iuml':'\\xEF','Iuml':'\\xCF','laquo':'\\xAB','lt':'<','LT':'<','macr':'\\xAF','micro':'\\xB5','middot':'\\xB7','nbsp':'\\xA0','not':'\\xAC','ntilde':'\\xF1','Ntilde':'\\xD1','oacute':'\\xF3','Oacute':'\\xD3','ocirc':'\\xF4','Ocirc':'\\xD4','ograve':'\\xF2','Ograve':'\\xD2','ordf':'\\xAA','ordm':'\\xBA','oslash':'\\xF8','Oslash':'\\xD8','otilde':'\\xF5','Otilde':'\\xD5','ouml':'\\xF6','Ouml':'\\xD6','para':'\\xB6','plusmn':'\\xB1','pound':'\\xA3','quot':'\"','QUOT':'\"','raquo':'\\xBB','reg':'\\xAE','REG':'\\xAE','sect':'\\xA7','shy':'\\xAD','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','szlig':'\\xDF','thorn':'\\xFE','THORN':'\\xDE','times':'\\xD7','uacute':'\\xFA','Uacute':'\\xDA','ucirc':'\\xFB','Ucirc':'\\xDB','ugrave':'\\xF9','Ugrave':'\\xD9','uml':'\\xA8','uuml':'\\xFC','Uuml':'\\xDC','yacute':'\\xFD','Yacute':'\\xDD','yen':'\\xA5','yuml':'\\xFF'};\n\tvar decodeMapNumeric = {'0':'\\uFFFD','128':'\\u20AC','130':'\\u201A','131':'\\u0192','132':'\\u201E','133':'\\u2026','134':'\\u2020','135':'\\u2021','136':'\\u02C6','137':'\\u2030','138':'\\u0160','139':'\\u2039','140':'\\u0152','142':'\\u017D','145':'\\u2018','146':'\\u2019','147':'\\u201C','148':'\\u201D','149':'\\u2022','150':'\\u2013','151':'\\u2014','152':'\\u02DC','153':'\\u2122','154':'\\u0161','155':'\\u203A','156':'\\u0153','158':'\\u017E','159':'\\u0178'};\n\tvar invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\tvar object = {};\n\tvar hasOwnProperty = object.hasOwnProperty;\n\tvar has = function(object, propertyName) {\n\t\treturn hasOwnProperty.call(object, propertyName);\n\t};\n\n\tvar contains = function(array, value) {\n\t\tvar index = -1;\n\t\tvar length = array.length;\n\t\twhile (++index < length) {\n\t\t\tif (array[index] == value) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\tvar merge = function(options, defaults) {\n\t\tif (!options) {\n\t\t\treturn defaults;\n\t\t}\n\t\tvar result = {};\n\t\tvar key;\n\t\tfor (key in defaults) {\n\t\t\t// A `hasOwnProperty` check is not needed here, since only recognized\n\t\t\t// option names are used anyway. Any others are ignored.\n\t\t\tresult[key] = has(options, key) ? options[key] : defaults[key];\n\t\t}\n\t\treturn result;\n\t};\n\n\t// Modified version of `ucs2encode`; see https://mths.be/punycode.\n\tvar codePointToSymbol = function(codePoint, strict) {\n\t\tvar output = '';\n\t\tif ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) {\n\t\t\t// See issue #4:\n\t\t\t// “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is\n\t\t\t// greater than 0x10FFFF, then this is a parse error. Return a U+FFFD\n\t\t\t// REPLACEMENT CHARACTER.”\n\t\t\tif (strict) {\n\t\t\t\tparseError('character reference outside the permissible Unicode range');\n\t\t\t}\n\t\t\treturn '\\uFFFD';\n\t\t}\n\t\tif (has(decodeMapNumeric, codePoint)) {\n\t\t\tif (strict) {\n\t\t\t\tparseError('disallowed character reference');\n\t\t\t}\n\t\t\treturn decodeMapNumeric[codePoint];\n\t\t}\n\t\tif (strict && contains(invalidReferenceCodePoints, codePoint)) {\n\t\t\tparseError('disallowed character reference');\n\t\t}\n\t\tif (codePoint > 0xFFFF) {\n\t\t\tcodePoint -= 0x10000;\n\t\t\toutput += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);\n\t\t\tcodePoint = 0xDC00 | codePoint & 0x3FF;\n\t\t}\n\t\toutput += stringFromCharCode(codePoint);\n\t\treturn output;\n\t};\n\n\tvar hexEscape = function(codePoint) {\n\t\treturn '&#x' + codePoint.toString(16).toUpperCase() + ';';\n\t};\n\n\tvar decEscape = function(codePoint) {\n\t\treturn '&#' + codePoint + ';';\n\t};\n\n\tvar parseError = function(message) {\n\t\tthrow Error('Parse error: ' + message);\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar encode = function(string, options) {\n\t\toptions = merge(options, encode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidRawCodePoint.test(string)) {\n\t\t\tparseError('forbidden code point');\n\t\t}\n\t\tvar encodeEverything = options.encodeEverything;\n\t\tvar useNamedReferences = options.useNamedReferences;\n\t\tvar allowUnsafeSymbols = options.allowUnsafeSymbols;\n\t\tvar escapeCodePoint = options.decimal ? decEscape : hexEscape;\n\n\t\tvar escapeBmpSymbol = function(symbol) {\n\t\t\treturn escapeCodePoint(symbol.charCodeAt(0));\n\t\t};\n\n\t\tif (encodeEverything) {\n\t\t\t// Encode ASCII symbols.\n\t\t\tstring = string.replace(regexAsciiWhitelist, function(symbol) {\n\t\t\t\t// Use named references if requested & possible.\n\t\t\t\tif (useNamedReferences && has(encodeMap, symbol)) {\n\t\t\t\t\treturn '&' + encodeMap[symbol] + ';';\n\t\t\t\t}\n\t\t\t\treturn escapeBmpSymbol(symbol);\n\t\t\t});\n\t\t\t// Shorten a few escapes that represent two symbols, of which at least one\n\t\t\t// is within the ASCII range.\n\t\t\tif (useNamedReferences) {\n\t\t\t\tstring = string\n\t\t\t\t\t.replace(/>\\u20D2/g, '>⃒')\n\t\t\t\t\t.replace(/<\\u20D2/g, '<⃒')\n\t\t\t\t\t.replace(/fj/g, 'fj');\n\t\t\t}\n\t\t\t// Encode non-ASCII symbols.\n\t\t\tif (useNamedReferences) {\n\t\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Note: any remaining non-ASCII symbols are handled outside of the `if`.\n\t\t} else if (useNamedReferences) {\n\t\t\t// Apply named character references.\n\t\t\t// Encode `<>\"'&` using named character references.\n\t\t\tif (!allowUnsafeSymbols) {\n\t\t\t\tstring = string.replace(regexEscape, function(string) {\n\t\t\t\t\treturn '&' + encodeMap[string] + ';'; // no need to check `has()` here\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Shorten escapes that represent two symbols, of which at least one is\n\t\t\t// `<>\"'&`.\n\t\t\tstring = string\n\t\t\t\t.replace(/>\\u20D2/g, '>⃒')\n\t\t\t\t.replace(/<\\u20D2/g, '<⃒');\n\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t});\n\t\t} else if (!allowUnsafeSymbols) {\n\t\t\t// Encode `<>\"'&` using hexadecimal escapes, now that they’re not handled\n\t\t\t// using named character references.\n\t\t\tstring = string.replace(regexEscape, escapeBmpSymbol);\n\t\t}\n\t\treturn string\n\t\t\t// Encode astral symbols.\n\t\t\t.replace(regexAstralSymbols, function($0) {\n\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\tvar high = $0.charCodeAt(0);\n\t\t\t\tvar low = $0.charCodeAt(1);\n\t\t\t\tvar codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;\n\t\t\t\treturn escapeCodePoint(codePoint);\n\t\t\t})\n\t\t\t// Encode any remaining BMP symbols that are not printable ASCII symbols\n\t\t\t// using a hexadecimal escape.\n\t\t\t.replace(regexBmpWhitelist, escapeBmpSymbol);\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tencode.options = {\n\t\t'allowUnsafeSymbols': false,\n\t\t'encodeEverything': false,\n\t\t'strict': false,\n\t\t'useNamedReferences': false,\n\t\t'decimal' : false\n\t};\n\n\tvar decode = function(html, options) {\n\t\toptions = merge(options, decode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidEntity.test(html)) {\n\t\t\tparseError('malformed character reference');\n\t\t}\n\t\treturn html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) {\n\t\t\tvar codePoint;\n\t\t\tvar semicolon;\n\t\t\tvar decDigits;\n\t\t\tvar hexDigits;\n\t\t\tvar reference;\n\t\t\tvar next;\n\n\t\t\tif ($1) {\n\t\t\t\treference = $1;\n\t\t\t\t// Note: there is no need to check `has(decodeMap, reference)`.\n\t\t\t\treturn decodeMap[reference];\n\t\t\t}\n\n\t\t\tif ($2) {\n\t\t\t\t// Decode named character references without trailing `;`, e.g. `&`.\n\t\t\t\t// This is only a parse error if it gets converted to `&`, or if it is\n\t\t\t\t// followed by `=` in an attribute context.\n\t\t\t\treference = $2;\n\t\t\t\tnext = $3;\n\t\t\t\tif (next && options.isAttributeValue) {\n\t\t\t\t\tif (strict && next == '=') {\n\t\t\t\t\t\tparseError('`&` did not start a character reference');\n\t\t\t\t\t}\n\t\t\t\t\treturn $0;\n\t\t\t\t} else {\n\t\t\t\t\tif (strict) {\n\t\t\t\t\t\tparseError(\n\t\t\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Note: there is no need to check `has(decodeMapLegacy, reference)`.\n\t\t\t\t\treturn decodeMapLegacy[reference] + (next || '');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ($4) {\n\t\t\t\t// Decode decimal escapes, e.g. `𝌆`.\n\t\t\t\tdecDigits = $4;\n\t\t\t\tsemicolon = $5;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(decDigits, 10);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\tif ($6) {\n\t\t\t\t// Decode hexadecimal escapes, e.g. `𝌆`.\n\t\t\t\thexDigits = $6;\n\t\t\t\tsemicolon = $7;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(hexDigits, 16);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\t// If we’re still here, `if ($7)` is implied; it’s an ambiguous\n\t\t\t// ampersand for sure. https://mths.be/notes/ambiguous-ampersands\n\t\t\tif (strict) {\n\t\t\t\tparseError(\n\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn $0;\n\t\t});\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tdecode.options = {\n\t\t'isAttributeValue': false,\n\t\t'strict': false\n\t};\n\n\tvar escape = function(string) {\n\t\treturn string.replace(regexEscape, function($0) {\n\t\t\t// Note: there is no need to check `has(escapeMap, $0)` here.\n\t\t\treturn escapeMap[$0];\n\t\t});\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar he = {\n\t\t'version': '1.2.0',\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'escape': escape,\n\t\t'unescape': decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn he;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = he;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in he) {\n\t\t\t\thas(he, key) && (freeExports[key] = he[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.he = he;\n\t}\n\n}(this));\n","/**\r\n * zen-fs-webdav\r\n * 一个简单、现代的 WebDAV 客户端库,提供类似文件系统的 API\r\n */\r\n\r\n// 导出主类\r\nexport { WebDAVFileSystem } from './WebDAVFileSystem';\r\nexport { createWebDAVFileSystem } from './webdav';\r\n\r\n// 导出错误类\r\nexport { WebDAVError } from './errors';\r\n\r\n// 导出类型定义\r\nexport {\r\n WebDAVOptions,\r\n WebDAVRequestOptions,\r\n FileEntry,\r\n Stats,\r\n ReadFileOptions,\r\n WriteFileOptions,\r\n MkdirOptions,\r\n RmdirOptions,\r\n ReaddirOptions,\r\n CopyOptions,\r\n MoveOptions,\r\n} from './types';","/**\r\n * WebDAV文件系统库的错误类型定义\r\n */\r\n\r\n/**\r\n * WebDAV错误基类\r\n */\r\nexport class WebDAVError extends Error {\r\n /**\r\n * HTTP状态码\r\n */\r\n status?: number;\r\n /**\r\n * 原始错误对象(如果有)\r\n */\r\n cause?: unknown;\r\n\r\n constructor(message: string, status?: number, cause?: unknown) {\r\n super(message);\r\n this.name = 'WebDAVError';\r\n this.status = status;\r\n this.cause = cause;\r\n // 兼容 TS 的 Error 子类\r\n Object.setPrototypeOf(this, WebDAVError.prototype);\r\n }\r\n\r\n toString(): string {\r\n if (typeof this.status === 'number') {\r\n return `${this.name}: ${this.message} (Status: ${this.status})`;\r\n }\r\n return `${this.name}: ${this.message}`;\r\n }\r\n\r\n static fromResponse(response: { status: number; statusText: string }, message?: string): WebDAVError {\r\n const msg = message\r\n ? `${message}: ${response.status} ${response.statusText}`\r\n : `${response.status} ${response.statusText}`;\r\n return new WebDAVError(msg, response.status);\r\n }\r\n\r\n static fromError(error: unknown): WebDAVError {\r\n if (error instanceof WebDAVError) {\r\n return error;\r\n }\r\n if (error instanceof Error) {\r\n const msg = error.message || 'Unknown WebDAV error';\r\n return new WebDAVError(msg, undefined, error);\r\n }\r\n return new WebDAVError('Unknown WebDAV error');\r\n }\r\n}\r\n\r\n/**\r\n * 文件或目录不存在错误\r\n */\r\nexport class NotFoundError extends WebDAVError {\r\n constructor(path: string) {\r\n super(`文件未找到: ${path}`, 404);\r\n this.name = 'NotFoundError';\r\n Object.setPrototypeOf(this, NotFoundError.prototype);\r\n }\r\n}\r\n\r\n/**\r\n * 认证错误\r\n */\r\nexport class AuthenticationError extends WebDAVError {\r\n constructor(message = '认证失败') {\r\n super(message, 401);\r\n this.name = 'AuthenticationError';\r\n Object.setPrototypeOf(this, AuthenticationError.prototype);\r\n }\r\n}\r\n\r\n/**\r\n * 授权错误\r\n */\r\nexport class AuthorizationError extends WebDAVError {\r\n constructor(message = '权限被拒绝') {\r\n super(message, 403);\r\n this.name = 'AuthorizationError';\r\n Object.setPrototypeOf(this, AuthorizationError.prototype);\r\n }\r\n}\r\n\r\n/**\r\n * 服务器错误\r\n */\r\nexport class ServerError extends WebDAVError {\r\n constructor(message = '服务器错误', statusCode = 500) {\r\n super(message, statusCode);\r\n this.name = 'ServerError';\r\n Object.setPrototypeOf(this, ServerError.prototype);\r\n }\r\n}\r\n\r\n/**\r\n * 文件已存在错误\r\n */\r\nexport class FileExistsError extends WebDAVError {\r\n constructor(path: string) {\r\n super(`文件已存在: ${path}`, 412);\r\n this.name = 'FileExistsError';\r\n Object.setPrototypeOf(this, FileExistsError.prototype);\r\n }\r\n}\r\n\r\n/**\r\n * 锁定错误\r\n */\r\nexport class LockError extends WebDAVError {\r\n constructor(path: string, message = '资源被锁定') {\r\n super(`${message}: ${path}`, 423);\r\n this.name = 'LockError';\r\n Object.setPrototypeOf(this, LockError.prototype);\r\n }\r\n}\r\n\r\n/**\r\n * 超时错误\r\n */\r\nexport class TimeoutError extends WebDAVError {\r\n constructor(message = '连接超时') {\r\n super(message, 408);\r\n this.name = 'TimeoutError';\r\n Object.setPrototypeOf(this, TimeoutError.prototype);\r\n }\r\n}\r\n\r\n/**\r\n * 网络错误\r\n */\r\nexport class NetworkError extends WebDAVError {\r\n constructor(originalError?: Error, message = '网络错误') {\r\n super(originalError ? `${message}: ${originalError.message}` : message, 0, originalError);\r\n this.name = 'NetworkError';\r\n Object.setPrototypeOf(this, NetworkError.prototype);\r\n }\r\n}\r\n\r\n/**\r\n * 参数错误\r\n */\r\nexport class ArgumentError extends WebDAVError {\r\n constructor(message: string) {\r\n super(`无效参数: ${message}`);\r\n this.name = 'ArgumentError';\r\n Object.setPrototypeOf(this, ArgumentError.prototype);\r\n }\r\n}","/**\n * WebDAV 相关常量\n */\n\n/**\n * WebDAV 方法\n */\nexport enum WebDAVMethod {\n GET = 'GET',\n PUT = 'PUT',\n POST = 'POST',\n DELETE = 'DELETE',\n PROPFIND = 'PROPFIND',\n PROPPATCH = 'PROPPATCH',\n MKCOL = 'MKCOL',\n COPY = 'COPY',\n MOVE = 'MOVE',\n LOCK = 'LOCK',\n UNLOCK = 'UNLOCK',\n}\n\n/**\n * WebDAV 命名空间\n */\nexport const WebDAVNamespace = {\n DAV: 'DAV:',\n CALDAV: 'urn:ietf:params:xml:ns:caldav',\n CARDDAV: 'urn:ietf:params:xml:ns:carddav',\n OWNCLOUD: 'http://owncloud.org/ns',\n NEXTCLOUD: 'http://nextcloud.org/ns',\n};\n\n/**\n * WebDAV 属性名称\n */\nexport const WebDAVPropName = {\n RESOURCE_TYPE: 'resourcetype',\n DISPLAY_NAME: 'displayname',\n GET_CONTENT_LENGTH: 'getcontentlength',\n GET_CONTENT_TYPE: 'getcontenttype',\n GET_LAST_MODIFIED: 'getlastmodified',\n CREATION_DATE: 'creationdate',\n ETAG: 'getetag',\n};\n\n/**\n * WebDAV 资源类型\n */\nexport enum WebDAVResourceType {\n FILE = 'file',\n DIRECTORY = 'directory',\n COLLECTION = 'collection',\n}\n\n/**\n * WebDAV 深度\n */\nexport enum WebDAVDepth {\n /**\n * 仅当前资源\n */\n ZERO = '0',\n \n /**\n * 当前资源及其直接子资源\n */\n ONE = '1',\n \n /**\n * 当前资源及其所有后代资源\n */\n INFINITY = 'infinity',\n}\n\n/**\n * 默认超时时间(毫秒)\n */\nexport const DEFAULT_TIMEOUT = 30000;\n\n/**\n * 默认请求头\n */\nexport const DEFAULT_HEADERS = {\n 'Content-Type': 'application/xml; charset=utf-8',\n 'Accept': 'application/xml, */*',\n};\n\n/**\n * XML 命名空间前缀\n */\nexport const XML_NAMESPACE_PREFIX = {\n 'd': WebDAVNamespace.DAV,\n 'oc': WebDAVNamespace.OWNCLOUD,\n 'nc': WebDAVNamespace.NEXTCLOUD,\n};\n\n/**\n * 错误消息\n */\nexport const ErrorMessage = {\n INVALID_URL: '无效的 URL',\n TIMEOUT: '请求超时',\n NETWORK_ERROR: '网络错误',\n UNAUTHORIZED: '未授权',\n FORBIDDEN: '禁止访问',\n NOT_FOUND: '资源不存在',\n METHOD_NOT_ALLOWED: '方法不允许',\n CONFLICT: '资源冲突',\n PRECONDITION_FAILED: '前提条件失败',\n INTERNAL_SERVER_ERROR: '服务器内部错误',\n NOT_IMPLEMENTED: '未实现',\n BAD_GATEWAY: '错误的网关',\n SERVICE_UNAVAILABLE: '服务不可用',\n GATEWAY_TIMEOUT: '网关超时',\n};\n\n/**\n * HTTP 状态码\n */\nexport enum HttpStatus {\n OK = 200,\n CREATED = 201,\n NO_CONTENT = 204,\n MULTI_STATUS = 207,\n BAD_REQUEST = 400,\n UNAUTHORIZED = 401,\n FORBIDDEN = 403,\n NOT_FOUND = 404,\n METHOD_NOT_ALLOWED = 405,\n CONFLICT = 409,\n PRECONDITION_FAILED = 412,\n INTERNAL_SERVER_ERROR = 500,\n NOT_IMPLEMENTED = 501,\n BAD_GATEWAY = 502,\n SERVICE_UNAVAILABLE = 503,\n GATEWAY_TIMEOUT = 504,\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n}\n\nexport const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n return Object.keys(obj).length === 0;\n}\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexport function merge(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n}\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexport function getValue(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n}\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};","'use strict';\n\nimport {getAllMatches, isName} from './util.js';\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/(<!DOCTYPE[\\s\\w\\\"\\.\\/\\-\\:]+(\\[.*\\])*\\s*>)/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","\nexport const defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs){\n return tagName\n },\n // skipEmptyListItem: false\n captureMetaData: false,\n};\n \nexport const buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n","'use strict';\n\nlet METADATA_SYMBOL;\n\nif (typeof Symbol !== \"function\") {\n METADATA_SYMBOL = \"@@xmlMetadata\";\n} else {\n METADATA_SYMBOL = Symbol(\"XML Node Metadata\");\n}\n\nexport default class XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if(key === \"__proto__\") key = \"#__proto__\";\n this.child.push( {[key]: val });\n }\n addChild(node, startIndex) {\n if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n // if requested, add the startIndex\n if (startIndex !== undefined) {\n // Note: for now we just overwrite the metadata. If we had more complex metadata,\n // we might need to do an object append here: metadata = { ...metadata, startIndex }\n this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex };\n }\n }\n /** symbol used for metadata */\n static getMetaDataSymbol() {\n return METADATA_SYMBOL;\n }\n}\n","import {isName} from '../util.js';\n\n//TODO: handle comments\nexport default function readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i<xmlData.length;i++){\n if (xmlData[i] === '<' && !comment) { //Determine the tag type\n if( hasBody && hasSeq(xmlData, \"!ENTITY\",i)){\n i += 7; \n let entityName, val;\n [entityName, val,i] = readEntityExp(xmlData,i+1);\n if(val.indexOf(\"&\") === -1) //Parameter entities are not supported\n entities[ entityName ] = {\n regx : RegExp( `&${entityName};`,\"g\"),\n val: val\n };\n }\n else if( hasBody && hasSeq(xmlData, \"!ELEMENT\",i)) {\n i += 8;//Not supported\n const {index} = readElementExp(xmlData,i+1);\n i = index;\n }else if( hasBody && hasSeq(xmlData, \"!ATTLIST\",i)){\n i += 8;//Not supported\n // const {index} = readAttlistExp(xmlData,i+1);\n // i = index;\n }else if( hasBody && hasSeq(xmlData, \"!NOTATION\",i)) {\n i += 9;//Not supported\n const {index} = readNotationExp(xmlData,i+1);\n i = index;\n }else if( hasSeq(xmlData, \"!--\",i) ) comment = true;\n else throw new Error(`Invalid DOCTYPE`);\n\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i] === '>') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n}\n\nconst skipWhitespace = (data, index) => {\n while (index < data.length && /\\s/.test(data[index])) {\n index++;\n }\n return index;\n};\n\nfunction readEntityExp(xmlData, i) { \n //External entities are not supported\n // <!ENTITY ext SYSTEM \"http://normal-website.com\" >\n\n //Parameter entities are not supported\n // <!ENTITY entityname \"&anotherElement;\">\n\n //Internal entities are supported\n // <!ENTITY entityname \"replacement text\">\n\n // Skip leading whitespace after <!ENTITY\n i = skipWhitespace(xmlData, i);\n\n // Read entity name\n let entityName = \"\";\n while (i < xmlData.length && !/\\s/.test(xmlData[i]) && xmlData[i] !== '\"' && xmlData[i] !== \"'\") {\n entityName += xmlData[i];\n i++;\n }\n validateEntityName(entityName);\n\n // Skip whitespace after entity name\n i = skipWhitespace(xmlData, i);\n\n // Check for unsupported constructs (external entities or parameter entities)\n if (xmlData.substring(i, i + 6).toUpperCase() === \"SYSTEM\") {\n throw new Error(\"External entities are not supported\");\n }else if (xmlData[i] === \"%\") {\n throw new Error(\"Parameter entities are not supported\");\n }\n\n // Read entity value (internal entity)\n let entityValue = \"\";\n [i, entityValue] = readIdentifierVal(xmlData, i, \"entity\");\n i--;\n return [entityName, entityValue, i ];\n}\n\nfunction readNotationExp(xmlData, i) {\n // Skip leading whitespace after <!NOTATION\n i = skipWhitespace(xmlData, i);\n\n // Read notation name\n let notationName = \"\";\n while (i < xmlData.length && !/\\s/.test(xmlData[i])) {\n notationName += xmlData[i];\n i++;\n }\n validateEntityName(notationName);\n\n // Skip whitespace after notation name\n i = skipWhitespace(xmlData, i);\n\n // Check identifier type (SYSTEM or PUBLIC)\n const identifierType = xmlData.substring(i, i + 6).toUpperCase();\n if (identifierType !== \"SYSTEM\" && identifierType !== \"PUBLIC\") {\n throw new Error(`Expected SYSTEM or PUBLIC, found \"${identifierType}\"`);\n }\n i += identifierType.length;\n\n // Skip whitespace after identifier type\n i = skipWhitespace(xmlData, i);\n\n // Read public identifier (if PUBLIC)\n let publicIdentifier = null;\n let systemIdentifier = null;\n\n if (identifierType === \"PUBLIC\") {\n [i, publicIdentifier ] = readIdentifierVal(xmlData, i, \"publicIdentifier\");\n\n // Skip whitespace after public identifier\n i = skipWhitespace(xmlData, i);\n\n // Optionally read system identifier\n if (xmlData[i] === '\"' || xmlData[i] === \"'\") {\n [i, systemIdentifier ] = readIdentifierVal(xmlData, i,\"systemIdentifier\");\n }\n } else if (identifierType === \"SYSTEM\") {\n // Read system identifier (mandatory for SYSTEM)\n [i, systemIdentifier ] = readIdentifierVal(xmlData, i, \"systemIdentifier\");\n\n if (!systemIdentifier) {\n throw new Error(\"Missing mandatory system identifier for SYSTEM notation\");\n }\n }\n \n return {notationName, publicIdentifier, systemIdentifier, index: --i};\n}\n\nfunction readIdentifierVal(xmlData, i, type) {\n let identifierVal = \"\";\n const startChar = xmlData[i];\n if (startChar !== '\"' && startChar !== \"'\") {\n throw new Error(`Expected quoted string, found \"${startChar}\"`);\n }\n i++;\n\n while (i < xmlData.length && xmlData[i] !== startChar) {\n identifierVal += xmlData[i];\n i++;\n }\n\n if (xmlData[i] !== startChar) {\n throw new Error(`Unterminated ${type} value`);\n }\n i++;\n return [i, identifierVal];\n}\n\nfunction readElementExp(xmlData, i) {\n // <!ELEMENT br EMPTY>\n // <!ELEMENT div ANY>\n // <!ELEMENT title (#PCDATA)>\n // <!ELEMENT book (title, author+)>\n // <!ELEMENT name (content-model)>\n \n // Skip leading whitespace after <!ELEMENT\n i = skipWhitespace(xmlData, i);\n\n // Read element name\n let elementName = \"\";\n while (i < xmlData.length && !/\\s/.test(xmlData[i])) {\n elementName += xmlData[i];\n i++;\n }\n\n // Validate element name\n if (!validateEntityName(elementName)) {\n throw new Error(`Invalid element name: \"${elementName}\"`);\n }\n\n // Skip whitespace after element name\n i = skipWhitespace(xmlData, i);\n let contentModel = \"\";\n // Expect '(' to start content model\n if(xmlData[i] === \"E\" && hasSeq(xmlData, \"MPTY\",i)) i+=4;\n else if(xmlData[i] === \"A\" && hasSeq(xmlData, \"NY\",i)) i+=2;\n else if (xmlData[i] === \"(\") {\n i++; // Move past '('\n\n // Read content model\n while (i < xmlData.length && xmlData[i] !== \")\") {\n contentModel += xmlData[i];\n i++;\n }\n if (xmlData[i] !== \")\") {\n throw new Error(\"Unterminated content model\");\n }\n\n }else{\n throw new Error(`Invalid Element Expression, found \"${xmlData[i]}\"`);\n }\n \n return {\n elementName,\n contentModel: contentModel.trim(),\n index: i\n };\n}\n\nfunction readAttlistExp(xmlData, i) {\n // Skip leading whitespace after <!ATTLIST\n i = skipWhitespace(xmlData, i);\n\n // Read element name\n let elementName = \"\";\n while (i < xmlData.length && !/\\s/.test(xmlData[i])) {\n elementName += xmlData[i];\n i++;\n }\n\n // Validate element name\n validateEntityName(elementName)\n\n // Skip whitespace after element name\n i = skipWhitespace(xmlData, i);\n\n // Read attribute name\n let attributeName = \"\";\n while (i < xmlData.length && !/\\s/.test(xmlData[i])) {\n attributeName += xmlData[i];\n i++;\n }\n\n // Validate attribute name\n if (!validateEntityName(attributeName)) {\n throw new Error(`Invalid attribute name: \"${attributeName}\"`);\n }\n\n // Skip whitespace after attribute name\n i = skipWhitespace(xmlData, i);\n\n // Read attribute type\n let attributeType = \"\";\n if (xmlData.substring(i, i + 8).toUpperCase() === \"NOTATION\") {\n attributeType = \"NOTATION\";\n i += 8; // Move past \"NOTATION\"\n\n // Skip whitespace after \"NOTATION\"\n i = skipWhitespace(xmlData, i);\n\n // Expect '(' to start the list of notations\n if (xmlData[i] !== \"(\") {\n throw new Error(`Expected '(', found \"${xmlData[i]}\"`);\n }\n i++; // Move past '('\n\n // Read the list of allowed notations\n let allowedNotations = [];\n while (i < xmlData.length && xmlData[i] !== \")\") {\n let notation = \"\";\n while (i < xmlData.length && xmlData[i] !== \"|\" && xmlData[i] !== \")\") {\n notation += xmlData[i];\n i++;\n }\n\n // Validate notation name\n notation = notation.trim();\n if (!validateEntityName(notation)) {\n throw new Error(`Invalid notation name: \"${notation}\"`);\n }\n\n allowedNotations.push(notation);\n\n // Skip '|' separator or exit loop\n if (xmlData[i] === \"|\") {\n i++; // Move past '|'\n i = skipWhitespace(xmlData, i); // Skip optional whitespace after '|'\n }\n }\n\n if (xmlData[i] !== \")\") {\n throw new Error(\"Unterminated list of notations\");\n }\n i++; // Move past ')'\n\n // Store the allowed notations as part of the attribute type\n attributeType += \" (\" + allowedNotations.join(\"|\") + \")\";\n } else {\n // Handle simple types (e.g., CDATA, ID, IDREF, etc.)\n while (i < xmlData.length && !/\\s/.test(xmlData[i])) {\n attributeType += xmlData[i];\n i++;\n }\n\n // Validate simple attribute type\n const validTypes = [\"CDATA\", \"ID\", \"IDREF\", \"IDREFS\", \"ENTITY\", \"ENTITIES\", \"NMTOKEN\", \"NMTOKENS\"];\n if (!validTypes.includes(attributeType.toUpperCase())) {\n throw new Error(`Invalid attribute type: \"${attributeType}\"`);\n }\n }\n\n // Skip whitespace after attribute type\n i = skipWhitespace(xmlData, i);\n\n // Read default value\n let defaultValue = \"\";\n if (xmlData.substring(i, i + 8).toUpperCase() === \"#REQUIRED\") {\n defaultValue = \"#REQUIRED\";\n i += 8;\n } else if (xmlData.substring(i, i + 7).toUpperCase() === \"#IMPLIED\") {\n defaultValue = \"#IMPLIED\";\n i += 7;\n } else {\n [i, defaultValue] = readIdentifierVal(xmlData, i, \"ATTLIST\");\n }\n\n return {\n elementName,\n attributeName,\n attributeType,\n defaultValue,\n index: i\n }\n}\n\nfunction hasSeq(data, seq,i){\n for(let j=0;j<seq.length;j++){\n if(seq[j]!==data[i+j+1]) return false;\n }\n return true;\n}\n\nfunction validateEntityName(name){\n if (isName(name))\n\treturn name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\n","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)([0-9]*(\\.[0-9]*)?)$/;\n// const octRegex = /^0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n \nconst consider = {\n hex : true,\n // oct: false,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true,\n //skipLike: /regex/\n};\n\nexport default function toNumber(str, options = {}){\n options = Object.assign({}, consider, options );\n if(!str || typeof str !== \"string\" ) return str;\n \n let trimmedStr = str.trim();\n \n if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if(str===\"0\") return 0;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return parse_int(trimmedStr, 16);\n // }else if (options.oct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n }else if (trimmedStr.search(/.+[eE].+/)!== -1) { //eNotation\n return resolveEnotation(str,trimmedStr,options);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n }else{\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n // +00.123 => [ , '+', '00', '.123', ..\n if(match){\n const sign = match[1] || \"\";\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000.\n str[leadingZeros.length+1] === \".\" \n : str[leadingZeros.length] === \".\";\n\n //trim ending zeros for floating number\n if(!options.leadingZeros //leading zeros are not allowed\n && (leadingZeros.length > 1 \n || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))){\n // 00, 00.3, +03.24, 03, 03.24\n return str;\n }\n else{//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const parsedStr = String(num);\n\n if( num === 0) return num;\n if(parsedStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n if(options.eNotation) return num;\n else return str;\n }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n if(parsedStr === \"0\") return num; //0.0\n else if(parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if( parsedStr === `${sign}${numTrimmedByZeros}`) return num;\n else return str;\n }\n \n let n = leadingZeros? numTrimmedByZeros : trimmedStr;\n if(leadingZeros){\n // -009 => -9\n return (n === parsedStr) || (sign+n === parsedStr) ? num : str\n }else {\n // +9\n return (n === parsedStr) || (n === sign+parsedStr) ? num : str\n }\n }\n }else{ //non-numeric string\n return str;\n }\n }\n}\n\nconst eNotationRegx = /^([-+])?(0*)(\\d*(\\.\\d*)?[eE][-\\+]?\\d+)$/;\nfunction resolveEnotation(str,trimmedStr,options){\n if(!options.eNotation) return str;\n const notation = trimmedStr.match(eNotationRegx); \n if(notation){\n let sign = notation[1] || \"\";\n const eChar = notation[3].indexOf(\"e\") === -1 ? \"E\" : \"e\";\n const leadingZeros = notation[2];\n const eAdjacentToLeadingZeros = sign ? // 0E.\n str[leadingZeros.length+1] === eChar \n : str[leadingZeros.length] === eChar;\n\n if(leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str;\n else if(leadingZeros.length === 1 \n && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)){\n return Number(trimmedStr);\n }else if(options.leadingZeros && !eAdjacentToLeadingZeros){ //accept with leading zeros\n //remove leading 0s\n trimmedStr = (notation[1] || \"\") + notation[3];\n return Number(trimmedStr);\n }else return str;\n }else{\n return str;\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n if(numStr && numStr.indexOf(\".\") !== -1){//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if(numStr === \".\") numStr = \"0\";\n else if(numStr[0] === \".\") numStr = \"0\"+numStr;\n else if(numStr[numStr.length-1] === \".\") numStr = numStr.substring(0,numStr.length-1);\n return numStr;\n }\n return numStr;\n}\n\nfunction parse_int(numStr, base){\n //polyfill\n if(parseInt) return parseInt(numStr, base);\n else if(Number.parseInt) return Number.parseInt(numStr, base);\n else if(window && window.parseInt) return window.parseInt(numStr, base);\n else throw new Error(\"parseInt, Number.parseInt, window.parseInt are not supported\")\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}","'use strict';\n///@ts-check\n\nimport {getAllMatches, isExist} from '../util.js';\nimport xmlNode from './xmlNode.js';\nimport readDocType from './DocTypeReader.js';\nimport toNumber from \"strnum\";\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\n\n// const regx =\n// '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n// .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nexport default class OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => String.fromCodePoint(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => String.fromCodePoint(Number.parseInt(str, 16)) },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue\n }\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if(aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);\n }\n let propIndex = 0\n if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n this.tagsNodeStack.pop();\n }else{\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath, i);\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if(val == undefined) val = \"\";\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n let tagName= result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n const startIndex = i;\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i = result.closeIndex;\n }\n //unpaired tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n \n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n this.addChild(currentNode, childNode, jPath, startIndex);\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath, startIndex);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath, startIndex);\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath, startIndex){\n // unset startIndex if not requested\n if (!this.options.captureMetaData) startIndex = undefined;\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if(result === false){\n } else if(typeof result === \"string\"){\n childNode.tagname = result\n currentNode.addChild(childNode, startIndex);\n }else{\n currentNode.addChild(childNode, startIndex);\n }\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = currentNode.child.length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true;\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n\n const rawTagName = tagName;\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n","'use strict';\n\nimport XmlNode from './xmlNode.js';\n\nconst METADATA_SYMBOL = XmlNode.getMetaDataSymbol();\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nexport default function prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n if (tagObj[METADATA_SYMBOL] !== undefined) {\n val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata\n }\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n \n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\n","import { buildOptions} from './OptionsBuilder.js';\nimport OrderedObjParser from './OrderedObjParser.js';\nimport prettify from './node2json.js';\nimport {validate} from \"../validator.js\";\nimport XmlNode from './xmlNode.js';\n\nexport default class XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData === \"string\"){\n }else if( xmlData.toString){\n xmlData = xmlData.toString();\n }else{\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n\n /**\n * Returns a Symbol that can be used to access the metadata\n * property on a node.\n * \n * If Symbol is not available in the environment, an ordinary property is used\n * and the name of the property is here returned.\n * \n * The XMLMetaData property is only present when `captureMetaData`\n * is true in the options.\n */\n static getMetaDataSymbol() {\n return XmlNode.getMetaDataSymbol();\n }\n}\n","import { WebDAVNamespace, WebDAVPropName, WebDAVResourceType } from './constants';\r\nimport { Stats } from './types';\r\nimport { WebDAVError } from './errors';\r\nimport { XMLParser } from 'fast-xml-parser'\r\n\r\n/**\r\n * 规范化路径,确保以 / 开头,不以 / 结尾(除非是根路径)\r\n * @param path 路径\r\n * @returns 规范化后的路径\r\n */\r\nexport function normalizePath(path: string): string {\r\n // 确保路径以 / 开头\r\n if (!path.startsWith('/')) {\r\n path = '/' + path;\r\n }\r\n // 合并多个连续的斜杠为一个\r\n path = path.replace(/\\/+/g, '/');\r\n // 如果不是根路径,则确保不以 / 结尾\r\n if (path.length > 1 && path.endsWith('/')) {\r\n path = path.slice(0, -1);\r\n }\r\n return path;\r\n}\r\n\r\n// /**\r\n// * 连接路径\r\n// * @param base 基础路径\r\n// * @param paths 要连接的路径\r\n// * @returns 连接后的路径\r\n// */\r\n// export function joinPaths(base: string, ...paths: string[]): string {\r\n// let result = base;\r\n \r\n// for (const path of paths) {\r\n// if (!path) continue;\r\n \r\n// if (result.endsWith('/')) {\r\n// result = result + (path.startsWith('/') ? path.slice(1) : path);\r\n// } else {\r\n// result = result + (path.startsWith('/') ? path : '/' + path);\r\n// }\r\n// }\r\n \r\n// return normalizePath(result);\r\n// }\r\n\r\n/**\r\n * 获取路径的父目录\r\n * @param path 路径\r\n * @returns 父目录路径\r\n */\r\nexport function getParentPath(path: string): string {\r\n path = normalizePath(path);\r\n \r\n // 根路径没有父目录\r\n if (path === '/') {\r\n return '/';\r\n }\r\n \r\n const lastSlashIndex = path.lastIndexOf('/');\r\n if (lastSlashIndex <= 0) {\r\n return '/';\r\n }\r\n \r\n return path.slice(0, lastSlashIndex) || '/';\r\n}\r\n\r\n/**\r\n * 获取路径的基本名称(最后一个部分)\r\n * @param path 路径\r\n * @returns 基本名称\r\n */\r\nexport function getBasename(path: string): string {\r\n path = normalizePath(path);\r\n \r\n // 根路径的基本名称为空字符串\r\n if (path === '/') {\r\n return '';\r\n }\r\n \r\n const lastSlashIndex = path.lastIndexOf('/');\r\n return path.slice(lastSlashIndex + 1);\r\n}\r\n\r\n/**\r\n * 创建基本认证头\r\n * @param username 用户名\r\n * @param password 密码\r\n * @returns 基本认证头\r\n */\r\nexport function createBasicAuthHeader(username: string, password: string): string {\r\n // 在浏览器和 Node.js 环境中都可用的 btoa 实现\r\n const btoa = (str: string) => {\r\n if (typeof window !== 'undefined' && window.btoa) {\r\n return window.btoa(str);\r\n } else if (typeof Buffer !== 'undefined') {\r\n return Buffer.from(str).toString('base64');\r\n } else {\r\n throw new Error('Base64 encoding not available');\r\n }\r\n };\r\n \r\n return `Basic ${btoa(`${username}:${password}`)}`;\r\n}\r\n\r\n/**\r\n * 解析 WebDAV 响应中的属性\r\n * @param xml XML 文档\r\n * @returns 解析后的属性对象\r\n */\r\nexport function parseWebDAVProperties(xml: Document): Record<string, any> {\r\n const result: Record<string, any> = {};\r\n \r\n // 查找所有 prop 元素\r\n const propElements = xml.getElementsByTagNameNS(WebDAVNamespace.DAV, 'prop');\r\n \r\n for (let i = 0; i < propElements.length; i++) {\r\n const propElement = propElements[i];\r\n \r\n // 遍历 prop 元素的子元素\r\n for (let j = 0; j < propElement.childNodes.length; j++) {\r\n const childNode = propElement.childNodes[j];\r\n \r\n if (childNode.nodeType === Node.ELEMENT_NODE) {\r\n const element = childNode as Element;\r\n const localName = element.localName;\r\n const namespace = element.namespaceURI;\r\n \r\n // 根据属性类型进行特殊处理\r\n if (localName === WebDAVPropName.RESOURCE_TYPE) {\r\n // 资源类型\r\n if (element.getElementsByTagNameNS(WebDAVNamespace.DAV, 'collection').length > 0) {\r\n result.resourceType = WebDAVResourceType.DIRECTORY;\r\n } else {\r\n result.resourceType = WebDAVResourceType.FILE;\r\n }\r\n } else if (localName === WebDAVPropName.GET_CONTENT_LENGTH) {\r\n // 内容长度\r\n result.size = parseInt(element.textContent || '0', 10);\r\n } else if (localName === WebDAVPropName.GET_LAST_MODIFIED) {\r\n // 最后修改时间\r\n result.lastModified = new Date(element.textContent || '');\r\n } else if (localName === WebDAVPropName.CREATION_DATE) {\r\n // 创建时间\r\n result.createdAt = new Date(element.textContent || '');\r\n } else if (localName === WebDAVPropName.DISPLAY_NAME) {\r\n // 显示名称\r\n result.displayName = element.textContent || '';\r\n } else if (localName === WebDAVPropName.GET_CONTENT_TYPE) {\r\n // 内容类型\r\n result.mimeType = element.textContent || '';\r\n } else if (localName === WebDAVPropName.ETAG) {\r\n // ETag\r\n result.etag = element.textContent || '';\r\n } else {\r\n // 其他属性\r\n const key = `${namespace || ''}:${localName}`;\r\n result[key] = element.textContent || '';\r\n }\r\n }\r\n }\r\n }\r\n \r\n return result;\r\n}\r\n\r\n/**\r\n * 解析 WebDAV 多状态响应\r\n * @param xml XML 文档\r\n * @returns 解析后的响应数组\r\n */\r\nexport function parseMultiStatus(xml: Document): Array<{\r\n href: string;\r\n status?: string;\r\n statusCode?: number;\r\n properties: Record<string, any>;\r\n}> {\r\n const result: Array<{\r\n href: string;\r\n status?: string;\r\n statusCode?: number;\r\n properties: Record<string, any>;\r\n }> = [];\r\n \r\n // 查找所有 response 元素\r\n const responseElements = xml.getElementsByTagNameNS(WebDAVNamespace.DAV, 'response');\r\n \r\n for (let i = 0; i < responseElements.length; i++) {\r\n const responseElement = responseElements[i];\r\n \r\n // 获取 href\r\n const hrefElement = responseElement.getElementsByTagNameNS(WebDAVNamespace.DAV, 'href')[0];\r\n const href = hrefElement ? decodeURIComponent(hrefElement.textContent || '') : '';\r\n \r\n // 获取状态\r\n const statusElement = responseElement.getElementsByTagNameNS(WebDAVNamespace.DAV, 'status')[0];\r\n const status = statusElement ? statusElement.textContent || '' : undefined;\r\n \r\n // 解析状态码\r\n let statusCode: number | undefined;\r\n if (status) {\r\n const match = status.match(/HTTP\\/\\d+\\.\\d+\\s+(\\d+)/);\r\n if (match) {\r\n statusCode = parseInt(match[1], 10);\r\n }\r\n }\r\n \r\n // 解析属性\r\n const properties = parseWebDAVProperties(responseElement as unknown as Document);\r\n \r\n result.push({\r\n href,\r\n status,\r\n statusCode,\r\n properties,\r\n });\r\n }\r\n \r\n return result;\r\n}\r\n\r\n/**\r\n * 创建 PROPFIND 请求体\r\n * @param props 要查询的属性\r\n * @returns XML 字符串\r\n */\r\nexport function createPropfindXml(props: string[] = []): string {\r\n if (props.length === 0) {\r\n // 查询所有属性\r\n return `<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<d:propfind xmlns:d=\"${WebDAVNamespace.DAV}\">\r\n <d:allprop/>\r\n</d:propfind>`;\r\n } else {\r\n // 查询指定属性\r\n const propXml = props.map(prop => `<d:${prop}/>`).join('');\r\n \r\n return `<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<d:propfind xmlns:d=\"${WebDAVNamespace.DAV}\">\r\n <d:prop>\r\n ${propXml}\r\n </d:prop>\r\n</d:propfind>`;\r\n }\r\n}\r\n\r\n/**\r\n * 创建 PROPPATCH 请求体\r\n * @param props 要设置的属性\r\n * @returns XML 字符串\r\n */\r\nexport function createProppatchXml(props: Record<string, string>): string {\r\n const propXml = Object.entries(props)\r\n .map(([key, value]) => `<d:${key}>${value}</d:${key}>`)\r\n .join('');\r\n \r\n return `<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<d:propertyupdate xmlns:d=\"${WebDAVNamespace.DAV}\">\r\n <d:set>\r\n <d:prop>\r\n ${propXml}\r\n </d:prop>\r\n </d:set>\r\n</d:propertyupdate>`;\r\n}\r\n\r\n/**\r\n * 将 WebDAV 属性转换为 Stats 对象\r\n * @param href 资源路径\r\n * @param properties 属性\r\n * @returns Stats 对象\r\n */\r\nexport function propertiesToStats(href: string, properties: Record<string, any>): Stats {\r\n const name = getBasename(href);\r\n const isDirectory = properties.resourceType === WebDAVResourceType.DIRECTORY;\r\n \r\n return {\r\n isDirectory,\r\n isFile: !isDirectory,\r\n size: properties.size || 0,\r\n createdAt: properties.createdAt || new Date(),\r\n lastModified: properties.modifiedAt || new Date(),\r\n name,\r\n path: href,\r\n mimeType: properties.mimeType,\r\n etag: properties.etag,\r\n ...properties,\r\n };\r\n}\r\n\r\n/**\r\n * 解析 XML 字符串\r\n * @param xmlString XML 字符串\r\n * @returns XML 文档\r\n */\r\nexport function parseXml(xmlString: string): Document {\r\n if (typeof DOMParser !== 'undefined') {\r\n // 浏览器环境\r\n const parser = new DOMParser();\r\n return parser.parseFromString(xmlString, 'application/xml');\r\n } else if (typeof window === 'undefined') {\r\n // Node.js 环境\r\n try {\r\n // 尝试使用 xmldom\r\n const { DOMParser } = require('xmldom');\r\n return new DOMParser().parseFromString(xmlString, 'application/xml');\r\n } catch (error) {\r\n const errorMessage = error instanceof Error ? error.message : String(error);\r\n throw new WebDAVError(`无法解析 XML: ${errorMessage}。在 Node.js 环境中,请安装 xmldom 包。`);\r\n }\r\n } else {\r\n throw new WebDAVError('无法解析 XML。未找到 XML 解析器。');\r\n }\r\n}\r\n\r\n/**\r\n * 检查响应是否成功\r\n * @param response 响应对象\r\n * @returns 是否成功\r\n */\r\nexport function isSuccessStatus(status: number): boolean {\r\n return status >= 200 && status < 300;\r\n}\r\n\r\n/**\r\n * 从 URL 中提取路径\r\n * @param url URL\r\n * @param baseUrl 基础 URL\r\n * @returns 路径\r\n */\r\nexport function extractPathFromUrl(url: string, baseUrl: string): string {\r\n // 移除基础 URL\r\n if (url.startsWith(baseUrl)) {\r\n url = url.slice(baseUrl.length);\r\n }\r\n \r\n // 解码 URL\r\n url = decodeURIComponent(url);\r\n \r\n // 规范化路径\r\n return normalizePath(url);\r\n}\r\n\r\n/**\r\n * 创建超时 Promise\r\n * @param ms 超时时间(毫秒)\r\n * @returns Promise\r\n */\r\nexport function createTimeoutPromise(ms: number): Promise<never> {\r\n return new Promise((_, reject) => {\r\n setTimeout(() => {\r\n reject(new WebDAVError(`请求超时(${ms}ms)`));\r\n }, ms);\r\n });\r\n}\r\n\r\n/**\r\n * 创建 AbortController\r\n * @returns AbortController 或 undefined\r\n */\r\nexport function createAbortController(): AbortController | undefined {\r\n if (typeof AbortController !== 'undefined') {\r\n return new AbortController();\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * 检查是否支持 Blob\r\n * @returns 是否支持\r\n */\r\nexport function isBlobSupported(): boolean {\r\n return typeof Blob !== 'undefined';\r\n}\r\n\r\n/**\r\n * 检查是否支持 ArrayBuffer\r\n * @returns 是否支持\r\n */\r\nexport function isArrayBufferSupported(): boolean {\r\n return typeof ArrayBuffer !== 'undefined';\r\n}\r\n\r\n/**\r\n * 将数据转换为 ArrayBuffer\r\n * @param data 数据\r\n * @returns ArrayBuffer\r\n */\r\nexport async function toArrayBuffer(data: string | ArrayBuffer | Blob): Promise<ArrayBuffer> {\r\n if (data instanceof ArrayBuffer) {\r\n return data;\r\n } else if (typeof Blob !== 'undefined' && data instanceof Blob) {\r\n return await data.arrayBuffer();\r\n } else if (typeof data === 'string') {\r\n if (typeof TextEncoder !== 'undefined') {\r\n return new TextEncoder().encode(data).buffer;\r\n } else if (typeof Buffer !== 'undefined') {\r\n return Buffer.from(data).buffer;\r\n } else {\r\n throw new WebDAVError('无法将字符串转换为 ArrayBuffer');\r\n }\r\n } else {\r\n throw new WebDAVError('不支持的数据类型');\r\n }\r\n}\r\n\r\n/**\r\n * 将 ArrayBuffer 转换为字符串\r\n * @param buffer ArrayBuffer\r\n * @param encoding 编码\r\n * @returns 字符串\r\n */\r\nexport function arrayBufferToString(buffer: ArrayBuffer, encoding = 'utf-8'): string {\r\n if (typeof TextDecoder !== 'undefined') {\r\n // 浏览器环境\r\n const decoder = new TextDecoder(encoding);\r\n return decoder.decode(buffer);\r\n } else if (typeof Buffer !== 'undefined') {\r\n // Node.js 环境\r\n return Buffer.from(buffer).toString(encoding as BufferEncoding);\r\n } else {\r\n throw new WebDAVError('无法将 ArrayBuffer 转换为字符串,当前环境不支持 TextDecoder 或 Buffer');\r\n }\r\n}\r\n\r\n/**\r\n * 根据文件名获取Content-Type\r\n * @param filename 文件名\r\n * @returns Content-Type字符串\r\n */\r\nexport function getContentType(filename: string): string {\r\n const ext = filename.split('.').pop()?.toLowerCase();\r\n switch (ext) {\r\n case 'txt': return 'text/plain';\r\n case 'html': case 'htm': return 'text/html';\r\n case 'json': return 'application/json';\r\n case 'xml': return 'application/xml';\r\n case 'jpg': case 'jpeg': return 'image/jpeg';\r\n case 'png': return 'image/png';\r\n case 'gif': return 'image/gif';\r\n case 'pdf': return 'application/pdf';\r\n case 'csv': return 'text/csv';\r\n case 'js': return 'application/javascript';\r\n case 'css': return 'text/css';\r\n case 'zip': return 'application/zip';\r\n default: return 'application/octet-stream';\r\n }\r\n}\r\n\r\n// 获取路径的父目录\r\nexport function getDirFromPath(path: string): string {\r\n if (!path || path === '/') return '/';\r\n const normalized = path.replace(/\\/+$/, '');\r\n const idx = normalized.lastIndexOf('/');\r\n if (idx <= 0) return '/';\r\n return normalized.slice(0, idx) || '/';\r\n}\r\n\r\n/**\r\n * 解析WebDAV PROPFIND XML响应,返回文件/目录信息数组\r\n * @param xml XML字符串\r\n * @param basePath 基础路径\r\n * @returns Stats[]\r\n */\r\n\r\nexport function parseWebDAVXml(xml: string, basePath: string): Stats[] {\r\n // 简单实现,实际可用 xml2js、fast-xml-parser 等库解析\r\n // 这里只做最基础的兼容,建议根据实际WebDAV响应完善\r\n const decode = require('he').decode;\r\n const result: Stats[] = [];\r\n if (!xml) return result;\r\n const parser = new XMLParser({\r\n ignoreAttributes: false,\r\n attributeNamePrefix: \"@_\",\r\n trimValues: true\r\n });\r\n const json = parser.parse(xml);\r\n // 兼容不同大小写的 multistatus/response 属性\r\n function getCaseInsensitive(obj: unknown, ...keys: string[]): unknown {\r\n if (!obj) return undefined;\r\n for (const key of keys) {\r\n if ((obj as Record<string, unknown>)[key] !== undefined) return (obj as Record<string, unknown>)[key];\r\n const found = Object.keys(obj).find(k => k.toLowerCase() === key.toLowerCase());\r\n if (found) return (obj as Record<string, unknown>)[found];\r\n }\r\n return undefined;\r\n }\r\n const multistatus = getCaseInsensitive(json, 'd:multistatus', 'multistatus');\r\n const responses = getCaseInsensitive(multistatus, 'd:response', 'response') || [];\r\n const arr = Array.isArray(responses) ? responses : [responses];\r\n const isBasePathFile = basePath && !basePath.endsWith('/');\r\n for (const item of arr) {\r\n const href = decode(getCaseInsensitive(item, 'd:href', 'href') || '');\r\n const propstat = getCaseInsensitive(item, 'd:propstat', 'propstat', 'd:prop', 'prop') || {};\r\n const prop = getCaseInsensitive(propstat, 'd:prop', 'prop') || propstat;\r\n const resourcetype = getCaseInsensitive(prop, 'd:resourcetype', 'resourcetype');\r\n const collection = resourcetype && getCaseInsensitive(resourcetype, 'd:collection', 'collection');\r\n const isDirectory = !!(resourcetype && collection !== undefined);\r\n\r\n // 如果basePath是文件,则直接取文件名,否则去除basePath前缀\r\n let name: string;\r\n if (isBasePathFile) {\r\n name = href.split('/').filter(Boolean).pop() || '';\r\n } else {\r\n name = href.replace(basePath, '').replace(/^\\//, '').replace(/\\/$/, '');\r\n }\r\n if (!name) continue;\r\n result.push({\r\n path: href,\r\n name,\r\n isDirectory,\r\n isFile: !isDirectory,\r\n size: parseInt(String(getCaseInsensitive(prop, 'd:getcontentlength', 'getcontentlength') ?? '0'), 10),\r\n lastModified: getCaseInsensitive(prop, 'd:getlastmodified', 'getlastmodified')\r\n ? new Date(String(getCaseInsensitive(prop, 'd:getlastmodified', 'getlastmodified')))\r\n : undefined,\r\n });\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * 拼接URL路径,自动处理斜杠\r\n * @param base 基础URL\r\n * @param paths 追加的路径\r\n * @returns 拼接后的URL\r\n */\r\nexport function joinUrl(base: string, ...paths: string[]): string {\r\n let url = base;\r\n let basePath = '';\r\n try {\r\n const u = new URL(base);\r\n basePath = u.pathname.replace(/\\/+$/, '');\r\n } catch {\r\n basePath = base.startsWith('/') ? base.replace(/\\/+$/, '') : '';\r\n }\r\n // 只处理第一个 path,只去除与 basePath 第一部分相同的部分\r\n if (paths.length > 0 && basePath) {\r\n let p = paths[0];\r\n if (p) {\r\n // 取 basePath 的第一部分\r\n const baseFirst = basePath.split('/').filter(Boolean)[0];\r\n const pParts = p.split('/').filter(Boolean);\r\n if (baseFirst && pParts[0] === baseFirst) {\r\n pParts.shift();\r\n p = pParts.join('/');\r\n if (p && !p.startsWith('/')) p = '/' + p;\r\n paths[0] = p;\r\n }\r\n }\r\n }\r\n for (const p of paths) {\r\n if (!p) continue;\r\n if (!url.endsWith('/')) url += '/';\r\n url += p.startsWith('/') ? p.slice(1) : p;\r\n }\r\n url = url.replace(/([^:]\\/)\\/+/g, '$1');\r\n return url;\r\n}","/**\r\n * WebDAV文件系统实现\r\n */\r\n\r\nimport {\r\n WebDAVOptions,\r\n Stats,\r\n ReadFileOptions,\r\n WriteFileOptions,\r\n ReaddirOptions,\r\n MkdirOptions,\r\n WebDAVResult,\r\n} from './types';\r\n\r\nimport { WebDAVFileSystem } from './WebDAVFileSystem';\r\n\r\nimport {\r\n WebDAVError,\r\n NotFoundError,\r\n AuthenticationError,\r\n AuthorizationError,\r\n FileExistsError,\r\n NetworkError,\r\n TimeoutError,\r\n ArgumentError,\r\n ServerError,\r\n} from './errors';\r\n\r\nimport {\r\n normalizePath,\r\n joinUrl,\r\n getDirFromPath,\r\n parseWebDAVXml,\r\n createBasicAuthHeader,\r\n getContentType,\r\n} from './utils';\r\n\r\n/**\r\n * WebDAV文件系统实现类\r\n */\r\nexport class WebDAVFS implements WebDAVFileSystem {\r\n private baseUrl: string;\r\n private auth?: { username: string; password: string };\r\n private timeout: number;\r\n private headers: Record<string, string>;\r\n\r\n /**\r\n * 创建WebDAV文件系统实例\r\n * @param options WebDAV选项\r\n */\r\n constructor(options: WebDAVOptions) {\r\n if (!options.baseUrl) {\r\n throw new ArgumentError('必须提供baseUrl');\r\n }\r\n\r\n this.baseUrl = options.baseUrl.endsWith('/') \r\n ? options.baseUrl.slice(0, -1) \r\n : options.baseUrl;\r\n if (options.username && options.password) {\r\n this.auth = { username: options.username, password: options.password };\r\n } else {\r\n this.auth = undefined;\r\n }\r\n this.timeout = options.timeout || 30000;\r\n this.headers = options.headers || {};\r\n }\r\n\r\n /**\r\n * 创建请求头\r\n * @param customHeaders 自定义请求头\r\n * @returns 合并后的请求头\r\n */\r\n private createHeaders(customHeaders?: Record<string, string>): Record<string, string> {\r\n const headers: Record<string, string> = {\r\n ...this.headers,\r\n ...customHeaders,\r\n };\r\n\r\n // 添加认证头\r\n if (this.auth) {\r\n headers['Authorization'] = createBasicAuthHeader(this.auth.username, this.auth.password);\r\n }\r\n\r\n return headers;\r\n }\r\n\r\n /**\r\n * 执行HTTP请求\r\n * @param method HTTP方法\r\n * @param path 请求路径\r\n * @param options 请求选项\r\n * @returns 响应对象\r\n */\r\n private async request(\r\n method: string,\r\n path: string,\r\n options: {\r\n headers?: Record<string, string>;\r\n body?: string | ArrayBuffer | Blob | Buffer;\r\n responseType?: 'text' | 'arraybuffer' | 'blob' | 'json';\r\n } = {}\r\n ): Promise<{ data: any; status: number; headers: Record<string, string> }> {\r\n const normalizedPath = normalizePath(path);\r\n const url = joinUrl(this.baseUrl, normalizedPath);\r\n const headers = this.createHeaders(options.headers);\r\n \r\n // 创建AbortController用于超时处理\r\n const controller = typeof AbortController !== 'undefined' ? new AbortController() : undefined;\r\n const timeoutId = controller ? setTimeout(() => controller.abort(), this.timeout) : undefined;\r\n \r\n try {\r\n // 使用fetch API(浏览器和现代Node.js都支持)\r\n const response = await fetch(url, {\r\n method,\r\n headers,\r\n body: options.body,\r\n signal: controller?.signal,\r\n credentials: 'include',\r\n });\r\n \r\n // 清除超时\r\n if (timeoutId) clearTimeout(timeoutId);\r\n \r\n // 提取响应头\r\n const responseHeaders: Record<string, string> = {};\r\n response.headers.forEach((value, key) => {\r\n responseHeaders[key.toLowerCase()] = value;\r\n });\r\n \r\n // 根据请求的responseType处理响应数据\r\n let data;\r\n if (options.responseType === 'arraybuffer') {\r\n data = await response.arrayBuffer();\r\n } else if (options.responseType === 'blob') {\r\n data = await response.blob();\r\n } else if (options.responseType === 'json') {\r\n data = await response.json();\r\n } else {\r\n data = await response.text();\r\n }\r\n \r\n return {\r\n data,\r\n status: response.status,\r\n headers: responseHeaders,\r\n };\r\n } catch (error: unknown) {\r\n // 清除超时\r\n if (timeoutId) clearTimeout(timeoutId);\r\n \r\n // 处理错误\r\n if (error instanceof Error && error.name === 'AbortError') {\r\n throw new TimeoutError(`请求超时: ${url}`);\r\n } else {\r\n const errorMessage = error instanceof Error ? error.message : String(error);\r\n throw new NetworkError(error instanceof Error ? error : new Error(String(error)), `网络错误: ${errorMessage}`);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 处理响应错误\r\n * @param status HTTP状态码\r\n * @param path 请求路径\r\n * @param error 原始错误\r\n */\r\n private handleResponseError(status: number, path: string, error?: Error): never {\r\n switch (status) {\r\n case 401:\r\n throw new AuthenticationError(`认证失败: ${path}`);\r\n case 403:\r\n throw new AuthorizationError(`无权限访问: ${path}`);\r\n case 404:\r\n throw new NotFoundError(`资源不存在: ${path}`);\r\n case 409:\r\n throw new FileExistsError(`资源已存在: ${path}`);\r\n default:\r\n throw new ServerError(`服务器错误 (${status}): ${path}`, status);\r\n }\r\n }\r\n\r\n /**\r\n * 读取文件内容\r\n * @param path 文件路径\r\n * @param options 读取选项\r\n * @returns 文件内容\r\n */\r\n async readFile(path: string, options: ReadFileOptions = {}): Promise<Buffer | string> {\r\n const normalizedPath = normalizePath(path);\r\n \r\n try {\r\n const response = await this.request('GET', normalizedPath, {\r\n headers: options.headers,\r\n responseType: 'arraybuffer',\r\n });\r\n \r\n if (response.status >= 400) {\r\n this.handleResponseError(response.status, normalizedPath);\r\n }\r\n \r\n // 创建Buffer\r\n const arrayBuffer = response.data as ArrayBuffer;\r\n const uint8Array = new Uint8Array(arrayBuffer);\r\n const buffer = Buffer.from(uint8Array);\r\n\r\n // 根据编码返回字符串或Buffer\r\n if (options.encoding) {\r\n return buffer.toString(options.encoding as BufferEncoding);\r\n } else {\r\n return buffer;\r\n }\r\n } catch (error: unknown) {\r\n if (error instanceof WebDAVError) {\r\n throw error;\r\n }\r\n throw new WebDAVError(`读取文件失败: ${normalizedPath}`, undefined, error);\r\n }\r\n }\r\n\r\n /**\r\n * 写入文件内容\r\n * @param path 文件路径\r\n * @param data 文件内容\r\n * @param options 写入选项\r\n * @returns 操作结果\r\n */\r\n async writeFile(\r\n path: string,\r\n data: Buffer | string,\r\n options: WriteFileOptions = {}\r\n ): Promise<WebDAVResult> {\r\n const normalizedPath = normalizePath(path);\r\n const getFilenameFromPath = (p: string) => {\r\n const parts = p.split('/');\r\n return parts[parts.length - 1] || '';\r\n };\r\n const contentType = options.contentType || getContentType(getFilenameFromPath(normalizedPath));\r\n // 检查文件是否存在(如果不允许覆盖)\r\n if (options.overwrite === false) {\r\n const exists = await this.exists(normalizedPath);\r\n if (exists) {\r\n throw new FileExistsError(normalizedPath);\r\n }\r\n }\r\n \r\n // 准备请求头\r\n const headers = {\r\n 'Content-Type': contentType,\r\n };\r\n \r\n try {\r\n const response = await this.request('PUT', normalizedPath, {\r\n headers,\r\n body: data,\r\n });\r\n \r\n if (response.status >= 400) {\r\n this.handleResponseError(response.status, normalizedPath);\r\n }\r\n \r\n return {\r\n success: response.status >= 200 && response.status < 300,\r\n statusCode: response.status,\r\n };\r\n } catch (error: unknown) {\r\n if (error instanceof WebDAVError) {\r\n throw error;\r\n }\r\n throw new WebDAVError(`写入文件失败: ${normalizedPath}`);\r\n }\r\n }\r\n\r\n /**\r\n * 删除文件\r\n * @param path 文件路径\r\n * @returns 操作结果\r\n */\r\n async deleteFile(path: string): Promise<WebDAVResult> {\r\n const normalizedPath = normalizePath(path);\r\n \r\n try {\r\n // 确保是文件而不是目录\r\n const stat = await this.stat(normalizedPath);\r\n if (stat.isDirectory) {\r\n throw new ArgumentError(`路径指向一个目录,请使用rmdir方法: ${normalizedPath}`);\r\n }\r\n \r\n const response = await this.request('DELETE', normalizedPath);\r\n \r\n if (response.status >= 400) {\r\n this.handleResponseError(response.status, normalizedPath);\r\n }\r\n \r\n return {\r\n success: response.status >= 200 && response.status < 300,\r\n statusCode: response.status,\r\n };\r\n } catch (error: unknown) {\r\n if (error instanceof WebDAVError) {\r\n throw error;\r\n }\r\n throw new WebDAVError(`删除文件失败: ${normalizedPath}`);\r\n }\r\n }\r\n\r\n /**\r\n * 读取目录内容\r\n * @param path 目录路径\r\n * @param options 读取选项\r\n * @returns 文件统计信息数组\r\n */\r\n async readDir(path: string, options: ReaddirOptions = {}): Promise<Stats[]> {\r\n const normalizedPath = normalizePath(path);\r\n \r\n try {\r\n // 准备PROPFIND请求\r\n const headers = {\r\n 'Depth': options.recursive ? 'infinity' : '1',\r\n 'Content-Type': 'application/xml',\r\n };\r\n \r\n const response = await this.request('PROPFIND', normalizedPath, {\r\n headers,\r\n });\r\n \r\n if (response.status >= 400) {\r\n this.handleResponseError(response.status, normalizedPath);\r\n }\r\n \r\n // 解析XML响应\r\n const files = parseWebDAVXml(response.data, normalizedPath);\r\n \r\n // 过滤结果\r\n const result = files.filter(file => {\r\n // 排除当前目录\r\n if (file.path === normalizedPath) {\r\n return false;\r\n }\r\n \r\n // 处理隐藏文件\r\n if (!options.includeHidden && file.name.startsWith('.')) {\r\n return false;\r\n }\r\n \r\n return true;\r\n });\r\n \r\n return result;\r\n } catch (error: unknown) {\r\n if (error instanceof WebDAVError) {\r\n throw error;\r\n }\r\n throw new WebDAVError(`读取目录失败: ${normalizedPath}`);\r\n }\r\n }\r\n\r\n /**\r\n * 创建目录\r\n * @param path 目录路径\r\n * @param options 创建选项\r\n * @returns 操作结果\r\n */\r\n async mkdir(path: string, options: MkdirOptions = {}): Promise<void> {\r\n const normalizedPath = normalizePath(path);\r\n \r\n try {\r\n // 检查目录是否已存在\r\n try {\r\n const stat = await this.stat(normalizedPath);\r\n if (stat.isDirectory) {\r\n return; // 目录已存在,视为成功\r\n }\r\n throw new FileExistsError(normalizedPath); // 路径存在但不是目录\r\n } catch (error) {\r\n if (!(error instanceof NotFoundError)) {\r\n throw error;\r\n }\r\n // 目录不存在,继续创建\r\n }\r\n \r\n // 如果需要递归创建父目录\r\n if (options.recursive !== false) {\r\n const parentDir = getDirFromPath(normalizedPath);\r\n if (parentDir !== '/' && parentDir !== normalizedPath) {\r\n try {\r\n await this.stat(parentDir);\r\n } catch (error) {\r\n if (error instanceof NotFoundError) {\r\n // 递归创建父目录\r\n await this.mkdir(parentDir, options);\r\n } else {\r\n throw error;\r\n }\r\n }\r\n }\r\n }\r\n \r\n const response = await this.request('MKCOL', normalizedPath);\r\n \r\n if (response.status >= 400) {\r\n this.handleResponseError(response.status, normalizedPath);\r\n }\r\n \r\n return;\r\n } catch (error: unknown) {\r\n if (error instanceof WebDAVError) {\r\n throw error;\r\n }\r\n throw new WebDAVError(`创建目录失败: ${normalizedPath}`);\r\n }\r\n }\r\n\r\n /**\r\n * 删除文件或目录,行为类似于 Node.js 的 fs.rm\r\n * @param path 路径\r\n * @param options { recursive?: boolean, force?: boolean }\r\n */\r\n async rm(path: string, options?: { recursive?: boolean, force?: boolean }) {\r\n const { recursive = false, force = false } = options || {};\r\n try {\r\n const stat = await this.stat(path);\r\n if (stat.isDirectory) {\r\n if (recursive) {\r\n // 递归删除目录内容\r\n const files = await this.readDir(path);\r\n for (const file of files) {\r\n const childPath = path.replace(/\\/$/, '') + '/' + file.name;\r\n await this.rm(childPath, { recursive: true, force });\r\n }\r\n } else {\r\n // 非递归时,目录必须为空\r\n const files = await this.readDir(path);\r\n if (files.length > 0) {\r\n throw new WebDAVError(`Directory not empty: ${path}`);\r\n }\r\n }\r\n }\r\n // 删除文件或空目录\r\n await this._delete(path);\r\n } catch (err: unknown) {\r\n if (force && (\r\n (err instanceof Error && 'code' in err && err.code === 'ENOENT') || \r\n (err instanceof Error && 'status' in err && err.status === 404)\r\n )) {\r\n // force=true 时忽略不存在\r\n return;\r\n }\r\n throw err;\r\n }\r\n }\r\n\r\n /**\r\n * 兼容旧的 rmdir 方法,内部重定向到 rm\r\n * @deprecated 请使用 rm\r\n */\r\n async rmdir(path: string, options?: boolean | { recursive?: boolean, force?: boolean }) {\r\n // 兼容 boolean 递归参数\r\n let opts: { recursive?: boolean, force?: boolean } = {};\r\n if (typeof options === 'boolean') {\r\n opts.recursive = options;\r\n } else if (typeof options === 'object' && options !== null) {\r\n opts = options;\r\n }\r\n return this.rm(path, opts);\r\n }\r\n\r\n /**\r\n * 删除文件或目录\r\n * @param path 文件或目录路径\r\n * @returns 操作结果\r\n */\r\n private async _delete(path: string) {\r\n // 实现 WebDAV DELETE 请求\r\n const normalizedPath = normalizePath(path);\r\n \r\n try {\r\n const response = await this.request('DELETE', normalizedPath);\r\n \r\n if (response.status >= 400) {\r\n this.handleResponseError(response.status, normalizedPath);\r\n }\r\n \r\n return {\r\n success: response.status >= 200 && response.status < 300,\r\n statusCode: response.status,\r\n };\r\n } catch (error: unknown) {\r\n if (error instanceof WebDAVError) {\r\n throw error;\r\n }\r\n throw new WebDAVError(`删除失败: ${normalizedPath}`, undefined, error);\r\n }\r\n }\r\n\r\n /**\r\n * 获取文件或目录的统计信息\r\n * @param path 文件或目录路径\r\n * @returns 文件统计信息\r\n */\r\n async stat(path: string): Promise<Stats> {\r\n const normalizedPath = normalizePath(path);\r\n \r\n try {\r\n // 准备PROPFIND请求\r\n const headers = {\r\n 'Depth': '0',\r\n 'Content-Type': 'application/xml',\r\n };\r\n \r\n const response = await this.request('PROPFIND', normalizedPath, {\r\n headers,\r\n });\r\n \r\n if (response.status === 404) {\r\n throw new NotFoundError(normalizedPath);\r\n } else if (response.status >= 400) {\r\n this.handleResponseError(response.status, normalizedPath);\r\n }\r\n \r\n // 解析XML响应\r\n const files = parseWebDAVXml(response.data, normalizedPath);\r\n \r\n if (files.length === 0) {\r\n throw new NotFoundError(normalizedPath);\r\n }\r\n \r\n const stat = files[0];\r\n \r\n return stat;\r\n } catch (error: unknown) {\r\n if (error instanceof WebDAVError) {\r\n throw error;\r\n }\r\n throw new WebDAVError(`获取文件信息失败: ${normalizedPath}`, undefined, error);\r\n }\r\n }\r\n\r\n /**\r\n * 检查文件或目录是否存在\r\n * @param path 文件或目录路径\r\n * @returns 是否存在\r\n */\r\n async exists(path: string): Promise<boolean> {\r\n try {\r\n await this.stat(path);\r\n return true;\r\n } catch (error) {\r\n if (error instanceof NotFoundError) {\r\n return false;\r\n }\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * 复制文件或目录\r\n * @param source 源路径\r\n * @param destination 目标路径\r\n * @param overwrite 是否覆盖已存在的文件\r\n * @returns 操作结果\r\n */\r\n async copy(source: string, destination: string, overwrite = true): Promise<WebDAVResult> {\r\n const normalizedSource = normalizePath(source);\r\n const normalizedDestination = normalizePath(destination);\r\n \r\n try {\r\n // 检查源文件是否存在\r\n await this.stat(normalizedSource);\r\n \r\n // 检查目标文件是否存在(如果不允许覆盖)\r\n if (!overwrite) {\r\n const exists = await this.exists(normalizedDestination);\r\n if (exists) {\r\n throw new FileExistsError(normalizedDestination);\r\n }\r\n }\r\n \r\n // 准备COPY请求\r\n const headers = {\r\n 'Destination': joinUrl(this.baseUrl, normalizedDestination),\r\n 'Overwrite': overwrite ? 'T' : 'F',\r\n };\r\n \r\n const response = await this.request('COPY', normalizedSource, {\r\n headers,\r\n });\r\n \r\n if (response.status >= 400) {\r\n this.handleResponseError(response.status, normalizedSource);\r\n }\r\n \r\n return {\r\n success: response.status >= 200 && response.status < 300,\r\n statusCode: response.status,\r\n };\r\n } catch (error: unknown) {\r\n if (error instanceof WebDAVError) {\r\n throw error;\r\n }\r\n throw new WebDAVError(`复制失败: ${normalizedSource} -> ${normalizedDestination}`, undefined, error);\r\n }\r\n }\r\n\r\n /**\r\n * 移动文件或目录\r\n * @param source 源路径\r\n * @param destination 目标路径\r\n * @param overwrite 是否覆盖已存在的文件\r\n * @returns 操作结果\r\n */\r\n async move(source: string, destination: string, overwrite = true): Promise<WebDAVResult> {\r\n const normalizedSource = normalizePath(source);\r\n const normalizedDestination = normalizePath(destination);\r\n \r\n try {\r\n // 检查源文件是否存在\r\n await this.stat(normalizedSource);\r\n \r\n // 检查目标文件是否存在(如果不允许覆盖)\r\n if (!overwrite) {\r\n const exists = await this.exists(normalizedDestination);\r\n if (exists) {\r\n throw new FileExistsError(normalizedDestination);\r\n }\r\n }\r\n \r\n // 准备MOVE请求\r\n const headers = {\r\n 'Destination': joinUrl(this.baseUrl, normalizedDestination),\r\n 'Overwrite': overwrite ? 'T' : 'F',\r\n };\r\n \r\n const response = await this.request('MOVE', normalizedSource, {\r\n headers,\r\n });\r\n \r\n if (response.status >= 400) {\r\n this.handleResponseError(response.status, normalizedSource);\r\n }\r\n \r\n return {\r\n success: response.status >= 200 && response.status < 300,\r\n statusCode: response.status,\r\n };\r\n } catch (error: unknown) {\r\n if (error instanceof WebDAVError) {\r\n throw error;\r\n }\r\n throw new WebDAVError(`移动失败: ${normalizedSource} -> ${normalizedDestination}`, undefined, error);\r\n }\r\n }\r\n\r\n /**\r\n * 删除文件(fs/unlink 兼容方法)\r\n * @param path 文件路径\r\n */\r\n async unlink(path: string): Promise<void> {\r\n await this.deleteFile(path);\r\n }\r\n}","import { WebDAVOptions } from './types';\r\nimport { WebDAVFS } from './webdav-fs';\r\nimport { WebDAVFileSystem } from './WebDAVFileSystem';\r\n\r\n/**\r\n * 创建 WebDAV 文件系统实例(工厂函数)\r\n * @param options WebDAV 配置选项\r\n * @returns WebDAVFileSystem 实例\r\n */\r\nexport function createWebDAVFileSystem(options: WebDAVOptions): WebDAVFileSystem {\r\n return new WebDAVFS(options);\r\n}"],"mappings":"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OAAM,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,SAAQ,UAAS,SAAQ,UAAS,MAAK,UAAS,MAAK,UAAS,UAAS,UAAS,UAAS,UAAS,WAAU,UAAS,WAAU,UAAS,WAAU,UAAS,WAAU,UAAS,WAAU,UAAS,WAAU,UAAS,QAAO,gBAAe,SAAQ,UAAS,QAAO,gBAAe,SAAQ,UAAS,UAAS,UAAS,UAAS,gBAAe,UAAS,UAAS,SAAQ,gBAAe,UAAS,UAAS,SAAQ,UAAS,QAAO,UAAS,QAAO,UAAS,SAAQ,UAAS,SAAQ,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,WAAU,UAAS,WAAU,UAAS,SAAQ,UAAS,WAAU,UAAS,QAAO,UAAS,SAAQ,UAAS,UAAS,UAAS,QAAO,UAAS,QAAO,UAAS,SAAQ,UAAS,QAAO,UAAS,OAAM,UAAS,QAAO,UAAS,SAAQ,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,SAAQ,UAAS,UAAS,UAAS,SAAQ,gBAAe,UAAS,UAAS,QAAO,UAAS,SAAQ,UAAS,SAAQ,QAAO,UAAS,QAAO,QAAO,KAAI,UAAS,QAAO,SAAQ,QAAO,OAAM,UAAS,QAAO,QAAO,QAAO,QAAO,QAAO,UAAS,UAAS,QAAO,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,QAAO,QAAO,UAAS,UAAS,UAAS,UAAS,QAAO,QAAO,QAAO,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,QAAO,QAAO,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,UAAS,UAAS,UAAS,UAAS,QAAO,SAAQ,QAAO,SAAQ,QAAO,SAAQ,QAAO,SAAQ,QAAO,QAAO,QAAO,QAAO,QAAO,UAAS,QAAO,UAAS,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,QAAO,SAAQ,QAAO,SAAQ,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,UAAS,QAAO,aAAe,OAAM,aAAe,OAAM,aAAe,QAAO,aAAe,QAAO,UAAS,OAAM,aAAe,QAAO,UAAS,QAAO,UAAS,UAAS,UAAS,UAAS,UAAS,SAAQ,UAAS,SAAQ,UAAS,UAAS,UAAS,UAAS,UAAS,QAAO,UAAS,QAAO,QAAO,UAAS,QAAO,UAAS,UAAS,UAAS,aAAe,OAAM,UAAS,MAAK,aAAe,QAAO,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,UAAS,MAAK,aAAe,QAAO,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,QAAO,OAAM,QAAO,OAAM,UAAS,MAAK,UAAS,QAAO,aAAe,OAAM,aAAe,QAAO,UAAS,QAAO,aAAe,OAAM,aAAe,QAAO,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,SAAQ,QAAO,SAAQ,UAAS,UAAS,UAAS,UAAS,QAAO,QAAO,QAAO,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,aAAe,OAAM,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,UAAS,QAAO,UAAS,SAAQ,UAAS,UAAS,UAAS,UAAS,UAAS,SAAQ,MAAK,SAAQ,UAAS,SAAQ,UAAS,QAAO,UAAS,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,SAAQ,UAAS,SAAQ,UAAS,QAAO,UAAS,QAAO,UAAS,UAAS,aAAe,OAAM,UAAS,WAAU,aAAe,QAAO,aAAe,QAAO,UAAS,QAAO,UAAS,OAAM,UAAS,QAAO,UAAS,SAAQ,UAAS,SAAQ,UAAS,QAAO,UAAS,UAAS,UAAS,UAAS,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,UAAS,MAAK,aAAe,QAAO,UAAS,QAAO,UAAS,MAAK,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,SAAQ,QAAO,SAAQ,QAAO,QAAO,QAAO,QAAO,UAAS,UAAS,UAAS,UAAS,UAAS,QAAO,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,UAAS,UAAS,UAAS,UAAS,aAAe,OAAM,aAAe,QAAO,UAAS,OAAM,aAAe,QAAO,UAAS,QAAO,aAAe,OAAM,aAAe,QAAO,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,aAAe,OAAM,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,UAAS,QAAO,aAAe,OAAM,aAAe,QAAO,aAAe,QAAO,UAAS,QAAO,aAAe,QAAO,aAAe,OAAM,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,QAAO,UAAS,QAAO,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,OAAM,UAAS,OAAM,aAAe,QAAO,aAAe,OAAM,UAAS,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,QAAO,QAAO,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,SAAQ,QAAO,SAAQ,QAAO,QAAO,QAAO,QAAO,UAAS,UAAS,UAAS,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,aAAe,OAAM,aAAe,QAAO,aAAe,QAAO,UAAS,QAAO,aAAe,OAAM,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,UAAS,QAAO,UAAS,UAAS,aAAe,OAAM,aAAe,QAAO,aAAe,QAAO,UAAS,QAAO,UAAS,MAAK,UAAS,QAAO,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,UAAS,MAAK,UAAS,UAAS,UAAS,UAAS,UAAS,SAAQ,UAAS,SAAQ,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,QAAO,SAAQ,aAAe,OAAM,aAAe,QAAO,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,SAAQ,UAAS,UAAS,UAAS,UAAS,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,UAAS,UAAS,UAAS,UAAS,QAAO,SAAQ,QAAO,SAAQ,UAAS,SAAQ,UAAS,SAAQ,QAAO,QAAO,QAAO,QAAO,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,aAAe,OAAM,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,aAAe,QAAO,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,UAAS,SAAQ,UAAS,SAAQ,aAAe,OAAM,aAAe,QAAO,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,aAAe,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,QAAO,UAAS,QAAO,UAAS,UAAS,SAAQ,UAAS,SAAQ,QAAO,QAAO,UAAS,QAAO,aAAe,QAAO,aAAe,OAAM,aAAe,QAAO,UAAS,OAAM,UAAS,QAAO,aAAe,QAAO,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,QAAO,UAAS,QAAO,UAAS,SAAQ,QAAO,SAAQ,QAAO,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,QAAO,UAAS,QAAO,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,QAAO,UAAS,SAAQ,UAAS,WAAU,UAAS,UAAS,UAAS,UAAS,UAAS,QAAO,UAAS,QAAO,UAAS,OAAM,UAAS,OAAM,UAAS,SAAQ,UAAS,UAAS,UAAS,SAAQ,UAAS,QAAO,UAAS,QAAO,UAAS,SAAQ,UAAS,UAAS,UAAS,SAAQ,UAAS,UAAS,UAAS,UAAS,UAAS,MAAK,QAAO,SAAQ,UAAS,MAAK,UAAS,MAAK,UAAS,MAAK,UAAS,MAAK,UAAS,MAAK,UAAS,WAAU,UAAS,WAAU,UAAS,MAAK,UAAS,OAAM,UAAS,MAAK,UAAS,OAAM,UAAS,QAAO,UAAS,OAAM,UAAS,SAAQ,UAAS,SAAQ,UAAS,UAAS,UAAS,OAAM,UAAS,OAAM,UAAS,QAAO,UAAS,WAAU,UAAS,QAAO,UAAS,OAAM,UAAS,QAAO,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,SAAQ,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,QAAO,UAAS,QAAO,UAAS,OAAM,UAAS,OAAM,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,SAAQ,UAAS,SAAQ,UAAS,QAAO,UAAS,QAAO,UAAS,OAAM,UAAS,OAAM,UAAS,QAAO,UAAS,QAAO,UAAS,OAAM,UAAS,OAAM,UAAS,SAAQ,UAAS,SAAQ,UAAS,QAAO,UAAS,QAAO,UAAS,OAAM,UAAS,OAAM,UAAS,UAAS,UAAS,UAAS,UAAS,OAAM,UAAS,OAAM,UAAS,QAAO,UAAS,QAAO,UAAS,OAAM,UAAS,OAAM,UAAS,QAAO,UAAS,QAAO,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,QAAO,UAAS,QAAO,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,OAAM,UAAS,SAAQ,UAAS,SAAQ,UAAS,OAAM,UAAS,OAAM,UAAS,SAAQ,UAAS,SAAQ,UAAS,OAAM,UAAS,OAAM,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,OAAM,UAAS,OAAM,UAAS,UAAS,UAAS,UAAS,UAAS,OAAM,UAAS,OAAM,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,QAAO,UAAS,SAAQ,UAAS,QAAO,UAAS,SAAQ,UAAS,SAAQ;AAEhn0B,YA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","names":["exports","object","key","string","defaultOptions","result","METADATA_SYMBOL"]}
|