1{"version":3,"sources":["../../node_modules/codemirror/mode/stylus/stylus.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","config","indentUnit","indentUnitString","tagKeywords","keySet","tagKeywords_","tagVariablesRegexp","propertyKeywords","propertyKeywords_","nonStandardPropertyKeywords","nonStandardPropertyKeywords_","valueKeywords","valueKeywords_","colorKeywords","colorKeywords_","documentTypes","documentTypes_","documentTypesRegexp","wordRegexp","mediaFeatures","mediaFeatures_","mediaTypes","mediaTypes_","fontProperties","fontProperties_","operatorsRegexp","wordOperatorKeywordsRegexp","wordOperatorKeywords_","blockKeywords","blockKeywords_","vendorPrefixesRegexp","RegExp","commonAtoms","commonAtoms_","firstWordMatch","states","ch","style","type","override","length","tokenBase","stream","state","string","match","context","line","firstWord","replace","indent","indentation","peek","skipToEnd","tokenize","tokenCComment","next","tokenString","eatWhile","current","tokenParenthesized","backUp","wordIsTag","test","maybeEnd","quote","escaped","Context","prev","this","pushContext","popContext","currentIndent","contextIndent","pass","popAndPass","n","i","word","toLowerCase","wordIsProperty","wordIsBlock","wordIsVendorPrefix","wordAsValue","wordLC","typeIsBlock","endOfLine","typeIsInterpolation","typeIsPseudo","startOfLine","sol","escapeRegExp","eol","firstWordOfLine","re","result","block","charAt","slice","parens","vendorPrefixes","pseudo","atBlock","hasOwnProperty","atBlock_parens","keyframes","interpolation","extend","variableName","startState","base","token","eatSpace","textAfter","cx","lineFirstWord","lineIndent","prevLineFirstWord","prevLineIndent","electricChars","lineComment","fold","commonDef_","hintWords","concat","words","sort","a","b","join","array","keys","text","registerHelper","defineMIME"],"mappings":"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","file":"stylus.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/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      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  var documentTypes_ = [\"domain\", \"regexp\", \"url\", \"url-prefix\"];\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\"];\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\",\"button-bevel\",\"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\",\"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\",\"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-controls-background\",\"media-current-time-display\",\"media-fullscreen-button\",\"media-mute-button\",\"media-play-button\",\"media-return-to-realtime-button\",\"media-rewind-button\",\"media-seek-back-button\",\"media-seek-forward-button\",\"media-slider\",\"media-sliderthumb\",\"media-time-remaining-display\",\"media-volume-slider\",\"media-volume-slider-container\",\"media-volume-sliderthumb\",\"medium\",\"menu\",\"menulist\",\"menulist-button\",\"menulist-text\",\"menulist-textfield\",\"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\",\"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\",\"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"]}