UNPKG

datajunction-ui

Version:
1 lines 23.2 kB
{"version":3,"file":"python-D-iU6WXz.cjs","sources":["../node_modules/@codemirror/legacy-modes/mode/python.js"],"sourcesContent":["function wordRegexp(words) {\n return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n}\n\nvar wordOperators = wordRegexp([\"and\", \"or\", \"not\", \"is\"]);\nvar commonKeywords = [\"as\", \"assert\", \"break\", \"class\", \"continue\",\n \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\",\n \"for\", \"from\", \"global\", \"if\", \"import\",\n \"lambda\", \"pass\", \"raise\", \"return\",\n \"try\", \"while\", \"with\", \"yield\", \"in\", \"False\", \"True\"];\nvar commonBuiltins = [\"abs\", \"all\", \"any\", \"bin\", \"bool\", \"bytearray\", \"callable\", \"chr\",\n \"classmethod\", \"compile\", \"complex\", \"delattr\", \"dict\", \"dir\", \"divmod\",\n \"enumerate\", \"eval\", \"filter\", \"float\", \"format\", \"frozenset\",\n \"getattr\", \"globals\", \"hasattr\", \"hash\", \"help\", \"hex\", \"id\",\n \"input\", \"int\", \"isinstance\", \"issubclass\", \"iter\", \"len\",\n \"list\", \"locals\", \"map\", \"max\", \"memoryview\", \"min\", \"next\",\n \"object\", \"oct\", \"open\", \"ord\", \"pow\", \"property\", \"range\",\n \"repr\", \"reversed\", \"round\", \"set\", \"setattr\", \"slice\",\n \"sorted\", \"staticmethod\", \"str\", \"sum\", \"super\", \"tuple\",\n \"type\", \"vars\", \"zip\", \"__import__\", \"NotImplemented\",\n \"Ellipsis\", \"__debug__\"];\n\nfunction top(state) {\n return state.scopes[state.scopes.length - 1];\n}\n\nexport function mkPython(parserConf) {\n var ERRORCLASS = \"error\";\n\n var delimiters = parserConf.delimiters || parserConf.singleDelimiters || /^[\\(\\)\\[\\]\\{\\}@,:`=;\\.\\\\]/;\n // (Backwards-compatibility with old, cumbersome config system)\n var operators = [parserConf.singleOperators, parserConf.doubleOperators, parserConf.doubleDelimiters, parserConf.tripleDelimiters,\n parserConf.operators || /^([-+*/%\\/&|^]=?|[<>=]+|\\/\\/=?|\\*\\*=?|!=|[~!@]|\\.\\.\\.)/]\n for (var i = 0; i < operators.length; i++) if (!operators[i]) operators.splice(i--, 1)\n\n var hangingIndent = parserConf.hangingIndent;\n\n var myKeywords = commonKeywords, myBuiltins = commonBuiltins;\n if (parserConf.extra_keywords != undefined)\n myKeywords = myKeywords.concat(parserConf.extra_keywords);\n\n if (parserConf.extra_builtins != undefined)\n myBuiltins = myBuiltins.concat(parserConf.extra_builtins);\n\n var py3 = !(parserConf.version && Number(parserConf.version) < 3)\n if (py3) {\n // since http://legacy.python.org/dev/peps/pep-0465/ @ is also an operator\n var identifiers = parserConf.identifiers|| /^[_A-Za-z\\u00A1-\\uFFFF][_A-Za-z0-9\\u00A1-\\uFFFF]*/;\n myKeywords = myKeywords.concat([\"nonlocal\", \"None\", \"aiter\", \"anext\", \"async\", \"await\", \"breakpoint\", \"match\", \"case\"]);\n myBuiltins = myBuiltins.concat([\"ascii\", \"bytes\", \"exec\", \"print\"]);\n var stringPrefixes = new RegExp(\"^(([rbuf]|(br)|(rb)|(fr)|(rf))?('{3}|\\\"{3}|['\\\"]))\", \"i\");\n } else {\n var identifiers = parserConf.identifiers|| /^[_A-Za-z][_A-Za-z0-9]*/;\n myKeywords = myKeywords.concat([\"exec\", \"print\"]);\n myBuiltins = myBuiltins.concat([\"apply\", \"basestring\", \"buffer\", \"cmp\", \"coerce\", \"execfile\",\n \"file\", \"intern\", \"long\", \"raw_input\", \"reduce\", \"reload\",\n \"unichr\", \"unicode\", \"xrange\", \"None\"]);\n var stringPrefixes = new RegExp(\"^(([rubf]|(ur)|(br))?('{3}|\\\"{3}|['\\\"]))\", \"i\");\n }\n var keywords = wordRegexp(myKeywords);\n var builtins = wordRegexp(myBuiltins);\n\n // tokenizers\n function tokenBase(stream, state) {\n var sol = stream.sol() && state.lastToken != \"\\\\\"\n if (sol) state.indent = stream.indentation()\n // Handle scope changes\n if (sol && top(state).type == \"py\") {\n var scopeOffset = top(state).offset;\n if (stream.eatSpace()) {\n var lineOffset = stream.indentation();\n if (lineOffset > scopeOffset)\n pushPyScope(stream, state);\n else if (lineOffset < scopeOffset && dedent(stream, state) && stream.peek() != \"#\")\n state.errorToken = true;\n return null;\n } else {\n var style = tokenBaseInner(stream, state);\n if (scopeOffset > 0 && dedent(stream, state))\n style += \" \" + ERRORCLASS;\n return style;\n }\n }\n return tokenBaseInner(stream, state);\n }\n\n function tokenBaseInner(stream, state, inFormat) {\n if (stream.eatSpace()) return null;\n\n // Handle Comments\n if (!inFormat && stream.match(/^#.*/)) return \"comment\";\n\n // Handle Number Literals\n if (stream.match(/^[0-9\\.]/, false)) {\n var floatLiteral = false;\n // Floats\n if (stream.match(/^[\\d_]*\\.\\d+(e[\\+\\-]?\\d+)?/i)) { floatLiteral = true; }\n if (stream.match(/^[\\d_]+\\.\\d*/)) { floatLiteral = true; }\n if (stream.match(/^\\.\\d+/)) { floatLiteral = true; }\n if (floatLiteral) {\n // Float literals may be \"imaginary\"\n stream.eat(/J/i);\n return \"number\";\n }\n // Integers\n var intLiteral = false;\n // Hex\n if (stream.match(/^0x[0-9a-f_]+/i)) intLiteral = true;\n // Binary\n if (stream.match(/^0b[01_]+/i)) intLiteral = true;\n // Octal\n if (stream.match(/^0o[0-7_]+/i)) intLiteral = true;\n // Decimal\n if (stream.match(/^[1-9][\\d_]*(e[\\+\\-]?[\\d_]+)?/)) {\n // Decimal literals may be \"imaginary\"\n stream.eat(/J/i);\n // TODO - Can you have imaginary longs?\n intLiteral = true;\n }\n // Zero by itself with no other piece of number.\n if (stream.match(/^0(?![\\dx])/i)) intLiteral = true;\n if (intLiteral) {\n // Integer literals may be \"long\"\n stream.eat(/L/i);\n return \"number\";\n }\n }\n\n // Handle Strings\n if (stream.match(stringPrefixes)) {\n var isFmtString = stream.current().toLowerCase().indexOf('f') !== -1;\n if (!isFmtString) {\n state.tokenize = tokenStringFactory(stream.current(), state.tokenize);\n return state.tokenize(stream, state);\n } else {\n state.tokenize = formatStringFactory(stream.current(), state.tokenize);\n return state.tokenize(stream, state);\n }\n }\n\n for (var i = 0; i < operators.length; i++)\n if (stream.match(operators[i])) return \"operator\"\n\n if (stream.match(delimiters)) return \"punctuation\";\n\n if (state.lastToken == \".\" && stream.match(identifiers))\n return \"property\";\n\n if (stream.match(keywords) || stream.match(wordOperators))\n return \"keyword\";\n\n if (stream.match(builtins))\n return \"builtin\";\n\n if (stream.match(/^(self|cls)\\b/))\n return \"self\";\n\n if (stream.match(identifiers)) {\n if (state.lastToken == \"def\" || state.lastToken == \"class\")\n return \"def\";\n return \"variable\";\n }\n\n // Handle non-detected items\n stream.next();\n return inFormat ? null :ERRORCLASS;\n }\n\n function formatStringFactory(delimiter, tokenOuter) {\n while (\"rubf\".indexOf(delimiter.charAt(0).toLowerCase()) >= 0)\n delimiter = delimiter.substr(1);\n\n var singleline = delimiter.length == 1;\n var OUTCLASS = \"string\";\n\n function tokenNestedExpr(depth) {\n return function(stream, state) {\n var inner = tokenBaseInner(stream, state, true)\n if (inner == \"punctuation\") {\n if (stream.current() == \"{\") {\n state.tokenize = tokenNestedExpr(depth + 1)\n } else if (stream.current() == \"}\") {\n if (depth > 1) state.tokenize = tokenNestedExpr(depth - 1)\n else state.tokenize = tokenString\n }\n }\n return inner\n }\n }\n\n function tokenString(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^'\"\\{\\}\\\\]/);\n if (stream.eat(\"\\\\\")) {\n stream.next();\n if (singleline && stream.eol())\n return OUTCLASS;\n } else if (stream.match(delimiter)) {\n state.tokenize = tokenOuter;\n return OUTCLASS;\n } else if (stream.match('{{')) {\n // ignore {{ in f-str\n return OUTCLASS;\n } else if (stream.match('{', false)) {\n // switch to nested mode\n state.tokenize = tokenNestedExpr(0)\n if (stream.current()) return OUTCLASS;\n else return state.tokenize(stream, state)\n } else if (stream.match('}}')) {\n return OUTCLASS;\n } else if (stream.match('}')) {\n // single } in f-string is an error\n return ERRORCLASS;\n } else {\n stream.eat(/['\"]/);\n }\n }\n if (singleline) {\n if (parserConf.singleLineStringErrors)\n return ERRORCLASS;\n else\n state.tokenize = tokenOuter;\n }\n return OUTCLASS;\n }\n tokenString.isString = true;\n return tokenString;\n }\n\n function tokenStringFactory(delimiter, tokenOuter) {\n while (\"rubf\".indexOf(delimiter.charAt(0).toLowerCase()) >= 0)\n delimiter = delimiter.substr(1);\n\n var singleline = delimiter.length == 1;\n var OUTCLASS = \"string\";\n\n function tokenString(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^'\"\\\\]/);\n if (stream.eat(\"\\\\\")) {\n stream.next();\n if (singleline && stream.eol())\n return OUTCLASS;\n } else if (stream.match(delimiter)) {\n state.tokenize = tokenOuter;\n return OUTCLASS;\n } else {\n stream.eat(/['\"]/);\n }\n }\n if (singleline) {\n if (parserConf.singleLineStringErrors)\n return ERRORCLASS;\n else\n state.tokenize = tokenOuter;\n }\n return OUTCLASS;\n }\n tokenString.isString = true;\n return tokenString;\n }\n\n function pushPyScope(stream, state) {\n while (top(state).type != \"py\") state.scopes.pop()\n state.scopes.push({offset: top(state).offset + stream.indentUnit,\n type: \"py\",\n align: null})\n }\n\n function pushBracketScope(stream, state, type) {\n var align = stream.match(/^[\\s\\[\\{\\(]*(?:#|$)/, false) ? null : stream.column() + 1\n state.scopes.push({offset: state.indent + (hangingIndent || stream.indentUnit),\n type: type,\n align: align})\n }\n\n function dedent(stream, state) {\n var indented = stream.indentation();\n while (state.scopes.length > 1 && top(state).offset > indented) {\n if (top(state).type != \"py\") return true;\n state.scopes.pop();\n }\n return top(state).offset != indented;\n }\n\n function tokenLexer(stream, state) {\n if (stream.sol()) {\n state.beginningOfLine = true;\n state.dedent = false;\n }\n\n var style = state.tokenize(stream, state);\n var current = stream.current();\n\n // Handle decorators\n if (state.beginningOfLine && current == \"@\")\n return stream.match(identifiers, false) ? \"meta\" : py3 ? \"operator\" : ERRORCLASS;\n\n if (/\\S/.test(current)) state.beginningOfLine = false;\n\n if ((style == \"variable\" || style == \"builtin\")\n && state.lastToken == \"meta\")\n style = \"meta\";\n\n // Handle scope changes.\n if (current == \"pass\" || current == \"return\")\n state.dedent = true;\n\n if (current == \"lambda\") state.lambda = true;\n if (current == \":\" && !state.lambda && top(state).type == \"py\" && stream.match(/^\\s*(?:#|$)/, false))\n pushPyScope(stream, state);\n\n if (current.length == 1 && !/string|comment/.test(style)) {\n var delimiter_index = \"[({\".indexOf(current);\n if (delimiter_index != -1)\n pushBracketScope(stream, state, \"])}\".slice(delimiter_index, delimiter_index+1));\n\n delimiter_index = \"])}\".indexOf(current);\n if (delimiter_index != -1) {\n if (top(state).type == current) state.indent = state.scopes.pop().offset - (hangingIndent || stream.indentUnit)\n else return ERRORCLASS;\n }\n }\n if (state.dedent && stream.eol() && top(state).type == \"py\" && state.scopes.length > 1)\n state.scopes.pop();\n\n return style;\n }\n\n return {\n name: \"python\",\n\n startState: function() {\n return {\n tokenize: tokenBase,\n scopes: [{offset: 0, type: \"py\", align: null}],\n indent: 0,\n lastToken: null,\n lambda: false,\n dedent: 0\n };\n },\n\n token: function(stream, state) {\n var addErr = state.errorToken;\n if (addErr) state.errorToken = false;\n var style = tokenLexer(stream, state);\n\n if (style && style != \"comment\")\n state.lastToken = (style == \"keyword\" || style == \"punctuation\") ? stream.current() : style;\n if (style == \"punctuation\") style = null;\n\n if (stream.eol() && state.lambda)\n state.lambda = false;\n return addErr ? ERRORCLASS : style;\n },\n\n indent: function(state, textAfter, cx) {\n if (state.tokenize != tokenBase)\n return state.tokenize.isString ? null : 0;\n\n var scope = top(state)\n var closing = scope.type == textAfter.charAt(0) ||\n scope.type == \"py\" && !state.dedent && /^(else:|elif |except |finally:)/.test(textAfter)\n if (scope.align != null)\n return scope.align - (closing ? 1 : 0)\n else\n return scope.offset - (closing ? hangingIndent || cx.unit : 0)\n },\n\n languageData: {\n autocomplete: commonKeywords.concat(commonBuiltins).concat([\"exec\", \"print\"]),\n indentOnInput: /^\\s*([\\}\\]\\)]|else:|elif |except |finally:)$/,\n commentTokens: {line: \"#\"},\n closeBrackets: {brackets: [\"(\", \"[\", \"{\", \"'\", '\"', \"'''\", '\"\"\"']}\n }\n };\n};\n\nvar words = function(str) { return str.split(\" \"); };\n\nexport const python = mkPython({})\n\nexport const cython = mkPython({\n extra_keywords: words(\"by cdef cimport cpdef ctypedef enum except \"+\n \"extern gil include nogil property public \"+\n \"readonly struct union DEF IF ELIF ELSE\")\n})\n"],"names":["wordRegexp","words","wordOperators","commonKeywords","commonBuiltins","top","state","mkPython","parserConf","ERRORCLASS","delimiters","operators","i","hangingIndent","myKeywords","myBuiltins","py3","identifiers","stringPrefixes","keywords","builtins","tokenBase","stream","sol","scopeOffset","lineOffset","pushPyScope","dedent","style","tokenBaseInner","inFormat","floatLiteral","intLiteral","isFmtString","formatStringFactory","tokenStringFactory","delimiter","tokenOuter","singleline","OUTCLASS","tokenNestedExpr","depth","inner","tokenString","pushBracketScope","type","align","indented","tokenLexer","current","delimiter_index","addErr","textAfter","cx","scope","closing","str","cython"],"mappings":"gFAAA,SAASA,EAAWC,EAAO,CACzB,OAAO,IAAI,OAAO,MAAQA,EAAM,KAAK,KAAK,EAAI,OAAO,CACvD,CAEA,IAAIC,EAAgBF,EAAW,CAAC,MAAO,KAAM,MAAO,IAAI,CAAC,EACrDG,EAAiB,CAAC,KAAM,SAAU,QAAS,QAAS,WAClC,MAAO,MAAO,OAAQ,OAAQ,SAAU,UACxC,MAAO,OAAQ,SAAU,KAAM,SAC/B,SAAU,OAAQ,QAAS,SAC3B,MAAO,QAAS,OAAQ,QAAS,KAAM,QAAS,MAAM,EACxEC,EAAiB,CAAC,MAAO,MAAO,MAAO,MAAO,OAAQ,YAAa,WAAY,MAC7D,cAAe,UAAW,UAAW,UAAW,OAAQ,MAAO,SAC/D,YAAa,OAAQ,SAAU,QAAS,SAAU,YAClD,UAAW,UAAW,UAAW,OAAQ,OAAQ,MAAO,KACxD,QAAS,MAAO,aAAc,aAAc,OAAQ,MACpD,OAAQ,SAAU,MAAO,MAAO,aAAc,MAAO,OACrD,SAAU,MAAO,OAAQ,MAAO,MAAO,WAAY,QACnD,OAAQ,WAAY,QAAS,MAAO,UAAW,QAC/C,SAAU,eAAgB,MAAO,MAAO,QAAS,QACjD,OAAQ,OAAQ,MAAO,aAAc,iBACrC,WAAY,WAAW,EAE7C,SAASC,EAAIC,EAAO,CAClB,OAAOA,EAAM,OAAOA,EAAM,OAAO,OAAS,CAAC,CAC7C,CAEO,SAASC,EAASC,EAAY,CAOnC,QANIC,EAAa,QAEbC,EAAaF,EAAW,YAAcA,EAAW,kBAAoB,4BAErEG,EAAY,CAACH,EAAW,gBAAiBA,EAAW,gBAAiBA,EAAW,iBAAkBA,EAAW,iBAChGA,EAAW,WAAa,wDAAwD,EACxFI,EAAI,EAAGA,EAAID,EAAU,OAAQC,IAAUD,EAAUC,CAAC,GAAGD,EAAU,OAAOC,IAAK,CAAC,EAErF,IAAIC,EAAgBL,EAAW,cAE3BM,EAAaX,EAAgBY,EAAaX,EAC1CI,EAAW,gBAAkB,OAC/BM,EAAaA,EAAW,OAAON,EAAW,cAAc,GAEtDA,EAAW,gBAAkB,OAC/BO,EAAaA,EAAW,OAAOP,EAAW,cAAc,GAE1D,IAAIQ,EAAM,EAAER,EAAW,SAAW,OAAOA,EAAW,OAAO,EAAI,GAC/D,GAAIQ,EAAK,CAEP,IAAIC,EAAcT,EAAW,aAAc,oDAC3CM,EAAaA,EAAW,OAAO,CAAC,WAAY,OAAQ,QAAS,QAAS,QAAS,QAAS,aAAc,QAAS,MAAM,CAAC,EACtHC,EAAaA,EAAW,OAAO,CAAC,QAAS,QAAS,OAAQ,OAAO,CAAC,EAClE,IAAIG,EAAiB,IAAI,OAAO,mDAAsD,GAAG,CAC3F,KAAO,CACL,IAAID,EAAcT,EAAW,aAAc,0BAC3CM,EAAaA,EAAW,OAAO,CAAC,OAAQ,OAAO,CAAC,EAChDC,EAAaA,EAAW,OAAO,CAAC,QAAS,aAAc,SAAU,MAAO,SAAU,WAClD,OAAQ,SAAU,OAAQ,YAAa,SAAU,SACjD,SAAU,UAAW,SAAU,MAAM,CAAC,EACtE,IAAIG,EAAiB,IAAI,OAAO,yCAA4C,GAAG,CACjF,CACA,IAAIC,EAAWnB,EAAWc,CAAU,EAChCM,EAAWpB,EAAWe,CAAU,EAGpC,SAASM,EAAUC,EAAQhB,EAAO,CAChC,IAAIiB,EAAMD,EAAO,IAAG,GAAMhB,EAAM,WAAa,KAG7C,GAFIiB,IAAKjB,EAAM,OAASgB,EAAO,YAAW,GAEtCC,GAAOlB,EAAIC,CAAK,EAAE,MAAQ,KAAM,CAClC,IAAIkB,EAAcnB,EAAIC,CAAK,EAAE,OAC7B,GAAIgB,EAAO,WAAY,CACrB,IAAIG,EAAaH,EAAO,YAAW,EACnC,OAAIG,EAAaD,EACfE,EAAYJ,EAAQhB,CAAK,EAClBmB,EAAaD,GAAeG,EAAOL,EAAQhB,CAAK,GAAKgB,EAAO,KAAI,GAAM,MAC7EhB,EAAM,WAAa,IACd,IACT,KAAO,CACL,IAAIsB,EAAQC,EAAeP,EAAQhB,CAAK,EACxC,OAAIkB,EAAc,GAAKG,EAAOL,EAAQhB,CAAK,IACzCsB,GAAS,IAAMnB,GACVmB,CACT,CACF,CACA,OAAOC,EAAeP,EAAQhB,CAAK,CACrC,CAEA,SAASuB,EAAeP,EAAQhB,EAAOwB,EAAU,CAC/C,GAAIR,EAAO,SAAQ,EAAI,OAAO,KAG9B,GAAI,CAACQ,GAAYR,EAAO,MAAM,MAAM,EAAG,MAAO,UAG9C,GAAIA,EAAO,MAAM,WAAY,EAAK,EAAG,CACnC,IAAIS,EAAe,GAKnB,GAHIT,EAAO,MAAM,6BAA6B,IAAKS,EAAe,IAC9DT,EAAO,MAAM,cAAc,IAAKS,EAAe,IAC/CT,EAAO,MAAM,QAAQ,IAAKS,EAAe,IACzCA,EAEF,OAAAT,EAAO,IAAI,IAAI,EACR,SAGT,IAAIU,EAAa,GAgBjB,GAdIV,EAAO,MAAM,gBAAgB,IAAGU,EAAa,IAE7CV,EAAO,MAAM,YAAY,IAAGU,EAAa,IAEzCV,EAAO,MAAM,aAAa,IAAGU,EAAa,IAE1CV,EAAO,MAAM,+BAA+B,IAE9CA,EAAO,IAAI,IAAI,EAEfU,EAAa,IAGXV,EAAO,MAAM,cAAc,IAAGU,EAAa,IAC3CA,EAEF,OAAAV,EAAO,IAAI,IAAI,EACR,QAEX,CAGA,GAAIA,EAAO,MAAMJ,CAAc,EAAG,CAChC,IAAIe,EAAcX,EAAO,QAAO,EAAG,YAAW,EAAG,QAAQ,GAAG,IAAM,GAClE,OAAKW,GAIH3B,EAAM,SAAW4B,EAAoBZ,EAAO,QAAO,EAAIhB,EAAM,QAAQ,EAC9DA,EAAM,SAASgB,EAAQhB,CAAK,IAJnCA,EAAM,SAAW6B,EAAmBb,EAAO,QAAO,EAAIhB,EAAM,QAAQ,EAC7DA,EAAM,SAASgB,EAAQhB,CAAK,EAKvC,CAEA,QAASM,EAAI,EAAGA,EAAID,EAAU,OAAQC,IACpC,GAAIU,EAAO,MAAMX,EAAUC,CAAC,CAAC,EAAG,MAAO,WAEzC,OAAIU,EAAO,MAAMZ,CAAU,EAAU,cAEjCJ,EAAM,WAAa,KAAOgB,EAAO,MAAML,CAAW,EAC7C,WAELK,EAAO,MAAMH,CAAQ,GAAKG,EAAO,MAAMpB,CAAa,EAC/C,UAELoB,EAAO,MAAMF,CAAQ,EAChB,UAELE,EAAO,MAAM,eAAe,EACvB,OAELA,EAAO,MAAML,CAAW,EACtBX,EAAM,WAAa,OAASA,EAAM,WAAa,QAC1C,MACF,YAITgB,EAAO,KAAI,EACJQ,EAAW,KAAMrB,EAC1B,CAEA,SAASyB,EAAoBE,EAAWC,EAAY,CAClD,KAAO,OAAO,QAAQD,EAAU,OAAO,CAAC,EAAE,YAAW,CAAE,GAAK,GAC1DA,EAAYA,EAAU,OAAO,CAAC,EAEhC,IAAIE,EAAaF,EAAU,QAAU,EACjCG,EAAW,SAEf,SAASC,EAAgBC,EAAO,CAC9B,OAAO,SAASnB,EAAQhB,EAAO,CAC7B,IAAIoC,EAAQb,EAAeP,EAAQhB,EAAO,EAAI,EAC9C,OAAIoC,GAAS,gBACPpB,EAAO,QAAO,GAAM,IACtBhB,EAAM,SAAWkC,EAAgBC,EAAQ,CAAC,EACjCnB,EAAO,QAAO,GAAM,MACzBmB,EAAQ,EAAGnC,EAAM,SAAWkC,EAAgBC,EAAQ,CAAC,EACpDnC,EAAM,SAAWqC,IAGnBD,CACT,CACF,CAEA,SAASC,EAAYrB,EAAQhB,EAAO,CAClC,KAAO,CAACgB,EAAO,OAEb,GADAA,EAAO,SAAS,aAAa,EACzBA,EAAO,IAAI,IAAI,GAEjB,GADAA,EAAO,KAAI,EACPgB,GAAchB,EAAO,IAAG,EAC1B,OAAOiB,MACJ,IAAIjB,EAAO,MAAMc,CAAS,EAC/B,OAAA9B,EAAM,SAAW+B,EACVE,EACF,GAAIjB,EAAO,MAAM,IAAI,EAE1B,OAAOiB,EACF,GAAIjB,EAAO,MAAM,IAAK,EAAK,EAGhC,OADAhB,EAAM,SAAWkC,EAAgB,CAAC,EAC9BlB,EAAO,QAAO,EAAWiB,EACjBjC,EAAM,SAASgB,EAAQhB,CAAK,EACnC,GAAIgB,EAAO,MAAM,IAAI,EAC1B,OAAOiB,EACF,GAAIjB,EAAO,MAAM,GAAG,EAEzB,OAAOb,EAEPa,EAAO,IAAI,MAAM,EAGrB,GAAIgB,EAAY,CACd,GAAI9B,EAAW,uBACb,OAAOC,EAEPH,EAAM,SAAW+B,CACrB,CACA,OAAOE,CACT,CACA,OAAAI,EAAY,SAAW,GAChBA,CACT,CAEA,SAASR,EAAmBC,EAAWC,EAAY,CACjD,KAAO,OAAO,QAAQD,EAAU,OAAO,CAAC,EAAE,YAAW,CAAE,GAAK,GAC1DA,EAAYA,EAAU,OAAO,CAAC,EAEhC,IAAIE,EAAaF,EAAU,QAAU,EACjCG,EAAW,SAEf,SAASI,EAAYrB,EAAQhB,EAAO,CAClC,KAAO,CAACgB,EAAO,OAEb,GADAA,EAAO,SAAS,SAAS,EACrBA,EAAO,IAAI,IAAI,GAEjB,GADAA,EAAO,KAAI,EACPgB,GAAchB,EAAO,IAAG,EAC1B,OAAOiB,MACJ,IAAIjB,EAAO,MAAMc,CAAS,EAC/B,OAAA9B,EAAM,SAAW+B,EACVE,EAEPjB,EAAO,IAAI,MAAM,EAGrB,GAAIgB,EAAY,CACd,GAAI9B,EAAW,uBACb,OAAOC,EAEPH,EAAM,SAAW+B,CACrB,CACA,OAAOE,CACT,CACA,OAAAI,EAAY,SAAW,GAChBA,CACT,CAEA,SAASjB,EAAYJ,EAAQhB,EAAO,CAClC,KAAOD,EAAIC,CAAK,EAAE,MAAQ,MAAMA,EAAM,OAAO,IAAG,EAChDA,EAAM,OAAO,KAAK,CAAC,OAAQD,EAAIC,CAAK,EAAE,OAASgB,EAAO,WACnC,KAAM,KACN,MAAO,IAAI,CAAC,CACjC,CAEA,SAASsB,EAAiBtB,EAAQhB,EAAOuC,EAAM,CAC7C,IAAIC,EAAQxB,EAAO,MAAM,sBAAuB,EAAK,EAAI,KAAOA,EAAO,SAAW,EAClFhB,EAAM,OAAO,KAAK,CAAC,OAAQA,EAAM,QAAUO,GAAiBS,EAAO,YAChD,KAAMuB,EACN,MAAOC,CAAK,CAAC,CAClC,CAEA,SAASnB,EAAOL,EAAQhB,EAAO,CAE7B,QADIyC,EAAWzB,EAAO,YAAW,EAC1BhB,EAAM,OAAO,OAAS,GAAKD,EAAIC,CAAK,EAAE,OAASyC,GAAU,CAC9D,GAAI1C,EAAIC,CAAK,EAAE,MAAQ,KAAM,MAAO,GACpCA,EAAM,OAAO,IAAG,CAClB,CACA,OAAOD,EAAIC,CAAK,EAAE,QAAUyC,CAC9B,CAEA,SAASC,EAAW1B,EAAQhB,EAAO,CAC7BgB,EAAO,QACThB,EAAM,gBAAkB,GACxBA,EAAM,OAAS,IAGjB,IAAIsB,EAAQtB,EAAM,SAASgB,EAAQhB,CAAK,EACpC2C,EAAU3B,EAAO,QAAO,EAG5B,GAAIhB,EAAM,iBAAmB2C,GAAW,IACtC,OAAO3B,EAAO,MAAML,EAAa,EAAK,EAAI,OAASD,EAAM,WAAaP,EAgBxE,GAdI,KAAK,KAAKwC,CAAO,IAAG3C,EAAM,gBAAkB,KAE3CsB,GAAS,YAAcA,GAAS,YAC9BtB,EAAM,WAAa,SACxBsB,EAAQ,SAGNqB,GAAW,QAAUA,GAAW,YAClC3C,EAAM,OAAS,IAEb2C,GAAW,WAAU3C,EAAM,OAAS,IACpC2C,GAAW,KAAO,CAAC3C,EAAM,QAAUD,EAAIC,CAAK,EAAE,MAAQ,MAAQgB,EAAO,MAAM,cAAe,EAAK,GACjGI,EAAYJ,EAAQhB,CAAK,EAEvB2C,EAAQ,QAAU,GAAK,CAAC,iBAAiB,KAAKrB,CAAK,EAAG,CACxD,IAAIsB,EAAkB,MAAM,QAAQD,CAAO,EAK3C,GAJIC,GAAmB,IACrBN,EAAiBtB,EAAQhB,EAAO,MAAM,MAAM4C,EAAiBA,EAAgB,CAAC,CAAC,EAEjFA,EAAkB,MAAM,QAAQD,CAAO,EACnCC,GAAmB,GACrB,GAAI7C,EAAIC,CAAK,EAAE,MAAQ2C,EAAS3C,EAAM,OAASA,EAAM,OAAO,IAAG,EAAG,QAAUO,GAAiBS,EAAO,gBAC/F,QAAOb,CAEhB,CACA,OAAIH,EAAM,QAAUgB,EAAO,IAAG,GAAMjB,EAAIC,CAAK,EAAE,MAAQ,MAAQA,EAAM,OAAO,OAAS,GACnFA,EAAM,OAAO,IAAG,EAEXsB,CACT,CAEA,MAAO,CACL,KAAM,SAEN,WAAY,UAAW,CACrB,MAAO,CACL,SAAUP,EACV,OAAQ,CAAC,CAAC,OAAQ,EAAG,KAAM,KAAM,MAAO,IAAI,CAAC,EAC7C,OAAQ,EACR,UAAW,KACX,OAAQ,GACR,OAAQ,CAChB,CACI,EAEA,MAAO,SAASC,EAAQhB,EAAO,CAC7B,IAAI6C,EAAS7C,EAAM,WACf6C,IAAQ7C,EAAM,WAAa,IAC/B,IAAIsB,EAAQoB,EAAW1B,EAAQhB,CAAK,EAEpC,OAAIsB,GAASA,GAAS,YACpBtB,EAAM,UAAasB,GAAS,WAAaA,GAAS,cAAiBN,EAAO,QAAO,EAAKM,GACpFA,GAAS,gBAAeA,EAAQ,MAEhCN,EAAO,OAAShB,EAAM,SACxBA,EAAM,OAAS,IACV6C,EAAS1C,EAAamB,CAC/B,EAEA,OAAQ,SAAStB,EAAO8C,EAAWC,EAAI,CACrC,GAAI/C,EAAM,UAAYe,EACpB,OAAOf,EAAM,SAAS,SAAW,KAAO,EAE1C,IAAIgD,EAAQjD,EAAIC,CAAK,EACjBiD,EAAUD,EAAM,MAAQF,EAAU,OAAO,CAAC,GAC1CE,EAAM,MAAQ,MAAQ,CAAChD,EAAM,QAAU,kCAAkC,KAAK8C,CAAS,EAC3F,OAAIE,EAAM,OAAS,KACVA,EAAM,OAASC,EAAU,EAAI,GAE7BD,EAAM,QAAUC,EAAU1C,GAAiBwC,EAAG,KAAO,EAChE,EAEA,aAAc,CACZ,aAAclD,EAAe,OAAOC,CAAc,EAAE,OAAO,CAAC,OAAQ,OAAO,CAAC,EAC5E,cAAe,+CACf,cAAe,CAAC,KAAM,GAAG,EACzB,cAAe,CAAC,SAAU,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,KAAK,CAAC,CACvE,CACA,CACA,CAEA,IAAIH,EAAQ,SAASuD,EAAK,CAAE,OAAOA,EAAI,MAAM,GAAG,CAAG,EAE7BjD,EAAS,CAAA,CAAE,EAErB,MAACkD,EAASlD,EAAS,CAC7B,eAAgBN,EAAM,4HAEwC,CAChE,CAAC","x_google_ignoreList":[0]}