chunk-00bba320.087ac3e1.js.map 367 KB

1
  1. {"version":3,"sources":["webpack:///./node_modules/codemirror/mode/sass/sass.js","webpack:///./node_modules/codemirror/addon/selection/active-line.js","webpack:///./src/components/CodeView.vue?bae8","webpack:///./src/components/CodeView.vue","webpack:///./src/components/Sample-mobile.vue","webpack:///./src/components/Sample-desktop.js","webpack:///src/components/CodeView.vue","webpack:///./src/components/CodeView.vue?2869","webpack:///./src/components/CodeView.vue?7adf","webpack:///./node_modules/codemirror/mode/pug/pug.js","webpack:///./node_modules/codemirror/mode/vue/vue.js","webpack:///./node_modules/codemirror/addon/comment/comment.js","webpack:///./node_modules/codemirror/addon/mode/simple.js","webpack:///./node_modules/codemirror/mode/stylus/stylus.js","webpack:///./node_modules/codemirror/mode/css/css.js","webpack:///./node_modules/codemirror/addon/edit/matchbrackets.js","webpack:///./node_modules/codemirror/addon/selection/mark-selection.js","webpack:///./node_modules/codemirror/addon/mode/overlay.js","webpack:///./node_modules/codemirror/mode/coffeescript/coffeescript.js","webpack:///./node_modules/codemirror/mode/xml/xml.js","webpack:///./node_modules/codemirror/mode/htmlmixed/htmlmixed.js","webpack:///./node_modules/codemirror/mode/handlebars/handlebars.js","webpack:///./node_modules/codemirror/addon/mode/multiplex.js","webpack:///./node_modules/codemirror/mode/javascript/javascript.js"],"names":["mod","CodeMirror","defineMode","config","cssMode","mimeModes","propertyKeywords","colorKeywords","valueKeywords","fontProperties","tokenRegexp","words","RegExp","join","word","keywords","keywordsRegexp","operators","opRegexp","pseudoElementsRegexp","isEndLine","stream","peek","match","urlTokens","state","ch","next","tokenizer","tokenBase","eatSpace","buildStringTokenizer","comment","indentation","multiLine","sol","skipTo","skipToEnd","quote","greedy","stringTokenizer","nextChar","peekChar","previousChar","string","charAt","pos","endingString","cursorHalf","buildInterpolationTokenizer","currentTokenizer","indent","indentCount","lastScopeOffset","scopes","offset","currentOffset","indentUnit","unshift","dedent","length","shift","eatWhile","current","toLowerCase","hasOwnProperty","prevProp","prop","tokenLexer","style","startOfToken","withCurrentIndent","newScopes","i","scope","push","startState","type","definedVars","definedMixins","token","lastToken","content","blockCommentStart","blockCommentEnd","lineComment","fold","defineMIME","WRAP_CLASS","BACK_CLASS","GUTT_CLASS","clearActiveLines","cm","activeLines","removeLineClass","sameArray","a","b","updateActiveLines","ranges","active","range","option","getOption","nonEmpty","anchor","line","head","empty","getLineHandleVisualStart","operation","addLineClass","selectionChange","sel","defineOption","val","old","prev","Init","off","listSelections","on","render","_vm","this","_c","_self","staticClass","ref","attrs","code","cmOptions","onCmReady","onCmFocus","onCmCodeChange","theme","_v","staticRenderFns","name","props","String","default","localStorage","getItem","data","window","innerWidth","mobileCode","desktopCode","mode","tabSize","styleActiveLine","styleSelectedText","matchBrackets","showCursorWhenSelecting","watch","newVal","oldVal","setOption","mounted","methods","setSize","newCode","component","KEYWORD","DOCTYPE","ID","CLASS","ATTRS_NEST","jsMode","getMode","State","javaScriptLine","javaScriptLineExcludesColon","javaScriptArguments","javaScriptArgumentsDepth","isInterpolating","interpolationNesting","jsState","restOfLine","isIncludeFiltered","isEach","lastTag","scriptType","isAttrs","attrsNest","inAttributeName","attributeIsType","attrValue","indentOf","Infinity","indentToken","innerMode","innerState","innerModeForLine","javaScript","tok","eol","yieldStatement","doctype","interpolation","interpolationContinued","caseStatement","when","defaultStatement","extendsStatement","append","prepend","block","include","includeFiltered","includeFilteredContinued","filter","mixin","call","mixinCallAfter","callArguments","conditional","each","eachContinued","whileStatement","tag","captures","innerModes","substring","setInnerMode","id","className","attrsContinued","pop","eat","trim","toString","Function","replace","backUp","ex","attributesBlock","colon","text","dot","indexOf","fail","force","hideFirstChars","copyState","copy","nextToken","prototype","res","slice","tagLanguages","script","template","parserConfig","mustacheOverlay","overlayMode","backdrop","tags","noOptions","nonWS","Pos","cmp","cmpPos","firstNonWS","str","found","search","probablyInsideString","test","getTokenTypeAt","useInnerComments","getModeAt","commands","toggleComment","defineExtension","options","minLine","from","to","uncomment","self","firstLine","getLine","commentString","end","Math","min","lastLine","pad","padding","blankLines","commentBlankLines","baseString","whitespace","cut","replaceRange","fullLines","blockComment","startString","endString","lastLineHasText","lead","blockCommentLead","atCursor","getCursor","somethingSelected","setSelection","didSomething","start","lineString","lines","endPos","startLine","open","endLine","close","insideStart","insideEnd","getRange","lastStart","lastIndexOf","firstEnd","almostLastStart","openEnd","foundEnd","ensureState","states","Error","toRegex","caret","flags","ignoreCase","unicode","source","asToken","apply","result","Rule","regex","tokenFunction","pending","pend","local","endToken","localState","m","endScan","exec","index","curState","rule","matches","stack","enterLocalMode","j","spec","pers","persistent","p","persistentStates","lState","forceEnd","arr","indentFunction","meta","textAfter","dontIndentStates","Pass","rules","scan","dedentIfLineStart","defineSimpleMode","simpleMode","states_","hasIndentation","list","orig","s","override","indentUnitString","tagKeywords","keySet","tagKeywords_","tagVariablesRegexp","propertyKeywords_","nonStandardPropertyKeywords","nonStandardPropertyKeywords_","valueKeywords_","colorKeywords_","documentTypes","documentTypes_","documentTypesRegexp","wordRegexp","mediaFeatures","mediaFeatures_","mediaTypes","mediaTypes_","fontProperties_","operatorsRegexp","wordOperatorKeywordsRegexp","wordOperatorKeywords_","blockKeywords","blockKeywords_","vendorPrefixesRegexp","commonAtoms","commonAtoms_","firstWordMatch","context","firstWord","tokenize","tokenCComment","tokenString","tokenParenthesized","wordIsTag","maybeEnd","escaped","Context","pushContext","popContext","currentIndent","contextIndent","pass","popAndPass","n","wordIsProperty","wordIsBlock","wordIsVendorPrefix","wordAsValue","wordLC","typeIsBlock","endOfLine","typeIsInterpolation","typeIsPseudo","startOfLine","escapeRegExp","firstWordOfLine","re","parens","vendorPrefixes","pseudo","atBlock","atBlock_parens","keyframes","extend","variableName","base","cx","lineFirstWord","lineIndent","prevLineFirstWord","prevLineIndent","electricChars","blockCommentContinue","commonDef_","hintWords","concat","sort","array","keys","registerHelper","inline","resolveMode","tokenHooks","mediaValueKeywords","counterDescriptors","allowNested","supportsAtComponent","highlightNonStandardPropertyKeywords","ret","tp","stateArg","top","_stream","max","mediaValueKeywords_","counterDescriptors_","allWords","helperType","ie_lt8","navigator","userAgent","document","documentMode","matching","bracketRegex","findMatchingBracket","where","getLineHandle","afterCursor","getWrapperElement","dir","strict","scanForBracket","forward","maxScanLen","maxScanLineLength","maxScanLines","lineEnd","lineNo","undefined","autoclear","maxHighlightLen","maxHighlightLineLength","highlightNonMatching","marks","markText","focused","focus","clear","setTimeout","doMatchBrackets","currentlyHighlighted","clearHighlighted","oldConfig","onCursorActivity","markedSelection","update","onChange","markedSelectionStyle","reset","CHUNK_SIZE","coverRange","addAt","cls","atEnd","mark","splice","coverStart","find","coverEnd","overlay","combine","basePos","baseCur","overlayPos","overlayCur","streamSeen","combineTokens","blankLine","baseToken","overlayToken","conf","parserConf","ERRORCLASS","delimiters","identifiers","atProp","wordOperators","indentKeywords","commonKeywords","stringPrefixes","regexPrefixes","commonConstants","constants","align","scopeOffset","lineOffset","longComment","floatLiteral","intLiteral","tokenFactory","delimiter","singleline","outclass","singleLineStringErrors","alignOffset","column","_indent","matched","delimiter_index","external","basecolumn","fillAlign","closer","closes","htmlConfig","autoSelfClosers","implicitlyClosed","contextGrabbers","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","allowMissingTagName","editorConf","config_","setStyle","defaults","htmlMode","inText","chain","parser","ok","inBlock","inTag","baseState","tagName","tagStart","inAttribute","stringStartCol","closure","isInAttribute","terminator","depth","lower","indented","noIndent","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","attrEqState","attrValueState","attrContinuedState","isInText","baseIndent","fullLine","multilineTagIndentPastTag","multilineTagIndentFactor","alignCDATA","tagAfter","grabbers","electricInput","configuration","skipAttribute","xmlCurrentTag","xmlCurrentContext","reverse","defaultTags","maybeBackup","pat","cur","attrRegexpCache","getAttrRegexp","attr","regexp","getAttrValue","getTagRegexp","anchored","addTags","dest","findMatchingMode","tagInfo","tagText","configTags","configScript","scriptTypes","html","htmlState","modeSpec","endTagA","endTag","localMode","handlebars_raw","handlebars","dash_comment","multiplexingMode","parseDelimiters","outer","others","Array","arguments","pattern","returnEnd","innerActive","inner","startingInner","curInner","oldContent","delimStyle","innerToken","innerStyle","cutOff","other","outerIndent","possibleOuterIndent","outerToken","statementIndent","jsonldMode","jsonld","jsonMode","json","trackScope","isTS","typescript","wordRE","wordCharacters","kw","A","B","C","D","operator","atom","isOperatorChar","isJsonldKeyword","readRegexp","inSet","cont","tokenComment","expressionAllowed","tokenQuasi","lexical","lastType","propertyIsEnumerable","brackets","findFatArrow","fatArrowAt","arrow","sawSomething","bracket","atomicTypes","JSLexical","info","inScope","varname","v","localVars","vars","parseJS","cc","marked","combinator","expression","statement","lex","inList","register","newContext","registerVarScoped","Var","globalVars","isModifier","defaultVars","pushcontext","pushblockcontext","popcontext","pushlex","poplex","expect","wanted","exp","value","vardef","parenExpr","maybeexpression","maybeelse","functiondef","forspec","enumdef","typename","typeexpr","maybelabel","maybeCatchBinding","afterExport","afterImport","funarg","expressionInner","expressionNoComma","noComma","body","arrowBodyNoComma","arrowBody","commasep","maybeop","maybeoperatorNoComma","maybeoperatorComma","classExpression","arrayLiteral","contCommasep","objprop","quasi","maybeTarget","me","expr","property","continueQuasi","targetNoComma","target","maybeTypeArgs","_","getterSetter","afterprop","maybetype","what","sep","proceed","maybetypeOrIn","mayberettype","isKW","afterType","typeprops","typearg","maybeReturnType","quasiType","typeprop","functiondecl","continueQuasiType","typeparam","maybeTypeDefault","maybeAssign","vardefCont","eltpattern","proppattern","_type","forspec1","forspec2","classNameAfter","classBody","classfield","isInterface","maybeFrom","exportField","importSpec","maybeMoreImports","maybeAs","enummember","isContinuedStatement","firstChar","c","closing","doubleIndentSwitch","closeBrackets","skipExpression","StringStream"],"mappings":"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","file":"js/chunk-00bba320.087ac3e1.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"sass\", function(config) {\n var cssMode = CodeMirror.mimeModes[\"text/css\"];\n var propertyKeywords = cssMode.propertyKeywords || {},\n colorKeywords = cssMode.colorKeywords || {},\n valueKeywords = cssMode.valueKeywords || {},\n fontProperties = cssMode.fontProperties || {};\n\n function tokenRegexp(words) {\n return new RegExp(\"^\" + words.join(\"|\"));\n }\n\n var keywords = [\"true\", \"false\", \"null\", \"auto\"];\n var keywordsRegexp = new RegExp(\"^\" + keywords.join(\"|\"));\n\n var operators = [\"\\\\(\", \"\\\\)\", \"=\", \">\", \"<\", \"==\", \">=\", \"<=\", \"\\\\+\", \"-\",\n \"\\\\!=\", \"/\", \"\\\\*\", \"%\", \"and\", \"or\", \"not\", \";\",\"\\\\{\",\"\\\\}\",\":\"];\n var opRegexp = tokenRegexp(operators);\n\n var pseudoElementsRegexp = /^::?[a-zA-Z_][\\w\\-]*/;\n\n var word;\n\n function isEndLine(stream) {\n return !stream.peek() || stream.match(/\\s+$/, false);\n }\n\n function urlTokens(stream, state) {\n var ch = stream.peek();\n\n if (ch === \")\") {\n stream.next();\n state.tokenizer = tokenBase;\n return \"operator\";\n } else if (ch === \"(\") {\n stream.next();\n stream.eatSpace();\n\n return \"operator\";\n } else if (ch === \"'\" || ch === '\"') {\n state.tokenizer = buildStringTokenizer(stream.next());\n return \"string\";\n } else {\n state.tokenizer = buildStringTokenizer(\")\", false);\n return \"string\";\n }\n }\n function comment(indentation, multiLine) {\n return function(stream, state) {\n if (stream.sol() && stream.indentation() <= indentation) {\n state.tokenizer = tokenBase;\n return tokenBase(stream, state);\n }\n\n if (multiLine && stream.skipTo(\"*/\")) {\n stream.next();\n stream.next();\n state.tokenizer = tokenBase;\n } else {\n stream.skipToEnd();\n }\n\n return \"comment\";\n };\n }\n\n function buildStringTokenizer(quote, greedy) {\n if (greedy == null) { greedy = true; }\n\n function stringTokenizer(stream, state) {\n var nextChar = stream.next();\n var peekChar = stream.peek();\n var previousChar = stream.string.charAt(stream.pos-2);\n\n var endingString = ((nextChar !== \"\\\\\" && peekChar === quote) || (nextChar === quote && previousChar !== \"\\\\\"));\n\n if (endingString) {\n if (nextChar !== quote && greedy) { stream.next(); }\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n state.tokenizer = tokenBase;\n return \"string\";\n } else if (nextChar === \"#\" && peekChar === \"{\") {\n state.tokenizer = buildInterpolationTokenizer(stringTokenizer);\n stream.next();\n return \"operator\";\n } else {\n return \"string\";\n }\n }\n\n return stringTokenizer;\n }\n\n function buildInterpolationTokenizer(currentTokenizer) {\n return function(stream, state) {\n if (stream.peek() === \"}\") {\n stream.next();\n state.tokenizer = currentTokenizer;\n return \"operator\";\n } else {\n return tokenBase(stream, state);\n }\n };\n }\n\n function indent(state) {\n if (state.indentCount == 0) {\n state.indentCount++;\n var lastScopeOffset = state.scopes[0].offset;\n var currentOffset = lastScopeOffset + config.indentUnit;\n state.scopes.unshift({ offset:currentOffset });\n }\n }\n\n function dedent(state) {\n if (state.scopes.length == 1) return;\n\n state.scopes.shift();\n }\n\n function tokenBase(stream, state) {\n var ch = stream.peek();\n\n // Comment\n if (stream.match(\"/*\")) {\n state.tokenizer = comment(stream.indentation(), true);\n return state.tokenizer(stream, state);\n }\n if (stream.match(\"//\")) {\n state.tokenizer = comment(stream.indentation(), false);\n return state.tokenizer(stream, state);\n }\n\n // Interpolation\n if (stream.match(\"#{\")) {\n state.tokenizer = buildInterpolationTokenizer(tokenBase);\n return \"operator\";\n }\n\n // Strings\n if (ch === '\"' || ch === \"'\") {\n stream.next();\n state.tokenizer = buildStringTokenizer(ch);\n return \"string\";\n }\n\n if(!state.cursorHalf){// state.cursorHalf === 0\n // first half i.e. before : for key-value pairs\n // including selectors\n\n if (ch === \"-\") {\n if (stream.match(/^-\\w+-/)) {\n return \"meta\";\n }\n }\n\n if (ch === \".\") {\n stream.next();\n if (stream.match(/^[\\w-]+/)) {\n indent(state);\n return \"qualifier\";\n } else if (stream.peek() === \"#\") {\n indent(state);\n return \"tag\";\n }\n }\n\n if (ch === \"#\") {\n stream.next();\n // ID selectors\n if (stream.match(/^[\\w-]+/)) {\n indent(state);\n return \"builtin\";\n }\n if (stream.peek() === \"#\") {\n indent(state);\n return \"tag\";\n }\n }\n\n // Variables\n if (ch === \"$\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n return \"variable-2\";\n }\n\n // Numbers\n if (stream.match(/^-?[0-9\\.]+/))\n return \"number\";\n\n // Units\n if (stream.match(/^(px|em|in)\\b/))\n return \"unit\";\n\n if (stream.match(keywordsRegexp))\n return \"keyword\";\n\n if (stream.match(/^url/) && stream.peek() === \"(\") {\n state.tokenizer = urlTokens;\n return \"atom\";\n }\n\n if (ch === \"=\") {\n // Match shortcut mixin definition\n if (stream.match(/^=[\\w-]+/)) {\n indent(state);\n return \"meta\";\n }\n }\n\n if (ch === \"+\") {\n // Match shortcut mixin definition\n if (stream.match(/^\\+[\\w-]+/)){\n return \"variable-3\";\n }\n }\n\n if(ch === \"@\"){\n if(stream.match('@extend')){\n if(!stream.match(/\\s*[\\w]/))\n dedent(state);\n }\n }\n\n\n // Indent Directives\n if (stream.match(/^@(else if|if|media|else|for|each|while|mixin|function)/)) {\n indent(state);\n return \"def\";\n }\n\n // Other Directives\n if (ch === \"@\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n return \"def\";\n }\n\n if (stream.eatWhile(/[\\w-]/)){\n if(stream.match(/ *: *[\\w-\\+\\$#!\\(\"']/,false)){\n word = stream.current().toLowerCase();\n var prop = state.prevProp + \"-\" + word;\n if (propertyKeywords.hasOwnProperty(prop)) {\n return \"property\";\n } else if (propertyKeywords.hasOwnProperty(word)) {\n state.prevProp = word;\n return \"property\";\n } else if (fontProperties.hasOwnProperty(word)) {\n return \"property\";\n }\n return \"tag\";\n }\n else if(stream.match(/ *:/,false)){\n indent(state);\n state.cursorHalf = 1;\n state.prevProp = stream.current().toLowerCase();\n return \"property\";\n }\n else if(stream.match(/ *,/,false)){\n return \"tag\";\n }\n else{\n indent(state);\n return \"tag\";\n }\n }\n\n if(ch === \":\"){\n if (stream.match(pseudoElementsRegexp)){ // could be a pseudo-element\n return \"variable-3\";\n }\n stream.next();\n state.cursorHalf=1;\n return \"operator\";\n }\n\n } // cursorHalf===0 ends here\n else{\n\n if (ch === \"#\") {\n stream.next();\n // Hex numbers\n if (stream.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"number\";\n }\n }\n\n // Numbers\n if (stream.match(/^-?[0-9\\.]+/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"number\";\n }\n\n // Units\n if (stream.match(/^(px|em|in)\\b/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"unit\";\n }\n\n if (stream.match(keywordsRegexp)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"keyword\";\n }\n\n if (stream.match(/^url/) && stream.peek() === \"(\") {\n state.tokenizer = urlTokens;\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"atom\";\n }\n\n // Variables\n if (ch === \"$\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"variable-2\";\n }\n\n // bang character for !important, !default, etc.\n if (ch === \"!\") {\n stream.next();\n state.cursorHalf = 0;\n return stream.match(/^[\\w]+/) ? \"keyword\": \"operator\";\n }\n\n if (stream.match(opRegexp)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"operator\";\n }\n\n // attributes\n if (stream.eatWhile(/[\\w-]/)) {\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word)) {\n return \"atom\";\n } else if (colorKeywords.hasOwnProperty(word)) {\n return \"keyword\";\n } else if (propertyKeywords.hasOwnProperty(word)) {\n state.prevProp = stream.current().toLowerCase();\n return \"property\";\n } else {\n return \"tag\";\n }\n }\n\n //stream.eatSpace();\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n return null;\n }\n\n } // else ends here\n\n if (stream.match(opRegexp))\n return \"operator\";\n\n // If we haven't returned by now, we move 1 character\n // and return an error\n stream.next();\n return null;\n }\n\n function tokenLexer(stream, state) {\n if (stream.sol()) state.indentCount = 0;\n var style = state.tokenizer(stream, state);\n var current = stream.current();\n\n if (current === \"@return\" || current === \"}\"){\n dedent(state);\n }\n\n if (style !== null) {\n var startOfToken = stream.pos - current.length;\n\n var withCurrentIndent = startOfToken + (config.indentUnit * state.indentCount);\n\n var newScopes = [];\n\n for (var i = 0; i < state.scopes.length; i++) {\n var scope = state.scopes[i];\n\n if (scope.offset <= withCurrentIndent)\n newScopes.push(scope);\n }\n\n state.scopes = newScopes;\n }\n\n\n return style;\n }\n\n return {\n startState: function() {\n return {\n tokenizer: tokenBase,\n scopes: [{offset: 0, type: \"sass\"}],\n indentCount: 0,\n cursorHalf: 0, // cursor half tells us if cursor lies after (1)\n // or before (0) colon (well... more or less)\n definedVars: [],\n definedMixins: []\n };\n },\n token: function(stream, state) {\n var style = tokenLexer(stream, state);\n\n state.lastToken = { style: style, content: stream.current() };\n\n return style;\n },\n\n indent: function(state) {\n return state.scopes[0].offset;\n },\n\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n lineComment: \"//\",\n fold: \"indent\"\n };\n}, \"css\");\n\nCodeMirror.defineMIME(\"text/x-sass\", \"sass\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n var WRAP_CLASS = \"CodeMirror-activeline\";\n var BACK_CLASS = \"CodeMirror-activeline-background\";\n var GUTT_CLASS = \"CodeMirror-activeline-gutter\";\n\n CodeMirror.defineOption(\"styleActiveLine\", false, function(cm, val, old) {\n var prev = old == CodeMirror.Init ? false : old;\n if (val == prev) return\n if (prev) {\n cm.off(\"beforeSelectionChange\", selectionChange);\n clearActiveLines(cm);\n delete cm.state.activeLines;\n }\n if (val) {\n cm.state.activeLines = [];\n updateActiveLines(cm, cm.listSelections());\n cm.on(\"beforeSelectionChange\", selectionChange);\n }\n });\n\n function clearActiveLines(cm) {\n for (var i = 0; i < cm.state.activeLines.length; i++) {\n cm.removeLineClass(cm.state.activeLines[i], \"wrap\", WRAP_CLASS);\n cm.removeLineClass(cm.state.activeLines[i], \"background\", BACK_CLASS);\n cm.removeLineClass(cm.state.activeLines[i], \"gutter\", GUTT_CLASS);\n }\n }\n\n function sameArray(a, b) {\n if (a.length != b.length) return false;\n for (var i = 0; i < a.length; i++)\n if (a[i] != b[i]) return false;\n return true;\n }\n\n function updateActiveLines(cm, ranges) {\n var active = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var option = cm.getOption(\"styleActiveLine\");\n if (typeof option == \"object\" && option.nonEmpty ? range.anchor.line != range.head.line : !range.empty())\n continue\n var line = cm.getLineHandleVisualStart(range.head.line);\n if (active[active.length - 1] != line) active.push(line);\n }\n if (sameArray(cm.state.activeLines, active)) return;\n cm.operation(function() {\n clearActiveLines(cm);\n for (var i = 0; i < active.length; i++) {\n cm.addLineClass(active[i], \"wrap\", WRAP_CLASS);\n cm.addLineClass(active[i], \"background\", BACK_CLASS);\n cm.addLineClass(active[i], \"gutter\", GUTT_CLASS);\n }\n cm.state.activeLines = active;\n });\n }\n\n function selectionChange(cm, sel) {\n updateActiveLines(cm, sel.ranges);\n }\n});\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeView.vue?vue&type=style&index=0&id=09b6d7f2&prod&scoped=true&lang=scss\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"window\"},[_c('codemirror',{ref:\"myCm\",staticClass:\"code\",attrs:{\"value\":_vm.code,\"options\":_vm.cmOptions},on:{\"ready\":_vm.onCmReady,\"focus\":_vm.onCmFocus,\"input\":_vm.onCmCodeChange}}),_c('div',{staticClass:\"right caption\"},[(_vm.theme === 'dark')?_c('span',[_vm._v(\"\\n Ultimate Dark Neo code theme for\\n \"),_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"https://marketplace.visualstudio.com/items?itemName=rubjo.ultimate-dark-neo\"}},[_vm._v(\"VS Code\")]),_vm._v(\"\\n or\\n \"),_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"https://packagecontrol.io/packages/Ultimate%20Dark%20Neo\"}},[_vm._v(\"Sublime Text\")]),_vm._v(\".\\n \")]):_c('span',[_vm._v(\"\\n Based on\\n \"),_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"https://github.com/chriskempson/base16\"}},[_vm._v(\"Base 16 Light\")]),_vm._v(\"\\n colour scheme by Chris Kempson.\\n \")]),_vm._v(\"\\n Also check out\\n \"),_c('a',{attrs:{\"target\":\"_blank\",\"href\":'https://themer.dev/victor-mono?activeColorSet=' + _vm.theme}},[_vm._v(\"\\n themer.dev/victor-mono\")]),_vm._v(\"!\\n \")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default \"<template> <!-- Go ahead and edit me -->\\n <div id=\\\"app\\\">\\n <h1 class=\\\"zero-margin\\\">My App!</h1>\\n <MainView styling=\\\"italic-liga\\\" />\\n </div>\\n</template>\\n\\n<script> /* eslint-disable */\\n import MainView from 'Somewhere.vue'\\n\\n export default {\\n components: { MainView },\\n methods: {\\n init () {\\n// Easy array filtering, mapping, ...\\nconst arr = [5, 6, 13, 0, 1, 18, 23]\\nconst sum = arr.reduce((a, b) => a + b)\\nconst even = arr.filter(v => v % 2 === 0)\\nconst double = arr.map(v => v * 2)\\n</script>\\n\\n<style lang=\\\"scss\\\" scoped>\\n @import './global-variables.scss';\\n\\n #app {\\n font-family: 'VictorMono', monospace;\\n line-height: 42;\\n color: $wild-gradient;\\n }\\n // Mwwhooahhaha, they'll never know\\n // what hit them\\n h1 {\\n position: absolute;\\n top: 0;\\n right: -1000px;\\n }\\n</style>\\n\"","export default \"// Ask for a user name until API returns a valid user\\nasync function getUser () {\\n let user\\n while (true) {\\n let name = prompt('Enter a user name', 'rubjo')\\n try {\\n user = await loadJson(`https://my.api.com/users/${name}`)\\n break // No error, exit loop and proceed\\n } catch (err) {\\n if (err.response && err.response.status === 404) {\\n alert(`User \\\"${name}\\\" not found, please reenter.`)\\n } else {\\n throw err // Unknown error, rethrow it\\n }\\n }\\n }\\n return user\\n}\\n\"","<template>\n <div>\n <div\n class=\"window\"\n >\n <codemirror\n ref=\"myCm\"\n class=\"code\"\n :value=\"code\"\n :options=\"cmOptions\"\n @ready=\"onCmReady\"\n @focus=\"onCmFocus\"\n @input=\"onCmCodeChange\"\n />\n <div class=\"right caption\">\n <span v-if=\"theme === 'dark'\">\n Ultimate Dark Neo code theme for\n <a\n target=\"_blank\"\n href=\"https://marketplace.visualstudio.com/items?itemName=rubjo.ultimate-dark-neo\"\n >VS Code</a>\n or\n <a\n target=\"_blank\"\n href=\"https://packagecontrol.io/packages/Ultimate%20Dark%20Neo\"\n >Sublime Text</a>.\n </span>\n <span v-else>\n Based on\n <a\n target=\"_blank\"\n href=\"https://github.com/chriskempson/base16\"\n >Base 16 Light</a>\n colour scheme by Chris Kempson.\n </span>\n Also check out\n <a\n target=\"_blank\"\n :href=\"'https://themer.dev/victor-mono?activeColorSet=' + theme\"\n >\n themer.dev/victor-mono</a>!\n </div>\n </div>\n </div>\n</template>\n<script>\n// language\nimport 'codemirror/mode/vue/vue.js'\nimport 'codemirror/mode/javascript/javascript.js'\n// themes css\nimport '@/styles/oceanic-next.css'\nimport '@/styles/base-16-light.css'\n// active-line.js\nimport 'codemirror/addon/selection/active-line.js'\n// styleSelectedText\nimport 'codemirror/addon/selection/mark-selection.js'\n// keyMap\nimport 'codemirror/addon/edit/matchbrackets.js'\nimport 'codemirror/addon/comment/comment.js'\n\n// sample code\n// eslint-disable-next-line\nimport mobileCode from '!raw-loader!@/components/Sample-mobile.vue'\nimport desktopCode from '!raw-loader!@/components/Sample-desktop.js'\n\nexport default {\n name: 'CodeView',\n props: {\n theme: {\n type: String,\n default: localStorage.getItem('theme') || 'dark'\n }\n },\n data () {\n return {\n code: window.innerWidth <= 768 ? mobileCode : desktopCode,\n cmOptions: {\n mode: window.innerWidth <= 768 ? 'text/x-vue' : 'text/javascript',\n tabSize: 2,\n styleActiveLine: true,\n line: true,\n styleSelectedText: true,\n matchBrackets: true,\n showCursorWhenSelecting: true,\n theme: this.theme === 'dark' ? 'oceanic-next' : 'base16-light'\n }\n }\n },\n watch: {\n theme (newVal, oldVal) {\n this.cm.setOption('theme', newVal === 'dark' ? 'oceanic-next' : 'base16-light')\n }\n },\n mounted () {\n },\n methods: {\n onCmReady (cm) {\n this.cm = cm\n cm.setSize('100%', '100%')\n },\n onCmFocus (cm) {\n },\n onCmCodeChange (newCode) {\n this.code = newCode\n }\n }\n}\n\n</script>\n<style\n scoped\n lang=\"scss\"\n>\n.window {\n position: relative;\n z-index: 0;\n}\n\n::v-deep .CodeMirror {\n background: transparent;\n}\n\n.code {\n height: calc(100% - 34px);\n font-size: calc(14px + 0.5vw);\n line-height: 1.5em;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeView.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CodeView.vue?vue&type=template&id=09b6d7f2&scoped=true\"\nimport script from \"./CodeView.vue?vue&type=script&lang=js\"\nexport * from \"./CodeView.vue?vue&type=script&lang=js\"\nimport style0 from \"./CodeView.vue?vue&type=style&index=0&id=09b6d7f2&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"09b6d7f2\",\n null\n \n)\n\nexport default component.exports","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../javascript/javascript\"), require(\"../css/css\"), require(\"../htmlmixed/htmlmixed\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../javascript/javascript\", \"../css/css\", \"../htmlmixed/htmlmixed\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"pug\", function (config) {\n // token types\n var KEYWORD = 'keyword';\n var DOCTYPE = 'meta';\n var ID = 'builtin';\n var CLASS = 'qualifier';\n\n var ATTRS_NEST = {\n '{': '}',\n '(': ')',\n '[': ']'\n };\n\n var jsMode = CodeMirror.getMode(config, 'javascript');\n\n function State() {\n this.javaScriptLine = false;\n this.javaScriptLineExcludesColon = false;\n\n this.javaScriptArguments = false;\n this.javaScriptArgumentsDepth = 0;\n\n this.isInterpolating = false;\n this.interpolationNesting = 0;\n\n this.jsState = CodeMirror.startState(jsMode);\n\n this.restOfLine = '';\n\n this.isIncludeFiltered = false;\n this.isEach = false;\n\n this.lastTag = '';\n this.scriptType = '';\n\n // Attributes Mode\n this.isAttrs = false;\n this.attrsNest = [];\n this.inAttributeName = true;\n this.attributeIsType = false;\n this.attrValue = '';\n\n // Indented Mode\n this.indentOf = Infinity;\n this.indentToken = '';\n\n this.innerMode = null;\n this.innerState = null;\n\n this.innerModeForLine = false;\n }\n /**\n * Safely copy a state\n *\n * @return {State}\n */\n State.prototype.copy = function () {\n var res = new State();\n res.javaScriptLine = this.javaScriptLine;\n res.javaScriptLineExcludesColon = this.javaScriptLineExcludesColon;\n res.javaScriptArguments = this.javaScriptArguments;\n res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth;\n res.isInterpolating = this.isInterpolating;\n res.interpolationNesting = this.interpolationNesting;\n\n res.jsState = CodeMirror.copyState(jsMode, this.jsState);\n\n res.innerMode = this.innerMode;\n if (this.innerMode && this.innerState) {\n res.innerState = CodeMirror.copyState(this.innerMode, this.innerState);\n }\n\n res.restOfLine = this.restOfLine;\n\n res.isIncludeFiltered = this.isIncludeFiltered;\n res.isEach = this.isEach;\n res.lastTag = this.lastTag;\n res.scriptType = this.scriptType;\n res.isAttrs = this.isAttrs;\n res.attrsNest = this.attrsNest.slice();\n res.inAttributeName = this.inAttributeName;\n res.attributeIsType = this.attributeIsType;\n res.attrValue = this.attrValue;\n res.indentOf = this.indentOf;\n res.indentToken = this.indentToken;\n\n res.innerModeForLine = this.innerModeForLine;\n\n return res;\n };\n\n function javaScript(stream, state) {\n if (stream.sol()) {\n // if javaScriptLine was set at end of line, ignore it\n state.javaScriptLine = false;\n state.javaScriptLineExcludesColon = false;\n }\n if (state.javaScriptLine) {\n if (state.javaScriptLineExcludesColon && stream.peek() === ':') {\n state.javaScriptLine = false;\n state.javaScriptLineExcludesColon = false;\n return;\n }\n var tok = jsMode.token(stream, state.jsState);\n if (stream.eol()) state.javaScriptLine = false;\n return tok || true;\n }\n }\n function javaScriptArguments(stream, state) {\n if (state.javaScriptArguments) {\n if (state.javaScriptArgumentsDepth === 0 && stream.peek() !== '(') {\n state.javaScriptArguments = false;\n return;\n }\n if (stream.peek() === '(') {\n state.javaScriptArgumentsDepth++;\n } else if (stream.peek() === ')') {\n state.javaScriptArgumentsDepth--;\n }\n if (state.javaScriptArgumentsDepth === 0) {\n state.javaScriptArguments = false;\n return;\n }\n\n var tok = jsMode.token(stream, state.jsState);\n return tok || true;\n }\n }\n\n function yieldStatement(stream) {\n if (stream.match(/^yield\\b/)) {\n return 'keyword';\n }\n }\n\n function doctype(stream) {\n if (stream.match(/^(?:doctype) *([^\\n]+)?/)) {\n return DOCTYPE;\n }\n }\n\n function interpolation(stream, state) {\n if (stream.match('#{')) {\n state.isInterpolating = true;\n state.interpolationNesting = 0;\n return 'punctuation';\n }\n }\n\n function interpolationContinued(stream, state) {\n if (state.isInterpolating) {\n if (stream.peek() === '}') {\n state.interpolationNesting--;\n if (state.interpolationNesting < 0) {\n stream.next();\n state.isInterpolating = false;\n return 'punctuation';\n }\n } else if (stream.peek() === '{') {\n state.interpolationNesting++;\n }\n return jsMode.token(stream, state.jsState) || true;\n }\n }\n\n function caseStatement(stream, state) {\n if (stream.match(/^case\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function when(stream, state) {\n if (stream.match(/^when\\b/)) {\n state.javaScriptLine = true;\n state.javaScriptLineExcludesColon = true;\n return KEYWORD;\n }\n }\n\n function defaultStatement(stream) {\n if (stream.match(/^default\\b/)) {\n return KEYWORD;\n }\n }\n\n function extendsStatement(stream, state) {\n if (stream.match(/^extends?\\b/)) {\n state.restOfLine = 'string';\n return KEYWORD;\n }\n }\n\n function append(stream, state) {\n if (stream.match(/^append\\b/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n function prepend(stream, state) {\n if (stream.match(/^prepend\\b/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n function block(stream, state) {\n if (stream.match(/^block\\b *(?:(prepend|append)\\b)?/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n\n function include(stream, state) {\n if (stream.match(/^include\\b/)) {\n state.restOfLine = 'string';\n return KEYWORD;\n }\n }\n\n function includeFiltered(stream, state) {\n if (stream.match(/^include:([a-zA-Z0-9\\-]+)/, false) && stream.match('include')) {\n state.isIncludeFiltered = true;\n return KEYWORD;\n }\n }\n\n function includeFilteredContinued(stream, state) {\n if (state.isIncludeFiltered) {\n var tok = filter(stream, state);\n state.isIncludeFiltered = false;\n state.restOfLine = 'string';\n return tok;\n }\n }\n\n function mixin(stream, state) {\n if (stream.match(/^mixin\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function call(stream, state) {\n if (stream.match(/^\\+([-\\w]+)/)) {\n if (!stream.match(/^\\( *[-\\w]+ *=/, false)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n }\n return 'variable';\n }\n if (stream.match('+#{', false)) {\n stream.next();\n state.mixinCallAfter = true;\n return interpolation(stream, state);\n }\n }\n function callArguments(stream, state) {\n if (state.mixinCallAfter) {\n state.mixinCallAfter = false;\n if (!stream.match(/^\\( *[-\\w]+ *=/, false)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n }\n return true;\n }\n }\n\n function conditional(stream, state) {\n if (stream.match(/^(if|unless|else if|else)\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function each(stream, state) {\n if (stream.match(/^(- *)?(each|for)\\b/)) {\n state.isEach = true;\n return KEYWORD;\n }\n }\n function eachContinued(stream, state) {\n if (state.isEach) {\n if (stream.match(/^ in\\b/)) {\n state.javaScriptLine = true;\n state.isEach = false;\n return KEYWORD;\n } else if (stream.sol() || stream.eol()) {\n state.isEach = false;\n } else if (stream.next()) {\n while (!stream.match(/^ in\\b/, false) && stream.next());\n return 'variable';\n }\n }\n }\n\n function whileStatement(stream, state) {\n if (stream.match(/^while\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function tag(stream, state) {\n var captures;\n if (captures = stream.match(/^(\\w(?:[-:\\w]*\\w)?)\\/?/)) {\n state.lastTag = captures[1].toLowerCase();\n if (state.lastTag === 'script') {\n state.scriptType = 'application/javascript';\n }\n return 'tag';\n }\n }\n\n function filter(stream, state) {\n if (stream.match(/^:([\\w\\-]+)/)) {\n var innerMode;\n if (config && config.innerModes) {\n innerMode = config.innerModes(stream.current().substring(1));\n }\n if (!innerMode) {\n innerMode = stream.current().substring(1);\n }\n if (typeof innerMode === 'string') {\n innerMode = CodeMirror.getMode(config, innerMode);\n }\n setInnerMode(stream, state, innerMode);\n return 'atom';\n }\n }\n\n function code(stream, state) {\n if (stream.match(/^(!?=|-)/)) {\n state.javaScriptLine = true;\n return 'punctuation';\n }\n }\n\n function id(stream) {\n if (stream.match(/^#([\\w-]+)/)) {\n return ID;\n }\n }\n\n function className(stream) {\n if (stream.match(/^\\.([\\w-]+)/)) {\n return CLASS;\n }\n }\n\n function attrs(stream, state) {\n if (stream.peek() == '(') {\n stream.next();\n state.isAttrs = true;\n state.attrsNest = [];\n state.inAttributeName = true;\n state.attrValue = '';\n state.attributeIsType = false;\n return 'punctuation';\n }\n }\n\n function attrsContinued(stream, state) {\n if (state.isAttrs) {\n if (ATTRS_NEST[stream.peek()]) {\n state.attrsNest.push(ATTRS_NEST[stream.peek()]);\n }\n if (state.attrsNest[state.attrsNest.length - 1] === stream.peek()) {\n state.attrsNest.pop();\n } else if (stream.eat(')')) {\n state.isAttrs = false;\n return 'punctuation';\n }\n if (state.inAttributeName && stream.match(/^[^=,\\)!]+/)) {\n if (stream.peek() === '=' || stream.peek() === '!') {\n state.inAttributeName = false;\n state.jsState = CodeMirror.startState(jsMode);\n if (state.lastTag === 'script' && stream.current().trim().toLowerCase() === 'type') {\n state.attributeIsType = true;\n } else {\n state.attributeIsType = false;\n }\n }\n return 'attribute';\n }\n\n var tok = jsMode.token(stream, state.jsState);\n if (state.attributeIsType && tok === 'string') {\n state.scriptType = stream.current().toString();\n }\n if (state.attrsNest.length === 0 && (tok === 'string' || tok === 'variable' || tok === 'keyword')) {\n try {\n Function('', 'var x ' + state.attrValue.replace(/,\\s*$/, '').replace(/^!/, ''));\n state.inAttributeName = true;\n state.attrValue = '';\n stream.backUp(stream.current().length);\n return attrsContinued(stream, state);\n } catch (ex) {\n //not the end of an attribute\n }\n }\n state.attrValue += stream.current();\n return tok || true;\n }\n }\n\n function attributesBlock(stream, state) {\n if (stream.match(/^&attributes\\b/)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n return 'keyword';\n }\n }\n\n function indent(stream) {\n if (stream.sol() && stream.eatSpace()) {\n return 'indent';\n }\n }\n\n function comment(stream, state) {\n if (stream.match(/^ *\\/\\/(-)?([^\\n]*)/)) {\n state.indentOf = stream.indentation();\n state.indentToken = 'comment';\n return 'comment';\n }\n }\n\n function colon(stream) {\n if (stream.match(/^: */)) {\n return 'colon';\n }\n }\n\n function text(stream, state) {\n if (stream.match(/^(?:\\| ?| )([^\\n]+)/)) {\n return 'string';\n }\n if (stream.match(/^(<[^\\n]*)/, false)) {\n // html string\n setInnerMode(stream, state, 'htmlmixed');\n state.innerModeForLine = true;\n return innerMode(stream, state, true);\n }\n }\n\n function dot(stream, state) {\n if (stream.eat('.')) {\n var innerMode = null;\n if (state.lastTag === 'script' && state.scriptType.toLowerCase().indexOf('javascript') != -1) {\n innerMode = state.scriptType.toLowerCase().replace(/\"|'/g, '');\n } else if (state.lastTag === 'style') {\n innerMode = 'css';\n }\n setInnerMode(stream, state, innerMode);\n return 'dot';\n }\n }\n\n function fail(stream) {\n stream.next();\n return null;\n }\n\n\n function setInnerMode(stream, state, mode) {\n mode = CodeMirror.mimeModes[mode] || mode;\n mode = config.innerModes ? config.innerModes(mode) || mode : mode;\n mode = CodeMirror.mimeModes[mode] || mode;\n mode = CodeMirror.getMode(config, mode);\n state.indentOf = stream.indentation();\n\n if (mode && mode.name !== 'null') {\n state.innerMode = mode;\n } else {\n state.indentToken = 'string';\n }\n }\n function innerMode(stream, state, force) {\n if (stream.indentation() > state.indentOf || (state.innerModeForLine && !stream.sol()) || force) {\n if (state.innerMode) {\n if (!state.innerState) {\n state.innerState = state.innerMode.startState ? CodeMirror.startState(state.innerMode, stream.indentation()) : {};\n }\n return stream.hideFirstChars(state.indentOf + 2, function () {\n return state.innerMode.token(stream, state.innerState) || true;\n });\n } else {\n stream.skipToEnd();\n return state.indentToken;\n }\n } else if (stream.sol()) {\n state.indentOf = Infinity;\n state.indentToken = null;\n state.innerMode = null;\n state.innerState = null;\n }\n }\n function restOfLine(stream, state) {\n if (stream.sol()) {\n // if restOfLine was set at end of line, ignore it\n state.restOfLine = '';\n }\n if (state.restOfLine) {\n stream.skipToEnd();\n var tok = state.restOfLine;\n state.restOfLine = '';\n return tok;\n }\n }\n\n\n function startState() {\n return new State();\n }\n function copyState(state) {\n return state.copy();\n }\n /**\n * Get the next token in the stream\n *\n * @param {Stream} stream\n * @param {State} state\n */\n function nextToken(stream, state) {\n var tok = innerMode(stream, state)\n || restOfLine(stream, state)\n || interpolationContinued(stream, state)\n || includeFilteredContinued(stream, state)\n || eachContinued(stream, state)\n || attrsContinued(stream, state)\n || javaScript(stream, state)\n || javaScriptArguments(stream, state)\n || callArguments(stream, state)\n\n || yieldStatement(stream)\n || doctype(stream)\n || interpolation(stream, state)\n || caseStatement(stream, state)\n || when(stream, state)\n || defaultStatement(stream)\n || extendsStatement(stream, state)\n || append(stream, state)\n || prepend(stream, state)\n || block(stream, state)\n || include(stream, state)\n || includeFiltered(stream, state)\n || mixin(stream, state)\n || call(stream, state)\n || conditional(stream, state)\n || each(stream, state)\n || whileStatement(stream, state)\n || tag(stream, state)\n || filter(stream, state)\n || code(stream, state)\n || id(stream)\n || className(stream)\n || attrs(stream, state)\n || attributesBlock(stream, state)\n || indent(stream)\n || text(stream, state)\n || comment(stream, state)\n || colon(stream)\n || dot(stream, state)\n || fail(stream);\n\n return tok === true ? null : tok;\n }\n return {\n startState: startState,\n copyState: copyState,\n token: nextToken\n };\n}, 'javascript', 'css', 'htmlmixed');\n\nCodeMirror.defineMIME('text/x-pug', 'pug');\nCodeMirror.defineMIME('text/x-jade', 'pug');\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function (mod) {\n \"use strict\";\n if (typeof exports === \"object\" && typeof module === \"object\") {// CommonJS\n mod(require(\"../../lib/codemirror\"),\n require(\"../../addon/mode/overlay\"),\n require(\"../xml/xml\"),\n require(\"../javascript/javascript\"),\n require(\"../coffeescript/coffeescript\"),\n require(\"../css/css\"),\n require(\"../sass/sass\"),\n require(\"../stylus/stylus\"),\n require(\"../pug/pug\"),\n require(\"../handlebars/handlebars\"));\n } else if (typeof define === \"function\" && define.amd) { // AMD\n define([\"../../lib/codemirror\",\n \"../../addon/mode/overlay\",\n \"../xml/xml\",\n \"../javascript/javascript\",\n \"../coffeescript/coffeescript\",\n \"../css/css\",\n \"../sass/sass\",\n \"../stylus/stylus\",\n \"../pug/pug\",\n \"../handlebars/handlebars\"], mod);\n } else { // Plain browser env\n mod(CodeMirror);\n }\n})(function (CodeMirror) {\n var tagLanguages = {\n script: [\n [\"lang\", /coffee(script)?/, \"coffeescript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?coffee(?:script)?$/, \"coffeescript\"],\n [\"lang\", /^babel$/, \"javascript\"],\n [\"type\", /^text\\/babel$/, \"javascript\"],\n [\"type\", /^text\\/ecmascript-\\d+$/, \"javascript\"]\n ],\n style: [\n [\"lang\", /^stylus$/i, \"stylus\"],\n [\"lang\", /^sass$/i, \"sass\"],\n [\"lang\", /^less$/i, \"text/x-less\"],\n [\"lang\", /^scss$/i, \"text/x-scss\"],\n [\"type\", /^(text\\/)?(x-)?styl(us)?$/i, \"stylus\"],\n [\"type\", /^text\\/sass/i, \"sass\"],\n [\"type\", /^(text\\/)?(x-)?scss$/i, \"text/x-scss\"],\n [\"type\", /^(text\\/)?(x-)?less$/i, \"text/x-less\"]\n ],\n template: [\n [\"lang\", /^vue-template$/i, \"vue\"],\n [\"lang\", /^pug$/i, \"pug\"],\n [\"lang\", /^handlebars$/i, \"handlebars\"],\n [\"type\", /^(text\\/)?(x-)?pug$/i, \"pug\"],\n [\"type\", /^text\\/x-handlebars-template$/i, \"handlebars\"],\n [null, null, \"vue-template\"]\n ]\n };\n\n CodeMirror.defineMode(\"vue-template\", function (config, parserConfig) {\n var mustacheOverlay = {\n token: function (stream) {\n if (stream.match(/^\\{\\{.*?\\}\\}/)) return \"meta mustache\";\n while (stream.next() && !stream.match(\"{{\", false)) {}\n return null;\n }\n };\n return CodeMirror.overlayMode(CodeMirror.getMode(config, parserConfig.backdrop || \"text/html\"), mustacheOverlay);\n });\n\n CodeMirror.defineMode(\"vue\", function (config) {\n return CodeMirror.getMode(config, {name: \"htmlmixed\", tags: tagLanguages});\n }, \"htmlmixed\", \"xml\", \"javascript\", \"coffeescript\", \"css\", \"sass\", \"stylus\", \"pug\", \"handlebars\");\n\n CodeMirror.defineMIME(\"script/x-vue\", \"vue\");\n CodeMirror.defineMIME(\"text/x-vue\", \"vue\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var noOptions = {};\n var nonWS = /[^\\s\\u00a0]/;\n var Pos = CodeMirror.Pos, cmp = CodeMirror.cmpPos;\n\n function firstNonWS(str) {\n var found = str.search(nonWS);\n return found == -1 ? 0 : found;\n }\n\n CodeMirror.commands.toggleComment = function(cm) {\n cm.toggleComment();\n };\n\n CodeMirror.defineExtension(\"toggleComment\", function(options) {\n if (!options) options = noOptions;\n var cm = this;\n var minLine = Infinity, ranges = this.listSelections(), mode = null;\n for (var i = ranges.length - 1; i >= 0; i--) {\n var from = ranges[i].from(), to = ranges[i].to();\n if (from.line >= minLine) continue;\n if (to.line >= minLine) to = Pos(minLine, 0);\n minLine = from.line;\n if (mode == null) {\n if (cm.uncomment(from, to, options)) mode = \"un\";\n else { cm.lineComment(from, to, options); mode = \"line\"; }\n } else if (mode == \"un\") {\n cm.uncomment(from, to, options);\n } else {\n cm.lineComment(from, to, options);\n }\n }\n });\n\n // Rough heuristic to try and detect lines that are part of multi-line string\n function probablyInsideString(cm, pos, line) {\n return /\\bstring\\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\\'\\\"\\`]/.test(line)\n }\n\n function getMode(cm, pos) {\n var mode = cm.getMode()\n return mode.useInnerComments === false || !mode.innerMode ? mode : cm.getModeAt(pos)\n }\n\n CodeMirror.defineExtension(\"lineComment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var firstLine = self.getLine(from.line);\n if (firstLine == null || probablyInsideString(self, from, firstLine)) return;\n\n var commentString = options.lineComment || mode.lineComment;\n if (!commentString) {\n if (options.blockCommentStart || mode.blockCommentStart) {\n options.fullLines = true;\n self.blockComment(from, to, options);\n }\n return;\n }\n\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n var pad = options.padding == null ? \" \" : options.padding;\n var blankLines = options.commentBlankLines || from.line == to.line;\n\n self.operation(function() {\n if (options.indent) {\n var baseString = null;\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i);\n var whitespace = line.search(nonWS) === -1 ? line : line.slice(0, firstNonWS(line));\n if (baseString == null || baseString.length > whitespace.length) {\n baseString = whitespace;\n }\n }\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i), cut = baseString.length;\n if (!blankLines && !nonWS.test(line)) continue;\n if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n }\n } else {\n for (var i = from.line; i < end; ++i) {\n if (blankLines || nonWS.test(self.getLine(i)))\n self.replaceRange(commentString + pad, Pos(i, 0));\n }\n }\n });\n });\n\n CodeMirror.defineExtension(\"blockComment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) {\n if ((options.lineComment || mode.lineComment) && options.fullLines != false)\n self.lineComment(from, to, options);\n return;\n }\n if (/\\bcomment\\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return\n\n var end = Math.min(to.line, self.lastLine());\n if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n\n var pad = options.padding == null ? \" \" : options.padding;\n if (from.line > end) return;\n\n self.operation(function() {\n if (options.fullLines != false) {\n var lastLineHasText = nonWS.test(self.getLine(end));\n self.replaceRange(pad + endString, Pos(end));\n self.replaceRange(startString + pad, Pos(from.line, 0));\n var lead = options.blockCommentLead || mode.blockCommentLead;\n if (lead != null) for (var i = from.line + 1; i <= end; ++i)\n if (i != end || lastLineHasText)\n self.replaceRange(lead + pad, Pos(i, 0));\n } else {\n var atCursor = cmp(self.getCursor(\"to\"), to) == 0, empty = !self.somethingSelected()\n self.replaceRange(endString, to);\n if (atCursor) self.setSelection(empty ? to : self.getCursor(\"from\"), to)\n self.replaceRange(startString, from);\n }\n });\n });\n\n CodeMirror.defineExtension(\"uncomment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()), start = Math.min(from.line, end);\n\n // Try finding line comments\n var lineString = options.lineComment || mode.lineComment, lines = [];\n var pad = options.padding == null ? \" \" : options.padding, didSomething;\n lineComment: {\n if (!lineString) break lineComment;\n for (var i = start; i <= end; ++i) {\n var line = self.getLine(i);\n var found = line.indexOf(lineString);\n if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n if (found == -1 && nonWS.test(line)) break lineComment;\n if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n lines.push(line);\n }\n self.operation(function() {\n for (var i = start; i <= end; ++i) {\n var line = lines[i - start];\n var pos = line.indexOf(lineString), endPos = pos + lineString.length;\n if (pos < 0) continue;\n if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n didSomething = true;\n self.replaceRange(\"\", Pos(i, pos), Pos(i, endPos));\n }\n });\n if (didSomething) return true;\n }\n\n // Try block comments\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) return false;\n var lead = options.blockCommentLead || mode.blockCommentLead;\n var startLine = self.getLine(start), open = startLine.indexOf(startString)\n if (open == -1) return false\n var endLine = end == start ? startLine : self.getLine(end)\n var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);\n var insideStart = Pos(start, open + 1), insideEnd = Pos(end, close + 1)\n if (close == -1 ||\n !/comment/.test(self.getTokenTypeAt(insideStart)) ||\n !/comment/.test(self.getTokenTypeAt(insideEnd)) ||\n self.getRange(insideStart, insideEnd, \"\\n\").indexOf(endString) > -1)\n return false;\n\n // Avoid killing block comments completely outside the selection.\n // Positions of the last startString before the start of the selection, and the first endString after it.\n var lastStart = startLine.lastIndexOf(startString, from.ch);\n var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;\n // Positions of the first endString after the end of the selection, and the last startString before it.\n firstEnd = endLine.indexOf(endString, to.ch);\n var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n lastStart = (firstEnd == -1 || almostLastStart == -1) ? -1 : to.ch + almostLastStart;\n if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n\n self.operation(function() {\n self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),\n Pos(end, close + endString.length));\n var openEnd = open + startString.length;\n if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n if (lead) for (var i = start + 1; i <= end; ++i) {\n var line = self.getLine(i), found = line.indexOf(lead);\n if (found == -1 || nonWS.test(line.slice(0, found))) continue;\n var foundEnd = found + lead.length;\n if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n self.replaceRange(\"\", Pos(i, found), Pos(i, foundEnd));\n }\n });\n return true;\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineSimpleMode = function(name, states) {\n CodeMirror.defineMode(name, function(config) {\n return CodeMirror.simpleMode(config, states);\n });\n };\n\n CodeMirror.simpleMode = function(config, states) {\n ensureState(states, \"start\");\n var states_ = {}, meta = states.meta || {}, hasIndentation = false;\n for (var state in states) if (state != meta && states.hasOwnProperty(state)) {\n var list = states_[state] = [], orig = states[state];\n for (var i = 0; i < orig.length; i++) {\n var data = orig[i];\n list.push(new Rule(data, states));\n if (data.indent || data.dedent) hasIndentation = true;\n }\n }\n var mode = {\n startState: function() {\n return {state: \"start\", pending: null,\n local: null, localState: null,\n indent: hasIndentation ? [] : null};\n },\n copyState: function(state) {\n var s = {state: state.state, pending: state.pending,\n local: state.local, localState: null,\n indent: state.indent && state.indent.slice(0)};\n if (state.localState)\n s.localState = CodeMirror.copyState(state.local.mode, state.localState);\n if (state.stack)\n s.stack = state.stack.slice(0);\n for (var pers = state.persistentStates; pers; pers = pers.next)\n s.persistentStates = {mode: pers.mode,\n spec: pers.spec,\n state: pers.state == state.localState ? s.localState : CodeMirror.copyState(pers.mode, pers.state),\n next: s.persistentStates};\n return s;\n },\n token: tokenFunction(states_, config),\n innerMode: function(state) { return state.local && {mode: state.local.mode, state: state.localState}; },\n indent: indentFunction(states_, meta)\n };\n if (meta) for (var prop in meta) if (meta.hasOwnProperty(prop))\n mode[prop] = meta[prop];\n return mode;\n };\n\n function ensureState(states, name) {\n if (!states.hasOwnProperty(name))\n throw new Error(\"Undefined state \" + name + \" in simple mode\");\n }\n\n function toRegex(val, caret) {\n if (!val) return /(?:)/;\n var flags = \"\";\n if (val instanceof RegExp) {\n if (val.ignoreCase) flags = \"i\";\n if (val.unicode) flags += \"u\"\n val = val.source;\n } else {\n val = String(val);\n }\n return new RegExp((caret === false ? \"\" : \"^\") + \"(?:\" + val + \")\", flags);\n }\n\n function asToken(val) {\n if (!val) return null;\n if (val.apply) return val\n if (typeof val == \"string\") return val.replace(/\\./g, \" \");\n var result = [];\n for (var i = 0; i < val.length; i++)\n result.push(val[i] && val[i].replace(/\\./g, \" \"));\n return result;\n }\n\n function Rule(data, states) {\n if (data.next || data.push) ensureState(states, data.next || data.push);\n this.regex = toRegex(data.regex);\n this.token = asToken(data.token);\n this.data = data;\n }\n\n function tokenFunction(states, config) {\n return function(stream, state) {\n if (state.pending) {\n var pend = state.pending.shift();\n if (state.pending.length == 0) state.pending = null;\n stream.pos += pend.text.length;\n return pend.token;\n }\n\n if (state.local) {\n if (state.local.end && stream.match(state.local.end)) {\n var tok = state.local.endToken || null;\n state.local = state.localState = null;\n return tok;\n } else {\n var tok = state.local.mode.token(stream, state.localState), m;\n if (state.local.endScan && (m = state.local.endScan.exec(stream.current())))\n stream.pos = stream.start + m.index;\n return tok;\n }\n }\n\n var curState = states[state.state];\n for (var i = 0; i < curState.length; i++) {\n var rule = curState[i];\n var matches = (!rule.data.sol || stream.sol()) && stream.match(rule.regex);\n if (matches) {\n if (rule.data.next) {\n state.state = rule.data.next;\n } else if (rule.data.push) {\n (state.stack || (state.stack = [])).push(state.state);\n state.state = rule.data.push;\n } else if (rule.data.pop && state.stack && state.stack.length) {\n state.state = state.stack.pop();\n }\n\n if (rule.data.mode)\n enterLocalMode(config, state, rule.data.mode, rule.token);\n if (rule.data.indent)\n state.indent.push(stream.indentation() + config.indentUnit);\n if (rule.data.dedent)\n state.indent.pop();\n var token = rule.token\n if (token && token.apply) token = token(matches)\n if (matches.length > 2 && rule.token && typeof rule.token != \"string\") {\n for (var j = 2; j < matches.length; j++)\n if (matches[j])\n (state.pending || (state.pending = [])).push({text: matches[j], token: rule.token[j - 1]});\n stream.backUp(matches[0].length - (matches[1] ? matches[1].length : 0));\n return token[0];\n } else if (token && token.join) {\n return token[0];\n } else {\n return token;\n }\n }\n }\n stream.next();\n return null;\n };\n }\n\n function cmp(a, b) {\n if (a === b) return true;\n if (!a || typeof a != \"object\" || !b || typeof b != \"object\") return false;\n var props = 0;\n for (var prop in a) if (a.hasOwnProperty(prop)) {\n if (!b.hasOwnProperty(prop) || !cmp(a[prop], b[prop])) return false;\n props++;\n }\n for (var prop in b) if (b.hasOwnProperty(prop)) props--;\n return props == 0;\n }\n\n function enterLocalMode(config, state, spec, token) {\n var pers;\n if (spec.persistent) for (var p = state.persistentStates; p && !pers; p = p.next)\n if (spec.spec ? cmp(spec.spec, p.spec) : spec.mode == p.mode) pers = p;\n var mode = pers ? pers.mode : spec.mode || CodeMirror.getMode(config, spec.spec);\n var lState = pers ? pers.state : CodeMirror.startState(mode);\n if (spec.persistent && !pers)\n state.persistentStates = {mode: mode, spec: spec.spec, state: lState, next: state.persistentStates};\n\n state.localState = lState;\n state.local = {mode: mode,\n end: spec.end && toRegex(spec.end),\n endScan: spec.end && spec.forceEnd !== false && toRegex(spec.end, false),\n endToken: token && token.join ? token[token.length - 1] : token};\n }\n\n function indexOf(val, arr) {\n for (var i = 0; i < arr.length; i++) if (arr[i] === val) return true;\n }\n\n function indentFunction(states, meta) {\n return function(state, textAfter, line) {\n if (state.local && state.local.mode.indent)\n return state.local.mode.indent(state.localState, textAfter, line);\n if (state.indent == null || state.local || meta.dontIndentStates && indexOf(state.state, meta.dontIndentStates) > -1)\n return CodeMirror.Pass;\n\n var pos = state.indent.length - 1, rules = states[state.state];\n scan: for (;;) {\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n if (rule.data.dedent && rule.data.dedentIfLineStart !== false) {\n var m = rule.regex.exec(textAfter);\n if (m && m[0]) {\n pos--;\n if (rule.next || rule.push) rules = states[rule.next || rule.push];\n textAfter = textAfter.slice(m[0].length);\n continue scan;\n }\n }\n }\n break;\n }\n return pos < 0 ? 0 : state.indent[pos];\n };\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Stylus mode created by Dmitry Kiselyov http://git.io/AaRB\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineMode(\"stylus\", function(config) {\n var indentUnit = config.indentUnit,\n indentUnitString = '',\n tagKeywords = keySet(tagKeywords_),\n tagVariablesRegexp = /^(a|b|i|s|col|em)$/i,\n propertyKeywords = keySet(propertyKeywords_),\n nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_),\n valueKeywords = keySet(valueKeywords_),\n colorKeywords = keySet(colorKeywords_),\n documentTypes = keySet(documentTypes_),\n documentTypesRegexp = wordRegexp(documentTypes_),\n mediaFeatures = keySet(mediaFeatures_),\n mediaTypes = keySet(mediaTypes_),\n fontProperties = keySet(fontProperties_),\n operatorsRegexp = /^\\s*([.]{2,3}|&&|\\|\\||\\*\\*|[?!=:]?=|[-+*\\/%<>]=?|\\?:|\\~)/,\n wordOperatorKeywordsRegexp = wordRegexp(wordOperatorKeywords_),\n blockKeywords = keySet(blockKeywords_),\n vendorPrefixesRegexp = new RegExp(/^\\-(moz|ms|o|webkit)-/i),\n commonAtoms = keySet(commonAtoms_),\n firstWordMatch = \"\",\n states = {},\n ch,\n style,\n type,\n override;\n\n while (indentUnitString.length < indentUnit) indentUnitString += ' ';\n\n /**\n * Tokenizers\n */\n function tokenBase(stream, state) {\n firstWordMatch = stream.string.match(/(^[\\w-]+\\s*=\\s*$)|(^\\s*[\\w-]+\\s*=\\s*[\\w-])|(^\\s*(\\.|#|@|\\$|\\&|\\[|\\d|\\+|::?|\\{|\\>|~|\\/)?\\s*[\\w-]*([a-z0-9-]|\\*|\\/\\*)(\\(|,)?)/);\n state.context.line.firstWord = firstWordMatch ? firstWordMatch[0].replace(/^\\s*/, \"\") : \"\";\n state.context.line.indent = stream.indentation();\n ch = stream.peek();\n\n // Line comment\n if (stream.match(\"//\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n }\n // Block comment\n if (stream.match(\"/*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n // String\n if (ch == \"\\\"\" || ch == \"'\") {\n stream.next();\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n }\n // Def\n if (ch == \"@\") {\n stream.next();\n stream.eatWhile(/[\\w\\\\-]/);\n return [\"def\", stream.current()];\n }\n // ID selector or Hex color\n if (ch == \"#\") {\n stream.next();\n // Hex color\n if (stream.match(/^[0-9a-f]{3}([0-9a-f]([0-9a-f]{2}){0,2})?\\b(?!-)/i)) {\n return [\"atom\", \"atom\"];\n }\n // ID selector\n if (stream.match(/^[a-z][\\w-]*/i)) {\n return [\"builtin\", \"hash\"];\n }\n }\n // Vendor prefixes\n if (stream.match(vendorPrefixesRegexp)) {\n return [\"meta\", \"vendor-prefixes\"];\n }\n // Numbers\n if (stream.match(/^-?[0-9]?\\.?[0-9]/)) {\n stream.eatWhile(/[a-z%]/i);\n return [\"number\", \"unit\"];\n }\n // !important|optional\n if (ch == \"!\") {\n stream.next();\n return [stream.match(/^(important|optional)/i) ? \"keyword\": \"operator\", \"important\"];\n }\n // Class\n if (ch == \".\" && stream.match(/^\\.[a-z][\\w-]*/i)) {\n return [\"qualifier\", \"qualifier\"];\n }\n // url url-prefix domain regexp\n if (stream.match(documentTypesRegexp)) {\n if (stream.peek() == \"(\") state.tokenize = tokenParenthesized;\n return [\"property\", \"word\"];\n }\n // Mixins / Functions\n if (stream.match(/^[a-z][\\w-]*\\(/i)) {\n stream.backUp(1);\n return [\"keyword\", \"mixin\"];\n }\n // Block mixins\n if (stream.match(/^(\\+|-)[a-z][\\w-]*\\(/i)) {\n stream.backUp(1);\n return [\"keyword\", \"block-mixin\"];\n }\n // Parent Reference BEM naming\n if (stream.string.match(/^\\s*&/) && stream.match(/^[-_]+[a-z][\\w-]*/)) {\n return [\"qualifier\", \"qualifier\"];\n }\n // / Root Reference & Parent Reference\n if (stream.match(/^(\\/|&)(-|_|:|\\.|#|[a-z])/)) {\n stream.backUp(1);\n return [\"variable-3\", \"reference\"];\n }\n if (stream.match(/^&{1}\\s*$/)) {\n return [\"variable-3\", \"reference\"];\n }\n // Word operator\n if (stream.match(wordOperatorKeywordsRegexp)) {\n return [\"operator\", \"operator\"];\n }\n // Word\n if (stream.match(/^\\$?[-_]*[a-z0-9]+[\\w-]*/i)) {\n // Variable\n if (stream.match(/^(\\.|\\[)[\\w-\\'\\\"\\]]+/i, false)) {\n if (!wordIsTag(stream.current())) {\n stream.match('.');\n return [\"variable-2\", \"variable-name\"];\n }\n }\n return [\"variable-2\", \"word\"];\n }\n // Operators\n if (stream.match(operatorsRegexp)) {\n return [\"operator\", stream.current()];\n }\n // Delimiters\n if (/[:;,{}\\[\\]\\(\\)]/.test(ch)) {\n stream.next();\n return [null, ch];\n }\n // Non-detected items\n stream.next();\n return [null, null];\n }\n\n /**\n * Token comment\n */\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n /**\n * Token string\n */\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return [\"string\", \"string\"];\n };\n }\n\n /**\n * Token parenthesized\n */\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be \"(\"\n if (!stream.match(/\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return [null, \"(\"];\n }\n\n /**\n * Context management\n */\n function Context(type, indent, prev, line) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n this.line = line || {firstWord: \"\", indent: 0};\n }\n\n function pushContext(state, stream, type, indent) {\n indent = indent >= 0 ? indent : indentUnit;\n state.context = new Context(type, stream.indentation() + indent, state.context);\n return type;\n }\n\n function popContext(state, currentIndent) {\n var contextIndent = state.context.indent - indentUnit;\n currentIndent = currentIndent || false;\n state.context = state.context.prev;\n if (currentIndent) state.context.indent = contextIndent;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n\n /**\n * Parser\n */\n function wordIsTag(word) {\n return word.toLowerCase() in tagKeywords;\n }\n\n function wordIsProperty(word) {\n word = word.toLowerCase();\n return word in propertyKeywords || word in fontProperties;\n }\n\n function wordIsBlock(word) {\n return word.toLowerCase() in blockKeywords;\n }\n\n function wordIsVendorPrefix(word) {\n return word.toLowerCase().match(vendorPrefixesRegexp);\n }\n\n function wordAsValue(word) {\n var wordLC = word.toLowerCase();\n var override = \"variable-2\";\n if (wordIsTag(word)) override = \"tag\";\n else if (wordIsBlock(word)) override = \"block-keyword\";\n else if (wordIsProperty(word)) override = \"property\";\n else if (wordLC in valueKeywords || wordLC in commonAtoms) override = \"atom\";\n else if (wordLC == \"return\" || wordLC in colorKeywords) override = \"keyword\";\n\n // Font family\n else if (word.match(/^[A-Z]/)) override = \"string\";\n return override;\n }\n\n function typeIsBlock(type, stream) {\n return ((endOfLine(stream) && (type == \"{\" || type == \"]\" || type == \"hash\" || type == \"qualifier\")) || type == \"block-mixin\");\n }\n\n function typeIsInterpolation(type, stream) {\n return type == \"{\" && stream.match(/^\\s*\\$?[\\w-]+/i, false);\n }\n\n function typeIsPseudo(type, stream) {\n return type == \":\" && stream.match(/^[a-z-]+/, false);\n }\n\n function startOfLine(stream) {\n return stream.sol() || stream.string.match(new RegExp(\"^\\\\s*\" + escapeRegExp(stream.current())));\n }\n\n function endOfLine(stream) {\n return stream.eol() || stream.match(/^\\s*$/, false);\n }\n\n function firstWordOfLine(line) {\n var re = /^\\s*[-_]*[a-z0-9]+[\\w-]*/i;\n var result = typeof line == \"string\" ? line.match(re) : line.string.match(re);\n return result ? result[0].replace(/^\\s*/, \"\") : \"\";\n }\n\n\n /**\n * Block\n */\n states.block = function(type, stream, state) {\n if ((type == \"comment\" && startOfLine(stream)) ||\n (type == \",\" && endOfLine(stream)) ||\n type == \"mixin\") {\n return pushContext(state, stream, \"block\", 0);\n }\n if (typeIsInterpolation(type, stream)) {\n return pushContext(state, stream, \"interpolation\");\n }\n if (endOfLine(stream) && type == \"]\") {\n if (!/^\\s*(\\.|#|:|\\[|\\*|&)/.test(stream.string) && !wordIsTag(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"block\", 0);\n }\n }\n if (typeIsBlock(type, stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (type == \"}\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\", 0);\n }\n if (type == \"variable-name\") {\n if (stream.string.match(/^\\s?\\$[\\w-\\.\\[\\]\\'\\\"]+$/) || wordIsBlock(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"variableName\");\n }\n else {\n return pushContext(state, stream, \"variableName\", 0);\n }\n }\n if (type == \"=\") {\n if (!endOfLine(stream) && !wordIsBlock(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"*\") {\n if (endOfLine(stream) || stream.match(/\\s*(,|\\.|#|\\[|:|{)/,false)) {\n override = \"tag\";\n return pushContext(state, stream, \"block\");\n }\n }\n if (typeIsPseudo(type, stream)) {\n return pushContext(state, stream, \"pseudo\");\n }\n if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) {\n return pushContext(state, stream, endOfLine(stream) ? \"block\" : \"atBlock\");\n }\n if (/@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) {\n return pushContext(state, stream, \"keyframes\");\n }\n if (/@extends?/.test(type)) {\n return pushContext(state, stream, \"extend\", 0);\n }\n if (type && type.charAt(0) == \"@\") {\n\n // Property Lookup\n if (stream.indentation() > 0 && wordIsProperty(stream.current().slice(1))) {\n override = \"variable-2\";\n return \"block\";\n }\n if (/(@import|@require|@charset)/.test(type)) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"reference\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n\n if (type == \"vendor-prefixes\") {\n return pushContext(state, stream, \"vendorPrefixes\");\n }\n if (type == \"word\") {\n var word = stream.current();\n override = wordAsValue(word);\n\n if (override == \"property\") {\n if (startOfLine(stream)) {\n return pushContext(state, stream, \"block\", 0);\n } else {\n override = \"atom\";\n return \"block\";\n }\n }\n\n if (override == \"tag\") {\n\n // tag is a css value\n if (/embed|menu|pre|progress|sub|table/.test(word)) {\n if (wordIsProperty(firstWordOfLine(stream))) {\n override = \"atom\";\n return \"block\";\n }\n }\n\n // tag is an attribute\n if (stream.string.match(new RegExp(\"\\\\[\\\\s*\" + word + \"|\" + word +\"\\\\s*\\\\]\"))) {\n override = \"atom\";\n return \"block\";\n }\n\n // tag is a variable\n if (tagVariablesRegexp.test(word)) {\n if ((startOfLine(stream) && stream.string.match(/=/)) ||\n (!startOfLine(stream) &&\n !stream.string.match(/^(\\s*\\.|#|\\&|\\[|\\/|>|\\*)/) &&\n !wordIsTag(firstWordOfLine(stream)))) {\n override = \"variable-2\";\n if (wordIsBlock(firstWordOfLine(stream))) return \"block\";\n return pushContext(state, stream, \"block\", 0);\n }\n }\n\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n }\n if (override == \"block-keyword\") {\n override = \"keyword\";\n\n // Postfix conditionals\n if (stream.current(/(if|unless)/) && !startOfLine(stream)) {\n return \"block\";\n }\n return pushContext(state, stream, \"block\");\n }\n if (word == \"return\") return pushContext(state, stream, \"block\", 0);\n\n // Placeholder selector\n if (override == \"variable-2\" && stream.string.match(/^\\s?\\$[\\w-\\.\\[\\]\\'\\\"]+$/)) {\n return pushContext(state, stream, \"block\");\n }\n }\n return state.context.type;\n };\n\n\n /**\n * Parens\n */\n states.parens = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \")\") {\n if (state.context.prev.type == \"parens\") {\n return popContext(state);\n }\n if ((stream.string.match(/^[a-z][\\w-]*\\(/i) && endOfLine(stream)) ||\n wordIsBlock(firstWordOfLine(stream)) ||\n /(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(firstWordOfLine(stream)) ||\n (!stream.string.match(/^-?[a-z][\\w-\\.\\[\\]\\'\\\"]*\\s*=/) &&\n wordIsTag(firstWordOfLine(stream)))) {\n return pushContext(state, stream, \"block\");\n }\n if (stream.string.match(/^[\\$-]?[a-z][\\w-\\.\\[\\]\\'\\\"]*\\s*=/) ||\n stream.string.match(/^\\s*(\\(|\\)|[0-9])/) ||\n stream.string.match(/^\\s+[a-z][\\w-]*\\(/i) ||\n stream.string.match(/^\\s+[\\$-]?[a-z]/i)) {\n return pushContext(state, stream, \"block\", 0);\n }\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n else return pushContext(state, stream, \"block\", 0);\n }\n if (type && type.charAt(0) == \"@\" && wordIsProperty(stream.current().slice(1))) {\n override = \"variable-2\";\n }\n if (type == \"word\") {\n var word = stream.current();\n override = wordAsValue(word);\n if (override == \"tag\" && tagVariablesRegexp.test(word)) {\n override = \"variable-2\";\n }\n if (override == \"property\" || word == \"to\") override = \"atom\";\n }\n if (type == \"variable-name\") {\n return pushContext(state, stream, \"variableName\");\n }\n if (typeIsPseudo(type, stream)) {\n return pushContext(state, stream, \"pseudo\");\n }\n return state.context.type;\n };\n\n\n /**\n * Vendor prefixes\n */\n states.vendorPrefixes = function(type, stream, state) {\n if (type == \"word\") {\n override = \"property\";\n return pushContext(state, stream, \"block\", 0);\n }\n return popContext(state);\n };\n\n\n /**\n * Pseudo\n */\n states.pseudo = function(type, stream, state) {\n if (!wordIsProperty(firstWordOfLine(stream.string))) {\n stream.match(/^[a-z-]+/);\n override = \"variable-3\";\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n return popContext(state);\n }\n return popAndPass(type, stream, state);\n };\n\n\n /**\n * atBlock\n */\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (typeIsBlock(type, stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (typeIsInterpolation(type, stream)) {\n return pushContext(state, stream, \"interpolation\");\n }\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (/^(only|not|and|or)$/.test(word))\n override = \"keyword\";\n else if (documentTypes.hasOwnProperty(word))\n override = \"tag\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = \"string-2\";\n else override = wordAsValue(stream.current());\n if (override == \"tag\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\");\n }\n }\n if (type == \"operator\" && /^(not|and|or)$/.test(stream.current())) {\n override = \"keyword\";\n }\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return state.context.type;\n if (type == \")\") {\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n else return pushContext(state, stream, \"atBlock\");\n }\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n override = wordAsValue(word);\n if (/^(max|min)/.test(word)) override = \"property\";\n if (override == \"tag\") {\n tagVariablesRegexp.test(word) ? override = \"variable-2\" : override = \"atom\";\n }\n return state.context.type;\n }\n return states.atBlock(type, stream, state);\n };\n\n\n /**\n * Keyframes\n */\n states.keyframes = function(type, stream, state) {\n if (stream.indentation() == \"0\" && ((type == \"}\" && startOfLine(stream)) || type == \"]\" || type == \"hash\"\n || type == \"qualifier\" || wordIsTag(stream.current()))) {\n return popAndPass(type, stream, state);\n }\n if (type == \"{\") return pushContext(state, stream, \"keyframes\");\n if (type == \"}\") {\n if (startOfLine(stream)) return popContext(state, true);\n else return pushContext(state, stream, \"keyframes\");\n }\n if (type == \"unit\" && /^[0-9]+\\%$/.test(stream.current())) {\n return pushContext(state, stream, \"keyframes\");\n }\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n if (override == \"block-keyword\") {\n override = \"keyword\";\n return pushContext(state, stream, \"keyframes\");\n }\n }\n if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) {\n return pushContext(state, stream, endOfLine(stream) ? \"block\" : \"atBlock\");\n }\n if (type == \"mixin\") {\n return pushContext(state, stream, \"block\", 0);\n }\n return state.context.type;\n };\n\n\n /**\n * Interpolation\n */\n states.interpolation = function(type, stream, state) {\n if (type == \"{\") popContext(state) && pushContext(state, stream, \"block\");\n if (type == \"}\") {\n if (stream.string.match(/^\\s*(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/i) ||\n (stream.string.match(/^\\s*[a-z]/i) && wordIsTag(firstWordOfLine(stream)))) {\n return pushContext(state, stream, \"block\");\n }\n if (!stream.string.match(/^(\\{|\\s*\\&)/) ||\n stream.match(/\\s*[\\w-]/,false)) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"variable-name\") {\n return pushContext(state, stream, \"variableName\", 0);\n }\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n if (override == \"tag\") override = \"atom\";\n }\n return state.context.type;\n };\n\n\n /**\n * Extend/s\n */\n states.extend = function(type, stream, state) {\n if (type == \"[\" || type == \"=\") return \"extend\";\n if (type == \"]\") return popContext(state);\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n return \"extend\";\n }\n return popContext(state);\n };\n\n\n /**\n * Variable name\n */\n states.variableName = function(type, stream, state) {\n if (type == \"string\" || type == \"[\" || type == \"]\" || stream.current().match(/^(\\.|\\$)/)) {\n if (stream.current().match(/^\\.[\\w-]+/i)) override = \"variable-2\";\n return \"variableName\";\n }\n return popAndPass(type, stream, state);\n };\n\n\n return {\n startState: function(base) {\n return {\n tokenize: null,\n state: \"block\",\n context: new Context(\"block\", base || 0, null)\n };\n },\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n state.state = states[state.state](type, stream, state);\n return override;\n },\n indent: function(state, textAfter, line) {\n\n var cx = state.context,\n ch = textAfter && textAfter.charAt(0),\n indent = cx.indent,\n lineFirstWord = firstWordOfLine(textAfter),\n lineIndent = line.match(/^\\s*/)[0].replace(/\\t/g, indentUnitString).length,\n prevLineFirstWord = state.context.prev ? state.context.prev.line.firstWord : \"\",\n prevLineIndent = state.context.prev ? state.context.prev.line.indent : lineIndent;\n\n if (cx.prev &&\n (ch == \"}\" && (cx.type == \"block\" || cx.type == \"atBlock\" || cx.type == \"keyframes\") ||\n ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\"))) {\n indent = cx.indent - indentUnit;\n } else if (!(/(\\})/.test(ch))) {\n if (/@|\\$|\\d/.test(ch) ||\n /^\\{/.test(textAfter) ||\n/^\\s*\\/(\\/|\\*)/.test(textAfter) ||\n /^\\s*\\/\\*/.test(prevLineFirstWord) ||\n /^\\s*[\\w-\\.\\[\\]\\'\\\"]+\\s*(\\?|:|\\+)?=/i.test(textAfter) ||\n/^(\\+|-)?[a-z][\\w-]*\\(/i.test(textAfter) ||\n/^return/.test(textAfter) ||\n wordIsBlock(lineFirstWord)) {\n indent = lineIndent;\n } else if (/(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(ch) || wordIsTag(lineFirstWord)) {\n if (/\\,\\s*$/.test(prevLineFirstWord)) {\n indent = prevLineIndent;\n } else if (/^\\s+/.test(line) && (/(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(prevLineFirstWord) || wordIsTag(prevLineFirstWord))) {\n indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit;\n } else {\n indent = lineIndent;\n }\n } else if (!/,\\s*$/.test(line) && (wordIsVendorPrefix(lineFirstWord) || wordIsProperty(lineFirstWord))) {\n if (wordIsBlock(prevLineFirstWord)) {\n indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit;\n } else if (/^\\{/.test(prevLineFirstWord)) {\n indent = lineIndent <= prevLineIndent ? lineIndent : prevLineIndent + indentUnit;\n } else if (wordIsVendorPrefix(prevLineFirstWord) || wordIsProperty(prevLineFirstWord)) {\n indent = lineIndent >= prevLineIndent ? prevLineIndent : lineIndent;\n } else if (/^(\\.|#|:|\\[|\\*|&|@|\\+|\\-|>|~|\\/)/.test(prevLineFirstWord) ||\n /=\\s*$/.test(prevLineFirstWord) ||\n wordIsTag(prevLineFirstWord) ||\n /^\\$[\\w-\\.\\[\\]\\'\\\"]/.test(prevLineFirstWord)) {\n indent = prevLineIndent + indentUnit;\n } else {\n indent = lineIndent;\n }\n }\n }\n return indent;\n },\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: \"//\",\n fold: \"indent\"\n };\n });\n\n // developer.mozilla.org/en-US/docs/Web/HTML/Element\n var tagKeywords_ = [\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\", \"b\", \"base\",\"bdi\", \"bdo\",\"bgsound\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\", \"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"div\", \"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\", \"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\", \"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\", \"mark\",\"marquee\",\"menu\",\"menuitem\",\"meta\",\"meter\",\"nav\",\"nobr\",\"noframes\", \"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"pre\", \"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\", \"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"track\", \"u\",\"ul\",\"var\",\"video\"];\n\n // github.com/codemirror/CodeMirror/blob/master/mode/css/css.js\n // Note, \"url-prefix\" should precede \"url\" in order to match correctly in documentTypesRegexp\n var documentTypes_ = [\"domain\", \"regexp\", \"url-prefix\", \"url\"];\n var mediaTypes_ = [\"all\",\"aural\",\"braille\",\"handheld\",\"print\",\"projection\",\"screen\",\"tty\",\"tv\",\"embossed\"];\n var mediaFeatures_ = [\"width\",\"min-width\",\"max-width\",\"height\",\"min-height\",\"max-height\",\"device-width\",\"min-device-width\",\"max-device-width\",\"device-height\",\"min-device-height\",\"max-device-height\",\"aspect-ratio\",\"min-aspect-ratio\",\"max-aspect-ratio\",\"device-aspect-ratio\",\"min-device-aspect-ratio\",\"max-device-aspect-ratio\",\"color\",\"min-color\",\"max-color\",\"color-index\",\"min-color-index\",\"max-color-index\",\"monochrome\",\"min-monochrome\",\"max-monochrome\",\"resolution\",\"min-resolution\",\"max-resolution\",\"scan\",\"grid\",\"dynamic-range\",\"video-dynamic-range\"];\n var propertyKeywords_ = [\"align-content\",\"align-items\",\"align-self\",\"alignment-adjust\",\"alignment-baseline\",\"anchor-point\",\"animation\",\"animation-delay\",\"animation-direction\",\"animation-duration\",\"animation-fill-mode\",\"animation-iteration-count\",\"animation-name\",\"animation-play-state\",\"animation-timing-function\",\"appearance\",\"azimuth\",\"backface-visibility\",\"background\",\"background-attachment\",\"background-clip\",\"background-color\",\"background-image\",\"background-origin\",\"background-position\",\"background-repeat\",\"background-size\",\"baseline-shift\",\"binding\",\"bleed\",\"bookmark-label\",\"bookmark-level\",\"bookmark-state\",\"bookmark-target\",\"border\",\"border-bottom\",\"border-bottom-color\",\"border-bottom-left-radius\",\"border-bottom-right-radius\",\"border-bottom-style\",\"border-bottom-width\",\"border-collapse\",\"border-color\",\"border-image\",\"border-image-outset\",\"border-image-repeat\",\"border-image-slice\",\"border-image-source\",\"border-image-width\",\"border-left\",\"border-left-color\",\"border-left-style\",\"border-left-width\",\"border-radius\",\"border-right\",\"border-right-color\",\"border-right-style\",\"border-right-width\",\"border-spacing\",\"border-style\",\"border-top\",\"border-top-color\",\"border-top-left-radius\",\"border-top-right-radius\",\"border-top-style\",\"border-top-width\",\"border-width\",\"bottom\",\"box-decoration-break\",\"box-shadow\",\"box-sizing\",\"break-after\",\"break-before\",\"break-inside\",\"caption-side\",\"clear\",\"clip\",\"color\",\"color-profile\",\"column-count\",\"column-fill\",\"column-gap\",\"column-rule\",\"column-rule-color\",\"column-rule-style\",\"column-rule-width\",\"column-span\",\"column-width\",\"columns\",\"content\",\"counter-increment\",\"counter-reset\",\"crop\",\"cue\",\"cue-after\",\"cue-before\",\"cursor\",\"direction\",\"display\",\"dominant-baseline\",\"drop-initial-after-adjust\",\"drop-initial-after-align\",\"drop-initial-before-adjust\",\"drop-initial-before-align\",\"drop-initial-size\",\"drop-initial-value\",\"elevation\",\"empty-cells\",\"fit\",\"fit-position\",\"flex\",\"flex-basis\",\"flex-direction\",\"flex-flow\",\"flex-grow\",\"flex-shrink\",\"flex-wrap\",\"float\",\"float-offset\",\"flow-from\",\"flow-into\",\"font\",\"font-feature-settings\",\"font-family\",\"font-kerning\",\"font-language-override\",\"font-size\",\"font-size-adjust\",\"font-stretch\",\"font-style\",\"font-synthesis\",\"font-variant\",\"font-variant-alternates\",\"font-variant-caps\",\"font-variant-east-asian\",\"font-variant-ligatures\",\"font-variant-numeric\",\"font-variant-position\",\"font-weight\",\"grid\",\"grid-area\",\"grid-auto-columns\",\"grid-auto-flow\",\"grid-auto-position\",\"grid-auto-rows\",\"grid-column\",\"grid-column-end\",\"grid-column-start\",\"grid-row\",\"grid-row-end\",\"grid-row-start\",\"grid-template\",\"grid-template-areas\",\"grid-template-columns\",\"grid-template-rows\",\"hanging-punctuation\",\"height\",\"hyphens\",\"icon\",\"image-orientation\",\"image-rendering\",\"image-resolution\",\"inline-box-align\",\"justify-content\",\"left\",\"letter-spacing\",\"line-break\",\"line-height\",\"line-stacking\",\"line-stacking-ruby\",\"line-stacking-shift\",\"line-stacking-strategy\",\"list-style\",\"list-style-image\",\"list-style-position\",\"list-style-type\",\"margin\",\"margin-bottom\",\"margin-left\",\"margin-right\",\"margin-top\",\"marker-offset\",\"marks\",\"marquee-direction\",\"marquee-loop\",\"marquee-play-count\",\"marquee-speed\",\"marquee-style\",\"max-height\",\"max-width\",\"min-height\",\"min-width\",\"move-to\",\"nav-down\",\"nav-index\",\"nav-left\",\"nav-right\",\"nav-up\",\"object-fit\",\"object-position\",\"opacity\",\"order\",\"orphans\",\"outline\",\"outline-color\",\"outline-offset\",\"outline-style\",\"outline-width\",\"overflow\",\"overflow-style\",\"overflow-wrap\",\"overflow-x\",\"overflow-y\",\"padding\",\"padding-bottom\",\"padding-left\",\"padding-right\",\"padding-top\",\"page\",\"page-break-after\",\"page-break-before\",\"page-break-inside\",\"page-policy\",\"pause\",\"pause-after\",\"pause-before\",\"perspective\",\"perspective-origin\",\"pitch\",\"pitch-range\",\"play-during\",\"position\",\"presentation-level\",\"punctuation-trim\",\"quotes\",\"region-break-after\",\"region-break-before\",\"region-break-inside\",\"region-fragment\",\"rendering-intent\",\"resize\",\"rest\",\"rest-after\",\"rest-before\",\"richness\",\"right\",\"rotation\",\"rotation-point\",\"ruby-align\",\"ruby-overhang\",\"ruby-position\",\"ruby-span\",\"shape-image-threshold\",\"shape-inside\",\"shape-margin\",\"shape-outside\",\"size\",\"speak\",\"speak-as\",\"speak-header\",\"speak-numeral\",\"speak-punctuation\",\"speech-rate\",\"stress\",\"string-set\",\"tab-size\",\"table-layout\",\"target\",\"target-name\",\"target-new\",\"target-position\",\"text-align\",\"text-align-last\",\"text-decoration\",\"text-decoration-color\",\"text-decoration-line\",\"text-decoration-skip\",\"text-decoration-style\",\"text-emphasis\",\"text-emphasis-color\",\"text-emphasis-position\",\"text-emphasis-style\",\"text-height\",\"text-indent\",\"text-justify\",\"text-outline\",\"text-overflow\",\"text-shadow\",\"text-size-adjust\",\"text-space-collapse\",\"text-transform\",\"text-underline-position\",\"text-wrap\",\"top\",\"transform\",\"transform-origin\",\"transform-style\",\"transition\",\"transition-delay\",\"transition-duration\",\"transition-property\",\"transition-timing-function\",\"unicode-bidi\",\"vertical-align\",\"visibility\",\"voice-balance\",\"voice-duration\",\"voice-family\",\"voice-pitch\",\"voice-range\",\"voice-rate\",\"voice-stress\",\"voice-volume\",\"volume\",\"white-space\",\"widows\",\"width\",\"will-change\",\"word-break\",\"word-spacing\",\"word-wrap\",\"z-index\",\"clip-path\",\"clip-rule\",\"mask\",\"enable-background\",\"filter\",\"flood-color\",\"flood-opacity\",\"lighting-color\",\"stop-color\",\"stop-opacity\",\"pointer-events\",\"color-interpolation\",\"color-interpolation-filters\",\"color-rendering\",\"fill\",\"fill-opacity\",\"fill-rule\",\"image-rendering\",\"marker\",\"marker-end\",\"marker-mid\",\"marker-start\",\"shape-rendering\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"text-rendering\",\"baseline-shift\",\"dominant-baseline\",\"glyph-orientation-horizontal\",\"glyph-orientation-vertical\",\"text-anchor\",\"writing-mode\",\"font-smoothing\",\"osx-font-smoothing\"];\n var nonStandardPropertyKeywords_ = [\"scrollbar-arrow-color\",\"scrollbar-base-color\",\"scrollbar-dark-shadow-color\",\"scrollbar-face-color\",\"scrollbar-highlight-color\",\"scrollbar-shadow-color\",\"scrollbar-3d-light-color\",\"scrollbar-track-color\",\"shape-inside\",\"searchfield-cancel-button\",\"searchfield-decoration\",\"searchfield-results-button\",\"searchfield-results-decoration\",\"zoom\"];\n var fontProperties_ = [\"font-family\",\"src\",\"unicode-range\",\"font-variant\",\"font-feature-settings\",\"font-stretch\",\"font-weight\",\"font-style\"];\n var colorKeywords_ = [\"aliceblue\",\"antiquewhite\",\"aqua\",\"aquamarine\",\"azure\",\"beige\",\"bisque\",\"black\",\"blanchedalmond\",\"blue\",\"blueviolet\",\"brown\",\"burlywood\",\"cadetblue\",\"chartreuse\",\"chocolate\",\"coral\",\"cornflowerblue\",\"cornsilk\",\"crimson\",\"cyan\",\"darkblue\",\"darkcyan\",\"darkgoldenrod\",\"darkgray\",\"darkgreen\",\"darkkhaki\",\"darkmagenta\",\"darkolivegreen\",\"darkorange\",\"darkorchid\",\"darkred\",\"darksalmon\",\"darkseagreen\",\"darkslateblue\",\"darkslategray\",\"darkturquoise\",\"darkviolet\",\"deeppink\",\"deepskyblue\",\"dimgray\",\"dodgerblue\",\"firebrick\",\"floralwhite\",\"forestgreen\",\"fuchsia\",\"gainsboro\",\"ghostwhite\",\"gold\",\"goldenrod\",\"gray\",\"grey\",\"green\",\"greenyellow\",\"honeydew\",\"hotpink\",\"indianred\",\"indigo\",\"ivory\",\"khaki\",\"lavender\",\"lavenderblush\",\"lawngreen\",\"lemonchiffon\",\"lightblue\",\"lightcoral\",\"lightcyan\",\"lightgoldenrodyellow\",\"lightgray\",\"lightgreen\",\"lightpink\",\"lightsalmon\",\"lightseagreen\",\"lightskyblue\",\"lightslategray\",\"lightsteelblue\",\"lightyellow\",\"lime\",\"limegreen\",\"linen\",\"magenta\",\"maroon\",\"mediumaquamarine\",\"mediumblue\",\"mediumorchid\",\"mediumpurple\",\"mediumseagreen\",\"mediumslateblue\",\"mediumspringgreen\",\"mediumturquoise\",\"mediumvioletred\",\"midnightblue\",\"mintcream\",\"mistyrose\",\"moccasin\",\"navajowhite\",\"navy\",\"oldlace\",\"olive\",\"olivedrab\",\"orange\",\"orangered\",\"orchid\",\"palegoldenrod\",\"palegreen\",\"paleturquoise\",\"palevioletred\",\"papayawhip\",\"peachpuff\",\"peru\",\"pink\",\"plum\",\"powderblue\",\"purple\",\"rebeccapurple\",\"red\",\"rosybrown\",\"royalblue\",\"saddlebrown\",\"salmon\",\"sandybrown\",\"seagreen\",\"seashell\",\"sienna\",\"silver\",\"skyblue\",\"slateblue\",\"slategray\",\"snow\",\"springgreen\",\"steelblue\",\"tan\",\"teal\",\"thistle\",\"tomato\",\"turquoise\",\"violet\",\"wheat\",\"white\",\"whitesmoke\",\"yellow\",\"yellowgreen\"];\n var valueKeywords_ = [\"above\",\"absolute\",\"activeborder\",\"additive\",\"activecaption\",\"afar\",\"after-white-space\",\"ahead\",\"alias\",\"all\",\"all-scroll\",\"alphabetic\",\"alternate\",\"always\",\"amharic\",\"amharic-abegede\",\"antialiased\",\"appworkspace\",\"arabic-indic\",\"armenian\",\"asterisks\",\"attr\",\"auto\",\"avoid\",\"avoid-column\",\"avoid-page\",\"avoid-region\",\"background\",\"backwards\",\"baseline\",\"below\",\"bidi-override\",\"binary\",\"bengali\",\"blink\",\"block\",\"block-axis\",\"bold\",\"bolder\",\"border\",\"border-box\",\"both\",\"bottom\",\"break\",\"break-all\",\"break-word\",\"bullets\",\"button\",\"buttonface\",\"buttonhighlight\",\"buttonshadow\",\"buttontext\",\"calc\",\"cambodian\",\"capitalize\",\"caps-lock-indicator\",\"caption\",\"captiontext\",\"caret\",\"cell\",\"center\",\"checkbox\",\"circle\",\"cjk-decimal\",\"cjk-earthly-branch\",\"cjk-heavenly-stem\",\"cjk-ideographic\",\"clear\",\"clip\",\"close-quote\",\"col-resize\",\"collapse\",\"column\",\"compact\",\"condensed\",\"conic-gradient\",\"contain\",\"content\",\"contents\",\"content-box\",\"context-menu\",\"continuous\",\"copy\",\"counter\",\"counters\",\"cover\",\"crop\",\"cross\",\"crosshair\",\"currentcolor\",\"cursive\",\"cyclic\",\"dashed\",\"decimal\",\"decimal-leading-zero\",\"default\",\"default-button\",\"destination-atop\",\"destination-in\",\"destination-out\",\"destination-over\",\"devanagari\",\"disc\",\"discard\",\"disclosure-closed\",\"disclosure-open\",\"document\",\"dot-dash\",\"dot-dot-dash\",\"dotted\",\"double\",\"down\",\"e-resize\",\"ease\",\"ease-in\",\"ease-in-out\",\"ease-out\",\"element\",\"ellipse\",\"ellipsis\",\"embed\",\"end\",\"ethiopic\",\"ethiopic-abegede\",\"ethiopic-abegede-am-et\",\"ethiopic-abegede-gez\",\"ethiopic-abegede-ti-er\",\"ethiopic-abegede-ti-et\",\"ethiopic-halehame-aa-er\",\"ethiopic-halehame-aa-et\",\"ethiopic-halehame-am-et\",\"ethiopic-halehame-gez\",\"ethiopic-halehame-om-et\",\"ethiopic-halehame-sid-et\",\"ethiopic-halehame-so-et\",\"ethiopic-halehame-ti-er\",\"ethiopic-halehame-ti-et\",\"ethiopic-halehame-tig\",\"ethiopic-numeric\",\"ew-resize\",\"expanded\",\"extends\",\"extra-condensed\",\"extra-expanded\",\"fantasy\",\"fast\",\"fill\",\"fixed\",\"flat\",\"flex\",\"footnotes\",\"forwards\",\"from\",\"geometricPrecision\",\"georgian\",\"graytext\",\"groove\",\"gujarati\",\"gurmukhi\",\"hand\",\"hangul\",\"hangul-consonant\",\"hebrew\",\"help\",\"hidden\",\"hide\",\"high\",\"higher\",\"highlight\",\"highlighttext\",\"hiragana\",\"hiragana-iroha\",\"horizontal\",\"hsl\",\"hsla\",\"icon\",\"ignore\",\"inactiveborder\",\"inactivecaption\",\"inactivecaptiontext\",\"infinite\",\"infobackground\",\"infotext\",\"inherit\",\"initial\",\"inline\",\"inline-axis\",\"inline-block\",\"inline-flex\",\"inline-table\",\"inset\",\"inside\",\"intrinsic\",\"invert\",\"italic\",\"japanese-formal\",\"japanese-informal\",\"justify\",\"kannada\",\"katakana\",\"katakana-iroha\",\"keep-all\",\"khmer\",\"korean-hangul-formal\",\"korean-hanja-formal\",\"korean-hanja-informal\",\"landscape\",\"lao\",\"large\",\"larger\",\"left\",\"level\",\"lighter\",\"line-through\",\"linear\",\"linear-gradient\",\"lines\",\"list-item\",\"listbox\",\"listitem\",\"local\",\"logical\",\"loud\",\"lower\",\"lower-alpha\",\"lower-armenian\",\"lower-greek\",\"lower-hexadecimal\",\"lower-latin\",\"lower-norwegian\",\"lower-roman\",\"lowercase\",\"ltr\",\"malayalam\",\"match\",\"matrix\",\"matrix3d\",\"media-play-button\",\"media-slider\",\"media-sliderthumb\",\"media-volume-slider\",\"media-volume-sliderthumb\",\"medium\",\"menu\",\"menulist\",\"menulist-button\",\"menutext\",\"message-box\",\"middle\",\"min-intrinsic\",\"mix\",\"mongolian\",\"monospace\",\"move\",\"multiple\",\"myanmar\",\"n-resize\",\"narrower\",\"ne-resize\",\"nesw-resize\",\"no-close-quote\",\"no-drop\",\"no-open-quote\",\"no-repeat\",\"none\",\"normal\",\"not-allowed\",\"nowrap\",\"ns-resize\",\"numbers\",\"numeric\",\"nw-resize\",\"nwse-resize\",\"oblique\",\"octal\",\"open-quote\",\"optimizeLegibility\",\"optimizeSpeed\",\"oriya\",\"oromo\",\"outset\",\"outside\",\"outside-shape\",\"overlay\",\"overline\",\"padding\",\"padding-box\",\"painted\",\"page\",\"paused\",\"persian\",\"perspective\",\"plus-darker\",\"plus-lighter\",\"pointer\",\"polygon\",\"portrait\",\"pre\",\"pre-line\",\"pre-wrap\",\"preserve-3d\",\"progress\",\"push-button\",\"radial-gradient\",\"radio\",\"read-only\",\"read-write\",\"read-write-plaintext-only\",\"rectangle\",\"region\",\"relative\",\"repeat\",\"repeating-linear-gradient\",\"repeating-radial-gradient\",\"repeating-conic-gradient\",\"repeat-x\",\"repeat-y\",\"reset\",\"reverse\",\"rgb\",\"rgba\",\"ridge\",\"right\",\"rotate\",\"rotate3d\",\"rotateX\",\"rotateY\",\"rotateZ\",\"round\",\"row-resize\",\"rtl\",\"run-in\",\"running\",\"s-resize\",\"sans-serif\",\"scale\",\"scale3d\",\"scaleX\",\"scaleY\",\"scaleZ\",\"scroll\",\"scrollbar\",\"scroll-position\",\"se-resize\",\"searchfield\",\"searchfield-cancel-button\",\"searchfield-decoration\",\"searchfield-results-button\",\"searchfield-results-decoration\",\"semi-condensed\",\"semi-expanded\",\"separate\",\"serif\",\"show\",\"sidama\",\"simp-chinese-formal\",\"simp-chinese-informal\",\"single\",\"skew\",\"skewX\",\"skewY\",\"skip-white-space\",\"slide\",\"slider-horizontal\",\"slider-vertical\",\"sliderthumb-horizontal\",\"sliderthumb-vertical\",\"slow\",\"small\",\"small-caps\",\"small-caption\",\"smaller\",\"solid\",\"somali\",\"source-atop\",\"source-in\",\"source-out\",\"source-over\",\"space\",\"spell-out\",\"square\",\"square-button\",\"standard\",\"start\",\"static\",\"status-bar\",\"stretch\",\"stroke\",\"sub\",\"subpixel-antialiased\",\"super\",\"sw-resize\",\"symbolic\",\"symbols\",\"table\",\"table-caption\",\"table-cell\",\"table-column\",\"table-column-group\",\"table-footer-group\",\"table-header-group\",\"table-row\",\"table-row-group\",\"tamil\",\"telugu\",\"text\",\"text-bottom\",\"text-top\",\"textarea\",\"textfield\",\"thai\",\"thick\",\"thin\",\"threeddarkshadow\",\"threedface\",\"threedhighlight\",\"threedlightshadow\",\"threedshadow\",\"tibetan\",\"tigre\",\"tigrinya-er\",\"tigrinya-er-abegede\",\"tigrinya-et\",\"tigrinya-et-abegede\",\"to\",\"top\",\"trad-chinese-formal\",\"trad-chinese-informal\",\"translate\",\"translate3d\",\"translateX\",\"translateY\",\"translateZ\",\"transparent\",\"ultra-condensed\",\"ultra-expanded\",\"underline\",\"up\",\"upper-alpha\",\"upper-armenian\",\"upper-greek\",\"upper-hexadecimal\",\"upper-latin\",\"upper-norwegian\",\"upper-roman\",\"uppercase\",\"urdu\",\"url\",\"var\",\"vertical\",\"vertical-text\",\"visible\",\"visibleFill\",\"visiblePainted\",\"visibleStroke\",\"visual\",\"w-resize\",\"wait\",\"wave\",\"wider\",\"window\",\"windowframe\",\"windowtext\",\"words\",\"x-large\",\"x-small\",\"xor\",\"xx-large\",\"xx-small\",\"bicubic\",\"optimizespeed\",\"grayscale\",\"row\",\"row-reverse\",\"wrap\",\"wrap-reverse\",\"column-reverse\",\"flex-start\",\"flex-end\",\"space-between\",\"space-around\", \"unset\"];\n\n var wordOperatorKeywords_ = [\"in\",\"and\",\"or\",\"not\",\"is not\",\"is a\",\"is\",\"isnt\",\"defined\",\"if unless\"],\n blockKeywords_ = [\"for\",\"if\",\"else\",\"unless\", \"from\", \"to\"],\n commonAtoms_ = [\"null\",\"true\",\"false\",\"href\",\"title\",\"type\",\"not-allowed\",\"readonly\",\"disabled\"],\n commonDef_ = [\"@font-face\", \"@keyframes\", \"@media\", \"@viewport\", \"@page\", \"@host\", \"@supports\", \"@block\", \"@css\"];\n\n var hintWords = tagKeywords_.concat(documentTypes_,mediaTypes_,mediaFeatures_,\n propertyKeywords_,nonStandardPropertyKeywords_,\n colorKeywords_,valueKeywords_,fontProperties_,\n wordOperatorKeywords_,blockKeywords_,\n commonAtoms_,commonDef_);\n\n function wordRegexp(words) {\n words = words.sort(function(a,b){return b > a;});\n return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n }\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) keys[array[i]] = true;\n return keys;\n }\n\n function escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\");\n }\n\n CodeMirror.registerHelper(\"hintWords\", \"stylus\", hintWords);\n CodeMirror.defineMIME(\"text/x-styl\", \"stylus\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"css\", function(config, parserConfig) {\n var inline = parserConfig.inline\n if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(\"text/css\");\n\n var indentUnit = config.indentUnit,\n tokenHooks = parserConfig.tokenHooks,\n documentTypes = parserConfig.documentTypes || {},\n mediaTypes = parserConfig.mediaTypes || {},\n mediaFeatures = parserConfig.mediaFeatures || {},\n mediaValueKeywords = parserConfig.mediaValueKeywords || {},\n propertyKeywords = parserConfig.propertyKeywords || {},\n nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},\n fontProperties = parserConfig.fontProperties || {},\n counterDescriptors = parserConfig.counterDescriptors || {},\n colorKeywords = parserConfig.colorKeywords || {},\n valueKeywords = parserConfig.valueKeywords || {},\n allowNested = parserConfig.allowNested,\n lineComment = parserConfig.lineComment,\n supportsAtComponent = parserConfig.supportsAtComponent === true,\n highlightNonStandardPropertyKeywords = config.highlightNonStandardPropertyKeywords !== false;\n\n var type, override;\n function ret(style, tp) { type = tp; return style; }\n\n // Tokenizers\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (tokenHooks[ch]) {\n var result = tokenHooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == \"@\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"def\", stream.current());\n } else if (ch == \"=\" || (ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) {\n return ret(null, \"compare\");\n } else if (ch == \"\\\"\" || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \"#\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"atom\", \"hash\");\n } else if (ch == \"!\") {\n stream.match(/^\\s*\\w*/);\n return ret(\"keyword\", \"important\");\n } else if (/\\d/.test(ch) || ch == \".\" && stream.eat(/\\d/)) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (ch === \"-\") {\n if (/[\\d.]/.test(stream.peek())) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (stream.match(/^-[\\w\\\\\\-]*/)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return ret(\"variable-2\", \"variable-definition\");\n return ret(\"variable-2\", \"variable\");\n } else if (stream.match(/^\\w+-/)) {\n return ret(\"meta\", \"meta\");\n }\n } else if (/[,+>*\\/]/.test(ch)) {\n return ret(null, \"select-op\");\n } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n return ret(\"qualifier\", \"qualifier\");\n } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n return ret(null, ch);\n } else if (stream.match(/^[\\w-.]+(?=\\()/)) {\n if (/^(url(-prefix)?|domain|regexp)$/i.test(stream.current())) {\n state.tokenize = tokenParenthesized;\n }\n return ret(\"variable callee\", \"variable\");\n } else if (/[\\w\\\\\\-]/.test(ch)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"property\", \"word\");\n } else {\n return ret(null, null);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be '('\n if (!stream.match(/^\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return ret(null, \"(\");\n }\n\n // Context management\n\n function Context(type, indent, prev) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n }\n\n function pushContext(state, stream, type, indent) {\n state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);\n return type;\n }\n\n function popContext(state) {\n if (state.context.prev)\n state.context = state.context.prev;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n // Parser\n\n function wordAsValue(stream) {\n var word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"variable\";\n }\n\n var states = {};\n\n states.top = function(type, stream, state) {\n if (type == \"{\") {\n return pushContext(state, stream, \"block\");\n } else if (type == \"}\" && state.context.prev) {\n return popContext(state);\n } else if (supportsAtComponent && /@component/i.test(type)) {\n return pushContext(state, stream, \"atComponentBlock\");\n } else if (/^@(-moz-)?document$/i.test(type)) {\n return pushContext(state, stream, \"documentTypes\");\n } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {\n return pushContext(state, stream, \"atBlock\");\n } else if (/^@(font-face|counter-style)/i.test(type)) {\n state.stateArg = type;\n return \"restricted_atBlock_before\";\n } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {\n return \"keyframes\";\n } else if (type && type.charAt(0) == \"@\") {\n return pushContext(state, stream, \"at\");\n } else if (type == \"hash\") {\n override = \"builtin\";\n } else if (type == \"word\") {\n override = \"tag\";\n } else if (type == \"variable-definition\") {\n return \"maybeprop\";\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n } else if (type == \":\") {\n return \"pseudo\";\n } else if (allowNested && type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n return state.context.type;\n };\n\n states.block = function(type, stream, state) {\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (propertyKeywords.hasOwnProperty(word)) {\n override = \"property\";\n return \"maybeprop\";\n } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n return \"maybeprop\";\n } else if (allowNested) {\n override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n return \"block\";\n } else {\n override += \" error\";\n return \"maybeprop\";\n }\n } else if (type == \"meta\") {\n return \"block\";\n } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n override = \"error\";\n return \"block\";\n } else {\n return states.top(type, stream, state);\n }\n };\n\n states.maybeprop = function(type, stream, state) {\n if (type == \":\") return pushContext(state, stream, \"prop\");\n return pass(type, stream, state);\n };\n\n states.prop = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n if (type == \"hash\" && !/^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(stream.current())) {\n override += \" error\";\n } else if (type == \"word\") {\n wordAsValue(stream);\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n }\n return \"prop\";\n };\n\n states.propBlock = function(type, _stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n return state.context.type;\n };\n\n states.parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \")\") return popContext(state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n if (type == \"word\") wordAsValue(stream);\n return \"parens\";\n };\n\n states.pseudo = function(type, stream, state) {\n if (type == \"meta\") return \"pseudo\";\n\n if (type == \"word\") {\n override = \"variable-3\";\n return state.context.type;\n }\n return pass(type, stream, state);\n };\n\n states.documentTypes = function(type, stream, state) {\n if (type == \"word\" && documentTypes.hasOwnProperty(stream.current())) {\n override = \"tag\";\n return state.context.type;\n } else {\n return states.atBlock(type, stream, state);\n }\n };\n\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (type == \"}\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n override = \"keyword\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (mediaValueKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else if (propertyKeywords.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n else if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"error\";\n }\n return state.context.type;\n };\n\n states.atComponentBlock = function(type, stream, state) {\n if (type == \"}\")\n return popAndPass(type, stream, state);\n if (type == \"{\")\n return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\", false);\n if (type == \"word\")\n override = \"error\";\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \")\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n return states.atBlock(type, stream, state);\n };\n\n states.restricted_atBlock_before = function(type, stream, state) {\n if (type == \"{\")\n return pushContext(state, stream, \"restricted_atBlock\");\n if (type == \"word\" && state.stateArg == \"@counter-style\") {\n override = \"variable\";\n return \"restricted_atBlock_before\";\n }\n return pass(type, stream, state);\n };\n\n states.restricted_atBlock = function(type, stream, state) {\n if (type == \"}\") {\n state.stateArg = null;\n return popContext(state);\n }\n if (type == \"word\") {\n if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n override = \"error\";\n else\n override = \"property\";\n return \"maybeprop\";\n }\n return \"restricted_atBlock\";\n };\n\n states.keyframes = function(type, stream, state) {\n if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n if (type == \"{\") return pushContext(state, stream, \"top\");\n return pass(type, stream, state);\n };\n\n states.at = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"tag\";\n else if (type == \"hash\") override = \"builtin\";\n return \"at\";\n };\n\n states.interpolation = function(type, stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"variable\";\n else if (type != \"variable\" && type != \"(\" && type != \")\") override = \"error\";\n return \"interpolation\";\n };\n\n return {\n startState: function(base) {\n return {tokenize: null,\n state: inline ? \"block\" : \"top\",\n stateArg: null,\n context: new Context(inline ? \"block\" : \"top\", base || 0, null)};\n },\n\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n if (type != \"comment\")\n state.state = states[state.state](type, stream, state);\n return override;\n },\n\n indent: function(state, textAfter) {\n var cx = state.context, ch = textAfter && textAfter.charAt(0);\n var indent = cx.indent;\n if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n if (cx.prev) {\n if (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" ||\n cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\")) {\n // Resume indentation from parent context.\n cx = cx.prev;\n indent = cx.indent;\n } else if (ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\")) {\n // Dedent relative to current context.\n indent = Math.max(0, cx.indent - indentUnit);\n }\n }\n return indent;\n },\n\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: lineComment,\n fold: \"brace\"\n };\n});\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) {\n keys[array[i].toLowerCase()] = true;\n }\n return keys;\n }\n\n var documentTypes_ = [\n \"domain\", \"regexp\", \"url\", \"url-prefix\"\n ], documentTypes = keySet(documentTypes_);\n\n var mediaTypes_ = [\n \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n \"tty\", \"tv\", \"embossed\"\n ], mediaTypes = keySet(mediaTypes_);\n\n var mediaFeatures_ = [\n \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n \"min-resolution\", \"max-resolution\", \"scan\", \"grid\", \"orientation\",\n \"device-pixel-ratio\", \"min-device-pixel-ratio\", \"max-device-pixel-ratio\",\n \"pointer\", \"any-pointer\", \"hover\", \"any-hover\", \"prefers-color-scheme\",\n \"dynamic-range\", \"video-dynamic-range\"\n ], mediaFeatures = keySet(mediaFeatures_);\n\n var mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\",\n \"dark\", \"light\",\n \"standard\", \"high\"\n ], mediaValueKeywords = keySet(mediaValueKeywords_);\n\n var propertyKeywords_ = [\n \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n \"alignment-baseline\", \"all\", \"anchor-point\", \"animation\", \"animation-delay\",\n \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n \"animation-timing-function\", \"appearance\", \"azimuth\", \"backdrop-filter\",\n \"backface-visibility\", \"background\", \"background-attachment\",\n \"background-blend-mode\", \"background-clip\", \"background-color\",\n \"background-image\", \"background-origin\", \"background-position\",\n \"background-position-x\", \"background-position-y\", \"background-repeat\",\n \"background-size\", \"baseline-shift\", \"binding\", \"bleed\", \"block-size\",\n \"bookmark-label\", \"bookmark-level\", \"bookmark-state\", \"bookmark-target\",\n \"border\", \"border-bottom\", \"border-bottom-color\", \"border-bottom-left-radius\",\n \"border-bottom-right-radius\", \"border-bottom-style\", \"border-bottom-width\",\n \"border-collapse\", \"border-color\", \"border-image\", \"border-image-outset\",\n \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n \"border-image-width\", \"border-left\", \"border-left-color\", \"border-left-style\",\n \"border-left-width\", \"border-radius\", \"border-right\", \"border-right-color\",\n \"border-right-style\", \"border-right-width\", \"border-spacing\", \"border-style\",\n \"border-top\", \"border-top-color\", \"border-top-left-radius\",\n \"border-top-right-radius\", \"border-top-style\", \"border-top-width\",\n \"border-width\", \"bottom\", \"box-decoration-break\", \"box-shadow\", \"box-sizing\",\n \"break-after\", \"break-before\", \"break-inside\", \"caption-side\", \"caret-color\",\n \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\", \"column-fill\",\n \"column-gap\", \"column-rule\", \"column-rule-color\", \"column-rule-style\",\n \"column-rule-width\", \"column-span\", \"column-width\", \"columns\", \"contain\",\n \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\", \"cue-after\",\n \"cue-before\", \"cursor\", \"direction\", \"display\", \"dominant-baseline\",\n \"drop-initial-after-adjust\", \"drop-initial-after-align\",\n \"drop-initial-before-adjust\", \"drop-initial-before-align\", \"drop-initial-size\",\n \"drop-initial-value\", \"elevation\", \"empty-cells\", \"fit\", \"fit-content\", \"fit-position\",\n \"flex\", \"flex-basis\", \"flex-direction\", \"flex-flow\", \"flex-grow\",\n \"flex-shrink\", \"flex-wrap\", \"float\", \"float-offset\", \"flow-from\", \"flow-into\",\n \"font\", \"font-family\", \"font-feature-settings\", \"font-kerning\",\n \"font-language-override\", \"font-optical-sizing\", \"font-size\",\n \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-synthesis\",\n \"font-variant\", \"font-variant-alternates\", \"font-variant-caps\",\n \"font-variant-east-asian\", \"font-variant-ligatures\", \"font-variant-numeric\",\n \"font-variant-position\", \"font-variation-settings\", \"font-weight\", \"gap\",\n \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\", \"grid-auto-rows\",\n \"grid-column\", \"grid-column-end\", \"grid-column-gap\", \"grid-column-start\",\n \"grid-gap\", \"grid-row\", \"grid-row-end\", \"grid-row-gap\", \"grid-row-start\",\n \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\", \"icon\",\n \"image-orientation\", \"image-rendering\", \"image-resolution\", \"inline-box-align\",\n \"inset\", \"inset-block\", \"inset-block-end\", \"inset-block-start\", \"inset-inline\",\n \"inset-inline-end\", \"inset-inline-start\", \"isolation\", \"justify-content\",\n \"justify-items\", \"justify-self\", \"left\", \"letter-spacing\", \"line-break\",\n \"line-height\", \"line-height-step\", \"line-stacking\", \"line-stacking-ruby\",\n \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"marks\",\n \"marquee-direction\", \"marquee-loop\", \"marquee-play-count\", \"marquee-speed\",\n \"marquee-style\", \"mask-clip\", \"mask-composite\", \"mask-image\", \"mask-mode\",\n \"mask-origin\", \"mask-position\", \"mask-repeat\", \"mask-size\",\"mask-type\",\n \"max-block-size\", \"max-height\", \"max-inline-size\",\n \"max-width\", \"min-block-size\", \"min-height\", \"min-inline-size\", \"min-width\",\n \"mix-blend-mode\", \"move-to\", \"nav-down\", \"nav-index\", \"nav-left\", \"nav-right\",\n \"nav-up\", \"object-fit\", \"object-position\", \"offset\", \"offset-anchor\",\n \"offset-distance\", \"offset-path\", \"offset-position\", \"offset-rotate\",\n \"opacity\", \"order\", \"orphans\", \"outline\", \"outline-color\", \"outline-offset\",\n \"outline-style\", \"outline-width\", \"overflow\", \"overflow-style\",\n \"overflow-wrap\", \"overflow-x\", \"overflow-y\", \"padding\", \"padding-bottom\",\n \"padding-left\", \"padding-right\", \"padding-top\", \"page\", \"page-break-after\",\n \"page-break-before\", \"page-break-inside\", \"page-policy\", \"pause\",\n \"pause-after\", \"pause-before\", \"perspective\", \"perspective-origin\", \"pitch\",\n \"pitch-range\", \"place-content\", \"place-items\", \"place-self\", \"play-during\",\n \"position\", \"presentation-level\", \"punctuation-trim\", \"quotes\",\n \"region-break-after\", \"region-break-before\", \"region-break-inside\",\n \"region-fragment\", \"rendering-intent\", \"resize\", \"rest\", \"rest-after\",\n \"rest-before\", \"richness\", \"right\", \"rotate\", \"rotation\", \"rotation-point\",\n \"row-gap\", \"ruby-align\", \"ruby-overhang\", \"ruby-position\", \"ruby-span\",\n \"scale\", \"scroll-behavior\", \"scroll-margin\", \"scroll-margin-block\",\n \"scroll-margin-block-end\", \"scroll-margin-block-start\", \"scroll-margin-bottom\",\n \"scroll-margin-inline\", \"scroll-margin-inline-end\",\n \"scroll-margin-inline-start\", \"scroll-margin-left\", \"scroll-margin-right\",\n \"scroll-margin-top\", \"scroll-padding\", \"scroll-padding-block\",\n \"scroll-padding-block-end\", \"scroll-padding-block-start\",\n \"scroll-padding-bottom\", \"scroll-padding-inline\", \"scroll-padding-inline-end\",\n \"scroll-padding-inline-start\", \"scroll-padding-left\", \"scroll-padding-right\",\n \"scroll-padding-top\", \"scroll-snap-align\", \"scroll-snap-type\",\n \"shape-image-threshold\", \"shape-inside\", \"shape-margin\", \"shape-outside\",\n \"size\", \"speak\", \"speak-as\", \"speak-header\", \"speak-numeral\",\n \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\", \"tab-size\",\n \"table-layout\", \"target\", \"target-name\", \"target-new\", \"target-position\",\n \"text-align\", \"text-align-last\", \"text-combine-upright\", \"text-decoration\",\n \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n \"text-decoration-skip-ink\", \"text-decoration-style\", \"text-emphasis\",\n \"text-emphasis-color\", \"text-emphasis-position\", \"text-emphasis-style\",\n \"text-height\", \"text-indent\", \"text-justify\", \"text-orientation\",\n \"text-outline\", \"text-overflow\", \"text-rendering\", \"text-shadow\",\n \"text-size-adjust\", \"text-space-collapse\", \"text-transform\",\n \"text-underline-position\", \"text-wrap\", \"top\", \"touch-action\", \"transform\", \"transform-origin\",\n \"transform-style\", \"transition\", \"transition-delay\", \"transition-duration\",\n \"transition-property\", \"transition-timing-function\", \"translate\",\n \"unicode-bidi\", \"user-select\", \"vertical-align\", \"visibility\", \"voice-balance\",\n \"voice-duration\", \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\",\n \"voice-stress\", \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\",\n \"will-change\", \"word-break\", \"word-spacing\", \"word-wrap\", \"writing-mode\", \"z-index\",\n // SVG-specific\n \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n \"color-interpolation\", \"color-interpolation-filters\",\n \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"paint-order\", \"shape-rendering\", \"stroke\",\n \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\",\n ], propertyKeywords = keySet(propertyKeywords_);\n\n var nonStandardPropertyKeywords_ = [\n \"accent-color\", \"aspect-ratio\", \"border-block\", \"border-block-color\", \"border-block-end\",\n \"border-block-end-color\", \"border-block-end-style\", \"border-block-end-width\",\n \"border-block-start\", \"border-block-start-color\", \"border-block-start-style\",\n \"border-block-start-width\", \"border-block-style\", \"border-block-width\",\n \"border-inline\", \"border-inline-color\", \"border-inline-end\",\n \"border-inline-end-color\", \"border-inline-end-style\",\n \"border-inline-end-width\", \"border-inline-start\", \"border-inline-start-color\",\n \"border-inline-start-style\", \"border-inline-start-width\",\n \"border-inline-style\", \"border-inline-width\", \"content-visibility\", \"margin-block\",\n \"margin-block-end\", \"margin-block-start\", \"margin-inline\", \"margin-inline-end\",\n \"margin-inline-start\", \"overflow-anchor\", \"overscroll-behavior\", \"padding-block\", \"padding-block-end\",\n \"padding-block-start\", \"padding-inline\", \"padding-inline-end\",\n \"padding-inline-start\", \"scroll-snap-stop\", \"scrollbar-3d-light-color\",\n \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n \"scrollbar-track-color\", \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"shape-inside\", \"zoom\"\n ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\n var fontProperties_ = [\n \"font-display\", \"font-family\", \"src\", \"unicode-range\", \"font-variant\",\n \"font-feature-settings\", \"font-stretch\", \"font-weight\", \"font-style\"\n ], fontProperties = keySet(fontProperties_);\n\n var counterDescriptors_ = [\n \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n \"speak-as\", \"suffix\", \"symbols\", \"system\"\n ], counterDescriptors = keySet(counterDescriptors_);\n\n var colorKeywords_ = [\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkgrey\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkslategrey\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dimgrey\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightgrey\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\", \"lightslategrey\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"slategrey\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n ], colorKeywords = keySet(colorKeywords_);\n\n var valueKeywords_ = [\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\", \"avoid-page\",\n \"avoid-region\", \"axis-pan\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n \"bengali\", \"blink\", \"block\", \"block-axis\", \"blur\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"brightness\", \"bullets\", \"button\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n \"col-resize\", \"collapse\", \"color\", \"color-burn\", \"color-dodge\", \"column\", \"column-reverse\",\n \"compact\", \"condensed\", \"conic-gradient\", \"contain\", \"content\", \"contents\",\n \"content-box\", \"context-menu\", \"continuous\", \"contrast\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n \"cross\", \"crosshair\", \"cubic-bezier\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\",\n \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\", \"difference\",\n \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n \"dot-dash\", \"dot-dot-dash\",\n \"dotted\", \"double\", \"down\", \"drop-shadow\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n \"ethiopic-numeric\", \"ew-resize\", \"exclusion\", \"expanded\", \"extends\", \"extra-condensed\",\n \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fill-box\", \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\",\n \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"grayscale\", \"graytext\", \"grid\", \"groove\",\n \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hard-light\", \"hebrew\",\n \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"hue-rotate\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n \"inline-block\", \"inline-flex\", \"inline-grid\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\",\n \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n \"lower-roman\", \"lowercase\", \"ltr\", \"luminosity\", \"malayalam\", \"manipulation\", \"match\", \"matrix\", \"matrix3d\",\n \"media-play-button\", \"media-slider\", \"media-sliderthumb\",\n \"media-volume-slider\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\",\n \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"multiple_mask_images\", \"multiply\", \"myanmar\", \"n-resize\",\n \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"opacity\", \"open-quote\",\n \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"pinch-zoom\", \"plus-darker\", \"plus-lighter\",\n \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n \"relative\", \"repeat\", \"repeating-linear-gradient\", \"repeating-radial-gradient\",\n \"repeating-conic-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n \"rotateZ\", \"round\", \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\",\n \"s-resize\", \"sans-serif\", \"saturate\", \"saturation\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\",\n \"scroll\", \"scrollbar\", \"scroll-position\", \"se-resize\", \"searchfield\",\n \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"self-start\", \"self-end\",\n \"semi-condensed\", \"semi-expanded\", \"separate\", \"sepia\", \"serif\", \"show\", \"sidama\",\n \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"somali\",\n \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\",\n \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"stroke-box\", \"sub\",\n \"subpixel-antialiased\", \"svg_masks\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\",\n \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n \"tamil\",\n \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n \"trad-chinese-formal\", \"trad-chinese-informal\", \"transform\",\n \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unidirectional-pan\", \"unset\", \"up\",\n \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n \"var\", \"vertical\", \"vertical-text\", \"view-box\", \"visible\", \"visibleFill\", \"visiblePainted\",\n \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n \"window\", \"windowframe\", \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\",\n \"xx-large\", \"xx-small\"\n ], valueKeywords = keySet(valueKeywords_);\n\n var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)\n .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)\n .concat(valueKeywords_);\n CodeMirror.registerHelper(\"hintWords\", \"css\", allWords);\n\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n CodeMirror.defineMIME(\"text/css\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\"\n });\n\n CodeMirror.defineMIME(\"text/x-scss\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \":\": function(stream) {\n if (stream.match(/^\\s*\\{/, false))\n return [null, null]\n return false;\n },\n \"$\": function(stream) {\n stream.match(/^[\\w-]+/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"#\": function(stream) {\n if (!stream.eat(\"{\")) return false;\n return [null, \"interpolation\"];\n }\n },\n name: \"css\",\n helperType: \"scss\"\n });\n\n CodeMirror.defineMIME(\"text/x-less\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \"@\": function(stream) {\n if (stream.eat(\"{\")) return [null, \"interpolation\"];\n if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i, false)) return false;\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"&\": function() {\n return [\"atom\", \"atom\"];\n }\n },\n name: \"css\",\n helperType: \"less\"\n });\n\n CodeMirror.defineMIME(\"text/x-gss\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n supportsAtComponent: true,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\",\n helperType: \"gss\"\n });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n (document.documentMode == null || document.documentMode < 8);\n\n var Pos = CodeMirror.Pos;\n\n var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\", \"<\": \">>\", \">\": \"<<\"};\n\n function bracketRegex(config) {\n return config && config.bracketRegex || /[(){}[\\]]/\n }\n\n function findMatchingBracket(cm, where, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var afterCursor = config && config.afterCursor\n if (afterCursor == null)\n afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)\n var re = bracketRegex(config)\n\n // A cursor is defined as between two characters, but in in vim command mode\n // (i.e. not insert mode), the cursor is visually represented as a\n // highlighted box on top of the 2nd character. Otherwise, we allow matches\n // from before or after the cursor.\n var match = (!afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)]) ||\n re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (config && config.strict && (dir > 0) != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config);\n if (found == null) return null;\n return {from: Pos(where.line, pos), to: found && found.pos,\n match: found && found.ch == match.charAt(0), forward: dir > 0};\n }\n\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = (config && config.maxScanLineLength) || 10000;\n var maxScanLines = (config && config.maxScanLines) || 1000;\n\n var stack = [];\n var re = bracketRegex(config)\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined ||\n (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || \"\") == (style || \"\"))) {\n var match = matching[ch];\n if (match && (match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000,\n highlightNonMatching = config && config.highlightNonMatching;\n var marks = [], ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textarea whenever this fires.\n if (ie_lt8 && cm.state.focused) cm.focus();\n\n var clear = function() {\n cm.operation(function() {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n function clearHighlighted(cm) {\n if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n cm.off(\"focus\", doMatchBrackets)\n cm.off(\"blur\", clearHighlighted)\n clearHighlighted(cm);\n }\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n cm.on(\"focus\", doMatchBrackets)\n cm.on(\"blur\", clearHighlighted)\n }\n });\n\n CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, config, oldConfig){\n // Backwards-compatibility kludge\n if (oldConfig || typeof config == \"boolean\") {\n if (!oldConfig) {\n config = config ? {strict: true} : null\n } else {\n oldConfig.strict = config\n config = oldConfig\n }\n }\n return findMatchingBracket(this, pos, config)\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Because sometimes you need to mark the selected *text*.\n//\n// Adds an option 'styleSelectedText' which, when enabled, gives\n// selected text the CSS class given as option value, or\n// \"CodeMirror-selectedtext\" when the value is not a string.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"styleSelectedText\", false, function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.state.markedSelection = [];\n cm.state.markedSelectionStyle = typeof val == \"string\" ? val : \"CodeMirror-selectedtext\";\n reset(cm);\n cm.on(\"cursorActivity\", onCursorActivity);\n cm.on(\"change\", onChange);\n } else if (!val && prev) {\n cm.off(\"cursorActivity\", onCursorActivity);\n cm.off(\"change\", onChange);\n clear(cm);\n cm.state.markedSelection = cm.state.markedSelectionStyle = null;\n }\n });\n\n function onCursorActivity(cm) {\n if (cm.state.markedSelection)\n cm.operation(function() { update(cm); });\n }\n\n function onChange(cm) {\n if (cm.state.markedSelection && cm.state.markedSelection.length)\n cm.operation(function() { clear(cm); });\n }\n\n var CHUNK_SIZE = 8;\n var Pos = CodeMirror.Pos;\n var cmp = CodeMirror.cmpPos;\n\n function coverRange(cm, from, to, addAt) {\n if (cmp(from, to) == 0) return;\n var array = cm.state.markedSelection;\n var cls = cm.state.markedSelectionStyle;\n for (var line = from.line;;) {\n var start = line == from.line ? from : Pos(line, 0);\n var endLine = line + CHUNK_SIZE, atEnd = endLine >= to.line;\n var end = atEnd ? to : Pos(endLine, 0);\n var mark = cm.markText(start, end, {className: cls});\n if (addAt == null) array.push(mark);\n else array.splice(addAt++, 0, mark);\n if (atEnd) break;\n line = endLine;\n }\n }\n\n function clear(cm) {\n var array = cm.state.markedSelection;\n for (var i = 0; i < array.length; ++i) array[i].clear();\n array.length = 0;\n }\n\n function reset(cm) {\n clear(cm);\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++)\n coverRange(cm, ranges[i].from(), ranges[i].to());\n }\n\n function update(cm) {\n if (!cm.somethingSelected()) return clear(cm);\n if (cm.listSelections().length > 1) return reset(cm);\n\n var from = cm.getCursor(\"start\"), to = cm.getCursor(\"end\");\n\n var array = cm.state.markedSelection;\n if (!array.length) return coverRange(cm, from, to);\n\n var coverStart = array[0].find(), coverEnd = array[array.length - 1].find();\n if (!coverStart || !coverEnd || to.line - from.line <= CHUNK_SIZE ||\n cmp(from, coverEnd.to) >= 0 || cmp(to, coverStart.from) <= 0)\n return reset(cm);\n\n while (cmp(from, coverStart.from) > 0) {\n array.shift().clear();\n coverStart = array[0].find();\n }\n if (cmp(from, coverStart.from) < 0) {\n if (coverStart.to.line - from.line < CHUNK_SIZE) {\n array.shift().clear();\n coverRange(cm, from, coverStart.to, 0);\n } else {\n coverRange(cm, from, coverStart.from, 0);\n }\n }\n\n while (cmp(to, coverEnd.to) < 0) {\n array.pop().clear();\n coverEnd = array[array.length - 1].find();\n }\n if (cmp(to, coverEnd.to) > 0) {\n if (to.line - coverEnd.from.line < CHUNK_SIZE) {\n array.pop().clear();\n coverRange(cm, coverEnd.from, to);\n } else {\n coverRange(cm, coverEnd.to, to);\n }\n }\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Utility function that allows modes to be combined. The mode given\n// as the base argument takes care of most of the normal mode\n// functionality, but a second (typically simple) mode is used, which\n// can override the style of text. Both modes get to parse all of the\n// text, but when both assign a non-null style to a piece of code, the\n// overlay wins, unless the combine argument was true and not overridden,\n// or state.overlay.combineTokens was true, in which case the styles are\n// combined.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.overlayMode = function(base, overlay, combine) {\n return {\n startState: function() {\n return {\n base: CodeMirror.startState(base),\n overlay: CodeMirror.startState(overlay),\n basePos: 0, baseCur: null,\n overlayPos: 0, overlayCur: null,\n streamSeen: null\n };\n },\n copyState: function(state) {\n return {\n base: CodeMirror.copyState(base, state.base),\n overlay: CodeMirror.copyState(overlay, state.overlay),\n basePos: state.basePos, baseCur: null,\n overlayPos: state.overlayPos, overlayCur: null\n };\n },\n\n token: function(stream, state) {\n if (stream != state.streamSeen ||\n Math.min(state.basePos, state.overlayPos) < stream.start) {\n state.streamSeen = stream;\n state.basePos = state.overlayPos = stream.start;\n }\n\n if (stream.start == state.basePos) {\n state.baseCur = base.token(stream, state.base);\n state.basePos = stream.pos;\n }\n if (stream.start == state.overlayPos) {\n stream.pos = stream.start;\n state.overlayCur = overlay.token(stream, state.overlay);\n state.overlayPos = stream.pos;\n }\n stream.pos = Math.min(state.basePos, state.overlayPos);\n\n // state.overlay.combineTokens always takes precedence over combine,\n // unless set to null\n if (state.overlayCur == null) return state.baseCur;\n else if (state.baseCur != null &&\n state.overlay.combineTokens ||\n combine && state.overlay.combineTokens == null)\n return state.baseCur + \" \" + state.overlayCur;\n else return state.overlayCur;\n },\n\n indent: base.indent && function(state, textAfter, line) {\n return base.indent(state.base, textAfter, line);\n },\n electricChars: base.electricChars,\n\n innerMode: function(state) { return {state: state.base, mode: base}; },\n\n blankLine: function(state) {\n var baseToken, overlayToken;\n if (base.blankLine) baseToken = base.blankLine(state.base);\n if (overlay.blankLine) overlayToken = overlay.blankLine(state.overlay);\n\n return overlayToken == null ?\n baseToken :\n (combine && baseToken != null ? baseToken + \" \" + overlayToken : overlayToken);\n }\n };\n};\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n/**\n * Link to the project's GitHub page:\n * https://github.com/pickhardt/coffeescript-codemirror-mode\n */\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"coffeescript\", function(conf, parserConf) {\n var ERRORCLASS = \"error\";\n\n function wordRegexp(words) {\n return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n }\n\n var operators = /^(?:->|=>|\\+[+=]?|-[\\-=]?|\\*[\\*=]?|\\/[\\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\\|=?|\\^=?|\\~|!|\\?|(or|and|\\|\\||&&|\\?)=)/;\n var delimiters = /^(?:[()\\[\\]{},:`=;]|\\.\\.?\\.?)/;\n var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/;\n var atProp = /^@[_A-Za-z$][_A-Za-z$0-9]*/;\n\n var wordOperators = wordRegexp([\"and\", \"or\", \"not\",\n \"is\", \"isnt\", \"in\",\n \"instanceof\", \"typeof\"]);\n var indentKeywords = [\"for\", \"while\", \"loop\", \"if\", \"unless\", \"else\",\n \"switch\", \"try\", \"catch\", \"finally\", \"class\"];\n var commonKeywords = [\"break\", \"by\", \"continue\", \"debugger\", \"delete\",\n \"do\", \"in\", \"of\", \"new\", \"return\", \"then\",\n \"this\", \"@\", \"throw\", \"when\", \"until\", \"extends\"];\n\n var keywords = wordRegexp(indentKeywords.concat(commonKeywords));\n\n indentKeywords = wordRegexp(indentKeywords);\n\n\n var stringPrefixes = /^('{3}|\\\"{3}|['\\\"])/;\n var regexPrefixes = /^(\\/{3}|\\/)/;\n var commonConstants = [\"Infinity\", \"NaN\", \"undefined\", \"null\", \"true\", \"false\", \"on\", \"off\", \"yes\", \"no\"];\n var constants = wordRegexp(commonConstants);\n\n // Tokenizers\n function tokenBase(stream, state) {\n // Handle scope changes\n if (stream.sol()) {\n if (state.scope.align === null) state.scope.align = false;\n var scopeOffset = state.scope.offset;\n if (stream.eatSpace()) {\n var lineOffset = stream.indentation();\n if (lineOffset > scopeOffset && state.scope.type == \"coffee\") {\n return \"indent\";\n } else if (lineOffset < scopeOffset) {\n return \"dedent\";\n }\n return null;\n } else {\n if (scopeOffset > 0) {\n dedent(stream, state);\n }\n }\n }\n if (stream.eatSpace()) {\n return null;\n }\n\n var ch = stream.peek();\n\n // Handle docco title comment (single line)\n if (stream.match(\"####\")) {\n stream.skipToEnd();\n return \"comment\";\n }\n\n // Handle multi line comments\n if (stream.match(\"###\")) {\n state.tokenize = longComment;\n return state.tokenize(stream, state);\n }\n\n // Single line comment\n if (ch === \"#\") {\n stream.skipToEnd();\n return \"comment\";\n }\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)) {\n floatLiteral = true;\n }\n if (stream.match(/^-?\\d+\\.\\d*/)) {\n floatLiteral = true;\n }\n if (stream.match(/^-?\\.\\d+/)) {\n floatLiteral = true;\n }\n\n if (floatLiteral) {\n // prevent from getting extra . on 1..\n if (stream.peek() == \".\"){\n stream.backUp(1);\n }\n return \"number\";\n }\n // Integers\n var intLiteral = false;\n // Hex\n if (stream.match(/^-?0x[0-9a-f]+/i)) {\n intLiteral = true;\n }\n // Decimal\n if (stream.match(/^-?[1-9]\\d*(e[\\+\\-]?\\d+)?/)) {\n intLiteral = true;\n }\n // Zero by itself with no other piece of number.\n if (stream.match(/^-?0(?![\\dx])/i)) {\n intLiteral = true;\n }\n if (intLiteral) {\n return \"number\";\n }\n }\n\n // Handle strings\n if (stream.match(stringPrefixes)) {\n state.tokenize = tokenFactory(stream.current(), false, \"string\");\n return state.tokenize(stream, state);\n }\n // Handle regex literals\n if (stream.match(regexPrefixes)) {\n if (stream.current() != \"/\" || stream.match(/^.*\\//, false)) { // prevent highlight of division\n state.tokenize = tokenFactory(stream.current(), true, \"string-2\");\n return state.tokenize(stream, state);\n } else {\n stream.backUp(1);\n }\n }\n\n\n\n // Handle operators and delimiters\n if (stream.match(operators) || stream.match(wordOperators)) {\n return \"operator\";\n }\n if (stream.match(delimiters)) {\n return \"punctuation\";\n }\n\n if (stream.match(constants)) {\n return \"atom\";\n }\n\n if (stream.match(atProp) || state.prop && stream.match(identifiers)) {\n return \"property\";\n }\n\n if (stream.match(keywords)) {\n return \"keyword\";\n }\n\n if (stream.match(identifiers)) {\n return \"variable\";\n }\n\n // Handle non-detected items\n stream.next();\n return ERRORCLASS;\n }\n\n function tokenFactory(delimiter, singleline, outclass) {\n return function(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 }\n } else if (stream.match(delimiter)) {\n state.tokenize = tokenBase;\n return outclass;\n } else {\n stream.eat(/['\"\\/]/);\n }\n }\n if (singleline) {\n if (parserConf.singleLineStringErrors) {\n outclass = ERRORCLASS;\n } else {\n state.tokenize = tokenBase;\n }\n }\n return outclass;\n };\n }\n\n function longComment(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^#]/);\n if (stream.match(\"###\")) {\n state.tokenize = tokenBase;\n break;\n }\n stream.eatWhile(\"#\");\n }\n return \"comment\";\n }\n\n function indent(stream, state, type) {\n type = type || \"coffee\";\n var offset = 0, align = false, alignOffset = null;\n for (var scope = state.scope; scope; scope = scope.prev) {\n if (scope.type === \"coffee\" || scope.type == \"}\") {\n offset = scope.offset + conf.indentUnit;\n break;\n }\n }\n if (type !== \"coffee\") {\n align = null;\n alignOffset = stream.column() + stream.current().length;\n } else if (state.scope.align) {\n state.scope.align = false;\n }\n state.scope = {\n offset: offset,\n type: type,\n prev: state.scope,\n align: align,\n alignOffset: alignOffset\n };\n }\n\n function dedent(stream, state) {\n if (!state.scope.prev) return;\n if (state.scope.type === \"coffee\") {\n var _indent = stream.indentation();\n var matched = false;\n for (var scope = state.scope; scope; scope = scope.prev) {\n if (_indent === scope.offset) {\n matched = true;\n break;\n }\n }\n if (!matched) {\n return true;\n }\n while (state.scope.prev && state.scope.offset !== _indent) {\n state.scope = state.scope.prev;\n }\n return false;\n } else {\n state.scope = state.scope.prev;\n return false;\n }\n }\n\n function tokenLexer(stream, state) {\n var style = state.tokenize(stream, state);\n var current = stream.current();\n\n // Handle scope changes.\n if (current === \"return\") {\n state.dedent = true;\n }\n if (((current === \"->\" || current === \"=>\") && stream.eol())\n || style === \"indent\") {\n indent(stream, state);\n }\n var delimiter_index = \"[({\".indexOf(current);\n if (delimiter_index !== -1) {\n indent(stream, state, \"])}\".slice(delimiter_index, delimiter_index+1));\n }\n if (indentKeywords.exec(current)){\n indent(stream, state);\n }\n if (current == \"then\"){\n dedent(stream, state);\n }\n\n\n if (style === \"dedent\") {\n if (dedent(stream, state)) {\n return ERRORCLASS;\n }\n }\n delimiter_index = \"])}\".indexOf(current);\n if (delimiter_index !== -1) {\n while (state.scope.type == \"coffee\" && state.scope.prev)\n state.scope = state.scope.prev;\n if (state.scope.type == current)\n state.scope = state.scope.prev;\n }\n if (state.dedent && stream.eol()) {\n if (state.scope.type == \"coffee\" && state.scope.prev)\n state.scope = state.scope.prev;\n state.dedent = false;\n }\n\n return style;\n }\n\n var external = {\n startState: function(basecolumn) {\n return {\n tokenize: tokenBase,\n scope: {offset:basecolumn || 0, type:\"coffee\", prev: null, align: false},\n prop: false,\n dedent: 0\n };\n },\n\n token: function(stream, state) {\n var fillAlign = state.scope.align === null && state.scope;\n if (fillAlign && stream.sol()) fillAlign.align = false;\n\n var style = tokenLexer(stream, state);\n if (style && style != \"comment\") {\n if (fillAlign) fillAlign.align = true;\n state.prop = style == \"punctuation\" && stream.current() == \".\"\n }\n\n return style;\n },\n\n indent: function(state, text) {\n if (state.tokenize != tokenBase) return 0;\n var scope = state.scope;\n var closer = text && \"])}\".indexOf(text.charAt(0)) > -1;\n if (closer) while (scope.type == \"coffee\" && scope.prev) scope = scope.prev;\n var closes = closer && scope.type === text.charAt(0);\n if (scope.align)\n return scope.alignOffset - (closes ? 1 : 0);\n else\n return (closes ? scope.prev : scope).offset;\n },\n\n lineComment: \"#\",\n fold: \"indent\"\n };\n return external;\n});\n\n// IANA registered media type\n// https://www.iana.org/assignments/media-types/\nCodeMirror.defineMIME(\"application/vnd.coffeescript\", \"coffeescript\");\n\nCodeMirror.defineMIME(\"text/x-coffeescript\", \"coffeescript\");\nCodeMirror.defineMIME(\"text/coffeescript\", \"coffeescript\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n 'track': true, 'wbr': true, 'menuitem': true},\n implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n 'th': true, 'tr': true},\n contextGrabbers: {\n 'dd': {'dd': true, 'dt': true},\n 'dt': {'dd': true, 'dt': true},\n 'li': {'li': true},\n 'option': {'option': true, 'optgroup': true},\n 'optgroup': {'optgroup': true},\n 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n 'rp': {'rp': true, 'rt': true},\n 'rt': {'rp': true, 'rt': true},\n 'tbody': {'tbody': true, 'tfoot': true},\n 'td': {'td': true, 'th': true},\n 'tfoot': {'tbody': true},\n 'th': {'td': true, 'th': true},\n 'thead': {'tbody': true, 'tfoot': true},\n 'tr': {'tr': true}\n },\n doNotIndent: {\"pre\": true},\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n}\n\nvar xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n var indentUnit = editorConf.indentUnit\n var config = {}\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n for (var prop in defaults) config[prop] = defaults[prop]\n for (var prop in config_) config[prop] = config_[prop]\n\n // Return variables for tokenizers\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n inText.isInText = true;\n\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n }\n }\n\n function doctype(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n\n function lower(tagName) {\n return tagName && tagName.toLowerCase();\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName || \"\";\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!config.contextGrabbers.hasOwnProperty(lower(parentTagName)) ||\n !config.contextGrabbers[lower(parentTagName)].hasOwnProperty(lower(nextTagName))) {\n return;\n }\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName &&\n config.implicitlyClosed.hasOwnProperty(lower(state.context.tagName)))\n popContext(state);\n if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type == \"selfcloseTag\" ||\n config.autoSelfClosers.hasOwnProperty(lower(tagName))) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!config.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function(baseIndent) {\n var state = {tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null, tagStart: null,\n context: null}\n if (baseIndent != null) state.baseIndent = baseIndent\n return state\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle)\n style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n return style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n // Indent multi-line strings (e.g. css).\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n // Indent the starts of attribute names.\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n if (config.alignCDATA && /<!\\[CDATA\\[/.test(textAfter)) return 0;\n var tagAfter = textAfter && /^<(\\/)?([\\w_:\\.-]*)/.exec(textAfter);\n if (tagAfter && tagAfter[1]) { // Closing tag spotted\n while (context) {\n if (context.tagName == tagAfter[2]) {\n context = context.prev;\n break;\n } else if (config.implicitlyClosed.hasOwnProperty(lower(context.tagName))) {\n context = context.prev;\n } else {\n break;\n }\n }\n } else if (tagAfter) { // Opening tag spotted\n while (context) {\n var grabbers = config.contextGrabbers[lower(context.tagName)];\n if (grabbers && grabbers.hasOwnProperty(lower(tagAfter[2])))\n context = context.prev;\n else\n break;\n }\n }\n while (context && context.prev && !context.startOfLine)\n context = context.prev;\n if (context) return context.indent + indentUnit;\n else return state.baseIndent || 0;\n },\n\n electricInput: /<\\/[\\s\\w:]+>$/,\n blockCommentStart: \"<!--\",\n blockCommentEnd: \"-->\",\n\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n\n skipAttribute: function(state) {\n if (state.state == attrValueState)\n state.state = attrState\n },\n\n xmlCurrentTag: function(state) {\n return state.tagName ? {name: state.tagName, close: state.type == \"closeTag\"} : null\n },\n\n xmlCurrentContext: function(state) {\n var context = []\n for (var cx = state.context; cx; cx = cx.prev)\n context.push(cx.tagName)\n return context.reverse()\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../javascript/javascript\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../javascript/javascript\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var defaultTags = {\n script: [\n [\"lang\", /(javascript|babel)/i, \"javascript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i, \"javascript\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"javascript\"]\n ],\n style: [\n [\"lang\", /^css$/i, \"css\"],\n [\"type\", /^(text\\/)?(x-)?(stylesheet|css)$/i, \"css\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"css\"]\n ]\n };\n\n function maybeBackup(stream, pat, style) {\n var cur = stream.current(), close = cur.search(pat);\n if (close > -1) {\n stream.backUp(cur.length - close);\n } else if (cur.match(/<\\/?$/)) {\n stream.backUp(cur.length);\n if (!stream.match(pat, false)) stream.match(cur);\n }\n return style;\n }\n\n var attrRegexpCache = {};\n function getAttrRegexp(attr) {\n var regexp = attrRegexpCache[attr];\n if (regexp) return regexp;\n return attrRegexpCache[attr] = new RegExp(\"\\\\s+\" + attr + \"\\\\s*=\\\\s*('|\\\")?([^'\\\"]+)('|\\\")?\\\\s*\");\n }\n\n function getAttrValue(text, attr) {\n var match = text.match(getAttrRegexp(attr))\n return match ? /^\\s*(.*?)\\s*$/.exec(match[2])[1] : \"\"\n }\n\n function getTagRegexp(tagName, anchored) {\n return new RegExp((anchored ? \"^\" : \"\") + \"<\\/\\\\s*\" + tagName + \"\\\\s*>\", \"i\");\n }\n\n function addTags(from, to) {\n for (var tag in from) {\n var dest = to[tag] || (to[tag] = []);\n var source = from[tag];\n for (var i = source.length - 1; i >= 0; i--)\n dest.unshift(source[i])\n }\n }\n\n function findMatchingMode(tagInfo, tagText) {\n for (var i = 0; i < tagInfo.length; i++) {\n var spec = tagInfo[i];\n if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2];\n }\n }\n\n CodeMirror.defineMode(\"htmlmixed\", function (config, parserConfig) {\n var htmlMode = CodeMirror.getMode(config, {\n name: \"xml\",\n htmlMode: true,\n multilineTagIndentFactor: parserConfig.multilineTagIndentFactor,\n multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag,\n allowMissingTagName: parserConfig.allowMissingTagName,\n });\n\n var tags = {};\n var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes;\n addTags(defaultTags, tags);\n if (configTags) addTags(configTags, tags);\n if (configScript) for (var i = configScript.length - 1; i >= 0; i--)\n tags.script.unshift([\"type\", configScript[i].matches, configScript[i].mode])\n\n function html(stream, state) {\n var style = htmlMode.token(stream, state.htmlState), tag = /\\btag\\b/.test(style), tagName\n if (tag && !/[<>\\s\\/]/.test(stream.current()) &&\n (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) &&\n tags.hasOwnProperty(tagName)) {\n state.inTag = tagName + \" \"\n } else if (state.inTag && tag && />$/.test(stream.current())) {\n var inTag = /^([\\S]+) (.*)/.exec(state.inTag)\n state.inTag = null\n var modeSpec = stream.current() == \">\" && findMatchingMode(tags[inTag[1]], inTag[2])\n var mode = CodeMirror.getMode(config, modeSpec)\n var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false);\n state.token = function (stream, state) {\n if (stream.match(endTagA, false)) {\n state.token = html;\n state.localState = state.localMode = null;\n return null;\n }\n return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState));\n };\n state.localMode = mode;\n state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, \"\", \"\"));\n } else if (state.inTag) {\n state.inTag += stream.current()\n if (stream.eol()) state.inTag += \" \"\n }\n return style;\n };\n\n return {\n startState: function () {\n var state = CodeMirror.startState(htmlMode);\n return {token: html, inTag: null, localMode: null, localState: null, htmlState: state};\n },\n\n copyState: function (state) {\n var local;\n if (state.localState) {\n local = CodeMirror.copyState(state.localMode, state.localState);\n }\n return {token: state.token, inTag: state.inTag,\n localMode: state.localMode, localState: local,\n htmlState: CodeMirror.copyState(htmlMode, state.htmlState)};\n },\n\n token: function (stream, state) {\n return state.token(stream, state);\n },\n\n indent: function (state, textAfter, line) {\n if (!state.localMode || /^\\s*<\\//.test(textAfter))\n return htmlMode.indent(state.htmlState, textAfter, line);\n else if (state.localMode.indent)\n return state.localMode.indent(state.localState, textAfter, line);\n else\n return CodeMirror.Pass;\n },\n\n innerMode: function (state) {\n return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode};\n }\n };\n }, \"xml\", \"javascript\", \"css\");\n\n CodeMirror.defineMIME(\"text/html\", \"htmlmixed\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../../addon/mode/simple\"), require(\"../../addon/mode/multiplex\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../../addon/mode/simple\", \"../../addon/mode/multiplex\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineSimpleMode(\"handlebars-tags\", {\n start: [\n { regex: /\\{\\{\\{/, push: \"handlebars_raw\", token: \"tag\" },\n { regex: /\\{\\{!--/, push: \"dash_comment\", token: \"comment\" },\n { regex: /\\{\\{!/, push: \"comment\", token: \"comment\" },\n { regex: /\\{\\{/, push: \"handlebars\", token: \"tag\" }\n ],\n handlebars_raw: [\n { regex: /\\}\\}\\}/, pop: true, token: \"tag\" },\n ],\n handlebars: [\n { regex: /\\}\\}/, pop: true, token: \"tag\" },\n\n // Double and single quotes\n { regex: /\"(?:[^\\\\\"]|\\\\.)*\"?/, token: \"string\" },\n { regex: /'(?:[^\\\\']|\\\\.)*'?/, token: \"string\" },\n\n // Handlebars keywords\n { regex: />|[#\\/]([A-Za-z_]\\w*)/, token: \"keyword\" },\n { regex: /(?:else|this)\\b/, token: \"keyword\" },\n\n // Numeral\n { regex: /\\d+/i, token: \"number\" },\n\n // Atoms like = and .\n { regex: /=|~|@|true|false/, token: \"atom\" },\n\n // Paths\n { regex: /(?:\\.\\.\\/)*(?:[A-Za-z_][\\w\\.]*)+/, token: \"variable-2\" }\n ],\n dash_comment: [\n { regex: /--\\}\\}/, pop: true, token: \"comment\" },\n\n // Commented code\n { regex: /./, token: \"comment\"}\n ],\n comment: [\n { regex: /\\}\\}/, pop: true, token: \"comment\" },\n { regex: /./, token: \"comment\" }\n ],\n meta: {\n blockCommentStart: \"{{--\",\n blockCommentEnd: \"--}}\"\n }\n });\n\n CodeMirror.defineMode(\"handlebars\", function(config, parserConfig) {\n var handlebars = CodeMirror.getMode(config, \"handlebars-tags\");\n if (!parserConfig || !parserConfig.base) return handlebars;\n return CodeMirror.multiplexingMode(\n CodeMirror.getMode(config, parserConfig.base),\n {open: \"{{\", close: /\\}\\}\\}?/, mode: handlebars, parseDelimiters: true}\n );\n });\n\n CodeMirror.defineMIME(\"text/x-handlebars-template\", \"handlebars\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.multiplexingMode = function(outer /*, others */) {\n // Others should be {open, close, mode [, delimStyle] [, innerStyle] [, parseDelimiters]} objects\n var others = Array.prototype.slice.call(arguments, 1);\n\n function indexOf(string, pattern, from, returnEnd) {\n if (typeof pattern == \"string\") {\n var found = string.indexOf(pattern, from);\n return returnEnd && found > -1 ? found + pattern.length : found;\n }\n var m = pattern.exec(from ? string.slice(from) : string);\n return m ? m.index + from + (returnEnd ? m[0].length : 0) : -1;\n }\n\n return {\n startState: function() {\n return {\n outer: CodeMirror.startState(outer),\n innerActive: null,\n inner: null,\n startingInner: false\n };\n },\n\n copyState: function(state) {\n return {\n outer: CodeMirror.copyState(outer, state.outer),\n innerActive: state.innerActive,\n inner: state.innerActive && CodeMirror.copyState(state.innerActive.mode, state.inner),\n startingInner: state.startingInner\n };\n },\n\n token: function(stream, state) {\n if (!state.innerActive) {\n var cutOff = Infinity, oldContent = stream.string;\n for (var i = 0; i < others.length; ++i) {\n var other = others[i];\n var found = indexOf(oldContent, other.open, stream.pos);\n if (found == stream.pos) {\n if (!other.parseDelimiters) stream.match(other.open);\n state.startingInner = !!other.parseDelimiters\n state.innerActive = other;\n\n // Get the outer indent, making sure to handle CodeMirror.Pass\n var outerIndent = 0;\n if (outer.indent) {\n var possibleOuterIndent = outer.indent(state.outer, \"\", \"\");\n if (possibleOuterIndent !== CodeMirror.Pass) outerIndent = possibleOuterIndent;\n }\n\n state.inner = CodeMirror.startState(other.mode, outerIndent);\n return other.delimStyle && (other.delimStyle + \" \" + other.delimStyle + \"-open\");\n } else if (found != -1 && found < cutOff) {\n cutOff = found;\n }\n }\n if (cutOff != Infinity) stream.string = oldContent.slice(0, cutOff);\n var outerToken = outer.token(stream, state.outer);\n if (cutOff != Infinity) stream.string = oldContent;\n return outerToken;\n } else {\n var curInner = state.innerActive, oldContent = stream.string;\n if (!curInner.close && stream.sol()) {\n state.innerActive = state.inner = null;\n return this.token(stream, state);\n }\n var found = curInner.close && !state.startingInner ?\n indexOf(oldContent, curInner.close, stream.pos, curInner.parseDelimiters) : -1;\n if (found == stream.pos && !curInner.parseDelimiters) {\n stream.match(curInner.close);\n state.innerActive = state.inner = null;\n return curInner.delimStyle && (curInner.delimStyle + \" \" + curInner.delimStyle + \"-close\");\n }\n if (found > -1) stream.string = oldContent.slice(0, found);\n var innerToken = curInner.mode.token(stream, state.inner);\n if (found > -1) stream.string = oldContent;\n else if (stream.pos > stream.start) state.startingInner = false\n\n if (found == stream.pos && curInner.parseDelimiters)\n state.innerActive = state.inner = null;\n\n if (curInner.innerStyle) {\n if (innerToken) innerToken = innerToken + \" \" + curInner.innerStyle;\n else innerToken = curInner.innerStyle;\n }\n\n return innerToken;\n }\n },\n\n indent: function(state, textAfter, line) {\n var mode = state.innerActive ? state.innerActive.mode : outer;\n if (!mode.indent) return CodeMirror.Pass;\n return mode.indent(state.innerActive ? state.inner : state.outer, textAfter, line);\n },\n\n blankLine: function(state) {\n var mode = state.innerActive ? state.innerActive.mode : outer;\n if (mode.blankLine) {\n mode.blankLine(state.innerActive ? state.inner : state.outer);\n }\n if (!state.innerActive) {\n for (var i = 0; i < others.length; ++i) {\n var other = others[i];\n if (other.open === \"\\n\") {\n state.innerActive = other;\n state.inner = CodeMirror.startState(other.mode, mode.indent ? mode.indent(state.outer, \"\", \"\") : 0);\n }\n }\n } else if (state.innerActive.close === \"\\n\") {\n state.innerActive = state.inner = null;\n }\n },\n\n electricChars: outer.electricChars,\n\n innerMode: function(state) {\n return state.inner ? {state: state.inner, mode: state.innerActive.mode} : {state: state.outer, mode: outer};\n }\n };\n};\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n pushcontext.lex = pushblockcontext.lex = true\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+#?[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n"],"sourceRoot":""}