svelte-ruby 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/svelte.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte.js","sources":["../svelte/node_modules/locate-character/dist/locate-character.es.js","../svelte/node_modules/acorn/dist/acorn.es.js","../svelte/src/parse/read/expression.js","../svelte/src/utils/spaces.js","../svelte/src/parse/read/script.js","../svelte/node_modules/css-tree/lib/tokenizer/error.js","../svelte/node_modules/css-tree/lib/tokenizer/const.js","../svelte/node_modules/css-tree/lib/tokenizer/utils.js","../svelte/node_modules/css-tree/lib/tokenizer/Tokenizer.js","../svelte/node_modules/css-tree/lib/tokenizer/index.js","../svelte/node_modules/css-tree/lib/utils/list.js","../svelte/node_modules/css-tree/lib/parser/sequence.js","../svelte/node_modules/css-tree/lib/parser/type/AnPlusB.js","../svelte/node_modules/css-tree/lib/parser/type/Atrule.js","../svelte/node_modules/css-tree/lib/parser/type/AtruleExpression.js","../svelte/node_modules/css-tree/lib/parser/type/AttributeSelector.js","../svelte/node_modules/css-tree/lib/parser/type/Block.js","../svelte/node_modules/css-tree/lib/parser/type/Brackets.js","../svelte/node_modules/css-tree/lib/parser/type/ClassSelector.js","../svelte/node_modules/css-tree/lib/parser/type/Combinator.js","../svelte/node_modules/css-tree/lib/parser/type/Comment.js","../svelte/node_modules/css-tree/lib/parser/type/Declaration.js","../svelte/node_modules/css-tree/lib/parser/type/DeclarationList.js","../svelte/node_modules/css-tree/lib/parser/type/Dimention.js","../svelte/node_modules/css-tree/lib/parser/type/Function.js","../svelte/node_modules/css-tree/lib/parser/type/HexColor.js","../svelte/node_modules/css-tree/lib/parser/type/Identifier.js","../svelte/node_modules/css-tree/lib/parser/type/IdSelector.js","../svelte/node_modules/css-tree/lib/parser/type/MediaFeature.js","../svelte/node_modules/css-tree/lib/parser/type/MediaQuery.js","../svelte/node_modules/css-tree/lib/parser/type/MediaQueryList.js","../svelte/node_modules/css-tree/lib/parser/type/Nth.js","../svelte/node_modules/css-tree/lib/parser/type/Number.js","../svelte/node_modules/css-tree/lib/parser/type/Operator.js","../svelte/node_modules/css-tree/lib/parser/type/Parentheses.js","../svelte/node_modules/css-tree/lib/parser/type/Percentage.js","../svelte/node_modules/css-tree/lib/parser/type/PseudoClassSelector.js","../svelte/node_modules/css-tree/lib/parser/type/PseudoElementSelector.js","../svelte/node_modules/css-tree/lib/parser/type/Ratio.js","../svelte/node_modules/css-tree/lib/parser/type/Raw.js","../svelte/node_modules/css-tree/lib/parser/type/Rule.js","../svelte/node_modules/css-tree/lib/parser/type/Selector.js","../svelte/node_modules/css-tree/lib/parser/type/SelectorList.js","../svelte/node_modules/css-tree/lib/parser/type/String.js","../svelte/node_modules/css-tree/lib/parser/type/StyleSheet.js","../svelte/node_modules/css-tree/lib/parser/type/TypeSelector.js","../svelte/node_modules/css-tree/lib/parser/type/UnicodeRange.js","../svelte/node_modules/css-tree/lib/parser/type/Url.js","../svelte/node_modules/css-tree/lib/parser/type/Value.js","../svelte/node_modules/css-tree/lib/parser/type/WhiteSpace.js","../svelte/node_modules/css-tree/lib/parser/function/element.js","../svelte/node_modules/css-tree/lib/parser/function/expression.js","../svelte/node_modules/css-tree/lib/parser/function/var.js","../svelte/node_modules/css-tree/lib/parser/atrule/import.js","../svelte/node_modules/css-tree/lib/parser/atrule/media.js","../svelte/node_modules/css-tree/lib/parser/atrule/page.js","../svelte/node_modules/css-tree/lib/parser/atrule/supports.js","../svelte/node_modules/css-tree/lib/parser/Parser.js","../svelte/node_modules/css-tree/lib/parser/index.js","../svelte/node_modules/css-tree/lib/utils/walk.js","../svelte/src/parse/read/style.js","../svelte/src/parse/read/directives.js","../svelte/src/parse/patterns.js","../svelte/src/parse/utils/trim.js","../svelte/src/parse/utils/html.js","../svelte/src/utils/isVoidElementName.js","../svelte/src/parse/state/tag.js","../svelte/src/parse/state/mustache.js","../svelte/src/parse/state/text.js","../svelte/src/parse/state/fragment.js","../svelte/src/utils/getCodeFrame.js","../svelte/src/parse/utils/hash.js","../svelte/src/parse/index.js","../svelte/src/validate/js/propValidators/data.js","../svelte/src/validate/js/utils/checkForDupes.js","../svelte/src/validate/js/utils/checkForComputedKeys.js","../svelte/src/validate/js/propValidators/computed.js","../svelte/node_modules/estree-walker/dist/estree-walker.es.js","../svelte/src/utils/isReference.js","../svelte/src/validate/js/utils/usesThisOrArguments.js","../svelte/src/validate/js/propValidators/oncreate.js","../svelte/src/validate/js/propValidators/ondestroy.js","../svelte/src/validate/js/propValidators/onrender.js","../svelte/src/validate/js/propValidators/onteardown.js","../svelte/src/validate/js/propValidators/helpers.js","../svelte/src/validate/js/propValidators/methods.js","../svelte/src/validate/js/propValidators/components.js","../svelte/src/validate/js/propValidators/events.js","../svelte/src/validate/js/propValidators/namespace.js","../svelte/src/validate/js/propValidators/index.js","../svelte/src/validate/js/utils/FuzzySet.js","../svelte/src/utils/namespaces.js","../svelte/src/validate/js/index.js","../svelte/src/validate/html/index.js","../svelte/src/validate/index.js","../svelte/src/utils/deindent.js","../svelte/src/utils/CodeBuilder.js","../svelte/src/generators/dom/utils/getBuilders.js","../svelte/src/generators/shared/processCss.js","../svelte/src/utils/removeObjectKey.js","../svelte/src/generators/dom/visitors/Comment.js","../svelte/src/generators/dom/visitors/EachBlock.js","../svelte/src/generators/dom/visitors/attributes/lookup.js","../svelte/src/utils/flattenReference.js","../svelte/src/generators/dom/visitors/attributes/binding/getSetter.js","../svelte/src/generators/dom/visitors/attributes/binding/getStaticAttributeValue.js","../svelte/src/generators/dom/visitors/attributes/addElementBinding.js","../svelte/src/generators/dom/visitors/attributes/addElementAttributes.js","../svelte/src/generators/dom/visitors/attributes/addComponentBinding.js","../svelte/src/generators/dom/visitors/attributes/addComponentAttributes.js","../svelte/src/generators/dom/visitors/Component.js","../svelte/src/generators/dom/visitors/Element.js","../svelte/src/generators/dom/visitors/IfBlock.js","../svelte/src/generators/dom/visitors/MustacheTag.js","../svelte/src/generators/dom/visitors/RawMustacheTag.js","../svelte/src/generators/dom/visitors/Text.js","../svelte/src/generators/dom/visitors/YieldTag.js","../svelte/src/generators/dom/visitors/index.js","../svelte/node_modules/vlq/src/vlq.js","../svelte/node_modules/magic-string/dist/magic-string.es.js","../svelte/src/generators/shared/utils/counter.js","../svelte/src/utils/globalWhitelist.js","../svelte/src/generators/shared/utils/getGlobals.js","../svelte/src/generators/shared/utils/getIntro.js","../svelte/src/generators/shared/utils/getOutro.js","../svelte/src/generators/annotateWithScopes.js","../svelte/src/generators/Generator.js","../svelte/src/shared/dom.js","../svelte/src/shared/methods.js","../svelte/src/shared/index.js","../svelte/src/generators/dom/index.js","../svelte/src/generators/server-side-rendering/visitors/Comment.js","../svelte/src/generators/server-side-rendering/visitors/EachBlock.js","../svelte/src/generators/server-side-rendering/visitors/Component.js","../svelte/src/generators/server-side-rendering/visitors/Element.js","../svelte/src/generators/server-side-rendering/visitors/IfBlock.js","../svelte/src/generators/server-side-rendering/visitors/MustacheTag.js","../svelte/src/generators/server-side-rendering/visitors/RawMustacheTag.js","../svelte/src/generators/server-side-rendering/visitors/Text.js","../svelte/src/generators/server-side-rendering/visitors/YieldTag.js","../svelte/src/generators/server-side-rendering/visitors/index.js","../svelte/src/generators/server-side-rendering/index.js","../svelte/src/index.js"],"sourcesContent":["function getLocator ( source, options ) {\n\tif ( options === void 0 ) options = {};\n\n\tvar offsetLine = options.offsetLine || 0;\n\tvar offsetColumn = options.offsetColumn || 0;\n\n\tvar originalLines = source.split( '\\n' );\n\n\tvar start = 0;\n\tvar lineRanges = originalLines.map( function ( line, i ) {\n\t\tvar end = start + line.length + 1;\n\t\tvar range = { start: start, end: end, line: i };\n\n\t\tstart = end;\n\t\treturn range;\n\t});\n\n\tvar i = 0;\n\n\tfunction rangeContains ( range, index ) {\n\t\treturn range.start <= index && index < range.end;\n\t}\n\n\tfunction getLocation ( range, index ) {\n\t\treturn { line: offsetLine + range.line, column: offsetColumn + index - range.start, character: index };\n\t}\n\n\treturn function locate ( search, startIndex ) {\n\t\tif ( typeof search === 'string' ) {\n\t\t\tsearch = source.indexOf( search, startIndex || 0 );\n\t\t}\n\n\t\tvar range = lineRanges[i];\n\n\t\tvar d = search >= range.end ? 1 : -1;\n\n\t\twhile ( range ) {\n\t\t\tif ( rangeContains( range, search ) ) return getLocation( range, search );\n\n\t\t\ti += d;\n\t\t\trange = lineRanges[i];\n\t\t}\n\t};\n}\n\nfunction locate ( source, search, options ) {\n\tif ( typeof options === 'number' ) {\n\t\tthrow new Error( 'locate takes a { startIndex, offsetLine, offsetColumn } object as the third argument' );\n\t}\n\n\treturn getLocator( source, options )( search, options && options.startIndex );\n}\n\nexport { getLocator, locate };","// Reserved word lists for various dialects of the language\n\nvar reservedWords = {\n 3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n 5: \"class enum extends super const export import\",\n 6: \"enum\",\n strict: \"implements interface let package private protected public static yield\",\n strictBind: \"eval arguments\"\n}\n\n// And the keywords\n\nvar ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\"\n\nvar keywords = {\n 5: ecma5AndLessKeywords,\n 6: ecma5AndLessKeywords + \" const class extends export import super\"\n}\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point above 128.\n// Generated by `bin/generate-identifier-regex.js`.\n\nvar nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u08a0-\\u08b4\\u08b6-\\u08bd\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fd5\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7ae\\ua7b0-\\ua7b7\\ua7f7-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab65\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\"\nvar nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08d4-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c03\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d01-\\u0d03\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf2-\\u1cf4\\u1cf8\\u1cf9\\u1dc0-\\u1df5\\u1dfb-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua900-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\"\n\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\")\nvar nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\")\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by bin/generate-identifier-regex.js\nvar astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541]\nvar astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239]\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n var pos = 0x10000\n for (var i = 0; i < set.length; i += 2) {\n pos += set[i]\n if (pos > code) return false\n pos += set[i + 1]\n if (pos >= code) return true\n }\n}\n\n// Test whether a given character code starts an identifier.\n\nfunction isIdentifierStart(code, astral) {\n if (code < 65) return code === 36\n if (code < 91) return true\n if (code < 97) return code === 95\n if (code < 123) return true\n if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n if (astral === false) return false\n return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nfunction isIdentifierChar(code, astral) {\n if (code < 48) return code === 36\n if (code < 58) return true\n if (code < 65) return false\n if (code < 91) return true\n if (code < 97) return code === 95\n if (code < 123) return true\n if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code))\n if (astral === false) return false\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar TokenType = function TokenType(label, conf) {\n if ( conf === void 0 ) conf = {};\n\n this.label = label\n this.keyword = conf.keyword\n this.beforeExpr = !!conf.beforeExpr\n this.startsExpr = !!conf.startsExpr\n this.isLoop = !!conf.isLoop\n this.isAssign = !!conf.isAssign\n this.prefix = !!conf.prefix\n this.postfix = !!conf.postfix\n this.binop = conf.binop || null\n this.updateContext = null\n};\n\nfunction binop(name, prec) {\n return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nvar beforeExpr = {beforeExpr: true};\nvar startsExpr = {startsExpr: true};\n// Map keyword names to token types.\n\nvar keywordTypes = {}\n\n// Succinct definitions of keyword token types\nfunction kw(name, options) {\n if ( options === void 0 ) options = {};\n\n options.keyword = name\n return keywordTypes[name] = new TokenType(name, options)\n}\n\nvar tt = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n prefix: new TokenType(\"prefix\", {beforeExpr: true, prefix: true, startsExpr: true}),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=\", 6),\n relational: binop(\"</>\", 7),\n bitShift: binop(\"<</>>\", 8),\n plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10),\n starstar: new TokenType(\"**\", {beforeExpr: true}),\n\n // Keyword token types.\n _break: kw(\"break\"),\n _case: kw(\"case\", beforeExpr),\n _catch: kw(\"catch\"),\n _continue: kw(\"continue\"),\n _debugger: kw(\"debugger\"),\n _default: kw(\"default\", beforeExpr),\n _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n _else: kw(\"else\", beforeExpr),\n _finally: kw(\"finally\"),\n _for: kw(\"for\", {isLoop: true}),\n _function: kw(\"function\", startsExpr),\n _if: kw(\"if\"),\n _return: kw(\"return\", beforeExpr),\n _switch: kw(\"switch\"),\n _throw: kw(\"throw\", beforeExpr),\n _try: kw(\"try\"),\n _var: kw(\"var\"),\n _const: kw(\"const\"),\n _while: kw(\"while\", {isLoop: true}),\n _with: kw(\"with\"),\n _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n _this: kw(\"this\", startsExpr),\n _super: kw(\"super\", startsExpr),\n _class: kw(\"class\"),\n _extends: kw(\"extends\", beforeExpr),\n _export: kw(\"export\"),\n _import: kw(\"import\"),\n _null: kw(\"null\", startsExpr),\n _true: kw(\"true\", startsExpr),\n _false: kw(\"false\", startsExpr),\n _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n}\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/\nvar lineBreakG = new RegExp(lineBreak.source, \"g\")\n\nfunction isNewLine(code) {\n return code === 10 || code === 13 || code === 0x2028 || code === 0x2029\n}\n\nvar nonASCIIwhitespace = /[\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/\n\nvar skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g\n\nfunction isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\"\n}\n\n// Checks if an object has a property.\n\nfunction has(obj, propName) {\n return Object.prototype.hasOwnProperty.call(obj, propName)\n}\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nvar Position = function Position(line, col) {\n this.line = line\n this.column = col\n};\n\nPosition.prototype.offset = function offset (n) {\n return new Position(this.line, this.column + n)\n};\n\nvar SourceLocation = function SourceLocation(p, start, end) {\n this.start = start\n this.end = end\n if (p.sourceFile !== null) this.source = p.sourceFile\n};\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nfunction getLineInfo(input, offset) {\n for (var line = 1, cur = 0;;) {\n lineBreakG.lastIndex = cur\n var match = lineBreakG.exec(input)\n if (match && match.index < offset) {\n ++line\n cur = match.index + match[0].length\n } else {\n return new Position(line, offset - cur)\n }\n }\n}\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nvar defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must\n // be either 3, 5, 6 (2015), 7 (2016), or 8 (2017). This influences support\n // for strict mode, the set of reserved words, and support for\n // new syntax features. The default is 7.\n ecmaVersion: 7,\n // `sourceType` indicates the mode the code should be parsed in.\n // Can be either `\"script\"` or `\"module\"`. This influences global\n // strict mode and parsing of `import` and `export` declarations.\n sourceType: \"script\",\n // `onInsertedSemicolon` can be a callback that will be called\n // when a semicolon is automatically inserted. It will be passed\n // th position of the comma as an offset, and if `locations` is\n // enabled, it is given the location as a `{line, column}` object\n // as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are only enforced if ecmaVersion >= 5.\n // Set `allowReserved` to a boolean value to explicitly turn this on\n // an off. When this option has the value \"never\", reserved words\n // and keywords can also not be used as property names.\n allowReserved: null,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program.\n allowImportExportEverywhere: false,\n // When enabled, hashbang directive in the beginning of file\n // is allowed and treated as a line comment.\n allowHashBang: false,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokens returned from `tokenizer().getToken()`. Note\n // that you are not allowed to call the parser from the\n // callback—that will corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false,\n plugins: {}\n}\n\n// Interpret and default an options object\n\nfunction getOptions(opts) {\n var options = {}\n\n for (var opt in defaultOptions)\n options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt]\n\n if (options.ecmaVersion >= 2015)\n options.ecmaVersion -= 2009\n\n if (options.allowReserved == null)\n options.allowReserved = options.ecmaVersion < 5\n\n if (isArray(options.onToken)) {\n var tokens = options.onToken\n options.onToken = function (token) { return tokens.push(token); }\n }\n if (isArray(options.onComment))\n options.onComment = pushComment(options, options.onComment)\n\n return options\n}\n\nfunction pushComment(options, array) {\n return function (block, text, start, end, startLoc, endLoc) {\n var comment = {\n type: block ? 'Block' : 'Line',\n value: text,\n start: start,\n end: end\n }\n if (options.locations)\n comment.loc = new SourceLocation(this, startLoc, endLoc)\n if (options.ranges)\n comment.range = [start, end]\n array.push(comment)\n }\n}\n\n// Registered plugins\nvar plugins = {}\n\nfunction keywordRegexp(words) {\n return new RegExp(\"^(\" + words.replace(/ /g, \"|\") + \")$\")\n}\n\nvar Parser = function Parser(options, input, startPos) {\n this.options = options = getOptions(options)\n this.sourceFile = options.sourceFile\n this.keywords = keywordRegexp(keywords[options.ecmaVersion >= 6 ? 6 : 5])\n var reserved = \"\"\n if (!options.allowReserved) {\n for (var v = options.ecmaVersion;; v--)\n if (reserved = reservedWords[v]) break\n if (options.sourceType == \"module\") reserved += \" await\"\n }\n this.reservedWords = keywordRegexp(reserved)\n var reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict\n this.reservedWordsStrict = keywordRegexp(reservedStrict)\n this.reservedWordsStrictBind = keywordRegexp(reservedStrict + \" \" + reservedWords.strictBind)\n this.input = String(input)\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n this.containsEsc = false\n\n // Load plugins\n this.loadPlugins(options.plugins)\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n if (startPos) {\n this.pos = startPos\n this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1\n this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length\n } else {\n this.pos = this.lineStart = 0\n this.curLine = 1\n }\n\n // Properties of the current token:\n // Its type\n this.type = tt.eof\n // For tokens that include more information than their type, the value\n this.value = null\n // Its start and end offset\n this.start = this.end = this.pos\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = this.curPosition()\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null\n this.lastTokStart = this.lastTokEnd = this.pos\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext()\n this.exprAllowed = true\n\n // Figure out if it's a module code.\n this.inModule = options.sourceType === \"module\"\n this.strict = this.inModule || this.strictDirective(this.pos)\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1\n\n // Flags to track whether we are in a function, a generator, an async function.\n this.inFunction = this.inGenerator = this.inAsync = false\n // Positions to delayed-check that yield/await does not exist in default parameters.\n this.yieldPos = this.awaitPos = 0\n // Labels in scope.\n this.labels = []\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === '#!')\n this.skipLineComment(2)\n};\n\n// DEPRECATED Kept for backwards compatibility until 3.0 in case a plugin uses them\nParser.prototype.isKeyword = function isKeyword (word) { return this.keywords.test(word) };\nParser.prototype.isReservedWord = function isReservedWord (word) { return this.reservedWords.test(word) };\n\nParser.prototype.extend = function extend (name, f) {\n this[name] = f(this[name])\n};\n\nParser.prototype.loadPlugins = function loadPlugins (pluginConfigs) {\n var this$1 = this;\n\n for (var name in pluginConfigs) {\n var plugin = plugins[name]\n if (!plugin) throw new Error(\"Plugin '\" + name + \"' not found\")\n plugin(this$1, pluginConfigs[name])\n }\n};\n\nParser.prototype.parse = function parse () {\n var node = this.options.program || this.startNode()\n this.nextToken()\n return this.parseTopLevel(node)\n};\n\nvar pp = Parser.prototype\n\n// ## Parser utilities\n\nvar literal = /^(?:'((?:[^\\']|\\.)*)'|\"((?:[^\\\"]|\\.)*)\"|;)/\npp.strictDirective = function(start) {\n var this$1 = this;\n\n for (;;) {\n skipWhiteSpace.lastIndex = start\n start += skipWhiteSpace.exec(this$1.input)[0].length\n var match = literal.exec(this$1.input.slice(start))\n if (!match) return false\n if ((match[1] || match[2]) == \"use strict\") return true\n start += match[0].length\n }\n}\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp.eat = function(type) {\n if (this.type === type) {\n this.next()\n return true\n } else {\n return false\n }\n}\n\n// Tests whether parsed token is a contextual keyword.\n\npp.isContextual = function(name) {\n return this.type === tt.name && this.value === name\n}\n\n// Consumes contextual keyword if possible.\n\npp.eatContextual = function(name) {\n return this.value === name && this.eat(tt.name)\n}\n\n// Asserts that following token is given contextual keyword.\n\npp.expectContextual = function(name) {\n if (!this.eatContextual(name)) this.unexpected()\n}\n\n// Test whether a semicolon can be inserted at the current position.\n\npp.canInsertSemicolon = function() {\n return this.type === tt.eof ||\n this.type === tt.braceR ||\n lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n}\n\npp.insertSemicolon = function() {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon)\n this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc)\n return true\n }\n}\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp.semicolon = function() {\n if (!this.eat(tt.semi) && !this.insertSemicolon()) this.unexpected()\n}\n\npp.afterTrailingComma = function(tokType, notNext) {\n if (this.type == tokType) {\n if (this.options.onTrailingComma)\n this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc)\n if (!notNext)\n this.next()\n return true\n }\n}\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp.expect = function(type) {\n this.eat(type) || this.unexpected()\n}\n\n// Raise an unexpected token error.\n\npp.unexpected = function(pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\")\n}\n\nvar DestructuringErrors = function DestructuringErrors() {\n this.shorthandAssign = this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = -1\n};\n\npp.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n if (!refDestructuringErrors) return\n if (refDestructuringErrors.trailingComma > -1)\n this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\")\n var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind\n if (parens > -1) this.raiseRecoverable(parens, \"Parenthesized pattern\")\n}\n\npp.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n var pos = refDestructuringErrors ? refDestructuringErrors.shorthandAssign : -1\n if (!andThrow) return pos >= 0\n if (pos > -1) this.raise(pos, \"Shorthand property assignments are valid only in destructuring patterns\")\n}\n\npp.checkYieldAwaitInDefaultParams = function() {\n if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n this.raise(this.yieldPos, \"Yield expression cannot be a default value\")\n if (this.awaitPos)\n this.raise(this.awaitPos, \"Await expression cannot be a default value\")\n}\n\npp.isSimpleAssignTarget = function(expr) {\n if (expr.type === \"ParenthesizedExpression\")\n return this.isSimpleAssignTarget(expr.expression)\n return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n}\n\nvar pp$1 = Parser.prototype\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp$1.parseTopLevel = function(node) {\n var this$1 = this;\n\n var exports = {}\n if (!node.body) node.body = []\n while (this.type !== tt.eof) {\n var stmt = this$1.parseStatement(true, true, exports)\n node.body.push(stmt)\n }\n this.next()\n if (this.options.ecmaVersion >= 6) {\n node.sourceType = this.options.sourceType\n }\n return this.finishNode(node, \"Program\")\n}\n\nvar loopLabel = {kind: \"loop\"};\nvar switchLabel = {kind: \"switch\"};\npp$1.isLet = function() {\n if (this.type !== tt.name || this.options.ecmaVersion < 6 || this.value != \"let\") return false\n skipWhiteSpace.lastIndex = this.pos\n var skip = skipWhiteSpace.exec(this.input)\n var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next)\n if (nextCh === 91 || nextCh == 123) return true // '{' and '['\n if (isIdentifierStart(nextCh, true)) {\n for (var pos = next + 1; isIdentifierChar(this.input.charCodeAt(pos), true); ++pos) {}\n var ident = this.input.slice(next, pos)\n if (!this.isKeyword(ident)) return true\n }\n return false\n}\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp$1.isAsyncFunction = function() {\n if (this.type !== tt.name || this.options.ecmaVersion < 8 || this.value != \"async\")\n return false\n\n skipWhiteSpace.lastIndex = this.pos\n var skip = skipWhiteSpace.exec(this.input)\n var next = this.pos + skip[0].length\n return !lineBreak.test(this.input.slice(this.pos, next)) &&\n this.input.slice(next, next + 8) === \"function\" &&\n (next + 8 == this.input.length || !isIdentifierChar(this.input.charAt(next + 8)))\n}\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp$1.parseStatement = function(declaration, topLevel, exports) {\n var starttype = this.type, node = this.startNode(), kind\n\n if (this.isLet()) {\n starttype = tt._var\n kind = \"let\"\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case tt._break: case tt._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n case tt._debugger: return this.parseDebuggerStatement(node)\n case tt._do: return this.parseDoStatement(node)\n case tt._for: return this.parseForStatement(node)\n case tt._function:\n if (!declaration && this.options.ecmaVersion >= 6) this.unexpected()\n return this.parseFunctionStatement(node, false)\n case tt._class:\n if (!declaration) this.unexpected()\n return this.parseClass(node, true)\n case tt._if: return this.parseIfStatement(node)\n case tt._return: return this.parseReturnStatement(node)\n case tt._switch: return this.parseSwitchStatement(node)\n case tt._throw: return this.parseThrowStatement(node)\n case tt._try: return this.parseTryStatement(node)\n case tt._const: case tt._var:\n kind = kind || this.value\n if (!declaration && kind != \"var\") this.unexpected()\n return this.parseVarStatement(node, kind)\n case tt._while: return this.parseWhileStatement(node)\n case tt._with: return this.parseWithStatement(node)\n case tt.braceL: return this.parseBlock()\n case tt.semi: return this.parseEmptyStatement(node)\n case tt._export:\n case tt._import:\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel)\n this.raise(this.start, \"'import' and 'export' may only appear at the top level\")\n if (!this.inModule)\n this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\")\n }\n return starttype === tt._import ? this.parseImport(node) : this.parseExport(node, exports)\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n if (this.isAsyncFunction() && declaration) {\n this.next()\n return this.parseFunctionStatement(node, true)\n }\n\n var maybeName = this.value, expr = this.parseExpression()\n if (starttype === tt.name && expr.type === \"Identifier\" && this.eat(tt.colon))\n return this.parseLabeledStatement(node, maybeName, expr)\n else return this.parseExpressionStatement(node, expr)\n }\n}\n\npp$1.parseBreakContinueStatement = function(node, keyword) {\n var this$1 = this;\n\n var isBreak = keyword == \"break\"\n this.next()\n if (this.eat(tt.semi) || this.insertSemicolon()) node.label = null\n else if (this.type !== tt.name) this.unexpected()\n else {\n node.label = this.parseIdent()\n this.semicolon()\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n for (var i = 0; i < this.labels.length; ++i) {\n var lab = this$1.labels[i]\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) break\n if (node.label && isBreak) break\n }\n }\n if (i === this.labels.length) this.raise(node.start, \"Unsyntactic \" + keyword)\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n}\n\npp$1.parseDebuggerStatement = function(node) {\n this.next()\n this.semicolon()\n return this.finishNode(node, \"DebuggerStatement\")\n}\n\npp$1.parseDoStatement = function(node) {\n this.next()\n this.labels.push(loopLabel)\n node.body = this.parseStatement(false)\n this.labels.pop()\n this.expect(tt._while)\n node.test = this.parseParenExpression()\n if (this.options.ecmaVersion >= 6)\n this.eat(tt.semi)\n else\n this.semicolon()\n return this.finishNode(node, \"DoWhileStatement\")\n}\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp$1.parseForStatement = function(node) {\n this.next()\n this.labels.push(loopLabel)\n this.expect(tt.parenL)\n if (this.type === tt.semi) return this.parseFor(node, null)\n var isLet = this.isLet()\n if (this.type === tt._var || this.type === tt._const || isLet) {\n var init$1 = this.startNode(), kind = isLet ? \"let\" : this.value\n this.next()\n this.parseVar(init$1, true, kind)\n this.finishNode(init$1, \"VariableDeclaration\")\n if ((this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init$1.declarations.length === 1 &&\n !(kind !== \"var\" && init$1.declarations[0].init))\n return this.parseForIn(node, init$1)\n return this.parseFor(node, init$1)\n }\n var refDestructuringErrors = new DestructuringErrors\n var init = this.parseExpression(true, refDestructuringErrors)\n if (this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n this.toAssignable(init)\n this.checkLVal(init)\n this.checkPatternErrors(refDestructuringErrors, true)\n return this.parseForIn(node, init)\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true)\n }\n return this.parseFor(node, init)\n}\n\npp$1.parseFunctionStatement = function(node, isAsync) {\n this.next()\n return this.parseFunction(node, true, false, isAsync)\n}\n\npp$1.isFunction = function() {\n return this.type === tt._function || this.isAsyncFunction()\n}\n\npp$1.parseIfStatement = function(node) {\n this.next()\n node.test = this.parseParenExpression()\n // allow function declarations in branches, but only in non-strict mode\n node.consequent = this.parseStatement(!this.strict && this.isFunction())\n node.alternate = this.eat(tt._else) ? this.parseStatement(!this.strict && this.isFunction()) : null\n return this.finishNode(node, \"IfStatement\")\n}\n\npp$1.parseReturnStatement = function(node) {\n if (!this.inFunction && !this.options.allowReturnOutsideFunction)\n this.raise(this.start, \"'return' outside of function\")\n this.next()\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(tt.semi) || this.insertSemicolon()) node.argument = null\n else { node.argument = this.parseExpression(); this.semicolon() }\n return this.finishNode(node, \"ReturnStatement\")\n}\n\npp$1.parseSwitchStatement = function(node) {\n var this$1 = this;\n\n this.next()\n node.discriminant = this.parseParenExpression()\n node.cases = []\n this.expect(tt.braceL)\n this.labels.push(switchLabel)\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n for (var cur, sawDefault = false; this.type != tt.braceR;) {\n if (this$1.type === tt._case || this$1.type === tt._default) {\n var isCase = this$1.type === tt._case\n if (cur) this$1.finishNode(cur, \"SwitchCase\")\n node.cases.push(cur = this$1.startNode())\n cur.consequent = []\n this$1.next()\n if (isCase) {\n cur.test = this$1.parseExpression()\n } else {\n if (sawDefault) this$1.raiseRecoverable(this$1.lastTokStart, \"Multiple default clauses\")\n sawDefault = true\n cur.test = null\n }\n this$1.expect(tt.colon)\n } else {\n if (!cur) this$1.unexpected()\n cur.consequent.push(this$1.parseStatement(true))\n }\n }\n if (cur) this.finishNode(cur, \"SwitchCase\")\n this.next() // Closing brace\n this.labels.pop()\n return this.finishNode(node, \"SwitchStatement\")\n}\n\npp$1.parseThrowStatement = function(node) {\n this.next()\n if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n this.raise(this.lastTokEnd, \"Illegal newline after throw\")\n node.argument = this.parseExpression()\n this.semicolon()\n return this.finishNode(node, \"ThrowStatement\")\n}\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty = []\n\npp$1.parseTryStatement = function(node) {\n this.next()\n node.block = this.parseBlock()\n node.handler = null\n if (this.type === tt._catch) {\n var clause = this.startNode()\n this.next()\n this.expect(tt.parenL)\n clause.param = this.parseBindingAtom()\n this.checkLVal(clause.param, true)\n this.expect(tt.parenR)\n clause.body = this.parseBlock()\n node.handler = this.finishNode(clause, \"CatchClause\")\n }\n node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null\n if (!node.handler && !node.finalizer)\n this.raise(node.start, \"Missing catch or finally clause\")\n return this.finishNode(node, \"TryStatement\")\n}\n\npp$1.parseVarStatement = function(node, kind) {\n this.next()\n this.parseVar(node, false, kind)\n this.semicolon()\n return this.finishNode(node, \"VariableDeclaration\")\n}\n\npp$1.parseWhileStatement = function(node) {\n this.next()\n node.test = this.parseParenExpression()\n this.labels.push(loopLabel)\n node.body = this.parseStatement(false)\n this.labels.pop()\n return this.finishNode(node, \"WhileStatement\")\n}\n\npp$1.parseWithStatement = function(node) {\n if (this.strict) this.raise(this.start, \"'with' in strict mode\")\n this.next()\n node.object = this.parseParenExpression()\n node.body = this.parseStatement(false)\n return this.finishNode(node, \"WithStatement\")\n}\n\npp$1.parseEmptyStatement = function(node) {\n this.next()\n return this.finishNode(node, \"EmptyStatement\")\n}\n\npp$1.parseLabeledStatement = function(node, maybeName, expr) {\n var this$1 = this;\n\n for (var i = 0; i < this.labels.length; ++i)\n if (this$1.labels[i].name === maybeName) this$1.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\")\n var kind = this.type.isLoop ? \"loop\" : this.type === tt._switch ? \"switch\" : null\n for (var i$1 = this.labels.length - 1; i$1 >= 0; i$1--) {\n var label = this$1.labels[i$1]\n if (label.statementStart == node.start) {\n label.statementStart = this$1.start\n label.kind = kind\n } else break\n }\n this.labels.push({name: maybeName, kind: kind, statementStart: this.start})\n node.body = this.parseStatement(true)\n if (node.body.type == \"ClassDeclaration\" ||\n node.body.type == \"VariableDeclaration\" && (this.strict || node.body.kind != \"var\") ||\n node.body.type == \"FunctionDeclaration\" && (this.strict || node.body.generator))\n this.raiseRecoverable(node.body.start, \"Invalid labeled declaration\")\n this.labels.pop()\n node.label = expr\n return this.finishNode(node, \"LabeledStatement\")\n}\n\npp$1.parseExpressionStatement = function(node, expr) {\n node.expression = expr\n this.semicolon()\n return this.finishNode(node, \"ExpressionStatement\")\n}\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp$1.parseBlock = function() {\n var this$1 = this;\n\n var node = this.startNode()\n node.body = []\n this.expect(tt.braceL)\n while (!this.eat(tt.braceR)) {\n var stmt = this$1.parseStatement(true)\n node.body.push(stmt)\n }\n return this.finishNode(node, \"BlockStatement\")\n}\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp$1.parseFor = function(node, init) {\n node.init = init\n this.expect(tt.semi)\n node.test = this.type === tt.semi ? null : this.parseExpression()\n this.expect(tt.semi)\n node.update = this.type === tt.parenR ? null : this.parseExpression()\n this.expect(tt.parenR)\n node.body = this.parseStatement(false)\n this.labels.pop()\n return this.finishNode(node, \"ForStatement\")\n}\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp$1.parseForIn = function(node, init) {\n var type = this.type === tt._in ? \"ForInStatement\" : \"ForOfStatement\"\n this.next()\n node.left = init\n node.right = this.parseExpression()\n this.expect(tt.parenR)\n node.body = this.parseStatement(false)\n this.labels.pop()\n return this.finishNode(node, type)\n}\n\n// Parse a list of variable declarations.\n\npp$1.parseVar = function(node, isFor, kind) {\n var this$1 = this;\n\n node.declarations = []\n node.kind = kind\n for (;;) {\n var decl = this$1.startNode()\n this$1.parseVarId(decl)\n if (this$1.eat(tt.eq)) {\n decl.init = this$1.parseMaybeAssign(isFor)\n } else if (kind === \"const\" && !(this$1.type === tt._in || (this$1.options.ecmaVersion >= 6 && this$1.isContextual(\"of\")))) {\n this$1.unexpected()\n } else if (decl.id.type != \"Identifier\" && !(isFor && (this$1.type === tt._in || this$1.isContextual(\"of\")))) {\n this$1.raise(this$1.lastTokEnd, \"Complex binding patterns require an initialization value\")\n } else {\n decl.init = null\n }\n node.declarations.push(this$1.finishNode(decl, \"VariableDeclarator\"))\n if (!this$1.eat(tt.comma)) break\n }\n return node\n}\n\npp$1.parseVarId = function(decl) {\n decl.id = this.parseBindingAtom()\n this.checkLVal(decl.id, true)\n}\n\n// Parse a function declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$1.parseFunction = function(node, isStatement, allowExpressionBody, isAsync) {\n this.initFunction(node)\n if (this.options.ecmaVersion >= 6 && !isAsync)\n node.generator = this.eat(tt.star)\n if (this.options.ecmaVersion >= 8)\n node.async = !!isAsync\n\n if (isStatement == null)\n isStatement = this.type == tt.name\n if (isStatement)\n node.id = this.parseIdent()\n\n var oldInGen = this.inGenerator, oldInAsync = this.inAsync,\n oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction\n this.inGenerator = node.generator\n this.inAsync = node.async\n this.yieldPos = 0\n this.awaitPos = 0\n this.inFunction = true\n\n if (!isStatement && this.type === tt.name)\n node.id = this.parseIdent()\n this.parseFunctionParams(node)\n this.parseFunctionBody(node, allowExpressionBody)\n\n this.inGenerator = oldInGen\n this.inAsync = oldInAsync\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n this.inFunction = oldInFunc\n return this.finishNode(node, isStatement ? \"FunctionDeclaration\" : \"FunctionExpression\")\n}\n\npp$1.parseFunctionParams = function(node) {\n this.expect(tt.parenL)\n node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8, true)\n this.checkYieldAwaitInDefaultParams()\n}\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$1.parseClass = function(node, isStatement) {\n var this$1 = this;\n\n this.next()\n if (isStatement == null) isStatement = this.type === tt.name\n this.parseClassId(node, isStatement)\n this.parseClassSuper(node)\n var classBody = this.startNode()\n var hadConstructor = false\n classBody.body = []\n this.expect(tt.braceL)\n while (!this.eat(tt.braceR)) {\n if (this$1.eat(tt.semi)) continue\n var method = this$1.startNode()\n var isGenerator = this$1.eat(tt.star)\n var isAsync = false\n var isMaybeStatic = this$1.type === tt.name && this$1.value === \"static\"\n this$1.parsePropertyName(method)\n method.static = isMaybeStatic && this$1.type !== tt.parenL\n if (method.static) {\n if (isGenerator) this$1.unexpected()\n isGenerator = this$1.eat(tt.star)\n this$1.parsePropertyName(method)\n }\n if (this$1.options.ecmaVersion >= 8 && !isGenerator && !method.computed &&\n method.key.type === \"Identifier\" && method.key.name === \"async\" && this$1.type !== tt.parenL &&\n !this$1.canInsertSemicolon()) {\n isAsync = true\n this$1.parsePropertyName(method)\n }\n method.kind = \"method\"\n var isGetSet = false\n if (!method.computed) {\n var key = method.key;\n if (!isGenerator && !isAsync && key.type === \"Identifier\" && this$1.type !== tt.parenL && (key.name === \"get\" || key.name === \"set\")) {\n isGetSet = true\n method.kind = key.name\n key = this$1.parsePropertyName(method)\n }\n if (!method.static && (key.type === \"Identifier\" && key.name === \"constructor\" ||\n key.type === \"Literal\" && key.value === \"constructor\")) {\n if (hadConstructor) this$1.raise(key.start, \"Duplicate constructor in the same class\")\n if (isGetSet) this$1.raise(key.start, \"Constructor can't have get/set modifier\")\n if (isGenerator) this$1.raise(key.start, \"Constructor can't be a generator\")\n if (isAsync) this$1.raise(key.start, \"Constructor can't be an async method\")\n method.kind = \"constructor\"\n hadConstructor = true\n }\n }\n this$1.parseClassMethod(classBody, method, isGenerator, isAsync)\n if (isGetSet) {\n var paramCount = method.kind === \"get\" ? 0 : 1\n if (method.value.params.length !== paramCount) {\n var start = method.value.start\n if (method.kind === \"get\")\n this$1.raiseRecoverable(start, \"getter should have no params\")\n else\n this$1.raiseRecoverable(start, \"setter should have exactly one param\")\n } else {\n if (method.kind === \"set\" && method.value.params[0].type === \"RestElement\")\n this$1.raiseRecoverable(method.value.params[0].start, \"Setter cannot use rest params\")\n }\n }\n }\n node.body = this.finishNode(classBody, \"ClassBody\")\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n}\n\npp$1.parseClassMethod = function(classBody, method, isGenerator, isAsync) {\n method.value = this.parseMethod(isGenerator, isAsync)\n classBody.body.push(this.finishNode(method, \"MethodDefinition\"))\n}\n\npp$1.parseClassId = function(node, isStatement) {\n node.id = this.type === tt.name ? this.parseIdent() : isStatement ? this.unexpected() : null\n}\n\npp$1.parseClassSuper = function(node) {\n node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null\n}\n\n// Parses module export declaration.\n\npp$1.parseExport = function(node, exports) {\n var this$1 = this;\n\n this.next()\n // export * from '...'\n if (this.eat(tt.star)) {\n this.expectContextual(\"from\")\n node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected()\n this.semicolon()\n return this.finishNode(node, \"ExportAllDeclaration\")\n }\n if (this.eat(tt._default)) { // export default ...\n this.checkExport(exports, \"default\", this.lastTokStart)\n var isAsync\n if (this.type === tt._function || (isAsync = this.isAsyncFunction())) {\n var fNode = this.startNode()\n this.next()\n if (isAsync) this.next()\n node.declaration = this.parseFunction(fNode, null, false, isAsync)\n } else if (this.type === tt._class) {\n var cNode = this.startNode()\n node.declaration = this.parseClass(cNode, null)\n } else {\n node.declaration = this.parseMaybeAssign()\n this.semicolon()\n }\n return this.finishNode(node, \"ExportDefaultDeclaration\")\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseStatement(true)\n if (node.declaration.type === \"VariableDeclaration\")\n this.checkVariableExport(exports, node.declaration.declarations)\n else\n this.checkExport(exports, node.declaration.id.name, node.declaration.id.start)\n node.specifiers = []\n node.source = null\n } else { // export { x, y as z } [from '...']\n node.declaration = null\n node.specifiers = this.parseExportSpecifiers(exports)\n if (this.eatContextual(\"from\")) {\n node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected()\n } else {\n // check for keywords used as local names\n for (var i = 0; i < node.specifiers.length; i++) {\n if (this$1.keywords.test(node.specifiers[i].local.name) || this$1.reservedWords.test(node.specifiers[i].local.name)) {\n this$1.unexpected(node.specifiers[i].local.start)\n }\n }\n\n node.source = null\n }\n this.semicolon()\n }\n return this.finishNode(node, \"ExportNamedDeclaration\")\n}\n\npp$1.checkExport = function(exports, name, pos) {\n if (!exports) return\n if (Object.prototype.hasOwnProperty.call(exports, name))\n this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\")\n exports[name] = true\n}\n\npp$1.checkPatternExport = function(exports, pat) {\n var this$1 = this;\n\n var type = pat.type\n if (type == \"Identifier\")\n this.checkExport(exports, pat.name, pat.start)\n else if (type == \"ObjectPattern\")\n for (var i = 0; i < pat.properties.length; ++i)\n this$1.checkPatternExport(exports, pat.properties[i].value)\n else if (type == \"ArrayPattern\")\n for (var i$1 = 0; i$1 < pat.elements.length; ++i$1) {\n var elt = pat.elements[i$1]\n if (elt) this$1.checkPatternExport(exports, elt)\n }\n else if (type == \"AssignmentPattern\")\n this.checkPatternExport(exports, pat.left)\n else if (type == \"ParenthesizedExpression\")\n this.checkPatternExport(exports, pat.expression)\n}\n\npp$1.checkVariableExport = function(exports, decls) {\n var this$1 = this;\n\n if (!exports) return\n for (var i = 0; i < decls.length; i++)\n this$1.checkPatternExport(exports, decls[i].id)\n}\n\npp$1.shouldParseExportStatement = function() {\n return this.type.keyword === \"var\"\n || this.type.keyword === \"const\"\n || this.type.keyword === \"class\"\n || this.type.keyword === \"function\"\n || this.isLet()\n || this.isAsyncFunction()\n}\n\n// Parses a comma-separated list of module exports.\n\npp$1.parseExportSpecifiers = function(exports) {\n var this$1 = this;\n\n var nodes = [], first = true\n // export { x, y as z } [from '...']\n this.expect(tt.braceL)\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this$1.expect(tt.comma)\n if (this$1.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n var node = this$1.startNode()\n node.local = this$1.parseIdent(true)\n node.exported = this$1.eatContextual(\"as\") ? this$1.parseIdent(true) : node.local\n this$1.checkExport(exports, node.exported.name, node.exported.start)\n nodes.push(this$1.finishNode(node, \"ExportSpecifier\"))\n }\n return nodes\n}\n\n// Parses import declaration.\n\npp$1.parseImport = function(node) {\n this.next()\n // import '...'\n if (this.type === tt.string) {\n node.specifiers = empty\n node.source = this.parseExprAtom()\n } else {\n node.specifiers = this.parseImportSpecifiers()\n this.expectContextual(\"from\")\n node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected()\n }\n this.semicolon()\n return this.finishNode(node, \"ImportDeclaration\")\n}\n\n// Parses a comma-separated list of module imports.\n\npp$1.parseImportSpecifiers = function() {\n var this$1 = this;\n\n var nodes = [], first = true\n if (this.type === tt.name) {\n // import defaultObj, { x, y as z } from '...'\n var node = this.startNode()\n node.local = this.parseIdent()\n this.checkLVal(node.local, true)\n nodes.push(this.finishNode(node, \"ImportDefaultSpecifier\"))\n if (!this.eat(tt.comma)) return nodes\n }\n if (this.type === tt.star) {\n var node$1 = this.startNode()\n this.next()\n this.expectContextual(\"as\")\n node$1.local = this.parseIdent()\n this.checkLVal(node$1.local, true)\n nodes.push(this.finishNode(node$1, \"ImportNamespaceSpecifier\"))\n return nodes\n }\n this.expect(tt.braceL)\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this$1.expect(tt.comma)\n if (this$1.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n var node$2 = this$1.startNode()\n node$2.imported = this$1.parseIdent(true)\n if (this$1.eatContextual(\"as\")) {\n node$2.local = this$1.parseIdent()\n } else {\n node$2.local = node$2.imported\n if (this$1.isKeyword(node$2.local.name)) this$1.unexpected(node$2.local.start)\n if (this$1.reservedWordsStrict.test(node$2.local.name)) this$1.raiseRecoverable(node$2.local.start, \"The keyword '\" + node$2.local.name + \"' is reserved\")\n }\n this$1.checkLVal(node$2.local, true)\n nodes.push(this$1.finishNode(node$2, \"ImportSpecifier\"))\n }\n return nodes\n}\n\nvar pp$2 = Parser.prototype\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp$2.toAssignable = function(node, isBinding) {\n var this$1 = this;\n\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n if (this.inAsync && node.name === \"await\")\n this.raise(node.start, \"Can not use 'await' as identifier inside an async function\")\n break\n\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n break\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\"\n for (var i = 0; i < node.properties.length; i++) {\n var prop = node.properties[i]\n if (prop.kind !== \"init\") this$1.raise(prop.key.start, \"Object pattern can't contain getter or setter\")\n this$1.toAssignable(prop.value, isBinding)\n }\n break\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\"\n this.toAssignableList(node.elements, isBinding)\n break\n\n case \"AssignmentExpression\":\n if (node.operator === \"=\") {\n node.type = \"AssignmentPattern\"\n delete node.operator\n this.toAssignable(node.left, isBinding)\n // falls through to AssignmentPattern\n } else {\n this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\")\n break\n }\n\n case \"AssignmentPattern\":\n break\n\n case \"ParenthesizedExpression\":\n node.expression = this.toAssignable(node.expression, isBinding)\n break\n\n case \"MemberExpression\":\n if (!isBinding) break\n\n default:\n this.raise(node.start, \"Assigning to rvalue\")\n }\n }\n return node\n}\n\n// Convert list of expression atoms to binding list.\n\npp$2.toAssignableList = function(exprList, isBinding) {\n var this$1 = this;\n\n var end = exprList.length\n if (end) {\n var last = exprList[end - 1]\n if (last && last.type == \"RestElement\") {\n --end\n } else if (last && last.type == \"SpreadElement\") {\n last.type = \"RestElement\"\n var arg = last.argument\n this.toAssignable(arg, isBinding)\n if (arg.type !== \"Identifier\" && arg.type !== \"MemberExpression\" && arg.type !== \"ArrayPattern\")\n this.unexpected(arg.start)\n --end\n }\n\n if (isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n this.unexpected(last.argument.start)\n }\n for (var i = 0; i < end; i++) {\n var elt = exprList[i]\n if (elt) this$1.toAssignable(elt, isBinding)\n }\n return exprList\n}\n\n// Parses spread element.\n\npp$2.parseSpread = function(refDestructuringErrors) {\n var node = this.startNode()\n this.next()\n node.argument = this.parseMaybeAssign(false, refDestructuringErrors)\n return this.finishNode(node, \"SpreadElement\")\n}\n\npp$2.parseRest = function(allowNonIdent) {\n var node = this.startNode()\n this.next()\n\n // RestElement inside of a function parameter must be an identifier\n if (allowNonIdent) node.argument = this.type === tt.name ? this.parseIdent() : this.unexpected()\n else node.argument = this.type === tt.name || this.type === tt.bracketL ? this.parseBindingAtom() : this.unexpected()\n\n return this.finishNode(node, \"RestElement\")\n}\n\n// Parses lvalue (assignable) atom.\n\npp$2.parseBindingAtom = function() {\n if (this.options.ecmaVersion < 6) return this.parseIdent()\n switch (this.type) {\n case tt.name:\n return this.parseIdent()\n\n case tt.bracketL:\n var node = this.startNode()\n this.next()\n node.elements = this.parseBindingList(tt.bracketR, true, true)\n return this.finishNode(node, \"ArrayPattern\")\n\n case tt.braceL:\n return this.parseObj(true)\n\n default:\n this.unexpected()\n }\n}\n\npp$2.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowNonIdent) {\n var this$1 = this;\n\n var elts = [], first = true\n while (!this.eat(close)) {\n if (first) first = false\n else this$1.expect(tt.comma)\n if (allowEmpty && this$1.type === tt.comma) {\n elts.push(null)\n } else if (allowTrailingComma && this$1.afterTrailingComma(close)) {\n break\n } else if (this$1.type === tt.ellipsis) {\n var rest = this$1.parseRest(allowNonIdent)\n this$1.parseBindingListItem(rest)\n elts.push(rest)\n if (this$1.type === tt.comma) this$1.raise(this$1.start, \"Comma is not permitted after the rest element\")\n this$1.expect(close)\n break\n } else {\n var elem = this$1.parseMaybeDefault(this$1.start, this$1.startLoc)\n this$1.parseBindingListItem(elem)\n elts.push(elem)\n }\n }\n return elts\n}\n\npp$2.parseBindingListItem = function(param) {\n return param\n}\n\n// Parses assignment pattern around given atom if possible.\n\npp$2.parseMaybeDefault = function(startPos, startLoc, left) {\n left = left || this.parseBindingAtom()\n if (this.options.ecmaVersion < 6 || !this.eat(tt.eq)) return left\n var node = this.startNodeAt(startPos, startLoc)\n node.left = left\n node.right = this.parseMaybeAssign()\n return this.finishNode(node, \"AssignmentPattern\")\n}\n\n// Verify that a node is an lval — something that can be assigned\n// to.\n\npp$2.checkLVal = function(expr, isBinding, checkClashes) {\n var this$1 = this;\n\n switch (expr.type) {\n case \"Identifier\":\n if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n this.raiseRecoverable(expr.start, (isBinding ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\")\n if (checkClashes) {\n if (has(checkClashes, expr.name))\n this.raiseRecoverable(expr.start, \"Argument name clash\")\n checkClashes[expr.name] = true\n }\n break\n\n case \"MemberExpression\":\n if (isBinding) this.raiseRecoverable(expr.start, (isBinding ? \"Binding\" : \"Assigning to\") + \" member expression\")\n break\n\n case \"ObjectPattern\":\n for (var i = 0; i < expr.properties.length; i++)\n this$1.checkLVal(expr.properties[i].value, isBinding, checkClashes)\n break\n\n case \"ArrayPattern\":\n for (var i$1 = 0; i$1 < expr.elements.length; i$1++) {\n var elem = expr.elements[i$1]\n if (elem) this$1.checkLVal(elem, isBinding, checkClashes)\n }\n break\n\n case \"AssignmentPattern\":\n this.checkLVal(expr.left, isBinding, checkClashes)\n break\n\n case \"RestElement\":\n this.checkLVal(expr.argument, isBinding, checkClashes)\n break\n\n case \"ParenthesizedExpression\":\n this.checkLVal(expr.expression, isBinding, checkClashes)\n break\n\n default:\n this.raise(expr.start, (isBinding ? \"Binding\" : \"Assigning to\") + \" rvalue\")\n }\n}\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\nvar pp$3 = Parser.prototype\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp$3.checkPropClash = function(prop, propHash) {\n if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n return\n var key = prop.key;\n var name\n switch (key.type) {\n case \"Identifier\": name = key.name; break\n case \"Literal\": name = String(key.value); break\n default: return\n }\n var kind = prop.kind;\n if (this.options.ecmaVersion >= 6) {\n if (name === \"__proto__\" && kind === \"init\") {\n if (propHash.proto) this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\")\n propHash.proto = true\n }\n return\n }\n name = \"$\" + name\n var other = propHash[name]\n if (other) {\n var isGetSet = kind !== \"init\"\n if ((this.strict || isGetSet) && other[kind] || !(isGetSet ^ other.init))\n this.raiseRecoverable(key.start, \"Redefinition of property\")\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n }\n }\n other[kind] = true\n}\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp$3.parseExpression = function(noIn, refDestructuringErrors) {\n var this$1 = this;\n\n var startPos = this.start, startLoc = this.startLoc\n var expr = this.parseMaybeAssign(noIn, refDestructuringErrors)\n if (this.type === tt.comma) {\n var node = this.startNodeAt(startPos, startLoc)\n node.expressions = [expr]\n while (this.eat(tt.comma)) node.expressions.push(this$1.parseMaybeAssign(noIn, refDestructuringErrors))\n return this.finishNode(node, \"SequenceExpression\")\n }\n return expr\n}\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {\n if (this.inGenerator && this.isContextual(\"yield\")) return this.parseYield()\n\n var ownDestructuringErrors = false, oldParenAssign = -1\n if (refDestructuringErrors) {\n oldParenAssign = refDestructuringErrors.parenthesizedAssign\n refDestructuringErrors.parenthesizedAssign = -1\n } else {\n refDestructuringErrors = new DestructuringErrors\n ownDestructuringErrors = true\n }\n\n var startPos = this.start, startLoc = this.startLoc\n if (this.type == tt.parenL || this.type == tt.name)\n this.potentialArrowAt = this.start\n var left = this.parseMaybeConditional(noIn, refDestructuringErrors)\n if (afterLeftParse) left = afterLeftParse.call(this, left, startPos, startLoc)\n if (this.type.isAssign) {\n this.checkPatternErrors(refDestructuringErrors, true)\n if (!ownDestructuringErrors) DestructuringErrors.call(refDestructuringErrors)\n var node = this.startNodeAt(startPos, startLoc)\n node.operator = this.value\n node.left = this.type === tt.eq ? this.toAssignable(left) : left\n refDestructuringErrors.shorthandAssign = -1 // reset because shorthand default was used correctly\n this.checkLVal(left)\n this.next()\n node.right = this.parseMaybeAssign(noIn)\n return this.finishNode(node, \"AssignmentExpression\")\n } else {\n if (ownDestructuringErrors) this.checkExpressionErrors(refDestructuringErrors, true)\n }\n if (oldParenAssign > -1) refDestructuringErrors.parenthesizedAssign = oldParenAssign\n return left\n}\n\n// Parse a ternary conditional (`?:`) operator.\n\npp$3.parseMaybeConditional = function(noIn, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc\n var expr = this.parseExprOps(noIn, refDestructuringErrors)\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr\n if (this.eat(tt.question)) {\n var node = this.startNodeAt(startPos, startLoc)\n node.test = expr\n node.consequent = this.parseMaybeAssign()\n this.expect(tt.colon)\n node.alternate = this.parseMaybeAssign(noIn)\n return this.finishNode(node, \"ConditionalExpression\")\n }\n return expr\n}\n\n// Start the precedence parser.\n\npp$3.parseExprOps = function(noIn, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc\n var expr = this.parseMaybeUnary(refDestructuringErrors, false)\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr\n return this.parseExprOp(expr, startPos, startLoc, -1, noIn)\n}\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp$3.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, noIn) {\n var prec = this.type.binop\n if (prec != null && (!noIn || this.type !== tt._in)) {\n if (prec > minPrec) {\n var logical = this.type === tt.logicalOR || this.type === tt.logicalAND\n var op = this.value\n this.next()\n var startPos = this.start, startLoc = this.startLoc\n var right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn)\n var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical)\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn)\n }\n }\n return left\n}\n\npp$3.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n var node = this.startNodeAt(startPos, startLoc)\n node.left = left\n node.operator = op\n node.right = right\n return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n}\n\n// Parse unary operators, both prefix and postfix.\n\npp$3.parseMaybeUnary = function(refDestructuringErrors, sawUnary) {\n var this$1 = this;\n\n var startPos = this.start, startLoc = this.startLoc, expr\n if (this.inAsync && this.isContextual(\"await\")) {\n expr = this.parseAwait(refDestructuringErrors)\n sawUnary = true\n } else if (this.type.prefix) {\n var node = this.startNode(), update = this.type === tt.incDec\n node.operator = this.value\n node.prefix = true\n this.next()\n node.argument = this.parseMaybeUnary(null, true)\n this.checkExpressionErrors(refDestructuringErrors, true)\n if (update) this.checkLVal(node.argument)\n else if (this.strict && node.operator === \"delete\" &&\n node.argument.type === \"Identifier\")\n this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\")\n else sawUnary = true\n expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\")\n } else {\n expr = this.parseExprSubscripts(refDestructuringErrors)\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr\n while (this.type.postfix && !this.canInsertSemicolon()) {\n var node$1 = this$1.startNodeAt(startPos, startLoc)\n node$1.operator = this$1.value\n node$1.prefix = false\n node$1.argument = expr\n this$1.checkLVal(expr)\n this$1.next()\n expr = this$1.finishNode(node$1, \"UpdateExpression\")\n }\n }\n\n if (!sawUnary && this.eat(tt.starstar))\n return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), \"**\", false)\n else\n return expr\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp$3.parseExprSubscripts = function(refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc\n var expr = this.parseExprAtom(refDestructuringErrors)\n var skipArrowSubscripts = expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\"\n if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) return expr\n var result = this.parseSubscripts(expr, startPos, startLoc)\n if (refDestructuringErrors && result.type === \"MemberExpression\") {\n if (refDestructuringErrors.parenthesizedAssign >= result.start) refDestructuringErrors.parenthesizedAssign = -1\n if (refDestructuringErrors.parenthesizedBind >= result.start) refDestructuringErrors.parenthesizedBind = -1\n }\n return result\n}\n\npp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) {\n var this$1 = this;\n\n var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n this.lastTokEnd == base.end && !this.canInsertSemicolon()\n for (var computed;;) {\n if ((computed = this$1.eat(tt.bracketL)) || this$1.eat(tt.dot)) {\n var node = this$1.startNodeAt(startPos, startLoc)\n node.object = base\n node.property = computed ? this$1.parseExpression() : this$1.parseIdent(true)\n node.computed = !!computed\n if (computed) this$1.expect(tt.bracketR)\n base = this$1.finishNode(node, \"MemberExpression\")\n } else if (!noCalls && this$1.eat(tt.parenL)) {\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this$1.yieldPos, oldAwaitPos = this$1.awaitPos\n this$1.yieldPos = 0\n this$1.awaitPos = 0\n var exprList = this$1.parseExprList(tt.parenR, this$1.options.ecmaVersion >= 8, false, refDestructuringErrors)\n if (maybeAsyncArrow && !this$1.canInsertSemicolon() && this$1.eat(tt.arrow)) {\n this$1.checkPatternErrors(refDestructuringErrors, false)\n this$1.checkYieldAwaitInDefaultParams()\n this$1.yieldPos = oldYieldPos\n this$1.awaitPos = oldAwaitPos\n return this$1.parseArrowExpression(this$1.startNodeAt(startPos, startLoc), exprList, true)\n }\n this$1.checkExpressionErrors(refDestructuringErrors, true)\n this$1.yieldPos = oldYieldPos || this$1.yieldPos\n this$1.awaitPos = oldAwaitPos || this$1.awaitPos\n var node$1 = this$1.startNodeAt(startPos, startLoc)\n node$1.callee = base\n node$1.arguments = exprList\n base = this$1.finishNode(node$1, \"CallExpression\")\n } else if (this$1.type === tt.backQuote) {\n var node$2 = this$1.startNodeAt(startPos, startLoc)\n node$2.tag = base\n node$2.quasi = this$1.parseTemplate()\n base = this$1.finishNode(node$2, \"TaggedTemplateExpression\")\n } else {\n return base\n }\n }\n}\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp$3.parseExprAtom = function(refDestructuringErrors) {\n var node, canBeArrow = this.potentialArrowAt == this.start\n switch (this.type) {\n case tt._super:\n if (!this.inFunction)\n this.raise(this.start, \"'super' outside of function or class\")\n\n case tt._this:\n var type = this.type === tt._this ? \"ThisExpression\" : \"Super\"\n node = this.startNode()\n this.next()\n return this.finishNode(node, type)\n\n case tt.name:\n var startPos = this.start, startLoc = this.startLoc\n var id = this.parseIdent(this.type !== tt.name)\n if (this.options.ecmaVersion >= 8 && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(tt._function))\n return this.parseFunction(this.startNodeAt(startPos, startLoc), false, false, true)\n if (canBeArrow && !this.canInsertSemicolon()) {\n if (this.eat(tt.arrow))\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false)\n if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === tt.name) {\n id = this.parseIdent()\n if (this.canInsertSemicolon() || !this.eat(tt.arrow))\n this.unexpected()\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true)\n }\n }\n return id\n\n case tt.regexp:\n var value = this.value\n node = this.parseLiteral(value.value)\n node.regex = {pattern: value.pattern, flags: value.flags}\n return node\n\n case tt.num: case tt.string:\n return this.parseLiteral(this.value)\n\n case tt._null: case tt._true: case tt._false:\n node = this.startNode()\n node.value = this.type === tt._null ? null : this.type === tt._true\n node.raw = this.type.keyword\n this.next()\n return this.finishNode(node, \"Literal\")\n\n case tt.parenL:\n var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow)\n if (refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n refDestructuringErrors.parenthesizedAssign = start\n if (refDestructuringErrors.parenthesizedBind < 0)\n refDestructuringErrors.parenthesizedBind = start\n }\n return expr\n\n case tt.bracketL:\n node = this.startNode()\n this.next()\n node.elements = this.parseExprList(tt.bracketR, true, true, refDestructuringErrors)\n return this.finishNode(node, \"ArrayExpression\")\n\n case tt.braceL:\n return this.parseObj(false, refDestructuringErrors)\n\n case tt._function:\n node = this.startNode()\n this.next()\n return this.parseFunction(node, false)\n\n case tt._class:\n return this.parseClass(this.startNode(), false)\n\n case tt._new:\n return this.parseNew()\n\n case tt.backQuote:\n return this.parseTemplate()\n\n default:\n this.unexpected()\n }\n}\n\npp$3.parseLiteral = function(value) {\n var node = this.startNode()\n node.value = value\n node.raw = this.input.slice(this.start, this.end)\n this.next()\n return this.finishNode(node, \"Literal\")\n}\n\npp$3.parseParenExpression = function() {\n this.expect(tt.parenL)\n var val = this.parseExpression()\n this.expect(tt.parenR)\n return val\n}\n\npp$3.parseParenAndDistinguishExpression = function(canBeArrow) {\n var this$1 = this;\n\n var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8\n if (this.options.ecmaVersion >= 6) {\n this.next()\n\n var innerStartPos = this.start, innerStartLoc = this.startLoc\n var exprList = [], first = true, lastIsComma = false\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart, innerParenStart\n this.yieldPos = 0\n this.awaitPos = 0\n while (this.type !== tt.parenR) {\n first ? first = false : this$1.expect(tt.comma)\n if (allowTrailingComma && this$1.afterTrailingComma(tt.parenR, true)) {\n lastIsComma = true\n break\n } else if (this$1.type === tt.ellipsis) {\n spreadStart = this$1.start\n exprList.push(this$1.parseParenItem(this$1.parseRest()))\n if (this$1.type === tt.comma) this$1.raise(this$1.start, \"Comma is not permitted after the rest element\")\n break\n } else {\n if (this$1.type === tt.parenL && !innerParenStart) {\n innerParenStart = this$1.start\n }\n exprList.push(this$1.parseMaybeAssign(false, refDestructuringErrors, this$1.parseParenItem))\n }\n }\n var innerEndPos = this.start, innerEndLoc = this.startLoc\n this.expect(tt.parenR)\n\n if (canBeArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false)\n this.checkYieldAwaitInDefaultParams()\n if (innerParenStart) this.unexpected(innerParenStart)\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n return this.parseParenArrowList(startPos, startLoc, exprList)\n }\n\n if (!exprList.length || lastIsComma) this.unexpected(this.lastTokStart)\n if (spreadStart) this.unexpected(spreadStart)\n this.checkExpressionErrors(refDestructuringErrors, true)\n this.yieldPos = oldYieldPos || this.yieldPos\n this.awaitPos = oldAwaitPos || this.awaitPos\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc)\n val.expressions = exprList\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc)\n } else {\n val = exprList[0]\n }\n } else {\n val = this.parseParenExpression()\n }\n\n if (this.options.preserveParens) {\n var par = this.startNodeAt(startPos, startLoc)\n par.expression = val\n return this.finishNode(par, \"ParenthesizedExpression\")\n } else {\n return val\n }\n}\n\npp$3.parseParenItem = function(item) {\n return item\n}\n\npp$3.parseParenArrowList = function(startPos, startLoc, exprList) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList)\n}\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nvar empty$1 = []\n\npp$3.parseNew = function() {\n var node = this.startNode()\n var meta = this.parseIdent(true)\n if (this.options.ecmaVersion >= 6 && this.eat(tt.dot)) {\n node.meta = meta\n node.property = this.parseIdent(true)\n if (node.property.name !== \"target\")\n this.raiseRecoverable(node.property.start, \"The only valid meta property for new is new.target\")\n if (!this.inFunction)\n this.raiseRecoverable(node.start, \"new.target can only be used in functions\")\n return this.finishNode(node, \"MetaProperty\")\n }\n var startPos = this.start, startLoc = this.startLoc\n node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true)\n if (this.eat(tt.parenL)) node.arguments = this.parseExprList(tt.parenR, this.options.ecmaVersion >= 8, false)\n else node.arguments = empty$1\n return this.finishNode(node, \"NewExpression\")\n}\n\n// Parse template expression.\n\npp$3.parseTemplateElement = function() {\n var elem = this.startNode()\n elem.value = {\n raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, '\\n'),\n cooked: this.value\n }\n this.next()\n elem.tail = this.type === tt.backQuote\n return this.finishNode(elem, \"TemplateElement\")\n}\n\npp$3.parseTemplate = function() {\n var this$1 = this;\n\n var node = this.startNode()\n this.next()\n node.expressions = []\n var curElt = this.parseTemplateElement()\n node.quasis = [curElt]\n while (!curElt.tail) {\n this$1.expect(tt.dollarBraceL)\n node.expressions.push(this$1.parseExpression())\n this$1.expect(tt.braceR)\n node.quasis.push(curElt = this$1.parseTemplateElement())\n }\n this.next()\n return this.finishNode(node, \"TemplateLiteral\")\n}\n\n// Parse an object literal or binding pattern.\n\npp$3.parseObj = function(isPattern, refDestructuringErrors) {\n var this$1 = this;\n\n var node = this.startNode(), first = true, propHash = {}\n node.properties = []\n this.next()\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this$1.expect(tt.comma)\n if (this$1.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n var prop = this$1.startNode(), isGenerator, isAsync, startPos, startLoc\n if (this$1.options.ecmaVersion >= 6) {\n prop.method = false\n prop.shorthand = false\n if (isPattern || refDestructuringErrors) {\n startPos = this$1.start\n startLoc = this$1.startLoc\n }\n if (!isPattern)\n isGenerator = this$1.eat(tt.star)\n }\n this$1.parsePropertyName(prop)\n if (!isPattern && this$1.options.ecmaVersion >= 8 && !isGenerator && !prop.computed &&\n prop.key.type === \"Identifier\" && prop.key.name === \"async\" && this$1.type !== tt.parenL &&\n this$1.type !== tt.colon && !this$1.canInsertSemicolon()) {\n isAsync = true\n this$1.parsePropertyName(prop, refDestructuringErrors)\n } else {\n isAsync = false\n }\n this$1.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors)\n this$1.checkPropClash(prop, propHash)\n node.properties.push(this$1.finishNode(prop, \"Property\"))\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n}\n\npp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors) {\n if ((isGenerator || isAsync) && this.type === tt.colon)\n this.unexpected()\n\n if (this.eat(tt.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors)\n prop.kind = \"init\"\n } else if (this.options.ecmaVersion >= 6 && this.type === tt.parenL) {\n if (isPattern) this.unexpected()\n prop.kind = \"init\"\n prop.method = true\n prop.value = this.parseMethod(isGenerator, isAsync)\n } else if (this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n (this.type != tt.comma && this.type != tt.braceR)) {\n if (isGenerator || isAsync || isPattern) this.unexpected()\n prop.kind = prop.key.name\n this.parsePropertyName(prop)\n prop.value = this.parseMethod(false)\n var paramCount = prop.kind === \"get\" ? 0 : 1\n if (prop.value.params.length !== paramCount) {\n var start = prop.value.start\n if (prop.kind === \"get\")\n this.raiseRecoverable(start, \"getter should have no params\")\n else\n this.raiseRecoverable(start, \"setter should have exactly one param\")\n } else {\n if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\")\n }\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n if (this.keywords.test(prop.key.name) ||\n (this.strict ? this.reservedWordsStrict : this.reservedWords).test(prop.key.name) ||\n (this.inGenerator && prop.key.name == \"yield\") ||\n (this.inAsync && prop.key.name == \"await\"))\n this.raiseRecoverable(prop.key.start, \"'\" + prop.key.name + \"' can not be used as shorthand property\")\n prop.kind = \"init\"\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)\n } else if (this.type === tt.eq && refDestructuringErrors) {\n if (refDestructuringErrors.shorthandAssign < 0)\n refDestructuringErrors.shorthandAssign = this.start\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)\n } else {\n prop.value = prop.key\n }\n prop.shorthand = true\n } else this.unexpected()\n}\n\npp$3.parsePropertyName = function(prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(tt.bracketL)) {\n prop.computed = true\n prop.key = this.parseMaybeAssign()\n this.expect(tt.bracketR)\n return prop.key\n } else {\n prop.computed = false\n }\n }\n return prop.key = this.type === tt.num || this.type === tt.string ? this.parseExprAtom() : this.parseIdent(true)\n}\n\n// Initialize empty function node.\n\npp$3.initFunction = function(node) {\n node.id = null\n if (this.options.ecmaVersion >= 6) {\n node.generator = false\n node.expression = false\n }\n if (this.options.ecmaVersion >= 8)\n node.async = false\n}\n\n// Parse object or class method.\n\npp$3.parseMethod = function(isGenerator, isAsync) {\n var node = this.startNode(), oldInGen = this.inGenerator, oldInAsync = this.inAsync,\n oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction\n\n this.initFunction(node)\n if (this.options.ecmaVersion >= 6)\n node.generator = isGenerator\n if (this.options.ecmaVersion >= 8)\n node.async = !!isAsync\n\n this.inGenerator = node.generator\n this.inAsync = node.async\n this.yieldPos = 0\n this.awaitPos = 0\n this.inFunction = true\n\n this.expect(tt.parenL)\n node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8)\n this.checkYieldAwaitInDefaultParams()\n this.parseFunctionBody(node, false)\n\n this.inGenerator = oldInGen\n this.inAsync = oldInAsync\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n this.inFunction = oldInFunc\n return this.finishNode(node, \"FunctionExpression\")\n}\n\n// Parse arrow function expression with given parameters.\n\npp$3.parseArrowExpression = function(node, params, isAsync) {\n var oldInGen = this.inGenerator, oldInAsync = this.inAsync,\n oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction\n\n this.initFunction(node)\n if (this.options.ecmaVersion >= 8)\n node.async = !!isAsync\n\n this.inGenerator = false\n this.inAsync = node.async\n this.yieldPos = 0\n this.awaitPos = 0\n this.inFunction = true\n\n node.params = this.toAssignableList(params, true)\n this.parseFunctionBody(node, true)\n\n this.inGenerator = oldInGen\n this.inAsync = oldInAsync\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n this.inFunction = oldInFunc\n return this.finishNode(node, \"ArrowFunctionExpression\")\n}\n\n// Parse function body and check parameters.\n\npp$3.parseFunctionBody = function(node, isArrowFunction) {\n var isExpression = isArrowFunction && this.type !== tt.braceL\n var oldStrict = this.strict, useStrict = false\n\n if (isExpression) {\n node.body = this.parseMaybeAssign()\n node.expression = true\n } else {\n var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params)\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.end)\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple)\n this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\")\n }\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n var oldLabels = this.labels\n this.labels = []\n if (useStrict) this.strict = true\n node.body = this.parseBlock(true)\n node.expression = false\n this.labels = oldLabels\n }\n\n if (oldStrict || useStrict) {\n this.strict = true\n if (node.id)\n this.checkLVal(node.id, true)\n this.checkParams(node)\n this.strict = oldStrict\n } else if (isArrowFunction || !this.isSimpleParamList(node.params)) {\n this.checkParams(node)\n }\n}\n\npp$3.isSimpleParamList = function(params) {\n for (var i = 0; i < params.length; i++)\n if (params[i].type !== \"Identifier\") return false\n return true\n}\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp$3.checkParams = function(node) {\n var this$1 = this;\n\n var nameHash = {}\n for (var i = 0; i < node.params.length; i++) this$1.checkLVal(node.params[i], true, nameHash)\n}\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp$3.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n var this$1 = this;\n\n var elts = [], first = true\n while (!this.eat(close)) {\n if (!first) {\n this$1.expect(tt.comma)\n if (allowTrailingComma && this$1.afterTrailingComma(close)) break\n } else first = false\n\n var elt\n if (allowEmpty && this$1.type === tt.comma)\n elt = null\n else if (this$1.type === tt.ellipsis) {\n elt = this$1.parseSpread(refDestructuringErrors)\n if (refDestructuringErrors && this$1.type === tt.comma && refDestructuringErrors.trailingComma < 0)\n refDestructuringErrors.trailingComma = this$1.start\n } else {\n elt = this$1.parseMaybeAssign(false, refDestructuringErrors)\n }\n elts.push(elt)\n }\n return elts\n}\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp$3.parseIdent = function(liberal) {\n var node = this.startNode()\n if (liberal && this.options.allowReserved == \"never\") liberal = false\n if (this.type === tt.name) {\n if (!liberal && (this.strict ? this.reservedWordsStrict : this.reservedWords).test(this.value) &&\n (this.options.ecmaVersion >= 6 ||\n this.input.slice(this.start, this.end).indexOf(\"\\\\\") == -1))\n this.raiseRecoverable(this.start, \"The keyword '\" + this.value + \"' is reserved\")\n if (this.inGenerator && this.value === \"yield\")\n this.raiseRecoverable(this.start, \"Can not use 'yield' as identifier inside a generator\")\n if (this.inAsync && this.value === \"await\")\n this.raiseRecoverable(this.start, \"Can not use 'await' as identifier inside an async function\")\n node.name = this.value\n } else if (liberal && this.type.keyword) {\n node.name = this.type.keyword\n } else {\n this.unexpected()\n }\n this.next()\n return this.finishNode(node, \"Identifier\")\n}\n\n// Parses yield expression inside generator.\n\npp$3.parseYield = function() {\n if (!this.yieldPos) this.yieldPos = this.start\n\n var node = this.startNode()\n this.next()\n if (this.type == tt.semi || this.canInsertSemicolon() || (this.type != tt.star && !this.type.startsExpr)) {\n node.delegate = false\n node.argument = null\n } else {\n node.delegate = this.eat(tt.star)\n node.argument = this.parseMaybeAssign()\n }\n return this.finishNode(node, \"YieldExpression\")\n}\n\npp$3.parseAwait = function() {\n if (!this.awaitPos) this.awaitPos = this.start\n\n var node = this.startNode()\n this.next()\n node.argument = this.parseMaybeUnary(null, true)\n return this.finishNode(node, \"AwaitExpression\")\n}\n\nvar pp$4 = Parser.prototype\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp$4.raise = function(pos, message) {\n var loc = getLineInfo(this.input, pos)\n message += \" (\" + loc.line + \":\" + loc.column + \")\"\n var err = new SyntaxError(message)\n err.pos = pos; err.loc = loc; err.raisedAt = this.pos\n throw err\n}\n\npp$4.raiseRecoverable = pp$4.raise\n\npp$4.curPosition = function() {\n if (this.options.locations) {\n return new Position(this.curLine, this.pos - this.lineStart)\n }\n}\n\nvar Node = function Node(parser, pos, loc) {\n this.type = \"\"\n this.start = pos\n this.end = 0\n if (parser.options.locations)\n this.loc = new SourceLocation(parser, loc)\n if (parser.options.directSourceFile)\n this.sourceFile = parser.options.directSourceFile\n if (parser.options.ranges)\n this.range = [pos, 0]\n};\n\n// Start an AST node, attaching a start offset.\n\nvar pp$5 = Parser.prototype\n\npp$5.startNode = function() {\n return new Node(this, this.start, this.startLoc)\n}\n\npp$5.startNodeAt = function(pos, loc) {\n return new Node(this, pos, loc)\n}\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n node.type = type\n node.end = pos\n if (this.options.locations)\n node.loc.end = loc\n if (this.options.ranges)\n node.range[1] = pos\n return node\n}\n\npp$5.finishNode = function(node, type) {\n return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n}\n\n// Finish node at given position\n\npp$5.finishNodeAt = function(node, type, pos, loc) {\n return finishNodeAt.call(this, node, type, pos, loc)\n}\n\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\nvar TokContext = function TokContext(token, isExpr, preserveSpace, override) {\n this.token = token\n this.isExpr = !!isExpr\n this.preserveSpace = !!preserveSpace\n this.override = override\n};\n\nvar types = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", true),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, function (p) { return p.readTmplToken(); }),\n f_expr: new TokContext(\"function\", true)\n}\n\nvar pp$6 = Parser.prototype\n\npp$6.initialContext = function() {\n return [types.b_stat]\n}\n\npp$6.braceIsBlock = function(prevType) {\n if (prevType === tt.colon) {\n var parent = this.curContext()\n if (parent === types.b_stat || parent === types.b_expr)\n return !parent.isExpr\n }\n if (prevType === tt._return)\n return lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n if (prevType === tt._else || prevType === tt.semi || prevType === tt.eof || prevType === tt.parenR)\n return true\n if (prevType == tt.braceL)\n return this.curContext() === types.b_stat\n return !this.exprAllowed\n}\n\npp$6.updateContext = function(prevType) {\n var update, type = this.type\n if (type.keyword && prevType == tt.dot)\n this.exprAllowed = false\n else if (update = type.updateContext)\n update.call(this, prevType)\n else\n this.exprAllowed = type.beforeExpr\n}\n\n// Token-specific context update code\n\ntt.parenR.updateContext = tt.braceR.updateContext = function() {\n if (this.context.length == 1) {\n this.exprAllowed = true\n return\n }\n var out = this.context.pop()\n if (out === types.b_stat && this.curContext() === types.f_expr) {\n this.context.pop()\n this.exprAllowed = false\n } else if (out === types.b_tmpl) {\n this.exprAllowed = true\n } else {\n this.exprAllowed = !out.isExpr\n }\n}\n\ntt.braceL.updateContext = function(prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr)\n this.exprAllowed = true\n}\n\ntt.dollarBraceL.updateContext = function() {\n this.context.push(types.b_tmpl)\n this.exprAllowed = true\n}\n\ntt.parenL.updateContext = function(prevType) {\n var statementParens = prevType === tt._if || prevType === tt._for || prevType === tt._with || prevType === tt._while\n this.context.push(statementParens ? types.p_stat : types.p_expr)\n this.exprAllowed = true\n}\n\ntt.incDec.updateContext = function() {\n // tokExprAllowed stays unchanged\n}\n\ntt._function.updateContext = function(prevType) {\n if (prevType.beforeExpr && prevType !== tt.semi && prevType !== tt._else &&\n !((prevType === tt.colon || prevType === tt.braceL) && this.curContext() === types.b_stat))\n this.context.push(types.f_expr)\n this.exprAllowed = false\n}\n\ntt.backQuote.updateContext = function() {\n if (this.curContext() === types.q_tmpl)\n this.context.pop()\n else\n this.context.push(types.q_tmpl)\n this.exprAllowed = false\n}\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nvar Token = function Token(p) {\n this.type = p.type\n this.value = p.value\n this.start = p.start\n this.end = p.end\n if (p.options.locations)\n this.loc = new SourceLocation(p, p.startLoc, p.endLoc)\n if (p.options.ranges)\n this.range = [p.start, p.end]\n};\n\n// ## Tokenizer\n\nvar pp$7 = Parser.prototype\n\n// Are we running under Rhino?\nvar isRhino = typeof Packages == \"object\" && Object.prototype.toString.call(Packages) == \"[object JavaPackage]\"\n\n// Move to the next token\n\npp$7.next = function() {\n if (this.options.onToken)\n this.options.onToken(new Token(this))\n\n this.lastTokEnd = this.end\n this.lastTokStart = this.start\n this.lastTokEndLoc = this.endLoc\n this.lastTokStartLoc = this.startLoc\n this.nextToken()\n}\n\npp$7.getToken = function() {\n this.next()\n return new Token(this)\n}\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n pp$7[Symbol.iterator] = function () {\n var self = this\n return {next: function () {\n var token = self.getToken()\n return {\n done: token.type === tt.eof,\n value: token\n }\n }}\n }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\npp$7.curContext = function() {\n return this.context[this.context.length - 1]\n}\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp$7.nextToken = function() {\n var curContext = this.curContext()\n if (!curContext || !curContext.preserveSpace) this.skipSpace()\n\n this.start = this.pos\n if (this.options.locations) this.startLoc = this.curPosition()\n if (this.pos >= this.input.length) return this.finishToken(tt.eof)\n\n if (curContext.override) return curContext.override(this)\n else this.readToken(this.fullCharCodeAtPos())\n}\n\npp$7.readToken = function(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n return this.readWord()\n\n return this.getTokenFromCode(code)\n}\n\npp$7.fullCharCodeAtPos = function() {\n var code = this.input.charCodeAt(this.pos)\n if (code <= 0xd7ff || code >= 0xe000) return code\n var next = this.input.charCodeAt(this.pos + 1)\n return (code << 10) + next - 0x35fdc00\n}\n\npp$7.skipBlockComment = function() {\n var this$1 = this;\n\n var startLoc = this.options.onComment && this.curPosition()\n var start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2)\n if (end === -1) this.raise(this.pos - 2, \"Unterminated comment\")\n this.pos = end + 2\n if (this.options.locations) {\n lineBreakG.lastIndex = start\n var match\n while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) {\n ++this$1.curLine\n this$1.lineStart = match.index + match[0].length\n }\n }\n if (this.options.onComment)\n this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n startLoc, this.curPosition())\n}\n\npp$7.skipLineComment = function(startSkip) {\n var this$1 = this;\n\n var start = this.pos\n var startLoc = this.options.onComment && this.curPosition()\n var ch = this.input.charCodeAt(this.pos+=startSkip)\n while (this.pos < this.input.length && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) {\n ++this$1.pos\n ch = this$1.input.charCodeAt(this$1.pos)\n }\n if (this.options.onComment)\n this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n startLoc, this.curPosition())\n}\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp$7.skipSpace = function() {\n var this$1 = this;\n\n loop: while (this.pos < this.input.length) {\n var ch = this$1.input.charCodeAt(this$1.pos)\n switch (ch) {\n case 32: case 160: // ' '\n ++this$1.pos\n break\n case 13:\n if (this$1.input.charCodeAt(this$1.pos + 1) === 10) {\n ++this$1.pos\n }\n case 10: case 8232: case 8233:\n ++this$1.pos\n if (this$1.options.locations) {\n ++this$1.curLine\n this$1.lineStart = this$1.pos\n }\n break\n case 47: // '/'\n switch (this$1.input.charCodeAt(this$1.pos + 1)) {\n case 42: // '*'\n this$1.skipBlockComment()\n break\n case 47:\n this$1.skipLineComment(2)\n break\n default:\n break loop\n }\n break\n default:\n if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this$1.pos\n } else {\n break loop\n }\n }\n }\n}\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp$7.finishToken = function(type, val) {\n this.end = this.pos\n if (this.options.locations) this.endLoc = this.curPosition()\n var prevType = this.type\n this.type = type\n this.value = val\n\n this.updateContext(prevType)\n}\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp$7.readToken_dot = function() {\n var next = this.input.charCodeAt(this.pos + 1)\n if (next >= 48 && next <= 57) return this.readNumber(true)\n var next2 = this.input.charCodeAt(this.pos + 2)\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n this.pos += 3\n return this.finishToken(tt.ellipsis)\n } else {\n ++this.pos\n return this.finishToken(tt.dot)\n }\n}\n\npp$7.readToken_slash = function() { // '/'\n var next = this.input.charCodeAt(this.pos + 1)\n if (this.exprAllowed) {++this.pos; return this.readRegexp()}\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.slash, 1)\n}\n\npp$7.readToken_mult_modulo_exp = function(code) { // '%*'\n var next = this.input.charCodeAt(this.pos + 1)\n var size = 1\n var tokentype = code === 42 ? tt.star : tt.modulo\n\n // exponentiation operator ** and **=\n if (this.options.ecmaVersion >= 7 && next === 42) {\n ++size\n tokentype = tt.starstar\n next = this.input.charCodeAt(this.pos + 2)\n }\n\n if (next === 61) return this.finishOp(tt.assign, size + 1)\n return this.finishOp(tokentype, size)\n}\n\npp$7.readToken_pipe_amp = function(code) { // '|&'\n var next = this.input.charCodeAt(this.pos + 1)\n if (next === code) return this.finishOp(code === 124 ? tt.logicalOR : tt.logicalAND, 2)\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(code === 124 ? tt.bitwiseOR : tt.bitwiseAND, 1)\n}\n\npp$7.readToken_caret = function() { // '^'\n var next = this.input.charCodeAt(this.pos + 1)\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.bitwiseXOR, 1)\n}\n\npp$7.readToken_plus_min = function(code) { // '+-'\n var next = this.input.charCodeAt(this.pos + 1)\n if (next === code) {\n if (next == 45 && this.input.charCodeAt(this.pos + 2) == 62 &&\n lineBreak.test(this.input.slice(this.lastTokEnd, this.pos))) {\n // A `-->` line comment\n this.skipLineComment(3)\n this.skipSpace()\n return this.nextToken()\n }\n return this.finishOp(tt.incDec, 2)\n }\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.plusMin, 1)\n}\n\npp$7.readToken_lt_gt = function(code) { // '<>'\n var next = this.input.charCodeAt(this.pos + 1)\n var size = 1\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2\n if (this.input.charCodeAt(this.pos + size) === 61) return this.finishOp(tt.assign, size + 1)\n return this.finishOp(tt.bitShift, size)\n }\n if (next == 33 && code == 60 && this.input.charCodeAt(this.pos + 2) == 45 &&\n this.input.charCodeAt(this.pos + 3) == 45) {\n if (this.inModule) this.unexpected()\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4)\n this.skipSpace()\n return this.nextToken()\n }\n if (next === 61) size = 2\n return this.finishOp(tt.relational, size)\n}\n\npp$7.readToken_eq_excl = function(code) { // '=!'\n var next = this.input.charCodeAt(this.pos + 1)\n if (next === 61) return this.finishOp(tt.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2)\n if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n this.pos += 2\n return this.finishToken(tt.arrow)\n }\n return this.finishOp(code === 61 ? tt.eq : tt.prefix, 1)\n}\n\npp$7.getTokenFromCode = function(code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n case 46: // '.'\n return this.readToken_dot()\n\n // Punctuation tokens.\n case 40: ++this.pos; return this.finishToken(tt.parenL)\n case 41: ++this.pos; return this.finishToken(tt.parenR)\n case 59: ++this.pos; return this.finishToken(tt.semi)\n case 44: ++this.pos; return this.finishToken(tt.comma)\n case 91: ++this.pos; return this.finishToken(tt.bracketL)\n case 93: ++this.pos; return this.finishToken(tt.bracketR)\n case 123: ++this.pos; return this.finishToken(tt.braceL)\n case 125: ++this.pos; return this.finishToken(tt.braceR)\n case 58: ++this.pos; return this.finishToken(tt.colon)\n case 63: ++this.pos; return this.finishToken(tt.question)\n\n case 96: // '`'\n if (this.options.ecmaVersion < 6) break\n ++this.pos\n return this.finishToken(tt.backQuote)\n\n case 48: // '0'\n var next = this.input.charCodeAt(this.pos + 1)\n if (next === 120 || next === 88) return this.readRadixNumber(16) // '0x', '0X' - hex number\n if (this.options.ecmaVersion >= 6) {\n if (next === 111 || next === 79) return this.readRadixNumber(8) // '0o', '0O' - octal number\n if (next === 98 || next === 66) return this.readRadixNumber(2) // '0b', '0B' - binary number\n }\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n return this.readNumber(false)\n\n // Quotes produce strings.\n case 34: case 39: // '\"', \"'\"\n return this.readString(code)\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case 47: // '/'\n return this.readToken_slash()\n\n case 37: case 42: // '%*'\n return this.readToken_mult_modulo_exp(code)\n\n case 124: case 38: // '|&'\n return this.readToken_pipe_amp(code)\n\n case 94: // '^'\n return this.readToken_caret()\n\n case 43: case 45: // '+-'\n return this.readToken_plus_min(code)\n\n case 60: case 62: // '<>'\n return this.readToken_lt_gt(code)\n\n case 61: case 33: // '=!'\n return this.readToken_eq_excl(code)\n\n case 126: // '~'\n return this.finishOp(tt.prefix, 1)\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\")\n}\n\npp$7.finishOp = function(type, size) {\n var str = this.input.slice(this.pos, this.pos + size)\n this.pos += size\n return this.finishToken(type, str)\n}\n\n// Parse a regular expression. Some context-awareness is necessary,\n// since a '/' inside a '[]' set does not end the expression.\n\nfunction tryCreateRegexp(src, flags, throwErrorAt, parser) {\n try {\n return new RegExp(src, flags)\n } catch (e) {\n if (throwErrorAt !== undefined) {\n if (e instanceof SyntaxError) parser.raise(throwErrorAt, \"Error parsing regular expression: \" + e.message)\n throw e\n }\n }\n}\n\nvar regexpUnicodeSupport = !!tryCreateRegexp(\"\\uffff\", \"u\")\n\npp$7.readRegexp = function() {\n var this$1 = this;\n\n var escaped, inClass, start = this.pos\n for (;;) {\n if (this$1.pos >= this$1.input.length) this$1.raise(start, \"Unterminated regular expression\")\n var ch = this$1.input.charAt(this$1.pos)\n if (lineBreak.test(ch)) this$1.raise(start, \"Unterminated regular expression\")\n if (!escaped) {\n if (ch === \"[\") inClass = true\n else if (ch === \"]\" && inClass) inClass = false\n else if (ch === \"/\" && !inClass) break\n escaped = ch === \"\\\\\"\n } else escaped = false\n ++this$1.pos\n }\n var content = this.input.slice(start, this.pos)\n ++this.pos\n // Need to use `readWord1` because '\\uXXXX' sequences are allowed\n // here (don't ask).\n var mods = this.readWord1()\n var tmp = content, tmpFlags = \"\"\n if (mods) {\n var validFlags = /^[gim]*$/\n if (this.options.ecmaVersion >= 6) validFlags = /^[gimuy]*$/\n if (!validFlags.test(mods)) this.raise(start, \"Invalid regular expression flag\")\n if (mods.indexOf(\"u\") >= 0) {\n if (regexpUnicodeSupport) {\n tmpFlags = \"u\"\n } else {\n // Replace each astral symbol and every Unicode escape sequence that\n // possibly represents an astral symbol or a paired surrogate with a\n // single ASCII symbol to avoid throwing on regular expressions that\n // are only valid in combination with the `/u` flag.\n // Note: replacing with the ASCII symbol `x` might cause false\n // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n // perfectly valid pattern that is equivalent to `[a-b]`, but it would\n // be replaced by `[x-b]` which throws an error.\n tmp = tmp.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, function (_match, code, offset) {\n code = Number(\"0x\" + code)\n if (code > 0x10FFFF) this$1.raise(start + offset + 3, \"Code point out of bounds\")\n return \"x\"\n })\n tmp = tmp.replace(/\\\\u([a-fA-F0-9]{4})|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, \"x\")\n tmpFlags = tmpFlags.replace(\"u\", \"\")\n }\n }\n }\n // Detect invalid regular expressions.\n var value = null\n // Rhino's regular expression parser is flaky and throws uncatchable exceptions,\n // so don't do detection if we are running under Rhino\n if (!isRhino) {\n tryCreateRegexp(tmp, tmpFlags, start, this)\n // Get a regular expression object for this pattern-flag pair, or `null` in\n // case the current environment doesn't support the flags it uses.\n value = tryCreateRegexp(content, mods)\n }\n return this.finishToken(tt.regexp, {pattern: content, flags: mods, value: value})\n}\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp$7.readInt = function(radix, len) {\n var this$1 = this;\n\n var start = this.pos, total = 0\n for (var i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n var code = this$1.input.charCodeAt(this$1.pos), val\n if (code >= 97) val = code - 97 + 10 // a\n else if (code >= 65) val = code - 65 + 10 // A\n else if (code >= 48 && code <= 57) val = code - 48 // 0-9\n else val = Infinity\n if (val >= radix) break\n ++this$1.pos\n total = total * radix + val\n }\n if (this.pos === start || len != null && this.pos - start !== len) return null\n\n return total\n}\n\npp$7.readRadixNumber = function(radix) {\n this.pos += 2 // 0x\n var val = this.readInt(radix)\n if (val == null) this.raise(this.start + 2, \"Expected number in radix \" + radix)\n if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, \"Identifier directly after number\")\n return this.finishToken(tt.num, val)\n}\n\n// Read an integer, octal integer, or floating-point number.\n\npp$7.readNumber = function(startsWithDot) {\n var start = this.pos, isFloat = false, octal = this.input.charCodeAt(this.pos) === 48\n if (!startsWithDot && this.readInt(10) === null) this.raise(start, \"Invalid number\")\n if (octal && this.pos == start + 1) octal = false\n var next = this.input.charCodeAt(this.pos)\n if (next === 46 && !octal) { // '.'\n ++this.pos\n this.readInt(10)\n isFloat = true\n next = this.input.charCodeAt(this.pos)\n }\n if ((next === 69 || next === 101) && !octal) { // 'eE'\n next = this.input.charCodeAt(++this.pos)\n if (next === 43 || next === 45) ++this.pos // '+-'\n if (this.readInt(10) === null) this.raise(start, \"Invalid number\")\n isFloat = true\n }\n if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, \"Identifier directly after number\")\n\n var str = this.input.slice(start, this.pos), val\n if (isFloat) val = parseFloat(str)\n else if (!octal || str.length === 1) val = parseInt(str, 10)\n else if (/[89]/.test(str) || this.strict) this.raise(start, \"Invalid number\")\n else val = parseInt(str, 8)\n return this.finishToken(tt.num, val)\n}\n\n// Read a string value, interpreting backslash-escapes.\n\npp$7.readCodePoint = function() {\n var ch = this.input.charCodeAt(this.pos), code\n\n if (ch === 123) {\n if (this.options.ecmaVersion < 6) this.unexpected()\n var codePos = ++this.pos\n code = this.readHexChar(this.input.indexOf('}', this.pos) - this.pos)\n ++this.pos\n if (code > 0x10FFFF) this.raise(codePos, \"Code point out of bounds\")\n } else {\n code = this.readHexChar(4)\n }\n return code\n}\n\nfunction codePointToString(code) {\n // UTF-16 Decoding\n if (code <= 0xFFFF) return String.fromCharCode(code)\n code -= 0x10000\n return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\npp$7.readString = function(quote) {\n var this$1 = this;\n\n var out = \"\", chunkStart = ++this.pos\n for (;;) {\n if (this$1.pos >= this$1.input.length) this$1.raise(this$1.start, \"Unterminated string constant\")\n var ch = this$1.input.charCodeAt(this$1.pos)\n if (ch === quote) break\n if (ch === 92) { // '\\'\n out += this$1.input.slice(chunkStart, this$1.pos)\n out += this$1.readEscapedChar(false)\n chunkStart = this$1.pos\n } else {\n if (isNewLine(ch)) this$1.raise(this$1.start, \"Unterminated string constant\")\n ++this$1.pos\n }\n }\n out += this.input.slice(chunkStart, this.pos++)\n return this.finishToken(tt.string, out)\n}\n\n// Reads template string tokens.\n\npp$7.readTmplToken = function() {\n var this$1 = this;\n\n var out = \"\", chunkStart = this.pos\n for (;;) {\n if (this$1.pos >= this$1.input.length) this$1.raise(this$1.start, \"Unterminated template\")\n var ch = this$1.input.charCodeAt(this$1.pos)\n if (ch === 96 || ch === 36 && this$1.input.charCodeAt(this$1.pos + 1) === 123) { // '`', '${'\n if (this$1.pos === this$1.start && this$1.type === tt.template) {\n if (ch === 36) {\n this$1.pos += 2\n return this$1.finishToken(tt.dollarBraceL)\n } else {\n ++this$1.pos\n return this$1.finishToken(tt.backQuote)\n }\n }\n out += this$1.input.slice(chunkStart, this$1.pos)\n return this$1.finishToken(tt.template, out)\n }\n if (ch === 92) { // '\\'\n out += this$1.input.slice(chunkStart, this$1.pos)\n out += this$1.readEscapedChar(true)\n chunkStart = this$1.pos\n } else if (isNewLine(ch)) {\n out += this$1.input.slice(chunkStart, this$1.pos)\n ++this$1.pos\n switch (ch) {\n case 13:\n if (this$1.input.charCodeAt(this$1.pos) === 10) ++this$1.pos\n case 10:\n out += \"\\n\"\n break\n default:\n out += String.fromCharCode(ch)\n break\n }\n if (this$1.options.locations) {\n ++this$1.curLine\n this$1.lineStart = this$1.pos\n }\n chunkStart = this$1.pos\n } else {\n ++this$1.pos\n }\n }\n}\n\n// Used to read escaped characters\n\npp$7.readEscapedChar = function(inTemplate) {\n var ch = this.input.charCodeAt(++this.pos)\n ++this.pos\n switch (ch) {\n case 110: return \"\\n\" // 'n' -> '\\n'\n case 114: return \"\\r\" // 'r' -> '\\r'\n case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n case 117: return codePointToString(this.readCodePoint()) // 'u'\n case 116: return \"\\t\" // 't' -> '\\t'\n case 98: return \"\\b\" // 'b' -> '\\b'\n case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n case 102: return \"\\f\" // 'f' -> '\\f'\n case 13: if (this.input.charCodeAt(this.pos) === 10) ++this.pos // '\\r\\n'\n case 10: // ' \\n'\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine }\n return \"\"\n default:\n if (ch >= 48 && ch <= 55) {\n var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0]\n var octal = parseInt(octalStr, 8)\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1)\n octal = parseInt(octalStr, 8)\n }\n if (octalStr !== \"0\" && (this.strict || inTemplate)) {\n this.raise(this.pos - 2, \"Octal literal in strict mode\")\n }\n this.pos += octalStr.length - 1\n return String.fromCharCode(octal)\n }\n return String.fromCharCode(ch)\n }\n}\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp$7.readHexChar = function(len) {\n var codePos = this.pos\n var n = this.readInt(16, len)\n if (n === null) this.raise(codePos, \"Bad character escape sequence\")\n return n\n}\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp$7.readWord1 = function() {\n var this$1 = this;\n\n this.containsEsc = false\n var word = \"\", first = true, chunkStart = this.pos\n var astral = this.options.ecmaVersion >= 6\n while (this.pos < this.input.length) {\n var ch = this$1.fullCharCodeAtPos()\n if (isIdentifierChar(ch, astral)) {\n this$1.pos += ch <= 0xffff ? 1 : 2\n } else if (ch === 92) { // \"\\\"\n this$1.containsEsc = true\n word += this$1.input.slice(chunkStart, this$1.pos)\n var escStart = this$1.pos\n if (this$1.input.charCodeAt(++this$1.pos) != 117) // \"u\"\n this$1.raise(this$1.pos, \"Expecting Unicode escape sequence \\\\uXXXX\")\n ++this$1.pos\n var esc = this$1.readCodePoint()\n if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n this$1.raise(escStart, \"Invalid Unicode escape\")\n word += codePointToString(esc)\n chunkStart = this$1.pos\n } else {\n break\n }\n first = false\n }\n return word + this.input.slice(chunkStart, this.pos)\n}\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp$7.readWord = function() {\n var word = this.readWord1()\n var type = tt.name\n if (this.keywords.test(word)) {\n if (this.containsEsc) this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + word)\n type = keywordTypes[word]\n }\n return this.finishToken(type, word)\n}\n\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/ternjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/ternjs/acorn/issues\n//\n// This file defines the main parser interface. The library also comes\n// with a [error-tolerant parser][dammit] and an\n// [abstract syntax tree walker][walk], defined in other files.\n//\n// [dammit]: acorn_loose.js\n// [walk]: util/walk.js\n\nvar version = \"4.0.11\"\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and\n// returns an abstract syntax tree as specified by [Mozilla parser\n// API][api].\n//\n// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API\n\nfunction parse(input, options) {\n return new Parser(options, input).parse()\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nfunction parseExpressionAt(input, pos, options) {\n var p = new Parser(options, input, pos)\n p.nextToken()\n return p.parseExpression()\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nfunction tokenizer(input, options) {\n return new Parser(options, input)\n}\n\n// This is a terrible kludge to support the existing, pre-ES6\n// interface where the loose parser module retroactively adds exports\n// to this module.\nfunction addLooseExports(parse, Parser, plugins) {\n parse_dammit = parse\n LooseParser = Parser\n pluginsLoose = plugins\n}\n\nexport { version, parse, parseExpressionAt, tokenizer, parse_dammit, LooseParser, pluginsLoose, addLooseExports, Parser, plugins, defaultOptions, Position, SourceLocation, getLineInfo, Node, TokenType, tt as tokTypes, keywordTypes, TokContext, types as tokContexts, isIdentifierChar, isIdentifierStart, Token, isNewLine, lineBreak, lineBreakG };","import { parseExpressionAt } from 'acorn';\n\nexport default function readExpression ( parser ) {\n\tconst start = parser.index;\n\n\tconst name = parser.readUntil( /\\s*}}/ );\n\tif ( name && /^\\w+$/.test( name ) ) {\n\t\treturn {\n\t\t\ttype: 'Identifier',\n\t\t\tstart,\n\t\t\tend: start + name.length,\n\t\t\tname\n\t\t};\n\t}\n\n\tparser.index = start;\n\n\ttry {\n\t\tconst node = parseExpressionAt( parser.template, parser.index );\n\t\tparser.index = node.end;\n\n\t\treturn node;\n\t} catch ( err ) {\n\t\tparser.acornError( err );\n\t}\n}\n","export default function spaces ( i ) {\n\tlet result = '';\n\twhile ( i-- ) result += ' ';\n\treturn result;\n}\n","import { parse } from 'acorn';\nimport spaces from '../../utils/spaces.js';\n\nconst scriptClosingTag = '<\\/script>';\n\nexport default function readScript ( parser, start, attributes ) {\n\tconst scriptStart = parser.index;\n\tconst scriptEnd = parser.template.indexOf( scriptClosingTag, scriptStart );\n\n\tconst source = spaces( scriptStart ) + parser.template.slice( scriptStart, scriptEnd );\n\tparser.index = scriptEnd + scriptClosingTag.length;\n\n\tlet ast;\n\n\ttry {\n\t\tast = parse( source, {\n\t\t\tecmaVersion: 8,\n\t\t\tsourceType: 'module'\n\t\t});\n\t} catch ( err ) {\n\t\tparser.acornError( err );\n\t}\n\n\tif ( !ast.body.length ) return null;\n\n\tast.start = scriptStart;\n\treturn {\n\t\tstart,\n\t\tend: parser.index,\n\t\tattributes,\n\t\tcontent: ast\n\t};\n}\n","'use strict';\n\nvar MAX_LINE_LENGTH = 100;\nvar OFFSET_CORRECTION = 60;\n\nfunction sourceFragment(error, extraLines) {\n function processLines(start, end) {\n return lines.slice(start, end).map(function(line, idx) {\n var num = String(start + idx + 1);\n\n while (num.length < maxNumLength) {\n num = ' ' + num;\n }\n\n return num + ' |' + line;\n }).join('\\n');\n }\n\n var lines = error.source.split(/\\n|\\r\\n?|\\f/);\n var column = error.column;\n var line = error.line;\n var startLine = Math.max(1, line - extraLines) - 1;\n var endLine = Math.min(line + extraLines, lines.length + 1);\n var maxNumLength = Math.max(4, String(endLine).length) + 1;\n var cutLeft = 0;\n\n if (column > MAX_LINE_LENGTH) {\n cutLeft = column - OFFSET_CORRECTION + 3;\n column = OFFSET_CORRECTION - 2;\n }\n\n for (var i = startLine; i <= endLine; i++) {\n if (i >= 0 && i < lines.length) {\n lines[i] =\n (cutLeft > 0 && lines[i].length > cutLeft ? '\\u2026' : '') +\n lines[i].substr(cutLeft, MAX_LINE_LENGTH - 2) +\n (lines[i].length > cutLeft + MAX_LINE_LENGTH - 1 ? '\\u2026' : '');\n }\n }\n\n return [\n processLines(startLine, line),\n new Array(column + maxNumLength + 2).join('-') + '^',\n processLines(line, endLine)\n ].join('\\n');\n}\n\nvar CssSyntaxError = function(message, source, offset, line, column) {\n var error = new SyntaxError();\n error.name = 'CssSyntaxError';\n error.message = message;\n error.source = source;\n error.offset = offset;\n error.line = line;\n error.column = column;\n\n error.sourceFragment = function(extraLines) {\n return sourceFragment(error, isNaN(extraLines) ? 0 : extraLines);\n };\n Object.defineProperty(error, 'formattedMessage', {\n get: function() {\n return (\n 'Parse error: ' + error.message + '\\n' +\n sourceFragment(error, 2)\n );\n }\n });\n\n // for backward capability\n error.parseError = {\n offset: offset,\n line: line,\n column: column\n };\n\n return error;\n};\n\nmodule.exports = CssSyntaxError;\n","'use strict';\n\n// token types (note: value shouldn't intersect with used char codes)\nvar WHITESPACE = 1;\nvar IDENTIFIER = 2;\nvar NUMBER = 3;\nvar STRING = 4;\nvar COMMENT = 5;\nvar PUNCTUATOR = 6;\n\nvar TAB = 9;\nvar N = 10;\nvar F = 12;\nvar R = 13;\nvar SPACE = 32;\n\nvar TYPE = {\n Whitespace: WHITESPACE,\n Identifier: IDENTIFIER,\n Number: NUMBER,\n String: STRING,\n Comment: COMMENT,\n Punctuator: PUNCTUATOR,\n\n ExclamationMark: 33, // !\n QuotationMark: 34, // \"\n NumberSign: 35, // #\n DollarSign: 36, // $\n PercentSign: 37, // %\n Ampersand: 38, // &\n Apostrophe: 39, // '\n LeftParenthesis: 40, // (\n RightParenthesis: 41, // )\n Asterisk: 42, // *\n PlusSign: 43, // +\n Comma: 44, // ,\n HyphenMinus: 45, // -\n FullStop: 46, // .\n Solidus: 47, // /\n Colon: 58, // :\n Semicolon: 59, // ;\n LessThanSign: 60, // <\n EqualsSign: 61, // =\n GreaterThanSign: 62, // >\n QuestionMark: 63, // ?\n CommercialAt: 64, // @\n LeftSquareBracket: 91, // [\n Backslash: 92, // \\\n RightSquareBracket: 93, // ]\n CircumflexAccent: 94, // ^\n LowLine: 95, // _\n GraveAccent: 96, // `\n LeftCurlyBracket: 123, // {\n VerticalLine: 124, // |\n RightCurlyBracket: 125, // }\n Tilde: 126 // ~\n};\n\nvar NAME = Object.keys(TYPE).reduce(function(result, key) {\n result[TYPE[key]] = key;\n return result;\n}, {});\n\nvar SafeUint32Array = typeof Uint32Array !== 'undefined' ? Uint32Array : Array; // fallback on Array when TypedArray is not supported\nvar SYMBOL_TYPE = new SafeUint32Array(Math.max.apply(null, Object.keys(NAME).map(Number)) + 1);\nvar PUNCTUATION = new SafeUint32Array(SYMBOL_TYPE.length);\n\nfor (var i = 0; i < SYMBOL_TYPE.length; i++) {\n SYMBOL_TYPE[i] = IDENTIFIER;\n}\n\n// fill categories\n[\n TYPE.ExclamationMark, // !\n TYPE.QuotationMark, // \"\n TYPE.NumberSign, // #\n TYPE.DollarSign, // $\n TYPE.PercentSign, // %\n TYPE.Ampersand, // &\n TYPE.Apostrophe, // '\n TYPE.LeftParenthesis, // (\n TYPE.RightParenthesis, // )\n TYPE.Asterisk, // *\n TYPE.PlusSign, // +\n TYPE.Comma, // ,\n TYPE.HyphenMinus, // -\n TYPE.FullStop, // .\n TYPE.Solidus, // /\n TYPE.Colon, // :\n TYPE.Semicolon, // ;\n TYPE.LessThanSign, // <\n TYPE.EqualsSign, // =\n TYPE.GreaterThanSign, // >\n TYPE.QuestionMark, // ?\n TYPE.CommercialAt, // @\n TYPE.LeftSquareBracket, // [\n // TYPE.Backslash, // \\\n TYPE.RightSquareBracket, // ]\n TYPE.CircumflexAccent, // ^\n // TYPE.LowLine, // _\n TYPE.GraveAccent, // `\n TYPE.LeftCurlyBracket, // {\n TYPE.VerticalLine, // |\n TYPE.RightCurlyBracket, // }\n TYPE.Tilde // ~\n].forEach(function(key) {\n SYMBOL_TYPE[Number(key)] = PUNCTUATOR;\n PUNCTUATION[Number(key)] = PUNCTUATOR;\n}, SYMBOL_TYPE);\n\nfor (var i = 48; i <= 57; i++) {\n SYMBOL_TYPE[i] = NUMBER;\n}\n\nSYMBOL_TYPE[SPACE] = WHITESPACE;\nSYMBOL_TYPE[TAB] = WHITESPACE;\nSYMBOL_TYPE[N] = WHITESPACE;\nSYMBOL_TYPE[R] = WHITESPACE;\nSYMBOL_TYPE[F] = WHITESPACE;\n\nSYMBOL_TYPE[TYPE.Apostrophe] = STRING;\nSYMBOL_TYPE[TYPE.QuotationMark] = STRING;\n\n// whitespace is punctuation ...\nPUNCTUATION[SPACE] = PUNCTUATOR;\nPUNCTUATION[TAB] = PUNCTUATOR;\nPUNCTUATION[N] = PUNCTUATOR;\nPUNCTUATION[R] = PUNCTUATOR;\nPUNCTUATION[F] = PUNCTUATOR;\n// ... hyper minus is not\nPUNCTUATION[TYPE.HyphenMinus] = 0;\n\nmodule.exports = {\n TYPE: TYPE,\n NAME: NAME,\n\n SYMBOL_TYPE: SYMBOL_TYPE,\n PUNCTUATION: PUNCTUATION\n};\n","'use strict';\n\nvar constants = require('./const');\nvar PUNCTUATION = constants.PUNCTUATION;\nvar SYMBOL_TYPE = constants.SYMBOL_TYPE;\nvar SYMBOL_TYPE_LENGTH = SYMBOL_TYPE.length;\nvar TYPE = constants.TYPE;\nvar FULLSTOP = TYPE.FullStop;\nvar PLUSSIGN = TYPE.PlusSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar PUNCTUATOR = TYPE.Punctuator;\nvar TAB = 9;\nvar N = 10;\nvar F = 12;\nvar R = 13;\nvar SPACE = 32;\nvar BACK_SLASH = 92;\nvar E = 101; // 'e'.charCodeAt(0)\n\nfunction firstCharOffset(source) {\n return source.charCodeAt(0) === 0xFEFF ? 1 : 0;\n}\n\nfunction isHex(code) {\n return (code >= 48 && code <= 57) || // 0 .. 9\n (code >= 65 && code <= 70) || // A .. F\n (code >= 97 && code <= 102); // a .. f\n}\n\nfunction isNumber(code) {\n return code >= 48 && code <= 57;\n}\n\nfunction isNewline(source, offset, code) {\n if (code === N || code === F || code === R) {\n if (code === R && offset + 1 < source.length && source.charCodeAt(offset + 1) === N) {\n return 2;\n }\n\n return 1;\n }\n\n return 0;\n}\n\nfunction cmpChar(testStr, offset, referenceCode) {\n var code = testStr.charCodeAt(offset);\n\n // code.toLowerCase()\n if (code >= 65 && code <= 90) {\n code = code | 32;\n }\n\n return code === referenceCode;\n}\n\nfunction cmpStr(testStr, start, end, referenceStr) {\n if (end - start !== referenceStr.length) {\n return false;\n }\n\n if (start < 0 || end > testStr.length) {\n return false;\n }\n\n for (var i = start; i < end; i++) {\n var testCode = testStr.charCodeAt(i);\n var refCode = referenceStr.charCodeAt(i - start);\n\n // testStr[i].toLowerCase()\n if (testCode >= 65 && testCode <= 90) {\n testCode = testCode | 32;\n }\n\n if (testCode !== refCode) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction endsWith(testStr, referenceStr) {\n return cmpStr(testStr, testStr.length - referenceStr.length, testStr.length, referenceStr);\n}\n\nfunction findLastNonSpaceLocation(scanner) {\n for (var i = scanner.source.length - 1; i >= 0; i--) {\n var code = scanner.source.charCodeAt(i);\n\n if (code !== SPACE && code !== TAB && code !== R && code !== N && code !== F) {\n break;\n }\n }\n\n return scanner.getLocation(i + 1);\n}\n\nfunction findWhitespaceEnd(source, offset) {\n for (; offset < source.length; offset++) {\n var code = source.charCodeAt(offset);\n\n if (code !== SPACE && code !== TAB && code !== R && code !== N && code !== F) {\n break;\n }\n }\n\n return offset;\n}\n\nfunction findCommentEnd(source, offset) {\n var commentEnd = source.indexOf('*/', offset);\n\n if (commentEnd === -1) {\n return source.length;\n }\n\n return commentEnd + 2;\n}\n\nfunction findStringEnd(source, offset, quote) {\n for (; offset < source.length; offset++) {\n var code = source.charCodeAt(offset);\n\n // TODO: bad string\n if (code === BACK_SLASH) {\n offset++;\n } else if (code === quote) {\n offset++;\n break;\n }\n }\n\n return offset;\n}\n\nfunction findDecimalNumberEnd(source, offset) {\n for (; offset < source.length; offset++) {\n var code = source.charCodeAt(offset);\n\n if (code < 48 || code > 57) { // not a 0 .. 9\n break;\n }\n }\n\n return offset;\n}\n\nfunction findNumberEnd(source, offset, allowFraction) {\n var code;\n\n offset = findDecimalNumberEnd(source, offset);\n\n // fraction: .\\d+\n if (allowFraction && offset + 1 < source.length && source.charCodeAt(offset) === FULLSTOP) {\n code = source.charCodeAt(offset + 1);\n\n if (isNumber(code)) {\n offset = findDecimalNumberEnd(source, offset + 1);\n }\n }\n\n // exponent: e[+-]\\d+\n if (offset + 1 < source.length) {\n if ((source.charCodeAt(offset) | 32) === E) { // case insensitive check for `e`\n code = source.charCodeAt(offset + 1);\n\n if (code === PLUSSIGN || code === HYPHENMINUS) {\n if (offset + 2 < source.length) {\n code = source.charCodeAt(offset + 2);\n }\n }\n\n if (isNumber(code)) {\n offset = findDecimalNumberEnd(source, offset + 2);\n }\n }\n }\n\n return offset;\n}\n\n// skip escaped unicode sequence that can ends with space\n// [0-9a-f]{1,6}(\\r\\n|[ \\n\\r\\t\\f])?\nfunction findEscaseEnd(source, offset) {\n for (var i = 0; i < 7 && offset + i < source.length; i++) {\n var code = source.charCodeAt(offset + i);\n\n if (i !== 6 && isHex(code)) {\n continue;\n }\n\n if (i > 0) {\n offset += i - 1 + isNewline(source, offset + i, code);\n if (code === SPACE || code === TAB) {\n offset++;\n }\n }\n\n break;\n }\n\n return offset;\n}\n\nfunction findIdentifierEnd(source, offset) {\n for (; offset < source.length; offset++) {\n var code = source.charCodeAt(offset);\n\n if (code === BACK_SLASH) {\n offset = findEscaseEnd(source, offset + 1);\n } else if (code < SYMBOL_TYPE_LENGTH && PUNCTUATION[code] === PUNCTUATOR) {\n break;\n }\n }\n\n return offset;\n}\n\nmodule.exports = {\n firstCharOffset: firstCharOffset,\n\n isHex: isHex,\n isNumber: isNumber,\n isNewline: isNewline,\n\n cmpChar: cmpChar,\n cmpStr: cmpStr,\n endsWith: endsWith,\n\n findLastNonSpaceLocation: findLastNonSpaceLocation,\n findWhitespaceEnd: findWhitespaceEnd,\n findCommentEnd: findCommentEnd,\n findStringEnd: findStringEnd,\n findDecimalNumberEnd: findDecimalNumberEnd,\n findNumberEnd: findNumberEnd,\n findEscaseEnd: findEscaseEnd,\n findIdentifierEnd: findIdentifierEnd\n};\n","'use strict';\n\nvar CssSyntaxError = require('./error');\n\nvar constants = require('./const');\nvar TYPE = constants.TYPE;\nvar NAME = constants.NAME;\nvar SYMBOL_TYPE = constants.SYMBOL_TYPE;\nvar SYMBOL_TYPE_LENGTH = SYMBOL_TYPE.length;\n\nvar utils = require('./utils');\nvar firstCharOffset = utils.firstCharOffset;\nvar cmpStr = utils.cmpStr;\nvar isNumber = utils.isNumber;\nvar findLastNonSpaceLocation = utils.findLastNonSpaceLocation;\nvar findWhitespaceEnd = utils.findWhitespaceEnd;\nvar findCommentEnd = utils.findCommentEnd;\nvar findStringEnd = utils.findStringEnd;\nvar findNumberEnd = utils.findNumberEnd;\nvar findIdentifierEnd = utils.findIdentifierEnd;\n\nvar NULL = 0;\nvar WHITESPACE = TYPE.Whitespace;\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar STRING = TYPE.String;\nvar COMMENT = TYPE.Comment;\nvar PUNCTUATOR = TYPE.Punctuator;\n\nvar N = 10;\nvar F = 12;\nvar R = 13;\nvar STAR = TYPE.Asterisk;\nvar SLASH = TYPE.Solidus;\nvar FULLSTOP = TYPE.FullStop;\nvar PLUSSIGN = TYPE.PlusSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\n\nvar MIN_BUFFER_SIZE = 16 * 1024;\nvar OFFSET_MASK = 0x00FFFFFF;\nvar TYPE_OFFSET = 24;\nvar SafeUint32Array = typeof Uint32Array !== 'undefined' ? Uint32Array : Array; // fallback on Array when TypedArray is not supported\n\nfunction computeLinesAndColumns(tokenizer, source) {\n var sourceLength = source.length;\n var start = firstCharOffset(source);\n var lines = tokenizer.lines;\n var line = tokenizer.startLine;\n var columns = tokenizer.columns;\n var column = tokenizer.startColumn;\n\n if (lines === null || lines.length < sourceLength + 1) {\n lines = new SafeUint32Array(Math.max(sourceLength + 1024, MIN_BUFFER_SIZE));\n columns = new SafeUint32Array(lines.length);\n }\n\n for (var i = start; i < sourceLength; i++) {\n var code = source.charCodeAt(i);\n\n lines[i] = line;\n columns[i] = column++;\n\n if (code === N || code === R || code === F) {\n if (code === R && i + 1 < sourceLength && source.charCodeAt(i + 1) === N) {\n i++;\n lines[i] = line;\n columns[i] = column;\n }\n\n line++;\n column = 1;\n }\n }\n\n lines[i] = line;\n columns[i] = column;\n\n tokenizer.linesAnsColumnsComputed = true;\n tokenizer.lines = lines;\n tokenizer.columns = columns;\n}\n\nfunction tokenLayout(tokenizer, source, startPos) {\n var sourceLength = source.length;\n var offsetAndType = tokenizer.offsetAndType;\n var tokenCount = 0;\n var prevType = 0;\n var offset = startPos;\n\n if (offsetAndType === null || offsetAndType.length < sourceLength + 1) {\n offsetAndType = new SafeUint32Array(sourceLength + 1024);\n }\n\n while (offset < sourceLength) {\n var code = source.charCodeAt(offset);\n var type = code < SYMBOL_TYPE_LENGTH ? SYMBOL_TYPE[code] : IDENTIFIER;\n\n switch (type) {\n case WHITESPACE:\n offset = findWhitespaceEnd(source, offset + 1);\n break;\n\n case PUNCTUATOR:\n if (code === STAR && prevType === SLASH) { // /*\n type = COMMENT;\n offset = findCommentEnd(source, offset + 1);\n tokenCount--; // rewrite prev token\n } else {\n // edge case for -.123 and +.123\n if (code === FULLSTOP && (prevType === PLUSSIGN || prevType === HYPHENMINUS)) {\n if (offset + 1 < sourceLength && isNumber(source.charCodeAt(offset + 1))) {\n type = NUMBER;\n offset = findNumberEnd(source, offset + 2, false);\n tokenCount--; // rewrite prev token\n break;\n }\n }\n\n type = code;\n offset = offset + 1;\n }\n\n break;\n\n case NUMBER:\n offset = findNumberEnd(source, offset + 1, prevType !== FULLSTOP);\n\n // merge number with a preceding dot, dash or plus\n if (prevType === FULLSTOP ||\n prevType === HYPHENMINUS ||\n prevType === PLUSSIGN) {\n tokenCount--; // rewrite prev token\n }\n\n break;\n\n case STRING:\n offset = findStringEnd(source, offset + 1, code);\n break;\n\n default:\n offset = findIdentifierEnd(source, offset);\n\n // merge identifier with a preceding dash\n if (prevType === HYPHENMINUS) {\n tokenCount--; // rewrite prev token\n }\n }\n\n offsetAndType[tokenCount++] = (type << TYPE_OFFSET) | offset;\n prevType = type;\n }\n\n offsetAndType[tokenCount] = offset;\n\n tokenizer.offsetAndType = offsetAndType;\n tokenizer.tokenCount = tokenCount;\n}\n\n//\n// tokenizer\n//\n\nvar Tokenizer = function(source, startOffset, startLine, startColumn) {\n this.offsetAndType = null;\n this.lines = null;\n this.columns = null;\n\n this.setSource(source || '', startOffset, startLine, startColumn);\n};\n\nTokenizer.prototype = {\n setSource: function(source, startOffset, startLine, startColumn) {\n var start = firstCharOffset(source);\n\n this.source = source;\n this.startOffset = typeof startOffset === 'undefined' ? 0 : startOffset;\n this.startLine = typeof startLine === 'undefined' ? 1 : startLine;\n this.startColumn = typeof startColumn === 'undefined' ? 1 : startColumn;\n this.linesAnsColumnsComputed = false;\n\n this.eof = false;\n this.currentToken = -1;\n this.tokenType = 0;\n this.tokenStart = start;\n this.tokenEnd = start;\n\n tokenLayout(this, source, start);\n this.next();\n },\n\n lookupType: function(offset) {\n offset += this.currentToken;\n\n if (offset < this.tokenCount) {\n return this.offsetAndType[offset] >> TYPE_OFFSET;\n }\n\n return NULL;\n },\n lookupNonWSType: function(offset) {\n offset += this.currentToken;\n\n for (var type; offset < this.tokenCount; offset++) {\n type = this.offsetAndType[offset] >> TYPE_OFFSET;\n\n if (type !== WHITESPACE) {\n return type;\n }\n }\n\n return NULL;\n },\n lookupValue: function(offset, referenceStr) {\n offset += this.currentToken;\n\n if (offset < this.tokenCount) {\n return cmpStr(\n this.source,\n this.offsetAndType[offset - 1] & OFFSET_MASK,\n this.offsetAndType[offset] & OFFSET_MASK,\n referenceStr\n );\n }\n\n return false;\n },\n\n getTokenValue: function() {\n return this.source.substring(this.tokenStart, this.tokenEnd);\n },\n substrToCursor: function(start) {\n return this.source.substring(start, this.tokenStart);\n },\n\n skipWS: function() {\n for (var i = this.currentToken, skipTokenCount = 0; i < this.tokenCount; i++, skipTokenCount++) {\n if ((this.offsetAndType[i] >> TYPE_OFFSET) !== WHITESPACE) {\n break;\n }\n }\n\n if (skipTokenCount > 0) {\n this.skip(skipTokenCount);\n }\n },\n skip: function(tokenCount) {\n var next = this.currentToken + tokenCount;\n\n if (next < this.tokenCount) {\n this.currentToken = next;\n this.tokenStart = this.offsetAndType[next - 1] & OFFSET_MASK;\n next = this.offsetAndType[next];\n this.tokenType = next >> TYPE_OFFSET;\n this.tokenEnd = next & OFFSET_MASK;\n } else {\n this.currentToken = this.tokenCount;\n this.next();\n }\n },\n next: function() {\n var next = this.currentToken + 1;\n\n if (next < this.tokenCount) {\n this.currentToken = next;\n this.tokenStart = this.tokenEnd;\n next = this.offsetAndType[next];\n this.tokenType = next >> TYPE_OFFSET;\n this.tokenEnd = next & OFFSET_MASK;\n } else {\n this.currentToken = this.tokenCount;\n this.eof = true;\n this.tokenType = NULL;\n this.tokenStart = this.tokenEnd = this.source.length;\n }\n },\n\n eat: function(tokenType) {\n if (this.tokenType !== tokenType) {\n this.error(\n NAME[tokenType] + ' is expected',\n // when test type is part of another token show error for current position + 1\n // e.g. eat(HYPHENMINUS) will fail on \"-foo\", but pointing on \"-\" is odd\n this.tokenStart + (this.source.charCodeAt(this.tokenStart) === tokenType ? 1 : 0)\n );\n }\n\n this.next();\n },\n eatNonWS: function(tokenType) {\n this.skipWS();\n this.eat(tokenType);\n },\n\n consume: function(tokenType) {\n var start = this.tokenStart;\n\n this.eat(tokenType);\n\n return this.substrToCursor(start);\n },\n consumeNonWS: function(tokenType) {\n this.skipWS();\n\n return this.consume(tokenType);\n },\n\n expectIdentifier: function(name) {\n if (this.tokenType !== IDENTIFIER || cmpStr(this.source, this.tokenStart, this.tokenEnd, name) === false) {\n this.error('Identifier `' + name + '` is expected');\n }\n\n this.next();\n },\n\n getLocation: function(offset, filename) {\n if (!this.linesAnsColumnsComputed) {\n computeLinesAndColumns(this, this.source);\n }\n\n return {\n source: filename,\n offset: this.startOffset + offset,\n line: this.lines[offset],\n column: this.columns[offset]\n };\n },\n\n getLocationRange: function(start, end, filename) {\n if (!this.linesAnsColumnsComputed) {\n computeLinesAndColumns(this, this.source);\n }\n\n return {\n source: filename,\n start: {\n offset: this.startOffset + start,\n line: this.lines[start],\n column: this.columns[start]\n },\n end: {\n offset: this.startOffset + end,\n line: this.lines[end],\n column: this.columns[end]\n }\n };\n },\n\n error: function(message, offset) {\n var location = typeof offset !== 'undefined' && offset < this.source.length\n ? this.getLocation(offset)\n : this.eof\n ? findLastNonSpaceLocation(this)\n : this.getLocation(this.tokenStart);\n\n throw new CssSyntaxError(\n message || 'Unexpected input',\n this.source,\n location.offset,\n location.line,\n location.column\n );\n },\n\n getTypes: function() {\n return Array.prototype.slice.call(this.offsetAndType, 0, this.tokenCount).map(function(item) {\n return NAME[item >> TYPE_OFFSET];\n });\n }\n};\n\n// extend with error class\nTokenizer.CssSyntaxError = CssSyntaxError;\n\n// extend tokenizer with constants\nObject.keys(constants).forEach(function(key) {\n Tokenizer[key] = constants[key];\n});\n\n// extend tokenizer with static methods from utils\nObject.keys(utils).forEach(function(key) {\n Tokenizer[key] = utils[key];\n});\n\n// warm up tokenizer to elimitate code branches that never execute\n// fix soft deoptimizations (insufficient type feedback)\nnew Tokenizer('\\n\\r\\r\\n\\f//\"\"\\'\\'/*\\r\\n\\f*/1a;.\\\\31\\t\\+2{url(a);+1.2e3 -.4e-5 .6e+7}').getLocation();\n\nmodule.exports = Tokenizer;\n","module.exports = require('./Tokenizer');\n","'use strict';\n\n//\n// item item item item\n// /------\\ /------\\ /------\\ /------\\\n// | data | | data | | data | | data |\n// null <--+-prev |<---+-prev |<---+-prev |<---+-prev |\n// | next-+--->| next-+--->| next-+--->| next-+--> null\n// \\------/ \\------/ \\------/ \\------/\n// ^ ^\n// | list |\n// | /------\\ |\n// \\--------------+-head | |\n// | tail-+--------------/\n// \\------/\n//\n\nfunction createItem(data) {\n return {\n prev: null,\n next: null,\n data: data\n };\n}\n\nvar cursors = null;\nvar List = function() {\n this.cursor = null;\n this.head = null;\n this.tail = null;\n};\n\nList.createItem = createItem;\nList.prototype.createItem = createItem;\n\nList.prototype.getSize = function() {\n var size = 0;\n var cursor = this.head;\n\n while (cursor) {\n size++;\n cursor = cursor.next;\n }\n\n return size;\n};\n\nList.prototype.fromArray = function(array) {\n var cursor = null;\n\n this.head = null;\n\n for (var i = 0; i < array.length; i++) {\n var item = createItem(array[i]);\n\n if (cursor !== null) {\n cursor.next = item;\n } else {\n this.head = item;\n }\n\n item.prev = cursor;\n cursor = item;\n }\n\n this.tail = cursor;\n\n return this;\n};\n\nList.prototype.toArray = function() {\n var cursor = this.head;\n var result = [];\n\n while (cursor) {\n result.push(cursor.data);\n cursor = cursor.next;\n }\n\n return result;\n};\n\nList.prototype.toJSON = List.prototype.toArray;\n\nList.prototype.isEmpty = function() {\n return this.head === null;\n};\n\nList.prototype.first = function() {\n return this.head && this.head.data;\n};\n\nList.prototype.last = function() {\n return this.tail && this.tail.data;\n};\n\nfunction allocateCursor(node, prev, next) {\n var cursor;\n\n if (cursors !== null) {\n cursor = cursors;\n cursors = cursors.cursor;\n cursor.prev = prev;\n cursor.next = next;\n cursor.cursor = node.cursor;\n } else {\n cursor = {\n prev: prev,\n next: next,\n cursor: node.cursor\n };\n }\n\n node.cursor = cursor;\n\n return cursor;\n}\n\nfunction releaseCursor(node) {\n var cursor = node.cursor;\n\n node.cursor = cursor.cursor;\n cursor.prev = null;\n cursor.next = null;\n cursor.cursor = cursors;\n cursors = cursor;\n}\n\nList.prototype.each = function(fn, context) {\n var item;\n\n if (context === undefined) {\n context = this;\n }\n\n // push cursor\n var cursor = allocateCursor(this, null, this.head);\n\n while (cursor.next !== null) {\n item = cursor.next;\n cursor.next = item.next;\n\n fn.call(context, item.data, item, this);\n }\n\n // pop cursor\n releaseCursor(this);\n};\n\nList.prototype.eachRight = function(fn, context) {\n var item;\n\n if (context === undefined) {\n context = this;\n }\n\n // push cursor\n var cursor = allocateCursor(this, this.tail, null);\n\n while (cursor.prev !== null) {\n item = cursor.prev;\n cursor.prev = item.prev;\n\n fn.call(context, item.data, item, this);\n }\n\n // pop cursor\n releaseCursor(this);\n};\n\nList.prototype.nextUntil = function(start, fn, context) {\n if (start === null) {\n return;\n }\n\n var item;\n\n if (context === undefined) {\n context = this;\n }\n\n // push cursor\n var cursor = allocateCursor(this, null, start);\n\n while (cursor.next !== null) {\n item = cursor.next;\n cursor.next = item.next;\n\n if (fn.call(context, item.data, item, this)) {\n break;\n }\n }\n\n // pop cursor\n releaseCursor(this);\n};\n\nList.prototype.prevUntil = function(start, fn, context) {\n if (start === null) {\n return;\n }\n\n var item;\n\n if (context === undefined) {\n context = this;\n }\n\n // push cursor\n var cursor = allocateCursor(this, start, null);\n\n while (cursor.prev !== null) {\n item = cursor.prev;\n cursor.prev = item.prev;\n\n if (fn.call(context, item.data, item, this)) {\n break;\n }\n }\n\n // pop cursor\n releaseCursor(this);\n};\n\nList.prototype.some = function(fn, context) {\n var cursor = this.head;\n\n if (context === undefined) {\n context = this;\n }\n\n while (cursor !== null) {\n if (fn.call(context, cursor.data, cursor, this)) {\n return true;\n }\n\n cursor = cursor.next;\n }\n\n return false;\n};\n\nList.prototype.map = function(fn, context) {\n var result = [];\n var cursor = this.head;\n\n if (context === undefined) {\n context = this;\n }\n\n while (cursor !== null) {\n result.push(fn.call(context, cursor.data, cursor, this));\n cursor = cursor.next;\n }\n\n return result;\n};\n\nList.prototype.clear = function() {\n this.head = null;\n this.tail = null;\n};\n\nList.prototype.copy = function() {\n var result = new List();\n var cursor = this.head;\n\n while (cursor !== null) {\n result.insert(createItem(cursor.data));\n cursor = cursor.next;\n }\n\n return result;\n};\n\nList.prototype.updateCursors = function(prevOld, prevNew, nextOld, nextNew) {\n var cursor = this.cursor;\n\n while (cursor !== null) {\n if (cursor.prev === prevOld) {\n cursor.prev = prevNew;\n }\n\n if (cursor.next === nextOld) {\n cursor.next = nextNew;\n }\n\n cursor = cursor.cursor;\n }\n};\n\nList.prototype.append = function(item) {\n // tail\n // ^\n // item\n this.updateCursors(this.tail, item, null, item);\n\n // insert to end of the list\n if (this.tail !== null) {\n // if list has a tail, then it also has a head, but head doesn't change\n\n // last item -> new item\n this.tail.next = item;\n\n // last item <- new item\n item.prev = this.tail;\n } else {\n // if list has no a tail, then it also has no a head\n // in this case points head to new item\n this.head = item;\n }\n\n // tail always start point to new item\n this.tail = item;\n\n return this;\n};\n\nList.prototype.appendData = function(data) {\n return this.append(createItem(data));\n};\n\nList.prototype.insert = function(item, before) {\n if (before !== undefined && before !== null) {\n // prev before\n // ^\n // item\n this.updateCursors(before.prev, item, before, item);\n\n if (before.prev === null) {\n // insert to the beginning of list\n if (this.head !== before) {\n throw new Error('before doesn\\'t below to list');\n }\n\n // since head points to before therefore list doesn't empty\n // no need to check tail\n this.head = item;\n before.prev = item;\n item.next = before;\n\n this.updateCursors(null, item);\n } else {\n\n // insert between two items\n before.prev.next = item;\n item.prev = before.prev;\n\n before.prev = item;\n item.next = before;\n }\n } else {\n this.append(item);\n }\n};\n\nList.prototype.remove = function(item) {\n // item\n // ^\n // prev next\n this.updateCursors(item, item.prev, item, item.next);\n\n if (item.prev !== null) {\n item.prev.next = item.next;\n } else {\n if (this.head !== item) {\n throw new Error('item doesn\\'t below to list');\n }\n\n this.head = item.next;\n }\n\n if (item.next !== null) {\n item.next.prev = item.prev;\n } else {\n if (this.tail !== item) {\n throw new Error('item doesn\\'t below to list');\n }\n\n this.tail = item.prev;\n }\n\n item.prev = null;\n item.next = null;\n\n return item;\n};\n\nList.prototype.appendList = function(list) {\n // ignore empty lists\n if (list.head === null) {\n return;\n }\n\n this.updateCursors(this.tail, list.tail, null, list.head);\n\n // insert to end of the list\n if (this.tail !== null) {\n // if destination list has a tail, then it also has a head,\n // but head doesn't change\n\n // dest tail -> source head\n this.tail.next = list.head;\n\n // dest tail <- source head\n list.head.prev = this.tail;\n } else {\n // if list has no a tail, then it also has no a head\n // in this case points head to new item\n this.head = list.head;\n }\n\n // tail always start point to new item\n this.tail = list.tail;\n\n list.head = null;\n list.tail = null;\n};\n\nmodule.exports = List;\n","var List = require('../utils/list');\nvar cmpChar = require('../tokenizer').cmpChar;\nvar TYPE = require('../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.Whitespace;\nvar IDENTIFIER = TYPE.Identifier;\nvar STRING = TYPE.String;\nvar NUMBER = TYPE.Number;\nvar COMMENT = TYPE.Comment;\nvar NUMBERSIGN = TYPE.NumberSign;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar LEFTSQUAREBRACKET = TYPE.LeftSquareBracket;\nvar PLUSSIGN = TYPE.PlusSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar COMMA = TYPE.Comma;\nvar SOLIDUS = TYPE.Solidus;\nvar ASTERISK = TYPE.Asterisk;\nvar PERCENTSIGN = TYPE.PercentSign;\nvar FULLSTOP = TYPE.FullStop;\nvar COLON = TYPE.Colon;\nvar GREATERTHANSIGN = TYPE.GreaterThanSign;\nvar VERTICALLINE = TYPE.VerticalLine;\nvar TILDE = TYPE.Tilde;\nvar U = 117; // 'u'.charCodeAt(0)\n\nvar ALLOW_OF_CLAUSE = true;\nvar DISALLOW_OF_CLAUSE = false;\n\nfunction singleIdentifier() {\n return new List().appendData(\n this.Identifier()\n );\n}\n\nfunction selectorList() {\n return new List().appendData(\n this.SelectorList()\n );\n}\n\nfunction compoundSelector() {\n return new List().appendData(\n this.Selector()\n );\n}\n\nfunction nth() {\n return new List().appendData(\n this.Nth(DISALLOW_OF_CLAUSE)\n );\n}\n\nfunction nthWithOfClause() {\n return new List().appendData(\n this.Nth(ALLOW_OF_CLAUSE)\n );\n}\n\nfunction selectorSequence() {\n var children = new List();\n var space = null;\n var child = null;\n var ignoreWSAfter = false;\n var ignoreWS = false;\n\n this.readSC();\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case COMMENT:\n this.scanner.next();\n continue;\n\n case WHITESPACE:\n if (ignoreWS) {\n this.scanner.next();\n } else {\n space = this.WhiteSpace();\n }\n continue;\n\n case PLUSSIGN:\n case GREATERTHANSIGN:\n case TILDE:\n space = null;\n ignoreWSAfter = true;\n child = this.Combinator();\n break;\n\n case SOLIDUS: // /deep/\n child = this.Combinator();\n break;\n\n case FULLSTOP:\n child = this.ClassSelector();\n break;\n\n case LEFTSQUAREBRACKET:\n child = this.AttributeSelector();\n break;\n\n case NUMBERSIGN:\n child = this.IdSelector();\n break;\n\n case COLON:\n if (this.scanner.lookupType(1) === COLON) {\n child = this.PseudoElementSelector();\n } else {\n child = this.PseudoClassSelector();\n }\n\n break;\n\n case IDENTIFIER:\n case ASTERISK:\n case VERTICALLINE:\n child = this.TypeSelector();\n break;\n\n case NUMBER:\n child = this.Percentage();\n break;\n\n default:\n if (typeof this.readSelectorSequenceFallback === 'function') {\n child = this.readSelectorSequenceFallback();\n if (!child) {\n break scan;\n }\n } else {\n break scan;\n }\n }\n\n if (space !== null) {\n children.appendData(space);\n space = null;\n }\n\n children.appendData(child);\n\n if (ignoreWSAfter) {\n ignoreWSAfter = false;\n ignoreWS = true;\n } else {\n ignoreWS = false;\n }\n }\n\n // nothing were consumed\n if (child === null) {\n this.scanner.error('Selector is expected');\n }\n\n return children;\n}\n\nfunction defaultSequence(scope) {\n var children = new List();\n var space = null;\n var child = null;\n var ignoreWSAfter = false;\n var ignoreWS = false;\n\n this.readSC();\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case COMMENT:\n this.scanner.next();\n continue;\n\n case WHITESPACE:\n if (ignoreWS) {\n this.scanner.next();\n } else {\n space = this.WhiteSpace();\n }\n continue;\n\n case NUMBERSIGN:\n child = this.HexColor();\n break;\n\n case COMMA:\n space = null;\n ignoreWSAfter = true;\n child = this.Operator();\n break;\n\n case SOLIDUS:\n case ASTERISK:\n case PLUSSIGN:\n case HYPHENMINUS:\n child = this.Operator();\n break;\n\n case LEFTPARENTHESIS:\n child = this.Parentheses(defaultSequence);\n break;\n\n case LEFTSQUAREBRACKET:\n child = this.Brackets(defaultSequence);\n break;\n\n case STRING:\n child = this.String();\n break;\n\n case NUMBER:\n switch (this.scanner.lookupType(1)) {\n case PERCENTSIGN:\n child = this.Percentage();\n break;\n\n case IDENTIFIER:\n child = this.Dimension();\n break;\n\n default:\n child = this.Number();\n }\n\n break;\n\n case IDENTIFIER:\n // check for unicode range, it should start with u+ or U+\n if (cmpChar(this.scanner.source, this.scanner.tokenStart, U) &&\n cmpChar(this.scanner.source, this.scanner.tokenStart + 1, PLUSSIGN)) {\n child = this.UnicodeRange();\n } else if (this.scanner.lookupType(1) === LEFTPARENTHESIS) {\n if (this.scanner.lookupValue(0, 'url')) {\n child = this.Url();\n } else {\n child = this.Function(scope, defaultSequence);\n }\n } else {\n child = this.Identifier();\n }\n\n break;\n\n default:\n if (typeof this.readSequenceFallback === 'function') {\n child = this.readSequenceFallback();\n if (!child) {\n break scan;\n }\n } else {\n break scan;\n }\n }\n\n if (space !== null) {\n children.appendData(space);\n space = null;\n }\n\n children.appendData(child);\n\n if (ignoreWSAfter) {\n ignoreWSAfter = false;\n ignoreWS = true;\n } else {\n ignoreWS = false;\n }\n }\n\n return children;\n}\n\nmodule.exports = {\n singleIdentifier: singleIdentifier,\n selectorList: selectorList,\n compoundSelector: compoundSelector,\n nth: nth,\n nthWithOfClause: nthWithOfClause,\n selector: selectorSequence,\n default: defaultSequence\n};\n","var cmpChar = require('../../tokenizer').cmpChar;\nvar isNumber = require('../../tokenizer').isNumber;\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar PLUSSIGN = TYPE.PlusSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar N = 110; // 'n'.charCodeAt(0)\nvar DISALLOW_SIGN = true;\nvar ALLOW_SIGN = false;\n\nfunction checkTokenIsInteger(scanner, disallowSign) {\n var pos = scanner.tokenStart;\n\n if (scanner.source.charCodeAt(pos) === PLUSSIGN ||\n scanner.source.charCodeAt(pos) === HYPHENMINUS) {\n if (disallowSign) {\n scanner.error();\n }\n pos++;\n }\n\n for (; pos < scanner.tokenEnd; pos++) {\n if (!isNumber(scanner.source.charCodeAt(pos))) {\n scanner.error('Unexpected input', pos);\n }\n }\n}\n\n// An+B microsyntax https://www.w3.org/TR/css-syntax-3/#anb\nmodule.exports = function AnPlusB() {\n var start = this.scanner.tokenStart;\n var end = start;\n var prefix = '';\n var a = null;\n var b = null;\n\n if (this.scanner.tokenType === NUMBER ||\n this.scanner.tokenType === PLUSSIGN) {\n checkTokenIsInteger(this.scanner, ALLOW_SIGN);\n prefix = this.scanner.getTokenValue();\n this.scanner.next();\n end = this.scanner.tokenStart;\n }\n\n if (this.scanner.tokenType === IDENTIFIER) {\n var bStart = this.scanner.tokenStart;\n\n if (cmpChar(this.scanner.source, bStart, HYPHENMINUS)) {\n if (prefix === '') {\n prefix = '-';\n bStart++;\n } else {\n this.scanner.error('Unexpected hyphen minus');\n }\n }\n\n if (!cmpChar(this.scanner.source, bStart, N)) {\n this.scanner.error();\n }\n\n a = prefix === '' ? '1' :\n prefix === '+' ? '+1' :\n prefix === '-' ? '-1' :\n prefix;\n\n var len = this.scanner.tokenEnd - bStart;\n if (len > 1) {\n // ..n-..\n if (this.scanner.source.charCodeAt(bStart + 1) !== HYPHENMINUS) {\n this.scanner.error('Unexpected input', bStart + 1);\n }\n\n if (len > 2) {\n // ..n-{number}..\n this.scanner.tokenStart = bStart + 2;\n } else {\n // ..n- {number}\n this.scanner.next();\n this.readSC();\n }\n\n checkTokenIsInteger(this.scanner, DISALLOW_SIGN);\n b = '-' + this.scanner.getTokenValue();\n this.scanner.next();\n end = this.scanner.tokenStart;\n } else {\n prefix = '';\n this.scanner.next();\n end = this.scanner.tokenStart;\n this.readSC();\n\n if (this.scanner.tokenType === HYPHENMINUS ||\n this.scanner.tokenType === PLUSSIGN) {\n prefix = this.scanner.getTokenValue();\n this.scanner.next();\n this.readSC();\n }\n\n if (this.scanner.tokenType === NUMBER) {\n checkTokenIsInteger(this.scanner, prefix !== '');\n\n if (!isNumber(this.scanner.source.charCodeAt(this.scanner.tokenStart))) {\n prefix = this.scanner.source.charAt(this.scanner.tokenStart);\n this.scanner.tokenStart++;\n }\n\n if (prefix === '') {\n // should be an operator before number\n this.scanner.error();\n } else if (prefix === '+') {\n // plus is using by default\n prefix = '';\n }\n\n b = prefix + this.scanner.getTokenValue();\n\n this.scanner.next();\n end = this.scanner.tokenStart;\n } else {\n if (prefix) {\n this.scanner.eat(NUMBER);\n }\n }\n }\n } else {\n if (prefix === '' || prefix === '+') { // no number\n this.scanner.error(\n 'Number or identifier is expected',\n this.scanner.tokenStart + (\n this.scanner.tokenType === PLUSSIGN ||\n this.scanner.tokenType === HYPHENMINUS\n )\n );\n }\n\n b = prefix;\n }\n\n return {\n type: 'AnPlusB',\n loc: this.getLocation(start, end),\n a: a,\n b: b\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar SEMICOLON = TYPE.Semicolon;\nvar COMMERCIALAT = TYPE.CommercialAt;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\nvar RIGHTCURLYBRACKET = TYPE.RightCurlyBracket;\nvar BALANCED = true;\n\nfunction isBlockAtrule() {\n for (var offset = 1, type; type = this.scanner.lookupType(offset); offset++) {\n if (type === RIGHTCURLYBRACKET) {\n return true;\n }\n\n if (type === LEFTCURLYBRACKET ||\n type === COMMERCIALAT) {\n return false;\n }\n }\n\n this.scanner.skip(offset);\n this.scanner.eat(RIGHTCURLYBRACKET);\n}\n\nmodule.exports = function Atrule() {\n var start = this.scanner.tokenStart;\n var name;\n var nameLowerCase;\n var expression = null;\n var block = null;\n\n this.scanner.eat(COMMERCIALAT);\n\n name = this.scanner.consume(IDENTIFIER);\n nameLowerCase = name.toLowerCase();\n this.readSC();\n\n if (this.parseAtruleExpression) {\n expression = this.AtruleExpression(name);\n this.readSC();\n } else {\n expression = this.Raw(BALANCED, SEMICOLON, LEFTCURLYBRACKET);\n }\n\n if (this.atrule.hasOwnProperty(nameLowerCase)) {\n if (typeof this.atrule[nameLowerCase].block === 'function') {\n if (this.scanner.tokenType !== LEFTCURLYBRACKET) {\n this.scanner.error('Curly bracket is expected');\n }\n\n block = this.atrule[nameLowerCase].block.call(this);\n } else {\n this.scanner.eat(SEMICOLON);\n }\n } else {\n switch (this.scanner.tokenType) {\n case SEMICOLON:\n this.scanner.next();\n break;\n\n case LEFTCURLYBRACKET:\n block = this.Block(isBlockAtrule.call(this) ? this.Declaration : this.Rule);\n break;\n\n default:\n this.scanner.error('Semicolon or block is expected');\n }\n }\n\n return {\n type: 'Atrule',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n expression: expression,\n block: block\n };\n};\n","var List = require('../../utils/list');\n\nmodule.exports = function AtruleExpression(name) {\n var children = null;\n\n if (name !== null) {\n name = name.toLowerCase();\n }\n\n // custom consumer\n if (this.atrule.hasOwnProperty(name)) {\n if (typeof this.atrule[name].expression === 'function') {\n children = this.atrule[name].expression.call(this);\n\n if (children instanceof List === false) {\n return children;\n }\n }\n } else {\n // default consumer\n this.readSC();\n children = this.readSequence(this.scopeAtruleExpression);\n }\n\n if (children === null || children.isEmpty()) {\n return null;\n }\n\n return {\n type: 'AtruleExpression',\n loc: this.getLocationFromList(children),\n children: children\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar STRING = TYPE.String;\nvar DOLLARSIGN = TYPE.DollarSign;\nvar ASTERISK = TYPE.Asterisk;\nvar COLON = TYPE.Colon;\nvar EQUALSSIGN = TYPE.EqualsSign;\nvar LEFTSQUAREBRACKET = TYPE.LeftSquareBracket;\nvar RIGHTSQUAREBRACKET = TYPE.RightSquareBracket;\nvar CIRCUMFLEXACCENT = TYPE.CircumflexAccent;\nvar VERTICALLINE = TYPE.VerticalLine;\nvar TILDE = TYPE.Tilde;\n\nfunction getAttributeName() {\n if (this.scanner.eof) {\n this.scanner.error('Unexpected end of input');\n }\n\n var start = this.scanner.tokenStart;\n var expectIdentifier = false;\n var checkColon = true;\n\n if (this.scanner.tokenType === ASTERISK) {\n expectIdentifier = true;\n checkColon = false;\n this.scanner.next();\n } else if (this.scanner.tokenType !== VERTICALLINE) {\n this.scanner.eat(IDENTIFIER);\n }\n\n if (this.scanner.tokenType === VERTICALLINE) {\n if (this.scanner.lookupType(1) !== EQUALSSIGN) {\n this.scanner.next();\n this.scanner.eat(IDENTIFIER);\n } else if (expectIdentifier) {\n this.scanner.error('Identifier is expected', this.scanner.tokenEnd);\n }\n } else if (expectIdentifier) {\n this.scanner.error('Vertical line is expected');\n }\n\n if (checkColon && this.scanner.tokenType === COLON) {\n this.scanner.next();\n this.scanner.eat(IDENTIFIER);\n }\n\n return {\n type: 'Identifier',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: this.scanner.substrToCursor(start)\n };\n}\n\nfunction getOperator() {\n var start = this.scanner.tokenStart;\n var tokenType = this.scanner.tokenType;\n\n if (tokenType !== EQUALSSIGN && // =\n tokenType !== TILDE && // ~=\n tokenType !== CIRCUMFLEXACCENT && // ^=\n tokenType !== DOLLARSIGN && // $=\n tokenType !== ASTERISK && // *=\n tokenType !== VERTICALLINE // |=\n ) {\n this.scanner.error('Attribute selector (=, ~=, ^=, $=, *=, |=) is expected');\n }\n\n if (tokenType === EQUALSSIGN) {\n this.scanner.next();\n } else {\n this.scanner.next();\n this.scanner.eat(EQUALSSIGN);\n }\n\n return this.scanner.substrToCursor(start);\n}\n\n// '[' S* attrib_name ']'\n// '[' S* attrib_name S* attrib_match S* [ IDENT | STRING ] S* attrib_flags? S* ']'\nmodule.exports = function AttributeSelector() {\n var start = this.scanner.tokenStart;\n var name;\n var operator = null;\n var value = null;\n var flags = null;\n\n this.scanner.eat(LEFTSQUAREBRACKET);\n this.readSC();\n\n name = getAttributeName.call(this);\n this.readSC();\n\n if (this.scanner.tokenType !== RIGHTSQUAREBRACKET) {\n // avoid case `[name i]`\n if (this.scanner.tokenType !== IDENTIFIER) {\n operator = getOperator.call(this);\n\n this.readSC();\n\n value = this.scanner.tokenType === STRING\n ? this.String()\n : this.Identifier();\n\n this.readSC();\n }\n\n // attribute flags\n if (this.scanner.tokenType === IDENTIFIER) {\n flags = this.scanner.getTokenValue();\n this.scanner.next();\n\n this.readSC();\n }\n }\n\n this.scanner.eat(RIGHTSQUAREBRACKET);\n\n return {\n type: 'AttributeSelector',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n operator: operator,\n value: value,\n flags: flags\n };\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.Whitespace;\nvar COMMENT = TYPE.Comment;\nvar SEMICOLON = TYPE.Semicolon;\nvar COMMERCIALAT = TYPE.CommercialAt;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\nvar RIGHTCURLYBRACKET = TYPE.RightCurlyBracket;\n\nmodule.exports = function Block(defaultConsumer) {\n defaultConsumer = defaultConsumer || this.Declaration;\n\n var start = this.scanner.tokenStart;\n var children = new List();\n\n this.scanner.eat(LEFTCURLYBRACKET);\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case RIGHTCURLYBRACKET:\n break scan;\n\n case WHITESPACE:\n case COMMENT:\n case SEMICOLON:\n this.scanner.next();\n break;\n\n case COMMERCIALAT:\n children.appendData(this.Atrule());\n break;\n\n default:\n children.appendData(defaultConsumer.call(this));\n }\n }\n\n this.scanner.eat(RIGHTCURLYBRACKET);\n\n return {\n type: 'Block',\n loc: this.getLocation(start, this.scanner.tokenStart),\n children: children\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar LEFTSQUAREBRACKET = TYPE.LeftSquareBracket;\nvar RIGHTSQUAREBRACKET = TYPE.RightSquareBracket;\n\n// currently only Grid Layout uses square brackets, but left it universal\n// https://drafts.csswg.org/css-grid/#track-sizing\n// [ ident* ]\nmodule.exports = function Brackets(readSequence) {\n var start = this.scanner.tokenStart;\n var children = null;\n\n this.scanner.eat(LEFTSQUAREBRACKET);\n children = readSequence.call(this);\n this.scanner.eat(RIGHTSQUAREBRACKET);\n\n return {\n type: 'Brackets',\n loc: this.getLocation(start, this.scanner.tokenStart),\n children: children\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar IDENTIFIER = TYPE.Identifier;\nvar FULLSTOP = TYPE.FullStop;\n\n// '.' ident\nmodule.exports = function ClassSelector() {\n this.scanner.eat(FULLSTOP);\n\n return {\n type: 'ClassSelector',\n loc: this.getLocation(this.scanner.tokenStart - 1, this.scanner.tokenEnd),\n name: this.scanner.consume(IDENTIFIER)\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar PLUSSIGN = TYPE.PlusSign;\nvar SOLIDUS = TYPE.Solidus;\nvar GREATERTHANSIGN = TYPE.GreaterThanSign;\nvar TILDE = TYPE.Tilde;\n\n// + | > | ~ | /deep/\nmodule.exports = function Combinator() {\n var start = this.scanner.tokenStart;\n\n switch (this.scanner.tokenType) {\n case GREATERTHANSIGN:\n case PLUSSIGN:\n case TILDE:\n this.scanner.next();\n break;\n\n case SOLIDUS:\n this.scanner.next();\n this.scanner.expectIdentifier('deep');\n this.scanner.eat(SOLIDUS);\n break;\n\n default:\n this.scanner.error('Combinator is expected');\n }\n\n return {\n type: 'Combinator',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: this.scanner.substrToCursor(start)\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar ASTERISK = TYPE.Asterisk;\nvar SOLIDUS = TYPE.Solidus;\n\n// '/*' .* '*/'\nmodule.exports = function Comment() {\n var start = this.scanner.tokenStart;\n var end = this.scanner.tokenEnd;\n\n if ((end - start + 2) >= 2 &&\n this.scanner.source.charCodeAt(end - 2) === ASTERISK &&\n this.scanner.source.charCodeAt(end - 1) === SOLIDUS) {\n end -= 2;\n }\n\n this.scanner.next();\n\n return {\n type: 'Comment',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: this.scanner.source.substring(start + 2, end)\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar COLON = TYPE.Colon;\nvar EXCLAMATIONMARK = TYPE.ExclamationMark;\nvar SOLIDUS = TYPE.Solidus;\nvar ASTERISK = TYPE.Asterisk;\nvar DOLLARSIGN = TYPE.DollarSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar SEMICOLON = TYPE.Semicolon;\nvar RIGHTCURLYBRACKET = TYPE.RightCurlyBracket;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\nvar BALANCED = true;\n\nfunction readProperty() {\n var start = this.scanner.tokenStart;\n var prefix = 0;\n\n // hacks\n switch (this.scanner.tokenType) {\n case ASTERISK:\n case DOLLARSIGN:\n prefix = 1;\n break;\n\n // TODO: not sure we should support this hack\n case SOLIDUS:\n prefix = this.scanner.lookupType(1) === SOLIDUS ? 2 : 1;\n break;\n }\n\n if (this.scanner.lookupType(prefix) === HYPHENMINUS) {\n prefix++;\n }\n\n if (prefix) {\n this.scanner.skip(prefix);\n }\n\n this.scanner.eat(IDENTIFIER);\n\n return this.scanner.substrToCursor(start);\n}\n\n// ! ws* important\nfunction getImportant() {\n this.scanner.eat(EXCLAMATIONMARK);\n this.readSC();\n\n this.scanner.expectIdentifier('important');\n\n // should return identifier in future for original source restoring as is\n // returns true for now since it's fit to optimizer purposes\n return true;\n}\n\nfunction isCustomProperty(name) {\n return name.length >= 2 &&\n name.charCodeAt(0) === HYPHENMINUS &&\n name.charCodeAt(1) === HYPHENMINUS;\n}\n\nmodule.exports = function Declaration() {\n var start = this.scanner.tokenStart;\n var property = readProperty.call(this);\n var important = false;\n var value;\n\n this.readSC();\n this.scanner.eat(COLON);\n\n if (isCustomProperty(property) ? this.parseCustomProperty : this.parseValue) {\n value = this.Value(property);\n } else {\n value = this.Raw(BALANCED, SEMICOLON, EXCLAMATIONMARK);\n }\n\n if (this.scanner.tokenType === EXCLAMATIONMARK) {\n important = getImportant.call(this);\n this.readSC();\n }\n\n // TODO: include or not to include semicolon to range?\n // if (this.scanner.tokenType === SEMICOLON) {\n // this.scanner.next();\n // }\n\n if (!this.scanner.eof &&\n this.scanner.tokenType !== SEMICOLON &&\n this.scanner.tokenType !== RIGHTPARENTHESIS &&\n this.scanner.tokenType !== RIGHTCURLYBRACKET) {\n this.scanner.error();\n }\n\n return {\n type: 'Declaration',\n loc: this.getLocation(start, this.scanner.tokenStart),\n important: important,\n property: property,\n value: value\n };\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.Whitespace;\nvar COMMENT = TYPE.Comment;\nvar SEMICOLON = TYPE.Semicolon;\n\nmodule.exports = function DeclarationList() {\n var children = new List();\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case WHITESPACE:\n case COMMENT:\n case SEMICOLON:\n this.scanner.next();\n break;\n\n default:\n children.appendData(this.Declaration());\n }\n }\n\n return {\n type: 'DeclarationList',\n loc: this.getLocationFromList(children),\n children: children\n };\n};\n","var NUMBER = require('../../tokenizer').TYPE.Number;\n\n// special reader for units to avoid adjoined IE hacks (i.e. '1px\\9')\nfunction readUnit(scanner) {\n var unit = scanner.getTokenValue();\n var backSlashPos = unit.indexOf('\\\\');\n\n if (backSlashPos !== -1) {\n // patch token offset\n scanner.tokenStart += backSlashPos;\n\n // return part before backslash\n return unit.substring(0, backSlashPos);\n }\n\n // no backslash in unit name\n scanner.next();\n\n return unit;\n}\n\n// number ident\nmodule.exports = function Dimension() {\n var start = this.scanner.tokenStart;\n var value = this.scanner.consume(NUMBER);\n var unit = readUnit(this.scanner);\n\n return {\n type: 'Dimension',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: value,\n unit: unit\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\n\n// ident '(' <sequence> ')'\nmodule.exports = function Function(scope, readSequence) {\n var start = this.scanner.tokenStart;\n var name = this.scanner.consume(IDENTIFIER);\n var nameLowerCase = name.toLowerCase();\n var children;\n\n this.scanner.eat(LEFTPARENTHESIS);\n\n children = scope.hasOwnProperty(nameLowerCase)\n ? scope[nameLowerCase].call(this, scope, start, readSequence)\n : readSequence.call(this, scope);\n\n this.scanner.eat(RIGHTPARENTHESIS);\n\n return {\n type: 'Function',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n children: children\n };\n};\n","var isNumber = require('../../tokenizer').isNumber;\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar NUMBERSIGN = TYPE.NumberSign;\nvar PLUSSIGN = TYPE.PlusSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar FULLSTOP = TYPE.FullStop;\n\n// # ident\nmodule.exports = function HexColor() {\n var start = this.scanner.tokenStart;\n\n this.scanner.eat(NUMBERSIGN);\n\n scan:\n switch (this.scanner.tokenType) {\n case NUMBER:\n if (!isNumber(this.scanner.source.charCodeAt(this.scanner.tokenStart))) {\n this.scanner.error('Unexpected input', this.scanner.tokenStart);\n }\n\n for (var pos = this.scanner.tokenStart + 1; pos < this.scanner.tokenEnd; pos++) {\n var code = this.scanner.source.charCodeAt(pos);\n\n // break on fullstop or hyperminus/plussign after exponent\n if (code === FULLSTOP || code === HYPHENMINUS || code === PLUSSIGN) {\n // break token, exclude symbol\n this.scanner.tokenStart = pos;\n break scan;\n }\n }\n\n // number contains digits only, go to next token\n this.scanner.next();\n\n // if next token is identifier add it to result\n // TODO: consume hex only\n if (this.scanner.tokenType === IDENTIFIER) {\n this.scanner.next();\n }\n\n break;\n\n case IDENTIFIER:\n // TODO: consume hex only\n this.scanner.next(); // add token to result\n break;\n\n default:\n this.scanner.error('Number or identifier is expected');\n }\n\n return {\n type: 'HexColor',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: this.scanner.substrToCursor(start + 1) // skip #\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar IDENTIFIER = TYPE.Identifier;\n\nmodule.exports = function Identifier() {\n return {\n type: 'Identifier',\n loc: this.getLocation(this.scanner.tokenStart, this.scanner.tokenEnd),\n name: this.scanner.consume(IDENTIFIER)\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBERSIGN = TYPE.NumberSign;\n\n// '#' ident\nmodule.exports = function IdSelector() {\n this.scanner.eat(NUMBERSIGN);\n\n return {\n type: 'IdSelector',\n loc: this.getLocation(this.scanner.tokenStart - 1, this.scanner.tokenEnd),\n name: this.scanner.consume(IDENTIFIER)\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\nvar COLON = TYPE.Colon;\nvar SOLIDUS = TYPE.Solidus;\n\nmodule.exports = function MediaFeature() {\n var start = this.scanner.tokenStart;\n var name;\n var value = null;\n\n this.scanner.eat(LEFTPARENTHESIS);\n this.readSC();\n\n name = this.scanner.consume(IDENTIFIER);\n this.readSC();\n\n if (this.scanner.tokenType !== RIGHTPARENTHESIS) {\n this.scanner.eat(COLON);\n this.readSC();\n\n switch (this.scanner.tokenType) {\n case NUMBER:\n if (this.scanner.lookupType(1) === IDENTIFIER) {\n value = this.Dimension();\n } else if (this.scanner.lookupNonWSType(1) === SOLIDUS) {\n value = this.Ratio();\n } else {\n value = this.Number();\n }\n\n break;\n\n case IDENTIFIER:\n value = this.Identifier();\n\n break;\n\n default:\n this.scanner.error('Number, dimension, ratio or identifier is expected');\n }\n\n this.readSC();\n }\n\n this.scanner.eat(RIGHTPARENTHESIS);\n\n return {\n type: 'MediaFeature',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n value: value\n };\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.Whitespace;\nvar COMMENT = TYPE.Comment;\nvar IDENTIFIER = TYPE.Identifier;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\n\nmodule.exports = function MediaQuery() {\n this.readSC();\n\n var children = new List();\n var child = null;\n var space = null;\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case COMMENT:\n this.scanner.next();\n continue;\n\n case WHITESPACE:\n space = this.WhiteSpace();\n continue;\n\n case IDENTIFIER:\n child = this.Identifier();\n break;\n\n case LEFTPARENTHESIS:\n child = this.MediaFeature();\n break;\n\n default:\n break scan;\n }\n\n if (space !== null) {\n children.appendData(space);\n space = null;\n }\n\n children.appendData(child);\n }\n\n if (child === null) {\n this.scanner.error('Identifier or parenthesis is expected');\n }\n\n return {\n type: 'MediaQuery',\n loc: this.getLocationFromList(children),\n children: children\n };\n};\n","var List = require('../../utils/list');\nvar COMMA = require('../../tokenizer').TYPE.Comma;\n\nmodule.exports = function MediaQueryList(relative) {\n var children = new List();\n\n this.readSC();\n\n while (!this.scanner.eof) {\n children.appendData(this.MediaQuery(relative));\n\n if (this.scanner.tokenType !== COMMA) {\n break;\n }\n\n this.scanner.next();\n }\n\n return {\n type: 'MediaQueryList',\n loc: this.getLocationFromList(children),\n children: children\n };\n};\n","// https://drafts.csswg.org/css-syntax-3/#the-anb-type\nmodule.exports = function Nth(allowOfClause) {\n this.readSC();\n\n var start = this.scanner.tokenStart;\n var end = start;\n var selector = null;\n var query;\n\n if (this.scanner.lookupValue(0, 'odd') || this.scanner.lookupValue(0, 'even')) {\n query = this.Identifier();\n } else {\n query = this.AnPlusB();\n }\n\n this.readSC();\n\n if (allowOfClause && this.scanner.lookupValue(0, 'of')) {\n this.scanner.next();\n\n selector = this.SelectorList();\n\n if (this.needPositions) {\n end = selector.children.last().loc.end.offset;\n }\n } else {\n if (this.needPositions) {\n end = query.loc.end.offset;\n }\n }\n\n return {\n type: 'Nth',\n loc: this.getLocation(start, end),\n nth: query,\n selector: selector\n };\n};\n","var NUMBER = require('../../tokenizer').TYPE.Number;\n\nmodule.exports = function Number() {\n return {\n type: 'Number',\n loc: this.getLocation(this.scanner.tokenStart, this.scanner.tokenEnd),\n value: this.scanner.consume(NUMBER)\n };\n};\n","// '/' | '*' | ',' | ':' | '+' | '-'\nmodule.exports = function Operator() {\n var start = this.scanner.tokenStart;\n\n this.scanner.next();\n\n return {\n type: 'Operator',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: this.scanner.substrToCursor(start)\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\n\nmodule.exports = function Parentheses(readSequence) {\n var start = this.scanner.tokenStart;\n var children = null;\n\n this.scanner.eat(LEFTPARENTHESIS);\n children = readSequence.call(this);\n this.scanner.eat(RIGHTPARENTHESIS);\n\n return {\n type: 'Parentheses',\n loc: this.getLocation(start, this.scanner.tokenStart),\n children: children\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar NUMBER = TYPE.Number;\nvar PERCENTSIGN = TYPE.PercentSign;\n\nmodule.exports = function Percentage() {\n var start = this.scanner.tokenStart;\n var number = this.scanner.consume(NUMBER);\n\n this.scanner.eat(PERCENTSIGN);\n\n return {\n type: 'Percentage',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: number\n };\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar COLON = TYPE.Colon;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\nvar BALANCED = true;\n\n// : ident [ '(' .. ')' ]?\nmodule.exports = function PseudoClassSelector() {\n var start = this.scanner.tokenStart;\n var name;\n var children = null;\n\n this.scanner.eat(COLON);\n\n name = this.scanner.consume(IDENTIFIER);\n\n if (this.scanner.tokenType === LEFTPARENTHESIS) {\n var nameLowerCase = name.toLowerCase();\n\n this.scanner.next();\n\n if (this.pseudo.hasOwnProperty(nameLowerCase)) {\n this.readSC();\n children = this.pseudo[nameLowerCase].call(this);\n this.readSC();\n } else {\n children = new List().appendData(this.Raw(BALANCED, 0, 0));\n }\n\n this.scanner.eat(RIGHTPARENTHESIS);\n }\n\n return {\n type: 'PseudoClassSelector',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n children: children\n };\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar COLON = TYPE.Colon;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\nvar BALANCED = true;\n\n// :: ident [ '(' .. ')' ]?\nmodule.exports = function PseudoElementSelector() {\n var start = this.scanner.tokenStart;\n var name;\n var children = null;\n\n this.scanner.eat(COLON);\n this.scanner.eat(COLON);\n\n name = this.scanner.consume(IDENTIFIER);\n\n if (this.scanner.tokenType === LEFTPARENTHESIS) {\n var nameLowerCase = name.toLowerCase();\n\n this.scanner.next();\n\n if (this.pseudo.hasOwnProperty(nameLowerCase)) {\n this.readSC();\n children = this.pseudo[nameLowerCase].call(this);\n this.readSC();\n } else {\n children = new List().appendData(this.Raw(BALANCED, 0, 0));\n }\n\n this.scanner.eat(RIGHTPARENTHESIS);\n }\n\n return {\n type: 'PseudoElementSelector',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n children: children\n };\n};\n","var isNumber = require('../../tokenizer').isNumber;\nvar TYPE = require('../../tokenizer').TYPE;\nvar NUMBER = TYPE.Number;\nvar SOLIDUS = TYPE.Solidus;\n\nfunction readPositiveInteger(scanner) {\n var value = scanner.consumeNonWS(NUMBER);\n\n for (var i = 0; i < value.length; i++) {\n if (!isNumber(value.charCodeAt(i))) {\n scanner.error('Positive integer is expected', scanner.tokenStart - value.length + i);\n }\n }\n\n return value;\n}\n\n// <positive-integer> S* '/' S* <positive-integer>\nmodule.exports = function Ratio() {\n var start = this.scanner.tokenStart;\n var left = readPositiveInteger(this.scanner);\n var right;\n\n this.scanner.eatNonWS(SOLIDUS);\n right = readPositiveInteger(this.scanner);\n\n return {\n type: 'Ratio',\n loc: this.getLocation(start, this.scanner.tokenStart),\n left: left,\n right: right\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.Whitespace;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\nvar RIGHTCURLYBRACKET = TYPE.RightCurlyBracket;\nvar LEFTSQUAREBRACKET = TYPE.LeftSquareBracket;\nvar RIGHTSQUAREBRACKET = TYPE.RightSquareBracket;\n\nmodule.exports = function Raw(balanced, endTokenType1, endTokenType2) {\n var start = this.scanner.tokenStart;\n var stack = [];\n var popType = 0;\n var type = 0;\n\n if (balanced) {\n scan:\n for (var i = 0; type = this.scanner.lookupType(i); i++) {\n if (popType === 0) {\n if (type === endTokenType1 ||\n type === endTokenType2) {\n break scan;\n }\n }\n\n switch (type) {\n case popType:\n popType = stack.pop();\n break;\n\n case RIGHTPARENTHESIS:\n case RIGHTCURLYBRACKET:\n case RIGHTSQUAREBRACKET:\n if (popType !== 0) {\n this.scanner.skip(i);\n this.scanner.error();\n }\n break scan;\n\n case LEFTPARENTHESIS:\n stack.push(popType);\n popType = RIGHTPARENTHESIS;\n break;\n\n case LEFTCURLYBRACKET:\n stack.push(popType);\n popType = RIGHTCURLYBRACKET;\n break;\n\n case LEFTSQUAREBRACKET:\n stack.push(popType);\n popType = RIGHTSQUAREBRACKET;\n break;\n }\n }\n } else {\n for (var i = 0; type = this.scanner.lookupType(i); i++) {\n if (type === WHITESPACE ||\n type === endTokenType1 ||\n type === endTokenType2) {\n break;\n }\n }\n }\n\n this.scanner.skip(i);\n\n if (popType !== 0) {\n this.scanner.eat(popType);\n }\n\n return {\n type: 'Raw',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: this.scanner.substrToCursor(start)\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\nvar BALANCED = true;\n\nmodule.exports = function Rule() {\n var start = this.scanner.tokenStart;\n var selector = this.parseSelector ? this.SelectorList() : this.Raw(BALANCED, LEFTCURLYBRACKET, 0);\n var block = this.Block(this.Declaration);\n\n return {\n type: 'Rule',\n loc: this.getLocation(start, this.scanner.tokenStart),\n selector: selector,\n block: block\n };\n};\n","module.exports = function Selector() {\n var children = this.readSelectorSequence();\n\n return {\n type: 'Selector',\n loc: this.getLocationFromList(children),\n children: children\n };\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar COMMA = TYPE.Comma;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\nvar BALANCED = true;\n\nmodule.exports = function SelectorList() {\n var children = new List();\n\n while (!this.scanner.eof) {\n children.appendData(this.parseSelector\n ? this.Selector()\n : this.Raw(BALANCED, COMMA, LEFTCURLYBRACKET)\n );\n\n if (this.scanner.tokenType === COMMA) {\n this.scanner.next();\n continue;\n }\n\n break;\n }\n\n return {\n type: 'SelectorList',\n loc: this.getLocationFromList(children),\n children: children\n };\n};\n","var STRING = require('../../tokenizer').TYPE.String;\n\nmodule.exports = function String() {\n return {\n type: 'String',\n loc: this.getLocation(this.scanner.tokenStart, this.scanner.tokenEnd),\n value: this.scanner.consume(STRING)\n };\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.Whitespace;\nvar COMMENT = TYPE.Comment;\nvar EXCLAMATIONMARK = TYPE.ExclamationMark;\nvar COMMERCIALAT = TYPE.CommercialAt;\n\nmodule.exports = function StyleSheet() {\n var start = this.scanner.tokenStart;\n var children = new List();\n var child;\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case WHITESPACE:\n this.scanner.next();\n continue;\n\n case COMMENT:\n // ignore comments except exclamation comments (i.e. /*! .. */) on top level\n if (this.scanner.source.charCodeAt(this.scanner.tokenStart + 2) !== EXCLAMATIONMARK) {\n this.scanner.next();\n continue;\n }\n\n child = this.Comment();\n break;\n\n case COMMERCIALAT:\n child = this.Atrule();\n break;\n\n default:\n child = this.Rule();\n }\n\n children.appendData(child);\n }\n\n return {\n type: 'StyleSheet',\n loc: this.getLocation(start, this.scanner.tokenStart),\n children: children\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar ASTERISK = TYPE.Asterisk;\nvar VERTICALLINE = TYPE.VerticalLine;\n\nfunction eatIdentifierOrAsterisk() {\n if (this.scanner.tokenType !== IDENTIFIER &&\n this.scanner.tokenType !== ASTERISK) {\n this.scanner.error('Identifier or asterisk is expected');\n }\n\n this.scanner.next();\n}\n\n// ident\n// ident|ident\n// ident|*\n// *\n// *|ident\n// *|*\n// |ident\n// |*\nmodule.exports = function TypeSelector() {\n var start = this.scanner.tokenStart;\n\n if (this.scanner.tokenType === VERTICALLINE) {\n this.scanner.next();\n eatIdentifierOrAsterisk.call(this);\n } else {\n eatIdentifierOrAsterisk.call(this);\n\n if (this.scanner.tokenType === VERTICALLINE) {\n this.scanner.next();\n eatIdentifierOrAsterisk.call(this);\n }\n }\n\n return {\n type: 'TypeSelector',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: this.scanner.substrToCursor(start)\n };\n};\n","var isHex = require('../../tokenizer').isHex;\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar PLUSSIGN = TYPE.PlusSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar FULLSTOP = TYPE.FullStop;\nvar QUESTIONMARK = TYPE.QuestionMark;\n\nfunction scanUnicodeNumber(scanner) {\n for (var pos = scanner.tokenStart + 1; pos < scanner.tokenEnd; pos++) {\n var code = scanner.source.charCodeAt(pos);\n\n // break on fullstop or hyperminus/plussign after exponent\n if (code === FULLSTOP || code === PLUSSIGN) {\n // break token, exclude symbol\n scanner.tokenStart = pos;\n return false;\n }\n }\n\n return true;\n}\n\n// https://drafts.csswg.org/css-syntax-3/#urange\nfunction scanUnicodeRange(scanner) {\n var hexStart = scanner.tokenStart + 1; // skip +\n var hexLength = 0;\n\n scan: {\n if (scanner.tokenType === NUMBER) {\n if (scanner.source.charCodeAt(scanner.tokenStart) !== FULLSTOP && scanUnicodeNumber(scanner)) {\n scanner.next();\n } else if (scanner.source.charCodeAt(scanner.tokenStart) !== HYPHENMINUS) {\n break scan;\n }\n } else {\n scanner.next(); // PLUSSIGN\n }\n\n if (scanner.tokenType === HYPHENMINUS) {\n scanner.next();\n }\n\n if (scanner.tokenType === NUMBER) {\n scanner.next();\n }\n\n if (scanner.tokenType === IDENTIFIER) {\n scanner.next();\n }\n\n if (scanner.tokenStart === hexStart) {\n scanner.error('Unexpected input', hexStart);\n }\n }\n\n // validate for U+x{1,6} or U+x{1,6}-x{1,6}\n // where x is [0-9a-fA-F]\n for (var i = hexStart, wasHyphenMinus = false; i < scanner.tokenStart; i++) {\n var code = scanner.source.charCodeAt(i);\n\n if (isHex(code) === false && (code !== HYPHENMINUS || wasHyphenMinus)) {\n scanner.error('Unexpected input', i);\n }\n\n if (code === HYPHENMINUS) {\n // hex sequence shouldn't be an empty\n if (hexLength === 0) {\n scanner.error('Unexpected input', i);\n }\n\n wasHyphenMinus = true;\n hexLength = 0;\n } else {\n hexLength++;\n\n // too long hex sequence\n if (hexLength > 6) {\n scanner.error('Too long hex sequence', i);\n }\n }\n\n }\n\n // check we have a non-zero sequence\n if (hexLength === 0) {\n scanner.error('Unexpected input', i - 1);\n }\n\n // U+abc???\n if (!wasHyphenMinus) {\n // consume as many U+003F QUESTION MARK (?) code points as possible\n for (; hexLength < 6 && !scanner.eof; scanner.next()) {\n if (scanner.tokenType !== QUESTIONMARK) {\n break;\n }\n\n hexLength++;\n }\n }\n}\n\nmodule.exports = function UnicodeRange() {\n var start = this.scanner.tokenStart;\n\n this.scanner.next(); // U or u\n scanUnicodeRange(this.scanner);\n\n return {\n type: 'UnicodeRange',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: this.scanner.substrToCursor(start)\n };\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar STRING = TYPE.String;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\nvar NONBALANCED = false;\n\n// url '(' S* (string | raw) S* ')'\nmodule.exports = function Url() {\n var start = this.scanner.tokenStart;\n var value;\n\n this.scanner.expectIdentifier('url');\n this.scanner.eat(LEFTPARENTHESIS);\n this.readSC();\n\n if (this.scanner.tokenType === STRING) {\n value = this.String();\n } else {\n value = this.Raw(NONBALANCED, LEFTPARENTHESIS, RIGHTPARENTHESIS);\n }\n\n this.readSC();\n this.scanner.eat(RIGHTPARENTHESIS);\n\n return {\n type: 'Url',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: value\n };\n};\n","var endsWith = require('../../tokenizer').endsWith;\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.Whitespace;\nvar COMMENT = TYPE.Comment;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar COLON = TYPE.Colon;\nvar SEMICOLON = TYPE.Semicolon;\nvar EXCLAMATIONMARK = TYPE.ExclamationMark;\nvar BALANCED = true;\n\nmodule.exports = function Value(property) {\n // special parser for filter property since it can contains non-standart syntax for old IE\n if (property !== null && endsWith(property, 'filter') && checkProgid(this.scanner)) {\n this.readSC();\n return this.Raw(BALANCED, SEMICOLON, EXCLAMATIONMARK);\n }\n\n var start = this.scanner.tokenStart;\n var children = this.readSequence(this.scopeValue);\n\n return {\n type: 'Value',\n loc: this.getLocation(start, this.scanner.tokenStart),\n children: children\n };\n};\n\n// 'progid:' ws* 'DXImageTransform.Microsoft.' ident ws* '(' .* ')'\nfunction checkProgid(scanner) {\n var offset = 0;\n\n for (var type; type = scanner.lookupType(offset); offset++) {\n if (type !== WHITESPACE && type !== COMMENT) {\n break;\n }\n }\n\n if (scanner.lookupValue(offset, 'alpha') ||\n scanner.lookupValue(offset, 'dropshadow')) {\n if (scanner.lookupType(offset + 1) !== LEFTPARENTHESIS) {\n return false;\n }\n } else {\n if (scanner.lookupValue(offset, 'progid') === false ||\n scanner.lookupType(offset + 1) !== COLON) {\n return false;\n }\n }\n\n return true;\n}\n","var WHITESPACE = require('../../tokenizer').TYPE.Whitespace;\nvar SPACE = Object.freeze({\n type: 'WhiteSpace',\n loc: null,\n value: ' '\n});\n\nmodule.exports = function WhiteSpace() {\n this.scanner.eat(WHITESPACE);\n return SPACE;\n\n // return {\n // type: 'WhiteSpace',\n // loc: this.getLocation(this.scanner.tokenStart, this.scanner.tokenEnd),\n // value: this.scanner.consume(WHITESPACE)\n // };\n};\n","var List = require('../../utils/list');\n\n// https://drafts.csswg.org/css-images-4/#element-notation\n// https://developer.mozilla.org/en-US/docs/Web/CSS/element\nmodule.exports = function() {\n this.readSC();\n\n var id = this.IdSelector();\n\n this.readSC();\n\n return new List().appendData(\n id\n );\n};\n","var List = require('../../utils/list');\nvar BALANCED = true;\n\n// legacy IE function\n// expression '(' raw ')'\nmodule.exports = function getOldIEExpression() {\n return new List().appendData(\n this.Raw(BALANCED, 0, 0)\n );\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar COMMA = TYPE.Comma;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar EXCLAMATIONMARK = TYPE.ExclamationMark;\nvar BALANCED = true;\n\n// var '(' ident (',' <value>? )? ')'\nmodule.exports = function getVarFunction() {\n var children = new List();\n\n this.readSC();\n\n var identStart = this.scanner.tokenStart;\n\n this.scanner.eat(HYPHENMINUS);\n if (this.scanner.source.charCodeAt(this.scanner.tokenStart) !== HYPHENMINUS) {\n this.scanner.error('HyphenMinus is expected');\n }\n this.scanner.eat(IDENTIFIER);\n\n children.appendData({\n type: 'Identifier',\n loc: this.getLocation(identStart, this.scanner.tokenStart),\n name: this.scanner.substrToCursor(identStart)\n });\n\n this.readSC();\n\n if (this.scanner.tokenType === COMMA) {\n children.appendData(this.Operator());\n children.appendData(this.parseCustomProperty\n ? this.Value(null)\n : this.Raw(BALANCED, HYPHENMINUS, EXCLAMATIONMARK)\n );\n }\n\n return children;\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar STRING = TYPE.String;\nvar IDENTIFIER = TYPE.Identifier;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\n\nmodule.exports = {\n expression: function() {\n var children = new List();\n\n this.readSC();\n\n switch (this.scanner.tokenType) {\n case STRING:\n children.appendData(this.String());\n break;\n\n case IDENTIFIER:\n children.appendData(this.Url());\n break;\n\n default:\n this.scanner.error('String or url() is expected');\n }\n\n if (this.scanner.lookupNonWSType(0) === IDENTIFIER ||\n this.scanner.lookupNonWSType(0) === LEFTPARENTHESIS) {\n children.appendData(this.WhiteSpace());\n children.appendData(this.MediaQueryList());\n }\n\n return children;\n },\n block: false\n};\n","module.exports = {\n expression: function() {\n return this.MediaQueryList();\n },\n block: function() {\n return this.Block(this.Rule);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\n\nmodule.exports = {\n expression: function() {\n if (this.scanner.lookupNonWSType(0) === LEFTCURLYBRACKET) {\n return null;\n }\n\n return this.SelectorList();\n },\n block: function() {\n return this.Block(this.Declaration);\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.Whitespace;\nvar COMMENT = TYPE.Comment;\nvar IDENTIFIER = TYPE.Identifier;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar COLON = TYPE.Colon;\nvar BALANCED = true;\n\nfunction readRaw() {\n return new List().appendData(\n this.Raw(BALANCED, 0, 0)\n );\n}\n\nfunction parentheses() {\n var index = 0;\n\n this.readSC();\n\n // TODO: make it simplier\n if (this.scanner.tokenType === IDENTIFIER) {\n index = 1;\n } else if (this.scanner.tokenType === HYPHENMINUS &&\n this.scanner.lookupType(1) === IDENTIFIER) {\n index = 2;\n }\n\n if (index !== 0 && this.scanner.lookupNonWSType(index) === COLON) {\n return new List().appendData(\n this.Declaration()\n );\n }\n\n return readSequence.call(this);\n}\n\nfunction readSequence() {\n var children = new List();\n var space = null;\n var child;\n\n this.readSC();\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case WHITESPACE:\n space = this.WhiteSpace();\n continue;\n\n case COMMENT:\n this.scanner.next();\n continue;\n\n case IDENTIFIER:\n if (this.scanner.lookupType(1) === LEFTPARENTHESIS) {\n child = this.Function(this.scopeAtruleExpression, readRaw);\n } else {\n child = this.Identifier();\n }\n\n break;\n\n case LEFTPARENTHESIS:\n child = this.Parentheses(parentheses);\n break;\n\n default:\n break scan;\n }\n\n if (space !== null) {\n children.appendData(space);\n space = null;\n }\n\n children.appendData(child);\n }\n\n return children;\n}\n\nmodule.exports = {\n expression: function() {\n var children = readSequence.call(this);\n\n if (children.isEmpty()) {\n this.scanner.error('Condition is expected');\n }\n\n return children;\n },\n block: function() {\n return this.Block(this.Rule);\n }\n};\n","'use strict';\n\nvar Tokenizer = require('../tokenizer');\n\nvar TYPE = Tokenizer.TYPE;\nvar WHITESPACE = TYPE.Whitespace;\nvar COMMENT = TYPE.Comment;\n\nvar sequence = require('./sequence');\nvar getAnPlusB = require('./type/AnPlusB');\nvar getAtrule = require('./type/Atrule');\nvar getAtruleExpression = require('./type/AtruleExpression');\nvar getAttributeSelector = require('./type/AttributeSelector');\nvar getBlock = require('./type/Block');\nvar getBrackets = require('./type/Brackets');\nvar getClassSelector = require('./type/ClassSelector');\nvar getCombinator = require('./type/Combinator');\nvar getComment = require('./type/Comment');\nvar getDeclaration = require('./type/Declaration');\nvar getDeclarationList = require('./type/DeclarationList');\nvar getDimension = require('./type/Dimention');\nvar getFunction = require('./type/Function');\nvar getHexColor = require('./type/HexColor');\nvar getIdentifier = require('./type/Identifier');\nvar getIdSelector = require('./type/IdSelector');\nvar getMediaFeature = require('./type/MediaFeature');\nvar getMediaQuery = require('./type/MediaQuery');\nvar getMediaQueryList = require('./type/MediaQueryList');\nvar getNth = require('./type/Nth');\nvar getNumber = require('./type/Number');\nvar getOperator = require('./type/Operator');\nvar getParentheses = require('./type/Parentheses');\nvar getPercentage = require('./type/Percentage');\nvar getPseudoClassSelector = require('./type/PseudoClassSelector');\nvar getPseudoElementSelector = require('./type/PseudoElementSelector');\nvar getRatio = require('./type/Ratio');\nvar getRaw = require('./type/Raw');\nvar getRule = require('./type/Rule');\nvar getSelector = require('./type/Selector');\nvar getSelectorList = require('./type/SelectorList');\nvar getString = require('./type/String');\nvar getStyleSheet = require('./type/StyleSheet');\nvar getTypeSelector = require('./type/TypeSelector');\nvar getUnicodeRange = require('./type/UnicodeRange');\nvar getUrl = require('./type/Url');\nvar getValue = require('./type/Value');\nvar getWhiteSpace = require('./type/WhiteSpace');\n\nfunction readSC() {\n while (this.scanner.tokenType === WHITESPACE || this.scanner.tokenType === COMMENT) {\n this.scanner.next();\n }\n}\n\nvar Parser = function() {\n this.scanner = new Tokenizer();\n this.filename = '<unknown>';\n this.needPositions = false;\n};\n\nParser.prototype = {\n scanner: null,\n filename: '<unknown>',\n needPositions: false,\n parseAtruleExpression: true,\n parseSelector: true,\n parseValue: true,\n parseCustomProperty: false,\n\n scopeAtruleExpression: {},\n scopeValue: {\n '-moz-element': require('./function/element'),\n 'element': require('./function/element'),\n 'expression': require('./function/expression'),\n 'var': require('./function/var')\n },\n atrule: {\n 'import': require('./atrule/import'),\n 'media': require('./atrule/media'),\n 'page': require('./atrule/page'),\n 'supports': require('./atrule/supports')\n },\n pseudo: {\n 'lang': sequence.singleIdentifier,\n 'dir': sequence.singleIdentifier,\n 'not': sequence.selectorList,\n 'matches': sequence.selectorList,\n 'has': sequence.selectorList,\n 'nth-child': sequence.nthWithOfClause,\n 'nth-last-child': sequence.nthWithOfClause,\n 'nth-of-type': sequence.nth,\n 'nth-last-of-type': sequence.nth,\n 'slotted': sequence.compoundSelector\n },\n context: {\n stylesheet: getStyleSheet,\n atrule: getAtrule,\n atruleExpression: getAtruleExpression,\n rule: getRule,\n selectorList: getSelectorList,\n selector: getSelector,\n block: getBlock,\n declarationList: getDeclarationList,\n declaration: getDeclaration,\n value: getValue\n },\n\n // consumers\n AnPlusB: getAnPlusB,\n Atrule: getAtrule,\n AtruleExpression: getAtruleExpression,\n AttributeSelector: getAttributeSelector,\n Block: getBlock,\n Brackets: getBrackets,\n ClassSelector: getClassSelector,\n Combinator: getCombinator,\n Comment: getComment,\n Declaration: getDeclaration,\n DeclarationList: getDeclarationList,\n Dimension: getDimension,\n Function: getFunction,\n HexColor: getHexColor,\n Identifier: getIdentifier,\n IdSelector: getIdSelector,\n MediaFeature: getMediaFeature,\n MediaQuery: getMediaQuery,\n MediaQueryList: getMediaQueryList,\n Nth: getNth,\n Number: getNumber,\n Operator: getOperator,\n Parentheses: getParentheses,\n Percentage: getPercentage,\n PseudoClassSelector: getPseudoClassSelector,\n PseudoElementSelector: getPseudoElementSelector,\n Ratio: getRatio,\n Raw: getRaw,\n Rule: getRule,\n Selector: getSelector,\n SelectorList: getSelectorList,\n String: getString,\n StyleSheet: getStyleSheet,\n TypeSelector: getTypeSelector,\n UnicodeRange: getUnicodeRange,\n Url: getUrl,\n Value: getValue,\n WhiteSpace: getWhiteSpace,\n\n readSC: readSC,\n readSelectorSequence: sequence.selector,\n readSelectorSequenceFallback: null,\n readSequence: sequence.default,\n readSequenceFallback: null,\n\n getLocation: function(start, end) {\n if (this.needPositions) {\n return this.scanner.getLocationRange(\n start,\n end,\n this.filename\n );\n }\n\n return null;\n },\n getLocationFromList: function(list) {\n if (this.needPositions) {\n return this.scanner.getLocationRange(\n list.head !== null ? list.first().loc.start.offset - this.scanner.startOffset : this.scanner.tokenStart,\n list.head !== null ? list.last().loc.end.offset - this.scanner.startOffset : this.scanner.tokenStart,\n this.filename\n );\n }\n\n return null;\n },\n\n parse: function(source, options) {\n options = options || {};\n\n var context = options.context || 'stylesheet';\n var ast;\n\n this.scanner.setSource(source, options.offset, options.line, options.column);\n this.filename = options.filename || '<unknown>';\n this.needPositions = Boolean(options.positions);\n this.parseAtruleExpression = 'parseAtruleExpression' in options ? Boolean(options.parseAtruleExpression) : true;\n this.parseSelector = 'parseSelector' in options ? Boolean(options.parseSelector) : true;\n this.parseValue = 'parseValue' in options ? Boolean(options.parseValue) : true;\n this.parseCustomProperty = 'parseCustomProperty' in options ? Boolean(options.parseCustomProperty) : false;\n\n switch (context) {\n case 'value':\n ast = this.Value(options.property ? String(options.property) : null);\n break;\n\n case 'atruleExpression':\n ast = this.AtruleExpression(options.atrule ? String(options.atrule) : null);\n break;\n\n default:\n if (!this.context.hasOwnProperty(context)) {\n throw new Error('Unknown context `' + context + '`');\n }\n\n ast = this.context[context].call(this);\n }\n\n if (!this.scanner.eof) {\n this.scanner.error();\n }\n\n // console.log(JSON.stringify(ast, null, 4));\n return ast;\n }\n};\n\n// warm up parse to elimitate code branches that never execute\n// fix soft deoptimizations (insufficient type feedback)\nnew Parser().parse(\n 'a.b#c:e:Not(a/**/):AFTER:Nth-child(2n+1)::g::slotted(a/**/),* b >c+d~e/deep/f,100%{' +\n 'v:U+123 1 2em t a(2%, var(--a)) -b() url(..) -foo-bar !important}'\n);\n\nmodule.exports = Parser;\n","var Parser = require('./Parser');\nvar parser = new Parser();\n\nmodule.exports = parser.parse.bind(parser);\n","'use strict';\n\nfunction walkRules(node, item, list) {\n switch (node.type) {\n case 'StyleSheet':\n var oldStylesheet = this.stylesheet;\n this.stylesheet = node;\n\n node.children.each(walkRules, this);\n\n this.stylesheet = oldStylesheet;\n break;\n\n case 'Atrule':\n if (node.block !== null) {\n walkRules.call(this, node.block);\n }\n\n this.fn(node, item, list);\n break;\n\n case 'Rule':\n this.fn(node, item, list);\n\n var oldRule = this.rule;\n this.rule = node;\n\n walkRules.call(this, node.block);\n\n this.rule = oldRule;\n break;\n\n case 'Block':\n var oldBlock = this.block;\n this.block = node;\n\n node.children.each(walkRules, this);\n\n this.block = oldBlock;\n break;\n }\n\n}\n\nfunction walkRulesRight(node, item, list) {\n switch (node.type) {\n case 'StyleSheet':\n var oldStylesheet = this.stylesheet;\n this.stylesheet = node;\n\n node.children.eachRight(walkRulesRight, this);\n\n this.stylesheet = oldStylesheet;\n break;\n\n case 'Atrule':\n if (node.block !== null) {\n walkRulesRight.call(this, node.block);\n }\n\n this.fn(node, item, list);\n break;\n\n case 'Rule':\n var oldRule = this.rule;\n this.rule = node;\n\n walkRulesRight.call(this, node.block);\n\n this.rule = oldRule;\n\n this.fn(node, item, list);\n break;\n\n case 'Block':\n var oldBlock = this.block;\n this.block = node;\n\n node.children.eachRight(walkRulesRight, this);\n\n this.block = oldBlock;\n break;\n }\n}\n\nfunction walkDeclarations(node) {\n switch (node.type) {\n case 'StyleSheet':\n var oldStylesheet = this.stylesheet;\n this.stylesheet = node;\n\n node.children.each(walkDeclarations, this);\n\n this.stylesheet = oldStylesheet;\n break;\n\n case 'Atrule':\n if (node.block !== null) {\n walkDeclarations.call(this, node.block);\n }\n break;\n\n case 'Rule':\n var oldRule = this.rule;\n this.rule = node;\n\n if (node.block !== null) {\n walkDeclarations.call(this, node.block);\n }\n\n this.rule = oldRule;\n break;\n\n case 'Block':\n node.children.each(function(node, item, list) {\n if (node.type === 'Declaration') {\n this.fn(node, item, list);\n } else {\n walkDeclarations.call(this, node);\n }\n }, this);\n break;\n }\n}\n\nfunction walkAll(node, item, list) {\n this.fn(node, item, list);\n walk.call(this, walkAll, node, item, list);\n}\n\nfunction walkAllUp(node, item, list) {\n walk.call(this, walkAllUp, node, item, list);\n this.fn(node, item, list);\n}\n\nfunction walk(walk, node) {\n switch (node.type) {\n case 'StyleSheet':\n var oldStylesheet = this.stylesheet;\n this.stylesheet = node;\n\n node.children.each(walk, this);\n\n this.stylesheet = oldStylesheet;\n break;\n\n case 'Atrule':\n if (node.expression !== null) {\n walk.call(this, node.expression);\n }\n if (node.block !== null) {\n walk.call(this, node.block);\n }\n break;\n\n case 'Rule':\n this.rule = node;\n\n if (node.selector !== null) {\n walk.call(this, node.selector);\n }\n walk.call(this, node.block);\n\n this.rule = null;\n break;\n\n case 'SelectorList':\n var oldSelector = this.selector;\n this.selector = node;\n\n node.children.each(walk, this);\n\n this.selector = oldSelector;\n break;\n\n case 'Selector':\n node.children.each(walk, this);\n break;\n\n case 'Nth':\n walk.call(this, node.nth);\n if (node.selector !== null) {\n walk.call(this, node.selector);\n }\n break;\n\n case 'Block':\n var oldBlock = this.block;\n this.block = node;\n\n node.children.each(walk, this);\n\n this.block = oldBlock;\n break;\n\n case 'DeclarationList':\n node.children.each(walk, this);\n break;\n\n case 'Declaration':\n this.declaration = node;\n\n walk.call(this, node.value);\n\n this.declaration = null;\n break;\n\n case 'AttributeSelector':\n walk.call(this, node.name);\n if (node.value !== null) {\n walk.call(this, node.value);\n }\n break;\n\n case 'PseudoClassSelector':\n if (node.children !== null) {\n this['function'] = node;\n\n node.children.each(walk, this);\n\n this['function'] = null;\n }\n break;\n\n case 'PseudoElementSelector':\n if (node.children !== null) {\n this['function'] = node;\n\n node.children.each(walk, this);\n\n this['function'] = null;\n }\n break;\n\n case 'Function':\n this['function'] = node;\n\n node.children.each(walk, this);\n\n this['function'] = null;\n break;\n\n case 'AtruleExpression':\n this.atruleExpression = node;\n\n node.children.each(walk, this);\n\n this.atruleExpression = null;\n break;\n\n case 'MediaQueryList':\n node.children.each(walk, this);\n break;\n\n case 'MediaQuery':\n node.children.each(walk, this);\n break;\n\n case 'MediaFeature':\n if (node.value !== null) {\n walk.call(this, node.value);\n }\n break;\n\n case 'Value':\n node.children.each(walk, this);\n break;\n\n case 'Parentheses':\n node.children.each(walk, this);\n break;\n\n case 'Brackets':\n node.children.each(walk, this);\n break;\n\n case 'Url':\n walk.call(this, node.value);\n break;\n }\n}\n\nfunction createContext(root, fn) {\n var context = {\n fn: fn,\n root: root,\n stylesheet: null,\n atruleExpression: null,\n rule: null,\n selector: null,\n block: null,\n declaration: null,\n function: null\n };\n\n return context;\n}\n\nmodule.exports = {\n all: function(root, fn) {\n walkAll.call(createContext(root, fn), root);\n },\n allUp: function(root, fn) {\n walkAllUp.call(createContext(root, fn), root);\n },\n rules: function(root, fn) {\n walkRules.call(createContext(root, fn), root);\n },\n rulesRight: function(root, fn) {\n walkRulesRight.call(createContext(root, fn), root);\n },\n declarations: function(root, fn) {\n walkDeclarations.call(createContext(root, fn), root);\n }\n};\n","import parse from 'css-tree/lib/parser/index.js';\nimport walk from 'css-tree/lib/utils/walk.js';\n\nexport default function readStyle ( parser, start, attributes ) {\n\tconst contentStart = parser.index;\n\tconst styles = parser.readUntil( /<\\/style>/ );\n\tconst contentEnd = parser.index;\n\n\tlet ast;\n\n\ttry {\n\t\tast = parse( styles, {\n\t\t\tpositions: true,\n\t\t\toffset: contentStart\n\t\t});\n\t} catch ( err ) {\n\t\tif ( err.name === 'CssSyntaxError' ) {\n\t\t\tparser.error( err.message, err.offset );\n\t\t} else {\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\t// tidy up AST\n\twalk.all( ast, node => {\n\t\tif ( node.loc ) {\n\t\t\tnode.start = node.loc.start.offset;\n\t\t\tnode.end = node.loc.end.offset;\n\t\t\tdelete node.loc;\n\t\t}\n\t});\n\n\tparser.eat( '</style>', true );\n\tconst end = parser.index;\n\n\treturn {\n\t\tstart,\n\t\tend,\n\t\tattributes,\n\t\tchildren: JSON.parse( JSON.stringify( ast.children ) ),\n\t\tcontent: {\n\t\t\tstart: contentStart,\n\t\t\tend: contentEnd,\n\t\t\tstyles\n\t\t}\n\t};\n}\n","import { parse, parseExpressionAt } from 'acorn';\nimport spaces from '../../utils/spaces.js';\n\nexport function readEventHandlerDirective ( parser, start, name ) {\n\tconst quoteMark = (\n\t\tparser.eat( `'` ) ? `'` :\n\t\tparser.eat( `\"` ) ? `\"` :\n\t\tnull\n\t);\n\n\tconst expressionStart = parser.index;\n\n\tlet str = '';\n\tlet escaped = false;\n\n\tfor ( let i = expressionStart; i < parser.template.length; i += 1 ) {\n\t\tconst char = parser.template[i];\n\n\t\tif ( quoteMark ) {\n\t\t\tif ( char === quoteMark ) {\n\t\t\t\tif ( escaped ) {\n\t\t\t\t\tstr += quoteMark;\n\t\t\t\t} else {\n\t\t\t\t\tparser.index = i + 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if ( escaped ) {\n\t\t\t\tstr += '\\\\' + char;\n\t\t\t\tescaped = false;\n\t\t\t} else if ( char === '\\\\' ) {\n\t\t\t\tescaped = true;\n\t\t\t} else {\n\t\t\t\tstr += char;\n\t\t\t}\n\t\t}\n\n\t\telse if ( /\\s/.test( char ) ) {\n\t\t\tparser.index = i;\n\t\t\tbreak;\n\t\t}\n\n\t\telse {\n\t\t\tstr += char;\n\t\t}\n\t}\n\n\tconst ast = parse( spaces( expressionStart ) + str );\n\n\tif ( ast.body.length > 1 ) {\n\t\tparser.error( `Event handler should be a single call expression`, ast.body[1].start );\n\t}\n\n\tconst expression = ast.body[0].expression;\n\n\tif ( expression.type !== 'CallExpression' ) {\n\t\tparser.error( `Expected call expression`, expressionStart );\n\t}\n\n\treturn {\n\t\tstart,\n\t\tend: parser.index,\n\t\ttype: 'EventHandler',\n\t\tname,\n\t\texpression\n\t};\n}\n\nexport function readBindingDirective ( parser, start, name ) {\n\tlet value;\n\n\tif ( parser.eat( '=' ) ) {\n\t\tconst quoteMark = (\n\t\t\tparser.eat( `'` ) ? `'` :\n\t\t\tparser.eat( `\"` ) ? `\"` :\n\t\t\tnull\n\t\t);\n\n\t\tconst a = parser.index;\n\n\t\t// this is a bit of a hack so that we can give Acorn something parseable\n\t\tlet b;\n\t\tif ( quoteMark ) {\n\t\t\tb = parser.index = parser.template.indexOf( quoteMark, parser.index );\n\t\t} else {\n\t\t\tparser.readUntil( /[\\s\\r\\n\\/>]/ );\n\t\t\tb = parser.index;\n\t\t}\n\n\t\tconst source = spaces( a ) + parser.template.slice( a, b );\n\t\tvalue = parseExpressionAt( source, a );\n\n\t\tif ( value.type !== 'Identifier' && value.type !== 'MemberExpression' ) {\n\t\t\tparser.error( `Expected valid property name` );\n\t\t}\n\n\t\tparser.allowWhitespace();\n\n\t\tif ( quoteMark ) {\n\t\t\tparser.eat( quoteMark, true );\n\t\t}\n\t} else {\n\t\t// shorthand – bind:foo equivalent to bind:foo='foo'\n\t\tvalue = {\n\t\t\ttype: 'Identifier',\n\t\t\tstart: start + 5,\n\t\t\tend: parser.index,\n\t\t\tname\n\t\t};\n\t}\n\n\treturn {\n\t\tstart,\n\t\tend: parser.index,\n\t\ttype: 'Binding',\n\t\tname,\n\t\tvalue\n\t};\n}\n","export const whitespace = /[ \\t\\r\\n]/;\n","import { whitespace } from '../patterns.js';\n\nexport function trimStart ( str ) {\n\tlet i = 0;\n\twhile ( whitespace.test( str[i] ) ) i += 1;\n\n\treturn str.slice( i );\n}\n\nexport function trimEnd ( str ) {\n\tlet i = str.length;\n\twhile ( whitespace.test( str[ i - 1 ] ) ) i -= 1;\n\n\treturn str.slice( 0, i );\n}\n","// borrowed from Ractive – https://github.com/ractivejs/ractive/blob/faf93cbd33c3fedfd8d6dd48340990540bde4a94/src/utils/html.js\nconst htmlEntities = { quot: 34, amp: 38, apos: 39, lt: 60, gt: 62, nbsp: 160, iexcl: 161, cent: 162, pound: 163, curren: 164, yen: 165, brvbar: 166, sect: 167, uml: 168, copy: 169, ordf: 170, laquo: 171, not: 172, shy: 173, reg: 174, macr: 175, deg: 176, plusmn: 177, sup2: 178, sup3: 179, acute: 180, micro: 181, para: 182, middot: 183, cedil: 184, sup1: 185, ordm: 186, raquo: 187, frac14: 188, frac12: 189, frac34: 190, iquest: 191, Agrave: 192, Aacute: 193, Acirc: 194, Atilde: 195, Auml: 196, Aring: 197, AElig: 198, Ccedil: 199, Egrave: 200, Eacute: 201, Ecirc: 202, Euml: 203, Igrave: 204, Iacute: 205, Icirc: 206, Iuml: 207, ETH: 208, Ntilde: 209, Ograve: 210, Oacute: 211, Ocirc: 212, Otilde: 213, Ouml: 214, times: 215, Oslash: 216, Ugrave: 217, Uacute: 218, Ucirc: 219, Uuml: 220, Yacute: 221, THORN: 222, szlig: 223, agrave: 224, aacute: 225, acirc: 226, atilde: 227, auml: 228, aring: 229, aelig: 230, ccedil: 231, egrave: 232, eacute: 233, ecirc: 234, euml: 235, igrave: 236, iacute: 237, icirc: 238, iuml: 239, eth: 240, ntilde: 241, ograve: 242, oacute: 243, ocirc: 244, otilde: 245, ouml: 246, divide: 247, oslash: 248, ugrave: 249, uacute: 250, ucirc: 251, uuml: 252, yacute: 253, thorn: 254, yuml: 255, OElig: 338, oelig: 339, Scaron: 352, scaron: 353, Yuml: 376, fnof: 402, circ: 710, tilde: 732, Alpha: 913, Beta: 914, Gamma: 915, Delta: 916, Epsilon: 917, Zeta: 918, Eta: 919, Theta: 920, Iota: 921, Kappa: 922, Lambda: 923, Mu: 924, Nu: 925, Xi: 926, Omicron: 927, Pi: 928, Rho: 929, Sigma: 931, Tau: 932, Upsilon: 933, Phi: 934, Chi: 935, Psi: 936, Omega: 937, alpha: 945, beta: 946, gamma: 947, delta: 948, epsilon: 949, zeta: 950, eta: 951, theta: 952, iota: 953, kappa: 954, lambda: 955, mu: 956, nu: 957, xi: 958, omicron: 959, pi: 960, rho: 961, sigmaf: 962, sigma: 963, tau: 964, upsilon: 965, phi: 966, chi: 967, psi: 968, omega: 969, thetasym: 977, upsih: 978, piv: 982, ensp: 8194, emsp: 8195, thinsp: 8201, zwnj: 8204, zwj: 8205, lrm: 8206, rlm: 8207, ndash: 8211, mdash: 8212, lsquo: 8216, rsquo: 8217, sbquo: 8218, ldquo: 8220, rdquo: 8221, bdquo: 8222, dagger: 8224, Dagger: 8225, bull: 8226, hellip: 8230, permil: 8240, prime: 8242, Prime: 8243, lsaquo: 8249, rsaquo: 8250, oline: 8254, frasl: 8260, euro: 8364, image: 8465, weierp: 8472, real: 8476, trade: 8482, alefsym: 8501, larr: 8592, uarr: 8593, rarr: 8594, darr: 8595, harr: 8596, crarr: 8629, lArr: 8656, uArr: 8657, rArr: 8658, dArr: 8659, hArr: 8660, forall: 8704, part: 8706, exist: 8707, empty: 8709, nabla: 8711, isin: 8712, notin: 8713, ni: 8715, prod: 8719, sum: 8721, minus: 8722, lowast: 8727, radic: 8730, prop: 8733, infin: 8734, ang: 8736, and: 8743, or: 8744, cap: 8745, cup: 8746, int: 8747, there4: 8756, sim: 8764, cong: 8773, asymp: 8776, ne: 8800, equiv: 8801, le: 8804, ge: 8805, sub: 8834, sup: 8835, nsub: 8836, sube: 8838, supe: 8839, oplus: 8853, otimes: 8855, perp: 8869, sdot: 8901, lceil: 8968, rceil: 8969, lfloor: 8970, rfloor: 8971, lang: 9001, rang: 9002, loz: 9674, spades: 9824, clubs: 9827, hearts: 9829, diams: 9830\t};\nconst controlCharacters = [ 8364, 129, 8218, 402, 8222, 8230, 8224, 8225, 710, 8240, 352, 8249, 338, 141, 381, 143, 144, 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732, 8482, 353, 8250, 339, 157, 382, 376 ];\nconst entityPattern = new RegExp( '&(#?(?:x[\\\\w\\\\d]+|\\\\d+|' + Object.keys( htmlEntities ).join( '|' ) + '));?', 'g' );\n\nexport function decodeCharacterReferences ( html ) {\n\treturn html.replace( entityPattern, ( match, entity ) => {\n\t\tlet code;\n\n\t\t// Handle named entities\n\t\tif ( entity[0] !== '#' ) {\n\t\t\tcode = htmlEntities[ entity ];\n\t\t} else if ( entity[1] === 'x' ) {\n\t\t\tcode = parseInt( entity.substring( 2 ), 16 );\n\t\t} else {\n\t\t\tcode = parseInt( entity.substring( 1 ), 10 );\n\t\t}\n\n\t\tif ( !code ) {\n\t\t\treturn match;\n\t\t}\n\n\t\treturn String.fromCodePoint( validateCode( code ) );\n\t});\n}\nconst invalid = 65533;\n\n// some code points are verboten. If we were inserting HTML, the browser would replace the illegal\n// code points with alternatives in some cases - since we're bypassing that mechanism, we need\n// to replace them ourselves\n//\n// Source: http://en.wikipedia.org/wiki/Character_encodings_in_HTML#Illegal_characters\nfunction validateCode ( code ) {\n\tif ( !code ) {\n\t\treturn invalid;\n\t}\n\n\t// line feed becomes generic whitespace\n\tif ( code === 10 ) {\n\t\treturn 32;\n\t}\n\n\t// ASCII range. (Why someone would use HTML entities for ASCII characters I don't know, but...)\n\tif ( code < 128 ) {\n\t\treturn code;\n\t}\n\n\t// code points 128-159 are dealt with leniently by browsers, but they're incorrect. We need\n\t// to correct the mistake or we'll end up with missing € signs and so on\n\tif ( code <= 159 ) {\n\t\treturn controlCharacters[ code - 128 ];\n\t}\n\n\t// basic multilingual plane\n\tif ( code < 55296 ) {\n\t\treturn code;\n\t}\n\n\t// UTF-16 surrogate halves\n\tif ( code <= 57343 ) {\n\t\treturn invalid;\n\t}\n\n\t// rest of the basic multilingual plane\n\tif ( code <= 65535 ) {\n\t\treturn code;\n\t}\n\n\t// supplementary multilingual plane 0x10000 - 0x1ffff\n\tif ( code >= 65536 && code <= 131071 ) {\n\t\treturn code;\n\t}\n\n\t// supplementary ideographic plane 0x20000 - 0x2ffff\n\tif ( code >= 131072 && code <= 196607 ) {\n\t\treturn code;\n\t}\n\n\treturn invalid;\n}\n","const voidElementNames = /^(?:area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/;\n\nexport default function isVoidElementName ( name ) {\n\treturn voidElementNames.test( name ) || name.toLowerCase() === '!doctype';\n}\n","import readExpression from '../read/expression.js';\nimport readScript from '../read/script.js';\nimport readStyle from '../read/style.js';\nimport { readEventHandlerDirective, readBindingDirective } from '../read/directives.js';\nimport { trimStart, trimEnd } from '../utils/trim.js';\nimport { decodeCharacterReferences } from '../utils/html.js';\nimport isVoidElementName from '../../utils/isVoidElementName.js';\n\nconst validTagName = /^\\!?[a-zA-Z]{1,}:?[a-zA-Z0-9\\-]*/;\nconst invalidUnquotedAttributeCharacters = /[\\s\"'=<>\\/`]/;\n\nconst SELF = ':Self';\n\nconst specials = {\n\tscript: {\n\t\tread: readScript,\n\t\tproperty: 'js'\n\t},\n\n\tstyle: {\n\t\tread: readStyle,\n\t\tproperty: 'css'\n\t}\n};\n\n// based on http://developers.whatwg.org/syntax.html#syntax-tag-omission\nconst disallowedContents = {\n\tli: [ 'li' ],\n\tdt: [ 'dt', 'dd' ],\n\tdd: [ 'dt', 'dd' ],\n\tp: 'address article aside blockquote div dl fieldset footer form h1 h2 h3 h4 h5 h6 header hgroup hr main menu nav ol p pre section table ul'.split( ' ' ),\n\trt: [ 'rt', 'rp' ],\n\trp: [ 'rt', 'rp' ],\n\toptgroup: [ 'optgroup' ],\n\toption: [ 'option', 'optgroup' ],\n\tthead: [ 'tbody', 'tfoot' ],\n\ttbody: [ 'tbody', 'tfoot' ],\n\ttfoot: [ 'tbody' ],\n\ttr: [ 'tr', 'tbody' ],\n\ttd: [ 'td', 'th', 'tr' ],\n\tth: [ 'td', 'th', 'tr' ]\n};\n\nfunction stripWhitespace ( element ) {\n\tif ( element.children.length ) {\n\t\tconst firstChild = element.children[0];\n\t\tconst lastChild = element.children[ element.children.length - 1 ];\n\n\t\tif ( firstChild.type === 'Text' ) {\n\t\t\tfirstChild.data = trimStart( firstChild.data );\n\t\t\tif ( !firstChild.data ) element.children.shift();\n\t\t}\n\n\t\tif ( lastChild.type === 'Text' ) {\n\t\t\tlastChild.data = trimEnd( lastChild.data );\n\t\t\tif ( !lastChild.data ) element.children.pop();\n\t\t}\n\t}\n}\n\nexport default function tag ( parser ) {\n\tconst start = parser.index++;\n\n\tlet parent = parser.current();\n\n\tif ( parser.eat( '!--' ) ) {\n\t\tconst data = parser.readUntil( /-->/ );\n\t\tparser.eat( '-->' );\n\n\t\tparser.current().children.push({\n\t\t\tstart,\n\t\t\tend: parser.index,\n\t\t\ttype: 'Comment',\n\t\t\tdata\n\t\t});\n\n\t\treturn null;\n\t}\n\n\tconst isClosingTag = parser.eat( '/' );\n\n\tconst name = readTagName( parser );\n\n\tparser.allowWhitespace();\n\n\tif ( isClosingTag ) {\n\t\tif ( isVoidElementName( name ) ) {\n\t\t\tparser.error( `<${name}> is a void element and cannot have children, or a closing tag`, start );\n\t\t}\n\n\t\tif ( !parser.eat( '>' ) ) parser.error( `Expected '>'` );\n\n\t\t// close any elements that don't have their own closing tags, e.g. <div><p></div>\n\t\twhile ( parent.name !== name ) {\n\t\t\tif ( parent.type !== 'Element' ) parser.error( `</${name}> attempted to close an element that was not open`, start );\n\n\t\t\tparent.end = start;\n\t\t\tparser.stack.pop();\n\n\t\t\tparent = parser.current();\n\t\t}\n\n\t\t// strip leading/trailing whitespace as necessary\n\t\tstripWhitespace( parent );\n\n\t\tparent.end = parser.index;\n\t\tparser.stack.pop();\n\n\t\treturn null;\n\t} else if ( parent.name in disallowedContents ) {\n\t\t// can this be a child of the parent element, or does it implicitly\n\t\t// close it, like `<li>one<li>two`?\n\t\tconst disallowed = disallowedContents[ parent.name ];\n\t\tif ( ~disallowed.indexOf( name ) ) {\n\t\t\tstripWhitespace( parent );\n\n\t\t\tparent.end = start;\n\t\t\tparser.stack.pop();\n\t\t}\n\t}\n\n\tconst attributes = [];\n\tconst uniqueNames = new Set();\n\n\tlet attribute;\n\twhile ( attribute = readAttribute( parser, uniqueNames ) ) {\n\t\tattributes.push( attribute );\n\t\tparser.allowWhitespace();\n\t}\n\n\tparser.allowWhitespace();\n\n\t// special cases – top-level <script> and <style>\n\tif ( name in specials && parser.stack.length === 1 ) {\n\t\tconst special = specials[ name ];\n\n\t\tif ( parser[ special.property ] ) {\n\t\t\tparser.index = start;\n\t\t\tparser.error( `You can only have one top-level <${name}> tag per component` );\n\t\t}\n\n\t\tparser.eat( '>', true );\n\t\tparser[ special.property ] = special.read( parser, start, attributes );\n\t\treturn;\n\t}\n\n\tconst element = {\n\t\tstart,\n\t\tend: null, // filled in later\n\t\ttype: 'Element',\n\t\tname,\n\t\tattributes,\n\t\tchildren: []\n\t};\n\n\tparser.current().children.push( element );\n\n\tconst selfClosing = parser.eat( '/' ) || isVoidElementName( name );\n\n\tparser.eat( '>', true );\n\n\tif ( selfClosing ) {\n\t\telement.end = parser.index;\n\t} else {\n\t\t// don't push self-closing elements onto the stack\n\t\tparser.stack.push( element );\n\t}\n\n\treturn null;\n}\n\nfunction readTagName ( parser ) {\n\tconst start = parser.index;\n\n\tif ( parser.eat( SELF ) ) {\n\t\t// check we're inside a block, otherwise this\n\t\t// will cause infinite recursion\n\t\tlet i = parser.stack.length;\n\t\tlet legal = false;\n\n\t\twhile ( i-- ) {\n\t\t\tconst fragment = parser.stack[i];\n\t\t\tif ( fragment.type === 'IfBlock' || fragment.type === 'EachBlock' ) {\n\t\t\t\tlegal = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif ( !legal ) {\n\t\t\tparser.error( `<${SELF}> components can only exist inside if-blocks or each-blocks`, start );\n\t\t}\n\n\t\treturn SELF;\n\t}\n\n\tconst name = parser.readUntil( /(\\s|\\/|>)/ );\n\tif ( !validTagName.test( name ) ) {\n\t\tparser.error( `Expected valid tag name`, start );\n\t}\n\n\treturn name;\n}\n\nfunction readAttribute ( parser, uniqueNames ) {\n\tconst start = parser.index;\n\n\tlet name = parser.readUntil( /(\\s|=|\\/|>)/ );\n\tif ( !name ) return null;\n\tif ( uniqueNames.has( name ) ) {\n\t\tparser.error( 'Attributes need to be unique', start );\n\t}\n\n\tuniqueNames.add( name );\n\n\tparser.allowWhitespace();\n\n\tif ( /^on:/.test( name ) ) {\n\t\tparser.eat( '=', true );\n\t\treturn readEventHandlerDirective( parser, start, name.slice( 3 ) );\n\t}\n\n\tif ( /^bind:/.test( name ) ) {\n\t\treturn readBindingDirective( parser, start, name.slice( 5 ) );\n\t}\n\n\tif ( /^ref:/.test( name ) ) {\n\t\treturn {\n\t\t\tstart,\n\t\t\tend: parser.index,\n\t\t\ttype: 'Ref',\n\t\t\tname: name.slice( 4 )\n\t\t};\n\t}\n\n\tlet value;\n\n\t// :foo is shorthand for foo='{{foo}}'\n\tif ( /^:\\w+$/.test( name ) ) {\n\t\tname = name.slice( 1 );\n\t\tvalue = getShorthandValue( start + 1, name );\n\t} else {\n\t\tvalue = parser.eat( '=' ) ? readAttributeValue( parser ) : true;\n\t}\n\n\treturn {\n\t\tstart,\n\t\tend: parser.index,\n\t\ttype: 'Attribute',\n\t\tname,\n\t\tvalue\n\t};\n}\n\nfunction readAttributeValue ( parser ) {\n\tlet quoteMark;\n\n\tif ( parser.eat( `'` ) ) quoteMark = `'`;\n\tif ( parser.eat( `\"` ) ) quoteMark = `\"`;\n\n\tlet currentChunk = {\n\t\tstart: parser.index,\n\t\tend: null,\n\t\ttype: 'Text',\n\t\tdata: ''\n\t};\n\n\tconst done = quoteMark ?\n\t\tchar => char === quoteMark :\n\t\tchar => invalidUnquotedAttributeCharacters.test( char );\n\n\tconst chunks = [];\n\n\twhile ( parser.index < parser.template.length ) {\n\t\tconst index = parser.index;\n\n\t\tif ( parser.eat( '{{' ) ) {\n\t\t\tif ( currentChunk.data ) {\n\t\t\t\tcurrentChunk.end = index;\n\t\t\t\tchunks.push( currentChunk );\n\t\t\t}\n\n\t\t\tconst expression = readExpression( parser );\n\t\t\tparser.allowWhitespace();\n\t\t\tif ( !parser.eat( '}}' ) ) {\n\t\t\t\tparser.error( `Expected }}` );\n\t\t\t}\n\n\t\t\tchunks.push({\n\t\t\t\tstart: index,\n\t\t\t\tend: parser.index,\n\t\t\t\ttype: 'MustacheTag',\n\t\t\t\texpression\n\t\t\t});\n\n\t\t\tcurrentChunk = {\n\t\t\t\tstart: parser.index,\n\t\t\t\tend: null,\n\t\t\t\ttype: 'Text',\n\t\t\t\tdata: ''\n\t\t\t};\n\t\t}\n\n\t\telse if ( done( parser.template[ parser.index ] ) ) {\n\t\t\tcurrentChunk.end = parser.index;\n\t\t\tif ( quoteMark ) parser.index += 1;\n\n\t\t\tif ( currentChunk.data ) chunks.push( currentChunk );\n\n\t\t\tchunks.forEach( chunk => {\n\t\t\t\tif ( chunk.type === 'Text' ) chunk.data = decodeCharacterReferences( chunk.data );\n\t\t\t});\n\n\t\t\treturn chunks;\n\t\t}\n\n\t\telse {\n\t\t\tcurrentChunk.data += parser.template[ parser.index++ ];\n\t\t}\n\t}\n\n\tparser.error( `Unexpected end of input` );\n}\n\nfunction getShorthandValue ( start, name ) {\n\tconst end = start + name.length;\n\n\treturn [{\n\t\ttype: 'AttributeShorthand',\n\t\tstart,\n\t\tend,\n\t\texpression: {\n\t\t\ttype: 'Identifier',\n\t\t\tstart,\n\t\t\tend,\n\t\t\tname\n\t\t}\n\t}];\n}","import readExpression from '../read/expression.js';\nimport { whitespace } from '../patterns.js';\nimport { trimStart, trimEnd } from '../utils/trim.js';\n\nconst validIdentifier = /[a-zA-Z_$][a-zA-Z0-9_$]*/;\n\nfunction trimWhitespace ( block, trimBefore, trimAfter ) {\n\tconst firstChild = block.children[0];\n\tconst lastChild = block.children[ block.children.length - 1 ];\n\n\tif ( firstChild.type === 'Text' && trimBefore ) {\n\t\tfirstChild.data = trimStart( firstChild.data );\n\t\tif ( !firstChild.data ) block.children.shift();\n\t}\n\n\tif ( lastChild.type === 'Text' && trimAfter ) {\n\t\tlastChild.data = trimEnd( lastChild.data );\n\t\tif ( !lastChild.data ) block.children.pop();\n\t}\n\n\tif ( block.else ) {\n\t\ttrimWhitespace( block.else, trimBefore, trimAfter );\n\t}\n\n\tif ( firstChild.elseif ) {\n\t\ttrimWhitespace( firstChild, trimBefore, trimAfter );\n\t}\n}\n\nexport default function mustache ( parser ) {\n\tconst start = parser.index;\n\tparser.index += 2;\n\n\tparser.allowWhitespace();\n\n\t// {{/if}} or {{/each}}\n\tif ( parser.eat( '/' ) ) {\n\t\tlet block = parser.current();\n\t\tlet expected;\n\n\t\tif ( block.type === 'ElseBlock' ) {\n\t\t\tblock.end = start;\n\t\t\tparser.stack.pop();\n\t\t\tblock = parser.current();\n\t\t}\n\n\t\tif ( block.type === 'IfBlock' ) {\n\t\t\texpected = 'if';\n\t\t} else if ( block.type === 'EachBlock' ) {\n\t\t\texpected = 'each';\n\t\t} else {\n\t\t\tparser.error( `Unexpected block closing tag` );\n\t\t}\n\n\t\tparser.eat( expected, true );\n\t\tparser.allowWhitespace();\n\t\tparser.eat( '}}', true );\n\n\t\twhile ( block.elseif ) {\n\t\t\tblock.end = parser.index;\n\t\t\tparser.stack.pop();\n\t\t\tblock = parser.current();\n\n\t\t\tif ( block.else ) {\n\t\t\t\tblock.else.end = start;\n\t\t\t}\n\t\t}\n\n\t\t// strip leading/trailing whitespace as necessary\n\t\tif ( !block.children.length ) parser.error( `Empty block`, block.start );\n\n\t\tconst charBefore = parser.template[ block.start - 1 ];\n\t\tconst charAfter = parser.template[ parser.index ];\n\t\tconst trimBefore = !charBefore || whitespace.test( charBefore );\n\t\tconst trimAfter = !charAfter || whitespace.test( charAfter );\n\n\t\ttrimWhitespace( block, trimBefore, trimAfter );\n\n\t\tblock.end = parser.index;\n\t\tparser.stack.pop();\n\t}\n\n\telse if ( parser.eat( 'elseif' ) ) {\n\t\tconst block = parser.current();\n\t\tif ( block.type !== 'IfBlock' ) parser.error( 'Cannot have an {{elseif ...}} block outside an {{#if ...}} block' );\n\n\t\tparser.requireWhitespace();\n\n\t\tconst expression = readExpression( parser );\n\n\t\tparser.allowWhitespace();\n\t\tparser.eat( '}}', true );\n\n\t\tblock.else = {\n\t\t\tstart: parser.index,\n\t\t\tend: null,\n\t\t\ttype: 'ElseBlock',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tstart: parser.index,\n\t\t\t\t\tend: null,\n\t\t\t\t\ttype: 'IfBlock',\n\t\t\t\t\telseif: true,\n\t\t\t\t\texpression,\n\t\t\t\t\tchildren: []\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\n\t\tparser.stack.push( block.else.children[0] );\n\t}\n\n\telse if ( parser.eat( 'else' ) ) {\n\t\tconst block = parser.current();\n\t\tif ( block.type !== 'IfBlock' && block.type !== 'EachBlock' ) {\n\t\t\tparser.error( 'Cannot have an {{else}} block outside an {{#if ...}} or {{#each ...}} block' );\n\t\t}\n\n\t\tparser.allowWhitespace();\n\t\tparser.eat( '}}', true );\n\n\t\tblock.else = {\n\t\t\tstart: parser.index,\n\t\t\tend: null,\n\t\t\ttype: 'ElseBlock',\n\t\t\tchildren: []\n\t\t};\n\n\t\tparser.stack.push( block.else );\n\t}\n\n\t// {{#if foo}} or {{#each foo}}\n\telse if ( parser.eat( '#' ) ) {\n\t\tlet type;\n\n\t\tif ( parser.eat( 'if' ) ) {\n\t\t\ttype = 'IfBlock';\n\t\t} else if ( parser.eat( 'each' ) ) {\n\t\t\ttype = 'EachBlock';\n\t\t} else {\n\t\t\tparser.error( `Expected if or each` );\n\t\t}\n\n\t\tparser.requireWhitespace();\n\n\t\tconst expression = readExpression( parser );\n\n\t\tconst block = {\n\t\t\tstart,\n\t\t\tend: null,\n\t\t\ttype,\n\t\t\texpression,\n\t\t\tchildren: []\n\t\t};\n\n\t\tparser.allowWhitespace();\n\n\t\t// {{#each}} blocks must declare a context – {{#each list as item}}\n\t\tif ( type === 'EachBlock' ) {\n\t\t\tparser.eat( 'as', true );\n\t\t\tparser.requireWhitespace();\n\n\t\t\tblock.context = parser.read( validIdentifier ); // TODO check it's not a keyword\n\t\t\tif ( !block.context ) parser.error( `Expected name` );\n\n\t\t\tparser.allowWhitespace();\n\n\t\t\tif ( parser.eat( ',' ) ) {\n\t\t\t\tparser.allowWhitespace();\n\t\t\t\tblock.index = parser.read( validIdentifier );\n\t\t\t\tif ( !block.index ) parser.error( `Expected name` );\n\t\t\t\tparser.allowWhitespace();\n\t\t\t}\n\n\t\t\tif ( parser.eat( '@' ) ) {\n\t\t\t\tblock.key = parser.read( validIdentifier );\n\t\t\t\tif ( !block.key ) parser.error( `Expected name` );\n\t\t\t\tparser.allowWhitespace();\n\t\t\t}\n\t\t}\n\n\t\tparser.eat( '}}', true );\n\n\t\tparser.current().children.push( block );\n\t\tparser.stack.push( block );\n\t}\n\n\t// {{yield}}\n\telse if ( parser.eat( 'yield' ) ) {\n\n\t\tparser.allowWhitespace();\n\t\tparser.eat( '}}', true );\n\n\t\tparser.current().children.push({\n\t\t\tstart,\n\t\t\tend: parser.index,\n\t\t\ttype: 'YieldTag'\n\t\t});\n\t}\n\n\t// {{{raw}}} mustache\n\telse if ( parser.eat( '{' ) ) {\n\t\tconst expression = readExpression( parser );\n\n\t\tparser.allowWhitespace();\n\t\tparser.eat( '}}}', true );\n\n\t\tparser.current().children.push({\n\t\t\tstart,\n\t\t\tend: parser.index,\n\t\t\ttype: 'RawMustacheTag',\n\t\t\texpression\n\t\t});\n\t}\n\n\telse {\n\t\tconst expression = readExpression( parser );\n\n\t\tparser.allowWhitespace();\n\t\tparser.eat( '}}', true );\n\n\t\tparser.current().children.push({\n\t\t\tstart,\n\t\t\tend: parser.index,\n\t\t\ttype: 'MustacheTag',\n\t\t\texpression\n\t\t});\n\t}\n\n\treturn null;\n}\n","import { decodeCharacterReferences } from '../utils/html.js';\n\nexport default function text ( parser ) {\n\tconst start = parser.index;\n\n\tlet data = '';\n\n\twhile ( parser.index < parser.template.length && !parser.match( '<' ) && !parser.match( '{{' ) ) {\n\t\tdata += parser.template[ parser.index++ ];\n\t}\n\n\tparser.current().children.push({\n\t\tstart,\n\t\tend: parser.index,\n\t\ttype: 'Text',\n\t\tdata: decodeCharacterReferences( data )\n\t});\n\n\treturn null;\n}\n","import tag from './tag.js';\nimport mustache from './mustache.js';\nimport text from './text.js';\n\nexport default function fragment ( parser ) {\n\tif ( parser.match( '<' ) ) {\n\t\treturn tag;\n\t}\n\n\tif ( parser.match( '{{' ) ) {\n\t\treturn mustache;\n\t}\n\n\treturn text;\n}\n","import spaces from './spaces.js';\n\nfunction tabsToSpaces ( str ) {\n\treturn str.replace( /^\\t+/, match => match.split( '\\t' ).join( ' ' ) );\n}\n\nexport default function getCodeFrame ( source, line, column ) {\n\tconst lines = source.split( '\\n' );\n\n\tconst frameStart = Math.max( 0, line - 2 );\n\tconst frameEnd = Math.min( line + 3, lines.length );\n\n\tconst digits = String( frameEnd + 1 ).length;\n\n\treturn lines\n\t\t.slice( frameStart, frameEnd )\n\t\t.map( ( str, i ) => {\n\t\t\tconst isErrorLine = frameStart + i === line;\n\n\t\t\tlet lineNum = String( i + frameStart + 1 );\n\t\t\twhile ( lineNum.length < digits ) lineNum = ` ${lineNum}`;\n\n\t\t\tif ( isErrorLine ) {\n\t\t\t\tconst indicator = spaces( digits + 2 + tabsToSpaces( str.slice( 0, column ) ).length ) + '^';\n\t\t\t\treturn `${lineNum}: ${tabsToSpaces( str )}\\n${indicator}`;\n\t\t\t}\n\n\t\t\treturn `${lineNum}: ${tabsToSpaces( str )}`;\n\t\t})\n\t\t.join( '\\n' );\n}\n","// https://github.com/darkskyapp/string-hash/blob/master/index.js\nexport default function hash ( str ) {\n\tlet hash = 5381;\n\tlet i = str.length;\n\n\twhile ( i-- ) hash = ( hash * 33 ) ^ str.charCodeAt( i );\n\treturn hash >>> 0;\n}\n","import { locate } from 'locate-character';\nimport fragment from './state/fragment.js';\nimport { whitespace } from './patterns.js';\nimport { trimStart, trimEnd } from './utils/trim.js';\nimport getCodeFrame from '../utils/getCodeFrame.js';\nimport hash from './utils/hash.js';\n\nfunction ParseError ( message, template, index, filename ) {\n\tconst { line, column } = locate( template, index );\n\n\tthis.name = 'ParseError';\n\tthis.message = message;\n\tthis.frame = getCodeFrame( template, line, column );\n\n\tthis.loc = { line: line + 1, column };\n\tthis.pos = index;\n\tthis.filename = filename;\n}\n\nParseError.prototype.toString = function () {\n\treturn `${this.message} (${this.loc.line}:${this.loc.column})\\n${this.frame}`;\n};\n\nexport default function parse ( template, options = {} ) {\n\tif ( typeof template !== 'string' ) {\n\t\tthrow new TypeError( 'Template must be a string' );\n\t}\n\n\ttemplate = template.replace( /\\s+$/, '' );\n\n\tconst parser = {\n\t\tindex: 0,\n\t\ttemplate,\n\t\tstack: [],\n\n\t\tcurrent () {\n\t\t\treturn this.stack[ this.stack.length - 1 ];\n\t\t},\n\n\t\tacornError ( err ) {\n\t\t\tparser.error( err.message.replace( / \\(\\d+:\\d+\\)$/, '' ), err.pos );\n\t\t},\n\n\t\terror ( message, index = this.index ) {\n\t\t\tthrow new ParseError( message, this.template, index, options.filename );\n\t\t},\n\n\t\teat ( str, required ) {\n\t\t\tif ( this.match( str ) ) {\n\t\t\t\tthis.index += str.length;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif ( required ) {\n\t\t\t\tthis.error( `Expected ${str}` );\n\t\t\t}\n\t\t},\n\n\t\tmatch ( str ) {\n\t\t\treturn this.template.slice( this.index, this.index + str.length ) === str;\n\t\t},\n\n\t\tallowWhitespace () {\n\t\t\twhile ( this.index < this.template.length && whitespace.test( this.template[ this.index ] ) ) {\n\t\t\t\tthis.index++;\n\t\t\t}\n\t\t},\n\n\t\tread ( pattern ) {\n\t\t\tconst match = pattern.exec( this.template.slice( this.index ) );\n\t\t\tif ( !match || match.index !== 0 ) return null;\n\n\t\t\tparser.index += match[0].length;\n\n\t\t\treturn match[0];\n\t\t},\n\n\t\treadUntil ( pattern ) {\n\t\t\tif ( this.index >= this.template.length ) parser.error( 'Unexpected end of input' );\n\n\t\t\tconst start = this.index;\n\t\t\tconst match = pattern.exec( this.template.slice( start ) );\n\n\t\t\tif ( match ) {\n\t\t\t\tconst start = this.index;\n\t\t\t\tthis.index = start + match.index;\n\t\t\t\treturn this.template.slice( start, this.index );\n\t\t\t}\n\n\t\t\tthis.index = this.template.length;\n\t\t\treturn this.template.slice( start );\n\t\t},\n\n\t\tremaining () {\n\t\t\treturn this.template.slice( this.index );\n\t\t},\n\n\t\trequireWhitespace () {\n\t\t\tif ( !whitespace.test( this.template[ this.index ] ) ) {\n\t\t\t\tthis.error( `Expected whitespace` );\n\t\t\t}\n\n\t\t\tthis.allowWhitespace();\n\t\t},\n\n\t\thtml: {\n\t\t\tstart: null,\n\t\t\tend: null,\n\t\t\ttype: 'Fragment',\n\t\t\tchildren: []\n\t\t},\n\n\t\tcss: null,\n\n\t\tjs: null\n\t};\n\n\tparser.stack.push( parser.html );\n\n\tlet state = fragment;\n\n\twhile ( parser.index < parser.template.length ) {\n\t\tstate = state( parser ) || fragment;\n\t}\n\n\tif ( parser.stack.length > 1 ) {\n\t\tconst current = parser.current();\n\n\t\tconst type = current.type === 'Element' ? `<${current.name}>` : 'Block';\n\t\tparser.error( `${type} was left open`, current.start );\n\t}\n\n\tif ( state !== fragment ) {\n\t\tparser.error( 'Unexpected end of input' );\n\t}\n\n\t// trim unnecessary whitespace\n\twhile ( parser.html.children.length ) {\n\t\tconst firstChild = parser.html.children[0];\n\t\tparser.html.start = firstChild.start;\n\n\t\tif ( firstChild.type !== 'Text' ) break;\n\n\t\tconst length = firstChild.data.length;\n\t\tfirstChild.data = trimStart( firstChild.data );\n\n\t\tif ( firstChild.data === '' ) {\n\t\t\tparser.html.children.shift();\n\t\t} else {\n\t\t\tparser.html.start += length - firstChild.data.length;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\twhile ( parser.html.children.length ) {\n\t\tconst lastChild = parser.html.children[ parser.html.children.length - 1 ];\n\t\tparser.html.end = lastChild.end;\n\n\t\tif ( lastChild.type !== 'Text' ) break;\n\n\t\tconst length = lastChild.data.length;\n\t\tlastChild.data = trimEnd( lastChild.data );\n\n\t\tif ( lastChild.data === '' ) {\n\t\t\tparser.html.children.pop();\n\t\t} else {\n\t\t\tparser.html.end -= length - lastChild.data.length;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn {\n\t\thash: hash( template ),\n\t\thtml: parser.html,\n\t\tcss: parser.css,\n\t\tjs: parser.js\n\t};\n}\n","const disallowed = {\n\tLiteral: true,\n\tObjectExpression: true,\n\tArrayExpression: true\n};\n\nexport default function data ( validator, prop ) {\n\twhile ( prop.type === 'ParenthesizedExpression' ) prop = prop.expression;\n\n\t// TODO should we disallow references and expressions as well?\n\n\tif ( disallowed[ prop.value.type ] ) {\n\t\tvalidator.error( `'data' must be a function`, prop.value.start );\n\t}\n}\n","export default function checkForDupes ( validator, properties ) {\n\tconst seen = Object.create( null );\n\n\tproperties.forEach( prop => {\n\t\tif ( seen[ prop.key.name ] ) {\n\t\t\tvalidator.error( `Duplicate property '${prop.key.name}'`, prop.start );\n\t\t}\n\n\t\tseen[ prop.key.name ] = true;\n\t});\n}\n","export default function checkForComputedKeys ( validator, properties ) {\n\tproperties.forEach( prop => {\n\t\tif ( prop.key.computed ) {\n\t\t\tvalidator.error( `Cannot use computed keys`, prop.start );\n\t\t}\n\t});\n}\n","import checkForDupes from '../utils/checkForDupes.js';\nimport checkForComputedKeys from '../utils/checkForComputedKeys.js';\n\nconst isFunctionExpression = {\n\tFunctionExpression: true,\n\tArrowFunctionExpression: true\n};\n\nexport default function computed ( validator, prop ) {\n\tif ( prop.value.type !== 'ObjectExpression' ) {\n\t\tvalidator.error( `The 'computed' property must be an object literal`, prop.start );\n\t\treturn;\n\t}\n\n\tcheckForDupes( validator, prop.value.properties );\n\tcheckForComputedKeys( validator, prop.value.properties );\n\n\tprop.value.properties.forEach( computation => {\n\t\tif ( !isFunctionExpression[ computation.value.type ] ) {\n\t\t\tvalidator.error( `Computed properties can be function expressions or arrow function expressions`, computation.value.start );\n\t\t\treturn;\n\t\t}\n\n\t\tconst params = computation.value.params;\n\n\t\tif ( params.length === 0 ) {\n\t\t\tvalidator.error( `A computed value must depend on at least one property`, computation.value.start );\n\t\t\treturn;\n\t\t}\n\n\t\tparams.forEach( param => {\n\t\t\tconst valid = param.type === 'Identifier' || param.type === 'AssignmentPattern' && param.left.type === 'Identifier';\n\n\t\t\tif ( !valid ) {\n\t\t\t\tvalidator.error( `Computed properties cannot use destructuring in function parameters`, param.start );\n\t\t\t}\n\t\t});\n\t});\n}\n","function walk ( ast, ref) {\n\tvar enter = ref.enter;\n\tvar leave = ref.leave;\n\n\tvisit( ast, null, enter, leave );\n}\n\nvar context = {\n\tskip: function () { return context.shouldSkip = true; },\n\tshouldSkip: false\n};\n\nvar childKeys = {};\n\nvar toString = Object.prototype.toString;\n\nfunction isArray ( thing ) {\n\treturn toString.call( thing ) === '[object Array]';\n}\n\nfunction visit ( node, parent, enter, leave, prop, index ) {\n\tif ( !node ) { return; }\n\n\tif ( enter ) {\n\t\tcontext.shouldSkip = false;\n\t\tenter.call( context, node, parent, prop, index );\n\t\tif ( context.shouldSkip ) { return; }\n\t}\n\n\tvar keys = childKeys[ node.type ] || (\n\t\tchildKeys[ node.type ] = Object.keys( node ).filter( function (key) { return typeof node[ key ] === 'object'; } )\n\t);\n\n\tfor ( var i = 0; i < keys.length; i += 1 ) {\n\t\tvar key = keys[i];\n\t\tvar value = node[ key ];\n\n\t\tif ( isArray( value ) ) {\n\t\t\tfor ( var j = 0; j < value.length; j += 1 ) {\n\t\t\t\tvisit( value[j], node, enter, leave, key, j );\n\t\t\t}\n\t\t}\n\n\t\telse if ( value && value.type ) {\n\t\t\tvisit( value, node, enter, leave, key, null );\n\t\t}\n\t}\n\n\tif ( leave ) {\n\t\tleave( node, parent, prop, index );\n\t}\n}\n\nexport { walk };\n//# sourceMappingURL=estree-walker.es.js.map\n","export default function isReference ( node, parent ) {\n\tif ( node.type === 'MemberExpression' ) {\n\t\treturn !node.computed && isReference( node.object, node );\n\t}\n\n\tif ( node.type === 'Identifier' ) {\n\t\t// the only time we could have an identifier node without a parent is\n\t\t// if it's the entire body of a function without a block statement –\n\t\t// i.e. an arrow function expression like `a => a`\n\t\tif ( !parent ) return true;\n\n\t\t// TODO is this right?\n\t\tif ( parent.type === 'MemberExpression' || parent.type === 'MethodDefinition' ) {\n\t\t\treturn parent.computed || node === parent.object;\n\t\t}\n\n\t\t// disregard the `bar` in `{ bar: foo }`, but keep it in `{ [bar]: foo }`\n\t\tif ( parent.type === 'Property' ) return parent.computed || node === parent.value;\n\n\t\t// disregard the `bar` in `class Foo { bar () {...} }`\n\t\tif ( parent.type === 'MethodDefinition' ) return false;\n\n\t\t// disregard the `bar` in `export { foo as bar }`\n\t\tif ( parent.type === 'ExportSpecifier' && node !== parent.local ) return;\n\n\t\treturn true;\n\t}\n}\n","import { walk } from 'estree-walker';\nimport isReference from '../../../utils/isReference.js';\n\nexport default function usesThisOrArguments ( node ) {\n\tlet result = false;\n\n\twalk( node, {\n\t\tenter ( node ) {\n\t\t\tif ( result || node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration' ) {\n\t\t\t\treturn this.skip();\n\t\t\t}\n\n\t\t\tif ( node.type === 'ThisExpression' ) {\n\t\t\t\tresult = true;\n\t\t\t}\n\n\t\t\tif ( node.type === 'Identifier' && isReference( node ) && node.name === 'arguments' ) {\n\t\t\t\tresult = true;\n\t\t\t}\n\t\t}\n\t});\n\n\treturn result;\n}\n","import usesThisOrArguments from '../utils/usesThisOrArguments.js';\n\nexport default function oncreate ( validator, prop ) {\n\tif ( prop.value.type === 'ArrowFunctionExpression' ) {\n\t\tif ( usesThisOrArguments( prop.value.body ) ) {\n\t\t\tvalidator.error( `'oncreate' should be a function expression, not an arrow function expression`, prop.start );\n\t\t}\n\t}\n}\n","import usesThisOrArguments from '../utils/usesThisOrArguments.js';\n\nexport default function ondestroy ( validator, prop ) {\n\tif ( prop.value.type === 'ArrowFunctionExpression' ) {\n\t\tif ( usesThisOrArguments( prop.value.body ) ) {\n\t\t\tvalidator.error( `'ondestroy' should be a function expression, not an arrow function expression`, prop.start );\n\t\t}\n\t}\n}\n","import oncreate from './oncreate.js';\n\nexport default function onrender ( validator, prop ) {\n\tvalidator.warn( `'onrender' has been deprecated in favour of 'oncreate', and will cause an error in Svelte 2.x`, prop.start );\n\toncreate( validator, prop );\n}\n","import ondestroy from './ondestroy.js';\n\nexport default function onteardown ( validator, prop ) {\n\tvalidator.warn( `'onteardown' has been deprecated in favour of 'ondestroy', and will cause an error in Svelte 2.x`, prop.start );\n\tondestroy( validator, prop );\n}\n","import checkForDupes from '../utils/checkForDupes.js';\nimport checkForComputedKeys from '../utils/checkForComputedKeys.js';\n\nexport default function helpers ( validator, prop ) {\n\tif ( prop.value.type !== 'ObjectExpression' ) {\n\t\tvalidator.error( `The 'helpers' property must be an object literal`, prop.start );\n\t\treturn;\n\t}\n\n\tcheckForDupes( validator, prop.value.properties );\n\tcheckForComputedKeys( validator, prop.value.properties );\n}\n","import checkForDupes from '../utils/checkForDupes.js';\nimport checkForComputedKeys from '../utils/checkForComputedKeys.js';\nimport usesThisOrArguments from '../utils/usesThisOrArguments.js';\n\nconst builtin = {\n\tset: true,\n\tget: true,\n\ton: true,\n\tfire: true,\n\tobserve: true,\n\tteardown: true\n};\n\nexport default function methods ( validator, prop ) {\n\tif ( prop.value.type !== 'ObjectExpression' ) {\n\t\tvalidator.error( `The 'methods' property must be an object literal`, prop.start );\n\t\treturn;\n\t}\n\n\tcheckForDupes( validator, prop.value.properties );\n\tcheckForComputedKeys( validator, prop.value.properties );\n\n\tprop.value.properties.forEach( prop => {\n\t\tif ( builtin[ prop.key.name ] ) {\n\t\t\tvalidator.error( `Cannot overwrite built-in method '${prop.key.name}'` );\n\t\t}\n\n\t\tif ( prop.value.type === 'ArrowFunctionExpression' ) {\n\t\t\tif ( usesThisOrArguments( prop.value.body ) ) {\n\t\t\t\tvalidator.error( `Method '${prop.key.name}' should be a function expression, not an arrow function expression`, prop.start );\n\t\t\t}\n\t\t}\n\t});\n}\n","import checkForDupes from '../utils/checkForDupes.js';\nimport checkForComputedKeys from '../utils/checkForComputedKeys.js';\n\nexport default function components ( validator, prop ) {\n\tif ( prop.value.type !== 'ObjectExpression' ) {\n\t\tvalidator.error( `The 'components' property must be an object literal`, prop.start );\n\t\treturn;\n\t}\n\n\tcheckForDupes( validator, prop.value.properties );\n\tcheckForComputedKeys( validator, prop.value.properties );\n\n\tprop.value.properties.forEach( component => {\n\t\tconst char = component.key.name[0];\n\t\tif ( char === char.toLowerCase() ) {\n\t\t\tvalidator.warn( `Component names should be capitalised`, component.start );\n\t\t}\n\t});\n}\n","import checkForDupes from '../utils/checkForDupes.js';\nimport checkForComputedKeys from '../utils/checkForComputedKeys.js';\n\nexport default function events ( validator, prop ) {\n\tif ( prop.value.type !== 'ObjectExpression' ) {\n\t\tvalidator.error( `The 'events' property must be an object literal`, prop.start );\n\t\treturn;\n\t}\n\n\tcheckForDupes( validator, prop.value.properties );\n\tcheckForComputedKeys( validator, prop.value.properties );\n}\n","export default function namespace ( validator, prop ) {\n\tif ( prop.value.type !== 'Literal' || typeof prop.value.value !== 'string' ) {\n\t\tvalidator.error( `The 'namespace' property must be a string literal representing a valid namespace`, prop.start );\n\t}\n}\n","import data from './data.js';\nimport computed from './computed.js';\nimport oncreate from './oncreate.js';\nimport ondestroy from './ondestroy.js';\nimport onrender from './onrender.js';\nimport onteardown from './onteardown.js';\nimport helpers from './helpers.js';\nimport methods from './methods.js';\nimport components from './components.js';\nimport events from './events.js';\nimport namespace from './namespace.js';\n\nexport default {\n\tdata,\n\tcomputed,\n\toncreate,\n\tondestroy,\n\tonrender,\n\tonteardown,\n\thelpers,\n\tmethods,\n\tcomponents,\n\tevents,\n\tnamespace\n};\n","// adapted from https://github.com/Glench/this.js/blob/master/lib/this.js\n// BSD Licensed\n\nexport default function FuzzySet (arr, useLevenshtein, gramSizeLower, gramSizeUpper) {\n\t// default options\n\tarr = arr || [];\n\tthis.gramSizeLower = gramSizeLower || 2;\n\tthis.gramSizeUpper = gramSizeUpper || 3;\n\tthis.useLevenshtein = (typeof useLevenshtein !== 'boolean') ? true : useLevenshtein;\n\n\t// define all the object functions and attributes\n\tthis.exactSet = {};\n\tthis.matchDict = {};\n\tthis.items = {};\n\n\t// helper functions\n\tfunction levenshtein ( str1, str2 ) {\n\t\tconst current = [];\n\t\tlet prev;\n\t\tlet value;\n\n\t\tfor (let i = 0; i <= str2.length; i++) {\n\t\t\tfor (let j = 0; j <= str1.length; j++) {\n\t\t\t\tif (i && j) {\n\t\t\t\t\tif (str1.charAt(j - 1) === str2.charAt(i - 1)) {\n\t\t\t\t\t\tvalue = prev;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = Math.min(current[j], current[j - 1], prev) + 1;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvalue = i + j;\n\t\t\t\t}\n\n\t\t\t\tprev = current[j];\n\t\t\t\tcurrent[j] = value;\n\t\t\t}\n\t\t}\n\n\t\treturn current.pop();\n\t}\n\n\t// return an edit distance from 0 to 1\n\tfunction _distance (str1, str2) {\n\t\tif (str1 === null && str2 === null) throw 'Trying to compare two null values';\n\t\tif (str1 === null || str2 === null) return 0;\n\t\tstr1 = String(str1); str2 = String(str2);\n\n\t\tconst distance = levenshtein(str1, str2);\n\t\tif (str1.length > str2.length) {\n\t\t\treturn 1 - distance / str1.length;\n\t\t} else {\n\t\t\treturn 1 - distance / str2.length;\n\t\t}\n\t}\n\n\tconst _nonWordRe = /[^\\w, ]+/;\n\n\tfunction _iterateGrams (value, gramSize) {\n\t\tgramSize = gramSize || 2;\n\t\tconst simplified = '-' + value.toLowerCase().replace(_nonWordRe, '') + '-';\n\t\tconst lenDiff = gramSize - simplified.length;\n\t\tconst results = [];\n\n\t\tif (lenDiff > 0) {\n\t\t\tfor (let i = 0; i < lenDiff; ++i) {\n\t\t\t\tvalue += '-';\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < simplified.length - gramSize + 1; ++i) {\n\t\t\tresults.push(simplified.slice(i, i + gramSize));\n\t\t}\n\t\treturn results;\n\t}\n\n\tfunction _gramCounter (value, gramSize) {\n\t\t// return an object where key=gram, value=number of occurrences\n\t\tgramSize = gramSize || 2;\n\t\tconst result = {};\n\t\tconst grams = _iterateGrams(value, gramSize);\n\t\tlet i = 0;\n\n\t\tfor (i; i < grams.length; ++i) {\n\t\t\tif (grams[i] in result) {\n\t\t\t\tresult[grams[i]] += 1;\n\t\t\t} else {\n\t\t\t\tresult[grams[i]] = 1;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\t// the main functions\n\tthis.get = function (value, defaultValue) {\n\t\t// check for value in set, returning defaultValue or null if none found\n\t\tconst result = this._get(value);\n\t\tif (!result && typeof defaultValue !== 'undefined') {\n\t\t\treturn defaultValue;\n\t\t}\n\t\treturn result;\n\t};\n\n\tthis._get = function (value) {\n\t\tconst normalizedValue = this._normalizeStr(value);\n\t\tconst result = this.exactSet[normalizedValue];\n\n\t\tif (result) {\n\t\t\treturn [[1, result]];\n\t\t}\n\n\t\tlet results = [];\n\t\t// start with high gram size and if there are no results, go to lower gram sizes\n\t\tfor (let gramSize = this.gramSizeUpper; gramSize >= this.gramSizeLower; --gramSize) {\n\t\t\tresults = this.__get(value, gramSize);\n\t\t\tif (results) {\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t};\n\n\tthis.__get = function (value, gramSize) {\n\t\tconst normalizedValue = this._normalizeStr(value);\n\t\tconst matches = {};\n\t\tconst gramCounts = _gramCounter(normalizedValue, gramSize);\n\t\tconst items = this.items[gramSize];\n\t\tlet sumOfSquareGramCounts = 0;\n\t\tlet gram;\n\t\tlet gramCount;\n\t\tlet i;\n\t\tlet index;\n\t\tlet otherGramCount;\n\n\t\tfor (gram in gramCounts) {\n\t\t\tgramCount = gramCounts[gram];\n\t\t\tsumOfSquareGramCounts += Math.pow(gramCount, 2);\n\t\t\tif (gram in this.matchDict) {\n\t\t\t\tfor (i = 0; i < this.matchDict[gram].length; ++i) {\n\t\t\t\t\tindex = this.matchDict[gram][i][0];\n\t\t\t\t\totherGramCount = this.matchDict[gram][i][1];\n\t\t\t\t\tif (index in matches) {\n\t\t\t\t\t\tmatches[index] += gramCount * otherGramCount;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatches[index] = gramCount * otherGramCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction isEmptyObject ( obj ) {\n\t\t\tfor ( const prop in obj ) {\n\t\t\t\tif ( obj.hasOwnProperty( prop ) )\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (isEmptyObject(matches)) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst vectorNormal = Math.sqrt(sumOfSquareGramCounts);\n\t\tlet results = [];\n\t\tlet matchScore;\n\n\t\t// build a results list of [score, str]\n\t\tfor (const matchIndex in matches) {\n\t\t\tmatchScore = matches[matchIndex];\n\t\t\tresults.push([matchScore / (vectorNormal * items[matchIndex][0]), items[matchIndex][1]]);\n\t\t}\n\t\tfunction sortDescending (a, b) {\n\t\t\tif (a[0] < b[0]) {\n\t\t\t\treturn 1;\n\t\t\t} else if (a[0] > b[0]) {\n\t\t\t\treturn -1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\n\t\tresults.sort(sortDescending);\n\t\tif (this.useLevenshtein) {\n\t\t\tconst newResults = [];\n\t\t\tconst endIndex = Math.min(50, results.length);\n\t\t\t// truncate somewhat arbitrarily to 50\n\t\t\tfor (let i = 0; i < endIndex; ++i) {\n\t\t\t\tnewResults.push([_distance(results[i][1], normalizedValue), results[i][1]]);\n\t\t\t}\n\t\t\tresults = newResults;\n\t\t\tresults.sort(sortDescending);\n\t\t}\n\t\tconst newResults = [];\n\t\tfor (let i = 0; i < results.length; ++i) {\n\t\t\tif (results[i][0] == results[0][0]) {\n\t\t\t\tnewResults.push([results[i][0], this.exactSet[results[i][1]]]);\n\t\t\t}\n\t\t}\n\t\treturn newResults;\n\t};\n\n\tthis.add = function (value) {\n\t\tconst normalizedValue = this._normalizeStr(value);\n\t\tif (normalizedValue in this.exactSet) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet i = this.gramSizeLower;\n\t\tfor (i; i < this.gramSizeUpper + 1; ++i) {\n\t\t\tthis._add(value, i);\n\t\t}\n\t};\n\n\tthis._add = function (value, gramSize) {\n\t\tconst normalizedValue = this._normalizeStr(value);\n\t\tconst items = this.items[gramSize] || [];\n\t\tconst index = items.length;\n\n\t\titems.push(0);\n\t\tconst gramCounts = _gramCounter(normalizedValue, gramSize);\n\t\tlet sumOfSquareGramCounts = 0;\n\t\tlet gram;\n\t\tlet gramCount;\n\n\t\tfor (gram in gramCounts) {\n\t\t\tgramCount = gramCounts[gram];\n\t\t\tsumOfSquareGramCounts += Math.pow(gramCount, 2);\n\t\t\tif (gram in this.matchDict) {\n\t\t\t\tthis.matchDict[gram].push([index, gramCount]);\n\t\t\t} else {\n\t\t\t\tthis.matchDict[gram] = [[index, gramCount]];\n\t\t\t}\n\t\t}\n\t\tconst vectorNormal = Math.sqrt(sumOfSquareGramCounts);\n\t\titems[index] = [vectorNormal, normalizedValue];\n\t\tthis.items[gramSize] = items;\n\t\tthis.exactSet[normalizedValue] = value;\n\t};\n\n\tthis._normalizeStr = function (str) {\n\t\tif (Object.prototype.toString.call(str) !== '[object String]') throw 'Must use a string as argument to FuzzySet functions';\n\t\treturn str.toLowerCase();\n\t};\n\n\t// return length of items in set\n\tthis.length = function () {\n\t\tlet count = 0;\n\t\tlet prop;\n\n\t\tfor (prop in this.exactSet) {\n\t\t\tif (this.exactSet.hasOwnProperty(prop)) {\n\t\t\t\tcount += 1;\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t};\n\n\t// return is set is empty\n\tthis.isEmpty = function () {\n\t\tfor (const prop in this.exactSet) {\n\t\t\tif (this.exactSet.hasOwnProperty(prop)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t};\n\n\t// return list of values loaded into set\n\tthis.values = function () {\n\t\tconst values = [];\n\n\t\tfor (const prop in this.exactSet) {\n\t\t\tif (this.exactSet.hasOwnProperty(prop)) {\n\t\t\t\tvalues.push(this.exactSet[prop]);\n\t\t\t}\n\t\t}\n\t\treturn values;\n\t};\n\n\n\t// initialization\n\tlet i = this.gramSizeLower;\n\tfor (i; i < this.gramSizeUpper + 1; ++i) {\n\t\tthis.items[i] = [];\n\t}\n\t// add all the items to the set\n\tfor (i = 0; i < arr.length; ++i) {\n\t\tthis.add(arr[i]);\n\t}\n\n\treturn this;\n}\n","export const html = 'http://www.w3.org/1999/xhtml';\nexport const mathml = 'http://www.w3.org/1998/Math/MathML';\nexport const svg = 'http://www.w3.org/2000/svg';\nexport const xlink = 'http://www.w3.org/1999/xlink';\nexport const xml = 'http://www.w3.org/XML/1998/namespace';\nexport const xmlns = 'http://www.w3.org/2000/xmlns';\n\nexport default { html, mathml, svg, xlink, xml, xmlns };\n","import propValidators from './propValidators/index.js';\nimport FuzzySet from './utils/FuzzySet.js';\nimport checkForDupes from './utils/checkForDupes.js';\nimport checkForComputedKeys from './utils/checkForComputedKeys.js';\nimport namespaces from '../../utils/namespaces.js';\n\nconst validPropList = Object.keys( propValidators );\n\nconst fuzzySet = new FuzzySet( validPropList );\n\nexport default function validateJs ( validator, js ) {\n\tjs.content.body.forEach( node => {\n\t\t// check there are no named exports\n\t\tif ( node.type === 'ExportNamedDeclaration' ) {\n\t\t\tvalidator.error( `A component can only have a default export`, node.start );\n\t\t}\n\n\t\tif ( node.type === 'ExportDefaultDeclaration' ) {\n\t\t\tif ( node.declaration.type !== 'ObjectExpression' ) {\n\t\t\t\treturn validator.error( `Default export must be an object literal`, node.declaration.start );\n\t\t\t}\n\n\t\t\tcheckForComputedKeys( validator, node.declaration.properties );\n\t\t\tcheckForDupes( validator, node.declaration.properties );\n\n\t\t\tconst templateProperties = {};\n\n\t\t\tnode.declaration.properties.forEach( prop => {\n\t\t\t\ttemplateProperties[ prop.key.name ] = prop;\n\t\t\t});\n\n\t\t\t// Remove these checks in version 2\n\t\t\tif ( templateProperties.oncreate && templateProperties.onrender ) {\n\t\t\t\tvalidator.error( 'Cannot have both oncreate and onrender', templateProperties.onrender.start );\n\t\t\t}\n\n\t\t\tif ( templateProperties.ondestroy && templateProperties.onteardown ) {\n\t\t\t\tvalidator.error( 'Cannot have both ondestroy and onteardown', templateProperties.onteardown.start );\n\t\t\t}\n\n\t\t\t// ensure all exported props are valid\n\t\t\tnode.declaration.properties.forEach( prop => {\n\t\t\t\tconst propValidator = propValidators[ prop.key.name ];\n\n\t\t\t\tif ( propValidator ) {\n\t\t\t\t\tpropValidator( validator, prop );\n\t\t\t\t} else {\n\t\t\t\t\tconst matches = fuzzySet.get( prop.key.name );\n\t\t\t\t\tif ( matches && matches[0] && matches[0][0] > 0.7 ) {\n\t\t\t\t\t\tvalidator.error( `Unexpected property '${prop.key.name}' (did you mean '${matches[0][1]}'?)`, prop.start );\n\t\t\t\t\t} else if ( /FunctionExpression/.test( prop.value.type ) ) {\n\t\t\t\t\t\tvalidator.error( `Unexpected property '${prop.key.name}' (did you mean to include it in 'methods'?)`, prop.start );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalidator.error( `Unexpected property '${prop.key.name}'`, prop.start );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif ( templateProperties.namespace ) {\n\t\t\t\tconst ns = templateProperties.namespace.value.value;\n\t\t\t\tvalidator.namespace = namespaces[ ns ] || ns;\n\t\t\t}\n\n\t\t\tvalidator.defaultExport = node;\n\t\t}\n\t});\n}\n","import * as namespaces from '../../utils/namespaces.js';\n\nconst svg = /^(?:altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|animateMotion|animateTransform|circle|clipPath|color-profile|cursor|defs|desc|discard|ellipse|feBlend|feColorMatrix|feComponentTransfer|feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feImage|feMerge|feMergeNode|feMorphology|feOffset|fePointLight|feSpecularLighting|feSpotLight|feTile|feTurbulence|filter|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|foreignObject|g|glyph|glyphRef|hatch|hatchpath|hkern|image|line|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|metadata|missing-glyph|mpath|path|pattern|polygon|polyline|radialGradient|rect|set|solidcolor|stop|switch|symbol|text|textPath|title|tref|tspan|unknown|use|view|vkern)$/;\n\nexport default function validateHtml ( validator, html ) {\n\tlet elementDepth = 0;\n\n\tfunction visit ( node ) {\n\t\tif ( node.type === 'EachBlock' ) {\n\t\t\tif ( !~validator.names.indexOf( node.context ) ) validator.names.push( node.context );\n\t\t\tif ( node.index && !~validator.names.indexOf( node.index ) ) validator.names.push( node.index );\n\t\t}\n\n\t\tif ( node.type === 'Element' ) {\n\t\t\tif ( elementDepth === 0 && validator.namespace !== namespaces.svg && svg.test( node.name ) ) {\n\t\t\t\tvalidator.warn( `<${node.name}> is an SVG element – did you forget to add { namespace: 'svg' } ?`, node.start );\n\t\t\t}\n\n\t\t\telementDepth += 1;\n\t\t}\n\n\t\tif ( node.children ) {\n\t\t\tnode.children.forEach( visit );\n\t\t}\n\n\t\tif (node.else ) {\n\t\t\tvisit( node.else );\n\t\t}\n\n\t\tif ( node.type === 'Element' ) {\n\t\t\telementDepth -= 1;\n\t\t}\n\t}\n\n\thtml.children.forEach( visit );\n}\n","import validateJs from './js/index.js';\nimport validateHtml from './html/index.js';\nimport { getLocator } from 'locate-character';\nimport getCodeFrame from '../utils/getCodeFrame.js';\n\nexport default function validate ( parsed, source, { onerror, onwarn, name, filename } ) {\n\tconst locator = getLocator( source );\n\n\tconst validator = {\n\t\terror: ( message, pos ) => {\n\t\t\tconst { line, column } = locator( pos );\n\n\t\t\tconst error = new Error( message );\n\t\t\terror.frame = getCodeFrame( source, line, column );\n\t\t\terror.loc = { line: line + 1, column };\n\t\t\terror.pos = pos;\n\t\t\terror.filename = filename;\n\n\t\t\terror.toString = () => `${error.message} (${error.loc.line}:${error.loc.column})\\n${error.frame}`;\n\n\t\t\tonerror( error );\n\t\t},\n\n\t\twarn: ( message, pos ) => {\n\t\t\tconst { line, column } = locator( pos );\n\n\t\t\tconst frame = getCodeFrame( source, line, column );\n\n\t\t\tonwarn({\n\t\t\t\tmessage,\n\t\t\t\tframe,\n\t\t\t\tloc: { line: line + 1, column },\n\t\t\t\tpos,\n\t\t\t\tfilename,\n\t\t\t\ttoString: () => `${message} (${line + 1}:${column})\\n${frame}`\n\t\t\t});\n\t\t},\n\n\t\tnames: [],\n\n\t\tnamespace: null\n\t};\n\n\tif ( name && !/^[a-zA-Z_$][a-zA-Z_$0-9]*$/.test( name ) ) {\n\t\tconst error = new Error( `options.name must be a valid identifier` );\n\t\tonerror( error );\n\t}\n\n\tif ( parsed.js ) {\n\t\tvalidateJs( validator, parsed.js );\n\t}\n\n\tif ( parsed.html ) {\n\t\tvalidateHtml( validator, parsed.html );\n\t}\n\n\treturn {\n\t\tnames: validator.names\n\t};\n}\n","const start = /\\n(\\t+)/;\n\nexport default function deindent ( strings, ...values ) {\n\tconst indentation = start.exec( strings[0] )[1];\n\tconst pattern = new RegExp( `^${indentation}`, 'gm' );\n\n\tlet result = strings[0].replace( start, '' ).replace( pattern, '' );\n\n\tlet trailingIndentation = getTrailingIndentation( result );\n\n\tfor ( let i = 1; i < strings.length; i += 1 ) {\n\t\tconst value = String( values[ i - 1 ] ).replace( /\\n/g, `\\n${trailingIndentation}` );\n\t\tresult += value + strings[i].replace( pattern, '' );\n\n\t\ttrailingIndentation = getTrailingIndentation( result );\n\t}\n\n\treturn result.trim();\n}\n\nfunction getTrailingIndentation ( str ) {\n\tlet i = str.length;\n\twhile ( str[ i - 1 ] === ' ' || str[ i - 1 ] === '\\t' ) i -= 1;\n\treturn str.slice( i, str.length );\n}\n","const LINE = {};\nconst BLOCK = {};\n\nexport default class CodeBuilder {\n\tconstructor () {\n\t\tthis.result = '';\n\n\t\tthis.first = null;\n\t\tthis.last = null;\n\t}\n\n\taddLine ( line ) {\n\t\tif ( this.last === BLOCK ) {\n\t\t\tthis.result += `\\n\\n${line}`;\n\t\t} else if ( this.last === LINE ) {\n\t\t\tthis.result += `\\n${line}`;\n\t\t} else {\n\t\t\tthis.result += line;\n\t\t}\n\n\t\tthis.last = LINE;\n\t\tif ( !this.first ) this.first = LINE;\n\t}\n\n\taddLineAtStart ( line ) {\n\t\tif ( this.first === BLOCK ) {\n\t\t\tthis.result = `${line}\\n\\n${this.result}`;\n\t\t} else if ( this.first === LINE ) {\n\t\t\tthis.result = `${line}\\n${this.result}`;\n\t\t} else {\n\t\t\tthis.result += line;\n\t\t}\n\n\t\tthis.first = LINE;\n\t\tif ( !this.last ) this.last = LINE;\n\t}\n\n\taddBlock ( block ) {\n\t\tif ( this.result ) {\n\t\t\tthis.result += `\\n\\n${block}`;\n\t\t} else {\n\t\t\tthis.result += block;\n\t\t}\n\n\t\tthis.last = BLOCK;\n\t\tif ( !this.first ) this.first = BLOCK;\n\t}\n\n\taddBlockAtStart ( block ) {\n\t\tif ( this.result ) {\n\t\t\tthis.result = `${block}\\n\\n${this.result}`;\n\t\t} else {\n\t\t\tthis.result += block;\n\t\t}\n\n\t\tthis.first = BLOCK;\n\t\tif ( !this.last ) this.last = BLOCK;\n\t}\n\n\tisEmpty () {\n\t\treturn this.result === '';\n\t}\n\n\ttoString () {\n\t\treturn this.result.trim();\n\t}\n}\n","import CodeBuilder from '../../../utils/CodeBuilder.js';\n\nexport default function getBuilders () {\n\treturn {\n\t\tinit: new CodeBuilder(),\n\t\tmount: new CodeBuilder(),\n\t\tupdate: new CodeBuilder(),\n\t\tdetach: new CodeBuilder(),\n\t\tdetachRaw: new CodeBuilder(),\n\t\tteardown: new CodeBuilder()\n\t};\n}\n","const commentsPattern = /\\/\\*[\\s\\S]*?\\*\\//g;\n\nexport default function processCss ( parsed, code ) {\n\tconst css = parsed.css.content.styles;\n\tconst offset = parsed.css.content.start;\n\n\tconst attr = `[svelte-${parsed.hash}]`;\n\n\tconst keyframes = new Map();\n\n\tfunction walkKeyframes ( node ) {\n\t\tif ( node.type === 'Atrule' && node.name.toLowerCase() === 'keyframes' ) {\n\t\t\tnode.expression.children.forEach( expression => {\n\t\t\t\tif ( expression.type === 'Identifier' ) {\n\t\t\t\t\tconst newName = `svelte-${parsed.hash}-${expression.name}`;\n\t\t\t\t\tcode.overwrite( expression.start, expression.end, newName );\n\t\t\t\t\tkeyframes.set( expression.name, newName );\n\t\t\t\t}\n\t\t\t});\n\t\t} else if ( node.children ) {\n\t\t\tnode.children.forEach( walkKeyframes );\n\t\t} else if ( node.block ) {\n\t\t\twalkKeyframes( node.block );\n\t\t}\n\t}\n\n\tparsed.css.children.forEach( walkKeyframes );\n\n\tfunction transform ( rule ) {\n\t\trule.selector.children.forEach( selector => {\n\t\t\tconst start = selector.start - offset;\n\t\t\tconst end = selector.end - offset;\n\n\t\t\tconst selectorString = css.slice( start, end );\n\n\t\t\tconst firstToken = selector.children[0];\n\n\t\t\tlet transformed;\n\n\t\t\tif ( firstToken.type === 'TypeSelector' ) {\n\t\t\t\tconst insert = firstToken.end - offset;\n\t\t\t\tconst head = css.slice( start, insert );\n\t\t\t\tconst tail = css.slice( insert, end );\n\n\t\t\t\ttransformed = `${head}${attr}${tail}, ${attr} ${selectorString}`;\n\t\t\t} else {\n\t\t\t\ttransformed = `${attr}${selectorString}, ${attr} ${selectorString}`;\n\t\t\t}\n\n\t\t\tcode.overwrite( start + offset, end + offset, transformed );\n\t\t});\n\n\t\trule.block.children.forEach( block => {\n\t\t\tif ( block.type === 'Declaration' ) {\n\t\t\t\tconst property = block.property.toLowerCase();\n\t\t\t\tif ( property === 'animation' || property === 'animation-name' ) {\n\t\t\t\t\tblock.value.children.forEach( block => {\n\t\t\t\t\t\tif ( block.type === 'Identifier' ) {\n\t\t\t\t\t\t\tconst name = block.name;\n\t\t\t\t\t\t\tif ( keyframes.has( name ) ) {\n\t\t\t\t\t\t\t\tcode.overwrite( block.start, block.end, keyframes.get( name ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction walk ( node ) {\n\t\tif ( node.type === 'Rule' ) {\n\t\t\ttransform( node );\n\t\t} else if ( node.type === 'Atrule' && node.name.toLowerCase() === 'keyframes' ) {\n\t\t\t// these have already been processed\n\t\t} else if ( node.children ) {\n\t\t\tnode.children.forEach( walk );\n\t\t} else if ( node.block ) {\n\t\t\twalk( node.block );\n\t\t}\n\t}\n\n\tparsed.css.children.forEach( walk );\n\n\t// remove comments. TODO would be nice if this was exposed in css-tree\n\tlet match;\n\twhile ( match = commentsPattern.exec( css ) ) {\n\t\tconst start = match.index + offset;\n\t\tconst end = start + match[0].length;\n\n\t\tcode.remove( start, end );\n\t}\n\n\treturn code.slice( parsed.css.content.start, parsed.css.content.end );\n}\n","export default function removeObjectKey ( generator, node, key ) {\n\tif ( node.type !== 'ObjectExpression' ) return;\n\tconst properties = node.properties;\n\tconst index = properties.findIndex( property => property.key.type === 'Identifier' && property.key.name === key );\n\tif ( index === -1 ) return;\n\tconst a = properties[ index ].start;\n\tconst b = index < properties.length - 1 ? properties[ index + 1 ].start : properties[ index ].end;\n\tgenerator.code.remove( a, b );\n}\n","export default {\n\t// do nothing\n};\n","import CodeBuilder from '../../../utils/CodeBuilder.js';\nimport deindent from '../../../utils/deindent.js';\nimport getBuilders from '../utils/getBuilders.js';\n\nconst reserved = {\n\tcomponent: true,\n\troot: true\n};\n\nexport default {\n\tenter ( generator, node ) {\n\t\tconst name = generator.getUniqueName( `eachBlock` );\n\t\tconst renderer = generator.getUniqueName( `renderEachBlock` );\n\t\tconst elseName = `${name}_else`;\n\t\tconst iterations = `${name}_iterations`;\n\t\tconst renderElse = `${renderer}_else`;\n\t\tconst i = generator.current.getUniqueName( `i` );\n\t\tconst { params } = generator.current;\n\n\t\tconst listName = `${name}_value`;\n\n\t\tconst isToplevel = generator.current.localElementDepth === 0;\n\n\t\tgenerator.addSourcemapLocations( node.expression );\n\n\t\tconst { dependencies, snippet } = generator.contextualise( node.expression );\n\n\t\tconst anchor = `${name}_anchor`;\n\t\tgenerator.createAnchor( anchor );\n\n\t\tgenerator.current.builders.init.addLine( `var ${name}_value = ${snippet};` );\n\t\tgenerator.current.builders.init.addLine( `var ${iterations} = [];` );\n\t\tif ( node.key ) generator.current.builders.init.addLine( `var ${name}_lookup = Object.create( null );` );\n\t\tif ( node.else ) generator.current.builders.init.addLine( `var ${elseName} = null;` );\n\n\t\tconst initialRender = new CodeBuilder();\n\n\t\tconst localVars = {};\n\n\t\tif ( node.key ) {\n\t\t\tlocalVars.fragment = generator.current.getUniqueName( 'fragment' );\n\t\t\tlocalVars.value = generator.current.getUniqueName( 'value' );\n\t\t\tlocalVars.key = generator.current.getUniqueName( 'key' );\n\n\t\t\tinitialRender.addBlock( deindent`\n\t\t\t\tvar ${localVars.key} = ${name}_value[${i}].${node.key};\n\t\t\t\t${name}_iterations[${i}] = ${name}_lookup[ ${localVars.key} ] = ${renderer}( ${params}, ${listName}, ${listName}[${i}], ${i}, component${node.key ? `, ${localVars.key}` : `` } );\n\t\t\t` );\n\t\t} else {\n\t\t\tinitialRender.addLine(\n\t\t\t\t`${name}_iterations[${i}] = ${renderer}( ${params}, ${listName}, ${listName}[${i}], ${i}, component );`\n\t\t\t);\n\t\t}\n\n\t\tif ( !isToplevel ) {\n\t\t\tinitialRender.addLine(\n\t\t\t\t`${name}_iterations[${i}].mount( ${anchor}.parentNode, ${anchor} );`\n\t\t\t);\n\t\t}\n\n\t\tgenerator.current.builders.init.addBlock( deindent`\n\t\t\tfor ( var ${i} = 0; ${i} < ${name}_value.length; ${i} += 1 ) {\n\t\t\t\t${initialRender}\n\t\t\t}\n\t\t` );\n\n\t\tif ( node.else ) {\n\t\t\tgenerator.current.builders.init.addBlock( deindent`\n\t\t\t\tif ( !${name}_value.length ) {\n\t\t\t\t\t${elseName} = ${renderElse}( ${params}, component );\n\t\t\t\t\t${!isToplevel ? `${elseName}.mount( ${anchor}.parentNode, ${anchor} );` : ''}\n\t\t\t\t}\n\t\t\t` );\n\t\t}\n\n\t\tif ( isToplevel ) {\n\t\t\tgenerator.current.builders.mount.addBlock( deindent`\n\t\t\t\tfor ( var ${i} = 0; ${i} < ${iterations}.length; ${i} += 1 ) {\n\t\t\t\t\t${iterations}[${i}].mount( ${anchor}.parentNode, ${anchor} );\n\t\t\t\t}\n\t\t\t` );\n\t\t\tif ( node.else ) {\n\t\t\t\tgenerator.current.builders.mount.addBlock( deindent`\n\t\t\t\t\tif ( ${elseName} ) {\n\t\t\t\t\t\t${elseName}.mount( ${anchor}.parentNode, ${anchor} );\n\t\t\t\t\t}\n\t\t\t\t` );\n\t\t\t}\n\t\t}\n\n\t\tif ( node.key ) {\n\t\t\tgenerator.current.builders.update.addBlock( deindent`\n\t\t\t\tvar ${name}_value = ${snippet};\n\t\t\t\tvar _${name}_iterations = [];\n\t\t\t\tvar _${name}_lookup = Object.create( null );\n\n\t\t\t\tvar ${localVars.fragment} = document.createDocumentFragment();\n\n\t\t\t\t// create new iterations as necessary\n\t\t\t\tfor ( var ${i} = 0; ${i} < ${name}_value.length; ${i} += 1 ) {\n\t\t\t\t\tvar ${localVars.value} = ${name}_value[${i}];\n\t\t\t\t\tvar ${localVars.key} = ${localVars.value}.${node.key};\n\n\t\t\t\t\tif ( ${name}_lookup[ ${localVars.key} ] ) {\n\t\t\t\t\t\t_${name}_iterations[${i}] = _${name}_lookup[ ${localVars.key} ] = ${name}_lookup[ ${localVars.key} ];\n\t\t\t\t\t\t_${name}_lookup[ ${localVars.key} ].update( changed, ${params}, ${listName}, ${listName}[${i}], ${i} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_${name}_iterations[${i}] = _${name}_lookup[ ${localVars.key} ] = ${renderer}( ${params}, ${listName}, ${listName}[${i}], ${i}, component${node.key ? `, ${localVars.key}` : `` } );\n\t\t\t\t\t}\n\n\t\t\t\t\t_${name}_iterations[${i}].mount( ${localVars.fragment}, null );\n\t\t\t\t}\n\n\t\t\t\t// remove old iterations\n\t\t\t\tfor ( var ${i} = 0; ${i} < ${name}_iterations.length; ${i} += 1 ) {\n\t\t\t\t\tvar ${name}_iteration = ${name}_iterations[${i}];\n\t\t\t\t\tif ( !_${name}_lookup[ ${name}_iteration.${localVars.key} ] ) {\n\t\t\t\t\t\t${name}_iteration.teardown( true );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t${name}_anchor.parentNode.insertBefore( ${localVars.fragment}, ${name}_anchor );\n\n\t\t\t\t${name}_iterations = _${name}_iterations;\n\t\t\t\t${name}_lookup = _${name}_lookup;\n\t\t\t` );\n\t\t} else {\n\t\t\tgenerator.current.builders.update.addBlock( deindent`\n\t\t\t\tvar ${name}_value = ${snippet};\n\n\t\t\t\tfor ( var ${i} = 0; ${i} < ${name}_value.length; ${i} += 1 ) {\n\t\t\t\t\tif ( !${iterations}[${i}] ) {\n\t\t\t\t\t\t${iterations}[${i}] = ${renderer}( ${params}, ${listName}, ${listName}[${i}], ${i}, component );\n\t\t\t\t\t\t${iterations}[${i}].mount( ${anchor}.parentNode, ${anchor} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t${iterations}[${i}].update( changed, ${params}, ${listName}, ${listName}[${i}], ${i} );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tteardownEach( ${iterations}, true, ${name}_value.length );\n\n\t\t\t\t${iterations}.length = ${listName}.length;\n\t\t\t` );\n\t\t}\n\n\t\tif ( node.else ) {\n\t\t\tgenerator.current.builders.update.addBlock( deindent`\n\t\t\t\tif ( !${name}_value.length && ${elseName} ) {\n\t\t\t\t\t${elseName}.update( changed, ${params} );\n\t\t\t\t} else if ( !${name}_value.length ) {\n\t\t\t\t\t${elseName} = ${renderElse}( ${params}, component );\n\t\t\t\t\t${elseName}.mount( ${anchor}.parentNode, ${anchor} );\n\t\t\t\t} else if ( ${elseName} ) {\n\t\t\t\t\t${elseName}.teardown( true );\n\t\t\t\t}\n\t\t\t` );\n\t\t}\n\n\t\tgenerator.current.builders.teardown.addBlock(\n\t\t\t`${generator.helper( 'teardownEach' )}( ${iterations}, ${isToplevel ? 'detach' : 'false'} );` );\n\n\t\tif ( node.else ) {\n\t\t\tgenerator.current.builders.teardown.addBlock( deindent`\n\t\t\t\tif ( ${elseName} ) {\n\t\t\t\t\t${elseName}.teardown( ${isToplevel ? 'detach' : 'false'} );\n\t\t\t\t}\n\t\t\t` );\n\t\t}\n\n\t\tif ( node.else ) {\n\t\t\tgenerator.generateBlock( node.else, renderElse );\n\t\t}\n\n\t\tconst indexNames = Object.assign( {}, generator.current.indexNames );\n\t\tconst indexName = indexNames[ node.context ] = ( node.index || `${node.context}__index` );\n\n\t\tconst listNames = Object.assign( {}, generator.current.listNames );\n\t\tlistNames[ node.context ] = listName;\n\n\t\t// ensure that contexts like `root` or `component` don't blow up the whole show\n\t\tlet context = node.context;\n\t\tlet c = 1;\n\n\t\twhile ( context in reserved || ~generator.current.params.indexOf( context ) ) {\n\t\t\tcontext = `${node.context}$${c++}`;\n\t\t}\n\n\t\tconst contexts = Object.assign( {}, generator.current.contexts );\n\t\tcontexts[ node.context ] = context;\n\n\t\tconst indexes = Object.assign( {}, generator.current.indexes );\n\t\tif ( node.index ) indexes[ indexName ] = node.context;\n\n\t\tconst contextDependencies = Object.assign( {}, generator.current.contextDependencies );\n\t\tcontextDependencies[ node.context ] = dependencies;\n\n\t\tconst blockParams = generator.current.params.concat( listName, context, indexName );\n\n\t\tgenerator.push({\n\t\t\tname: renderer,\n\t\t\ttarget: 'target',\n\t\t\texpression: node.expression,\n\t\t\tcontext: node.context,\n\t\t\tkey: node.key,\n\t\t\tlocalElementDepth: 0,\n\n\t\t\tcontextDependencies,\n\t\t\tcontexts,\n\t\t\tindexes,\n\n\t\t\tindexNames,\n\t\t\tlistNames,\n\t\t\tparams: blockParams,\n\n\t\t\tbuilders: getBuilders(),\n\t\t\tgetUniqueName: generator.getUniqueNameMaker()\n\t\t});\n\t},\n\n\tleave ( generator ) {\n\t\tgenerator.addRenderer( generator.current );\n\t\tgenerator.pop();\n\t}\n};\n","// source: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes\nconst lookup = {\n\taccept: { appliesTo: [ 'form', 'input' ] },\n\t'accept-charset': { propertyName: 'acceptCharset', appliesTo: [ 'form' ] },\n\taccesskey: { propertyName: 'accessKey' },\n\taction: { appliesTo: [ 'form' ] },\n\talign: { appliesTo: [ 'applet', 'caption', 'col', 'colgroup', 'hr', 'iframe', 'img', 'table', 'tbody', 'td', 'tfoot' , 'th', 'thead', 'tr' ] },\n\tallowfullscreen: { propertyName: 'allowFullscreen', appliesTo: [ 'iframe' ] },\n\talt: { appliesTo: [ 'applet', 'area', 'img', 'input' ] },\n\tasync: { appliesTo: [ 'script' ] },\n\tautocomplete: { appliesTo: [ 'form', 'input' ] },\n\tautofocus: { appliesTo: [ 'button', 'input', 'keygen', 'select', 'textarea' ] },\n\tautoplay: { appliesTo: [ 'audio', 'video' ] },\n\tautosave: { appliesTo: [ 'input' ] },\n\tbgcolor: { propertyName: 'bgColor', appliesTo: [ 'body', 'col', 'colgroup', 'marquee', 'table', 'tbody', 'tfoot', 'td', 'th', 'tr' ] },\n\tborder: { appliesTo: [ 'img', 'object', 'table' ] },\n\tbuffered: { appliesTo: [ 'audio', 'video' ] },\n\tchallenge: { appliesTo: [ 'keygen' ] },\n\tcharset: { appliesTo: [ 'meta', 'script' ] },\n\tchecked: { appliesTo: [ 'command', 'input' ] },\n\tcite: { appliesTo: [ 'blockquote', 'del', 'ins', 'q' ] },\n\tclass: { propertyName: 'className' },\n\tcode: { appliesTo: [ 'applet' ] },\n\tcodebase: { propertyName: 'codeBase', appliesTo: [ 'applet' ] },\n\tcolor: { appliesTo: [ 'basefont', 'font', 'hr' ] },\n\tcols: { appliesTo: [ 'textarea' ] },\n\tcolspan: { propertyName: 'colSpan', appliesTo: [ 'td', 'th' ] },\n\tcontent: { appliesTo: [ 'meta' ] },\n\tcontenteditable: { propertyName: 'contentEditable' },\n\tcontextmenu: {},\n\tcontrols: { appliesTo: [ 'audio', 'video' ] },\n\tcoords: { appliesTo: [ 'area' ] },\n\tdata: { appliesTo: [ 'object' ] },\n\tdatetime: { propertyName: 'dateTime', appliesTo: [ 'del', 'ins', 'time' ] },\n\tdefault: { appliesTo: [ 'track' ] },\n\tdefer: { appliesTo: [ 'script' ] },\n\tdir: {},\n\tdirname: { propertyName: 'dirName', appliesTo: [ 'input', 'textarea' ] },\n\tdisabled: { appliesTo: [ 'button', 'command', 'fieldset', 'input', 'keygen', 'optgroup', 'option', 'select', 'textarea' ] },\n\tdownload: { appliesTo: [ 'a', 'area' ] },\n\tdraggable: {},\n\tdropzone: {},\n\tenctype: { appliesTo: [ 'form' ] },\n\tfor: { propertyName: 'htmlFor', appliesTo: [ 'label', 'output' ] },\n\tform: { appliesTo: [ 'button', 'fieldset', 'input', 'keygen', 'label', 'meter', 'object', 'output', 'progress', 'select', 'textarea' ] },\n\tformaction: { appliesTo: [ 'input', 'button' ] },\n\theaders: { appliesTo: [ 'td', 'th' ] },\n\theight: { appliesTo: [ 'canvas', 'embed', 'iframe', 'img', 'input', 'object', 'video' ] },\n\thidden: {},\n\thigh: { appliesTo: [ 'meter' ] },\n\thref: { appliesTo: [ 'a', 'area', 'base', 'link' ] },\n\threflang: { appliesTo: [ 'a', 'area', 'link' ] },\n\t'http-equiv': { propertyName: 'httpEquiv', appliesTo: [ 'meta' ] },\n\ticon: { appliesTo: [ 'command' ] },\n\tid: {},\n\tismap: { propertyName: 'isMap', appliesTo: [ 'img' ] },\n\titemprop: {},\n\tkeytype: { appliesTo: [ 'keygen' ] },\n\tkind: { appliesTo: [ 'track' ] },\n\tlabel: { appliesTo: [ 'track' ] },\n\tlang: {},\n\tlanguage: { appliesTo: [ 'script' ] },\n\tloop: { appliesTo: [ 'audio', 'bgsound', 'marquee', 'video' ] },\n\tlow: { appliesTo: [ 'meter' ] },\n\tmanifest: { appliesTo: [ 'html' ] },\n\tmax: { appliesTo: [ 'input', 'meter', 'progress' ] },\n\tmaxlength: { propertyName: 'maxLength', appliesTo: [ 'input', 'textarea' ] },\n\tmedia: { appliesTo: [ 'a', 'area', 'link', 'source', 'style' ] },\n\tmethod: { appliesTo: [ 'form' ] },\n\tmin: { appliesTo: [ 'input', 'meter' ] },\n\tmultiple: { appliesTo: [ 'input', 'select' ] },\n\tmuted: { appliesTo: [ 'video' ] },\n\tname: { appliesTo: [ 'button', 'form', 'fieldset', 'iframe', 'input', 'keygen', 'object', 'output', 'select', 'textarea', 'map', 'meta', 'param' ] },\n\tnovalidate: { propertyName: 'noValidate', appliesTo: [ 'form' ] },\n\topen: { appliesTo: [ 'details' ] },\n\toptimum: { appliesTo: [ 'meter' ] },\n\tpattern: { appliesTo: [ 'input' ] },\n\tping: { appliesTo: [ 'a', 'area' ] },\n\tplaceholder: { appliesTo: [ 'input', 'textarea' ] },\n\tposter: { appliesTo: [ 'video' ] },\n\tpreload: { appliesTo: [ 'audio', 'video' ] },\n\tradiogroup: { appliesTo: [ 'command' ] },\n\treadonly: { propertyName: 'readOnly', appliesTo: [ 'input', 'textarea' ] },\n\trel: { appliesTo: [ 'a', 'area', 'link' ] },\n\trequired: { appliesTo: [ 'input', 'select', 'textarea' ] },\n\treversed: { appliesTo: [ 'ol' ] },\n\trows: { appliesTo: [ 'textarea' ] },\n\trowspan: { propertyName: 'rowSpan', appliesTo: [ 'td', 'th' ] },\n\tsandbox: { appliesTo: [ 'iframe' ] },\n\tscope: { appliesTo: [ 'th' ] },\n\tscoped: { appliesTo: [ 'style' ] },\n\tseamless: { appliesTo: [ 'iframe' ] },\n\tselected: { appliesTo: [ 'option' ] },\n\tshape: { appliesTo: [ 'a', 'area' ] },\n\tsize: { appliesTo: [ 'input', 'select' ] },\n\tsizes: { appliesTo: [ 'link', 'img', 'source' ] },\n\tspan: { appliesTo: [ 'col', 'colgroup' ] },\n\tspellcheck: {},\n\tsrc: { appliesTo: [ 'audio', 'embed', 'iframe', 'img', 'input', 'script', 'source', 'track', 'video' ] },\n\tsrcdoc: { appliesTo: [ 'iframe' ] },\n\tsrclang: { appliesTo: [ 'track' ] },\n\tsrcset: { appliesTo: [ 'img' ] },\n\tstart: { appliesTo: [ 'ol' ] },\n\tstep: { appliesTo: [ 'input' ] },\n\tstyle: { propertyName: 'style.cssText' },\n\tsummary: { appliesTo: [ 'table' ] },\n\ttabindex: { propertyName: 'tabIndex' },\n\ttarget: { appliesTo: [ 'a', 'area', 'base', 'form' ] },\n\ttitle: {},\n\ttype: { appliesTo: [ 'button', 'input', 'command', 'embed', 'object', 'script', 'source', 'style', 'menu' ] },\n\tusemap: { propertyName: 'useMap', appliesTo: [ 'img', 'input', 'object' ] },\n\tvalue: { appliesTo: [ 'button', 'option', 'input', 'li', 'meter', 'progress', 'param' ] },\n\twidth: { appliesTo: [ 'canvas', 'embed', 'iframe', 'img', 'input', 'object', 'video' ] },\n\twrap: { appliesTo: [ 'textarea' ] }\n};\n\nObject.keys( lookup ).forEach( name => {\n\tconst metadata = lookup[ name ];\n\tif ( !metadata.propertyName ) metadata.propertyName = name;\n});\n\nexport default lookup;\n","export default function flatten ( node ) {\n\tconst parts = [];\n\twhile ( node.type === 'MemberExpression' ) {\n\t\tif ( node.computed ) return null;\n\t\tparts.unshift( node.property.name );\n\n\t\tnode = node.object;\n\t}\n\n\tconst name = node.type === 'Identifier' ? node.name : node.type === 'ThisExpression' ? 'this' : null;\n\n\tif ( !name ) return null;\n\n\tparts.unshift( name );\n\treturn { name, parts, keypath: parts.join( '.' ) };\n}\n","import deindent from '../../../../../utils/deindent.js';\n\nexport default function getSetter ({ current, name, context, attribute, dependencies, snippet, value }) {\n\tif ( name in current.contexts ) {\n\t\tconst prop = dependencies[0];\n\t\tconst tail = attribute.value.type === 'MemberExpression' ? getTailSnippet( attribute.value ) : '';\n\n\t\treturn deindent`\n\t\t\tvar list = this.${context}.${current.listNames[ name ]};\n\t\t\tvar index = this.${context}.${current.indexNames[ name ]};\n\t\t\tlist[index]${tail} = ${value};\n\n\t\t\tcomponent._set({ ${prop}: component.get( '${prop}' ) });\n\t\t`;\n\t}\n\t\n\tif ( attribute.value.type === 'MemberExpression' ) {\n\t\treturn deindent`\n\t\t\tvar ${name} = component.get( '${name}' );\n\t\t\t${snippet} = ${value};\n\t\t\tcomponent._set({ ${name}: ${name} });\n\t\t`;\n\t}\n\t\n\treturn `component._set({ ${name}: ${value} });`;\n}\n\nfunction getTailSnippet ( node ) {\n\tconst end = node.end;\n\twhile ( node.type === 'MemberExpression' ) node = node.object;\n\tconst start = node.end;\n\n\treturn `[✂${start}-${end}✂]`;\n}","export default function getStaticAttributeValue ( node, name ) {\n\tconst attribute = node.attributes.find( attr => attr.name.toLowerCase() === name );\n\tif ( !attribute ) return null;\n\n\tif ( attribute.value.length !== 1 || attribute.value[0].type !== 'Text' ) {\n\t\t// TODO catch this in validation phase, give a more useful error (with location etc)\n\t\tthrow new Error( `'${name} must be a static attribute` );\n\t}\n\n\treturn attribute.value[0].data;\n}","import deindent from '../../../../utils/deindent.js';\nimport flattenReference from '../../../../utils/flattenReference.js';\nimport getSetter from './binding/getSetter.js';\nimport getStaticAttributeValue from './binding/getStaticAttributeValue.js';\n\nexport default function createBinding ( generator, node, attribute, current, local ) {\n\tconst { name, keypath } = flattenReference( attribute.value );\n\tconst { snippet, contexts, dependencies } = generator.contextualise( attribute.value );\n\n\tif ( dependencies.length > 1 ) throw new Error( 'An unexpected situation arose. Please raise an issue at https://github.com/sveltejs/svelte/issues — thanks!' );\n\n\tcontexts.forEach( context => {\n\t\tif ( !~local.allUsedContexts.indexOf( context ) ) local.allUsedContexts.push( context );\n\t});\n\n\tconst handler = current.getUniqueName( `${local.name}ChangeHandler` );\n\n\tconst isMultipleSelect = node.name === 'select' && node.attributes.find( attr => attr.name.toLowerCase() === 'multiple' ); // TODO use getStaticAttributeValue\n\tconst type = getStaticAttributeValue( node, 'type' );\n\tconst bindingGroup = attribute.name === 'group' ? getBindingGroup( generator, current, attribute, keypath ) : null;\n\tconst value = getBindingValue( generator, local, node, attribute, isMultipleSelect, bindingGroup, type );\n\tconst eventName = getBindingEventName( node );\n\n\tlet setter = getSetter({ current, name, context: '__svelte', attribute, dependencies, snippet, value });\n\tlet updateElement;\n\n\t// <select> special case\n\tif ( node.name === 'select' ) {\n\t\tif ( !isMultipleSelect ) {\n\t\t\tsetter = `var selectedOption = ${local.name}.selectedOptions[0] || ${local.name}.options[0];\\n${setter}`;\n\t\t}\n\n\t\tconst value = generator.current.getUniqueName( 'value' );\n\t\tconst i = generator.current.getUniqueName( 'i' );\n\t\tconst option = generator.current.getUniqueName( 'option' );\n\n\t\tconst ifStatement = isMultipleSelect ?\n\t\t\tdeindent`\n\t\t\t\t${option}.selected = ~${value}.indexOf( ${option}.__value );` :\n\t\t\tdeindent`\n\t\t\t\tif ( ${option}.__value === ${value} ) {\n\t\t\t\t\t${option}.selected = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}`;\n\n\t\tupdateElement = deindent`\n\t\t\tvar ${value} = ${snippet};\n\t\t\tfor ( var ${i} = 0; ${i} < ${local.name}.options.length; ${i} += 1 ) {\n\t\t\t\tvar ${option} = ${local.name}.options[${i}];\n\n\t\t\t\t${ifStatement}\n\t\t\t}\n\t\t`;\n\t}\n\n\t// <input type='checkbox|radio' bind:group='selected'> special case\n\telse if ( attribute.name === 'group' ) {\n\t\tif ( type === 'radio' ) {\n\t\t\tsetter = deindent`\n\t\t\t\tif ( !${local.name}.checked ) return;\n\t\t\t\t${setter}\n\t\t\t\tcomponent._bindingGroups[${bindingGroup}].forEach( function ( input ) {\n\t\t\t\t\tinput.checked = false;\n\t\t\t\t});`;\n\t\t}\n\n\t\tconst condition = type === 'checkbox' ?\n\t\t\t`~${snippet}.indexOf( ${local.name}.__value )` :\n\t\t\t`${local.name}.__value === ${snippet}`;\n\n\t\tlocal.init.addLine(\n\t\t\t`component._bindingGroups[${bindingGroup}].push( ${local.name} );`\n\t\t);\n\n\t\tlocal.teardown.addBlock(\n\t\t\t`component._bindingGroups[${bindingGroup}].splice( component._bindingGroups[${bindingGroup}].indexOf( ${local.name} ), 1 );`\n\t\t);\n\n\t\tupdateElement = `${local.name}.checked = ${condition};`;\n\t}\n\n\t// everything else\n\telse {\n\t\tupdateElement = `${local.name}.${attribute.name} = ${snippet};`;\n\t}\n\n\tlocal.init.addBlock( deindent`\n\t\tvar ${local.name}_updating = false;\n\n\t\tfunction ${handler} () {\n\t\t\t${local.name}_updating = true;\n\t\t\t${setter}\n\t\t\t${local.name}_updating = false;\n\t\t}\n\n\t\t${generator.helper( 'addEventListener' )}( ${local.name}, '${eventName}', ${handler} );\n\t` );\n\n\tnode.initialUpdate = updateElement;\n\n\tlocal.update.addLine( deindent`\n\t\tif ( !${local.name}_updating ) {\n\t\t\t${updateElement}\n\t\t}\n\t` );\n\n\tgenerator.current.builders.teardown.addLine( deindent`\n\t\t${generator.helper( 'removeEventListener' )}( ${local.name}, '${eventName}', ${handler} );\n\t` );\n}\n\nfunction getBindingEventName ( node ) {\n\tif ( node.name === 'input' ) {\n\t\tconst typeAttribute = node.attributes.find( attr => attr.type === 'Attribute' && attr.name === 'type' );\n\t\tconst type = typeAttribute ? typeAttribute.value[0].data : 'text'; // TODO in validation, should throw if type attribute is not static\n\n\t\treturn type === 'checkbox' || type === 'radio' ? 'change' : 'input';\n\t}\n\n\tif ( node.name === 'textarea' ) {\n\t\treturn 'input';\n\t}\n\n\treturn 'change';\n}\n\nfunction getBindingValue ( generator, local, node, attribute, isMultipleSelect, bindingGroup, type ) {\n\t// <select multiple bind:value='selected>\n\tif ( isMultipleSelect ) {\n\t\treturn `[].map.call( ${local.name}.selectedOptions, function ( option ) { return option.__value; })`;\n\t}\n\n\t// <select bind:value='selected>\n\tif ( node.name === 'select' ) {\n\t\treturn 'selectedOption && selectedOption.__value';\n\t}\n\n\t// <input type='checkbox' bind:group='foo'>\n\tif ( attribute.name === 'group' ) {\n\t\tif ( type === 'checkbox' ) {\n\t\t\treturn `${generator.helper( 'getBindingGroupValue' )}( component._bindingGroups[${bindingGroup}] )`;\n\t\t}\n\n\t\treturn `${local.name}.__value`;\n\t}\n\n\t// everything else\n\treturn `${local.name}.${attribute.name}`;\n}\n\nfunction getBindingGroup ( generator, current, attribute, keypath ) {\n\t// TODO handle contextual bindings — `keypath` should include unique ID of\n\t// each block that provides context\n\tlet index = generator.bindingGroups.indexOf( keypath );\n\tif ( index === -1 ) {\n\t\tindex = generator.bindingGroups.length;\n\t\tgenerator.bindingGroups.push( keypath );\n\t}\n\n\treturn index;\n}","import attributeLookup from './lookup.js';\nimport addElementBinding from './addElementBinding';\nimport deindent from '../../../../utils/deindent.js';\nimport flattenReference from '../../../../utils/flattenReference.js';\nimport getStaticAttributeValue from './binding/getStaticAttributeValue.js';\n\nexport default function addElementAttributes ( generator, node, local ) {\n\tnode.attributes.forEach( attribute => {\n\t\tconst name = attribute.name;\n\n\t\tif ( attribute.type === 'Attribute' ) {\n\t\t\tlet metadata = local.namespace ? null : attributeLookup[ name ];\n\t\t\tif ( metadata && metadata.appliesTo && !~metadata.appliesTo.indexOf( node.name ) ) metadata = null;\n\n\t\t\tlet dynamic = false;\n\n\t\t\tconst isIndirectlyBoundValue = name === 'value' && (\n\t\t\t\tnode.name === 'option' || // TODO check it's actually bound\n\t\t\t\tnode.name === 'input' && /^(checkbox|radio)$/.test( getStaticAttributeValue( node, 'type' ) )\n\t\t\t);\n\n\t\t\tconst propertyName = isIndirectlyBoundValue ? '__value' : metadata && metadata.propertyName;\n\n\t\t\tconst isXlink = name.slice( 0, 6 ) === 'xlink:';\n\n\t\t\t// xlink is a special case... we could maybe extend this to generic\n\t\t\t// namespaced attributes but I'm not sure that's applicable in\n\t\t\t// HTML5?\n\t\t\tconst method = isXlink ? 'setXlinkAttribute' : 'setAttribute';\n\n\t\t\tif ( attribute.value === true ) {\n\t\t\t\t// attributes without values, e.g. <textarea readonly>\n\t\t\t\tif ( propertyName ) {\n\t\t\t\t\tlocal.init.addLine(\n\t\t\t\t\t\t`${local.name}.${propertyName} = true;`\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tlocal.init.addLine(\n\t\t\t\t\t\t`${generator.helper( method )}( ${local.name}, '${name}', true );`\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// special case – autofocus. has to be handled in a bit of a weird way\n\t\t\t\tif ( name === 'autofocus' ) {\n\t\t\t\t\tgenerator.current.autofocus = local.name;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse if ( attribute.value.length === 0 ) {\n\t\t\t\tif ( propertyName ) {\n\t\t\t\t\tlocal.init.addLine(\n\t\t\t\t\t\t`${local.name}.${propertyName} = '';`\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tlocal.init.addLine(\n\t\t\t\t\t\t`${generator.helper( method )}( ${local.name}, '${name}', '' );`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse if ( attribute.value.length === 1 ) {\n\t\t\t\tconst value = attribute.value[0];\n\n\t\t\t\tlet result = '';\n\n\t\t\t\tif ( value.type === 'Text' ) {\n\t\t\t\t\t// static attributes\n\t\t\t\t\tresult = JSON.stringify( value.data );\n\n\t\t\t\t\tlet addAttribute = false;\n\t\t\t\t\tif ( name === 'xmlns' ) {\n\t\t\t\t\t\t// special case\n\t\t\t\t\t\t// TODO this attribute must be static – enforce at compile time\n\t\t\t\t\t\tlocal.namespace = value.data;\n\t\t\t\t\t\taddAttribute = true;\n\t\t\t\t\t} else if ( propertyName ) {\n\t\t\t\t\t\tlocal.init.addLine(\n\t\t\t\t\t\t\t`${local.name}.${propertyName} = ${result};`\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddAttribute = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( addAttribute ) {\n\t\t\t\t\t\tlocal.init.addLine(\n\t\t\t\t\t\t\t`${generator.helper( method )}( ${local.name}, '${name}', ${result} );`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telse {\n\t\t\t\t\tdynamic = true;\n\n\t\t\t\t\t// dynamic – but potentially non-string – attributes\n\t\t\t\t\tconst { snippet } = generator.contextualise( value.expression );\n\n\t\t\t\t\tconst last = `last_${local.name}_${name.replace( /-/g, '_')}`;\n\t\t\t\t\tlocal.init.addLine( `var ${last} = ${snippet};` );\n\n\t\t\t\t\tlet updater;\n\t\t\t\t\tif ( propertyName ) {\n\t\t\t\t\t\tupdater = `${local.name}.${propertyName} = ${last};`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tupdater = `${generator.helper( method )}( ${local.name}, '${name}', ${last} );`;\n\t\t\t\t\t}\n\n\t\t\t\t\tlocal.init.addLine( updater );\n\t\t\t\t\tlocal.update.addBlock( deindent`\n\t\t\t\t\t\tif ( ( __tmp = ${snippet} ) !== ${last} ) {\n\t\t\t\t\t\t\t${last} = __tmp;\n\t\t\t\t\t\t\t${updater}\n\t\t\t\t\t\t}\n\t\t\t\t\t` );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse {\n\t\t\t\tdynamic = true;\n\n\t\t\t\tconst value = ( attribute.value[0].type === 'Text' ? '' : `\"\" + ` ) + (\n\t\t\t\t\tattribute.value.map( chunk => {\n\t\t\t\t\t\tif ( chunk.type === 'Text' ) {\n\t\t\t\t\t\t\treturn JSON.stringify( chunk.data );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst { snippet } = generator.contextualise( chunk.expression );\n\t\t\t\t\t\t\treturn `( ${snippet} )`;\n\t\t\t\t\t\t}\n\t\t\t\t\t}).join( ' + ' )\n\t\t\t\t);\n\n\t\t\t\tlet updater;\n\t\t\t\tif (propertyName) {\n\t\t\t\t\tupdater = `${local.name}.${propertyName} = ${value};`;\n\t\t\t\t} else {\n\t\t\t\t\tupdater = `${generator.helper( method )}( ${local.name}, '${name}', ${value} );`;\n\t\t\t\t}\n\n\t\t\t\tlocal.init.addLine( updater );\n\t\t\t\tlocal.update.addLine( updater );\n\t\t\t}\n\n\t\t\tif ( isIndirectlyBoundValue ) {\n\t\t\t\tconst updateValue = `${local.name}.value = ${local.name}.__value;`;\n\n\t\t\t\tlocal.init.addLine( updateValue );\n\t\t\t\tif ( dynamic ) local.update.addLine( updateValue );\n\t\t\t}\n\t\t}\n\n\t\telse if ( attribute.type === 'EventHandler' ) {\n\t\t\t// TODO verify that it's a valid callee (i.e. built-in or declared method)\n\t\t\tgenerator.addSourcemapLocations( attribute.expression );\n\n\t\t\tconst flattened = flattenReference( attribute.expression.callee );\n\t\t\tif ( flattened.name !== 'event' && flattened.name !== 'this' ) {\n\t\t\t\t// allow event.stopPropagation(), this.select() etc\n\t\t\t\tgenerator.code.prependRight( attribute.expression.start, 'component.' );\n\t\t\t}\n\n\t\t\tconst usedContexts = [];\n\t\t\tattribute.expression.arguments.forEach( arg => {\n\t\t\t\tconst { contexts } = generator.contextualise( arg, true );\n\n\t\t\t\tcontexts.forEach( context => {\n\t\t\t\t\tif ( !~usedContexts.indexOf( context ) ) usedContexts.push( context );\n\t\t\t\t\tif ( !~local.allUsedContexts.indexOf( context ) ) local.allUsedContexts.push( context );\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// TODO hoist event handlers? can do `this.__component.method(...)`\n\t\t\tconst declarations = usedContexts.map( name => {\n\t\t\t\tif ( name === 'root' ) return 'var root = this.__svelte.root;';\n\n\t\t\t\tconst listName = generator.current.listNames[ name ];\n\t\t\t\tconst indexName = generator.current.indexNames[ name ];\n\n\t\t\t\treturn `var ${listName} = this.__svelte.${listName}, ${indexName} = this.__svelte.${indexName}, ${name} = ${listName}[${indexName}]`;\n\t\t\t});\n\n\t\t\tconst handlerName = generator.current.getUniqueName( `${name}Handler` );\n\t\t\tconst handlerBody = ( declarations.length ? declarations.join( '\\n' ) + '\\n\\n' : '' ) + `[✂${attribute.expression.start}-${attribute.expression.end}✂];`;\n\n\t\t\tif ( name in generator.events ) {\n\t\t\t\tlocal.init.addBlock( deindent`\n\t\t\t\t\tvar ${handlerName} = template.events.${name}.call( component, ${local.name}, function ( event ) {\n\t\t\t\t\t\t${handlerBody}\n\t\t\t\t\t});\n\t\t\t\t` );\n\n\t\t\t\tgenerator.current.builders.teardown.addLine( deindent`\n\t\t\t\t\t${handlerName}.teardown();\n\t\t\t\t` );\n\t\t\t} else {\n\t\t\t\tlocal.init.addBlock( deindent`\n\t\t\t\t\tfunction ${handlerName} ( event ) {\n\t\t\t\t\t\t${handlerBody}\n\t\t\t\t\t}\n\n\t\t\t\t\t${generator.helper( 'addEventListener' )}( ${local.name}, '${name}', ${handlerName} );\n\t\t\t\t` );\n\n\t\t\t\tgenerator.current.builders.teardown.addLine( deindent`\n\t\t\t\t\t${generator.helper( 'removeEventListener' )}( ${local.name}, '${name}', ${handlerName} );\n\t\t\t\t` );\n\t\t\t}\n\t\t}\n\n\t\telse if ( attribute.type === 'Binding' ) {\n\t\t\taddElementBinding( generator, node, attribute, generator.current, local );\n\t\t}\n\n\t\telse if ( attribute.type === 'Ref' ) {\n\t\t\tgenerator.usesRefs = true;\n\n\t\t\tlocal.init.addLine(\n\t\t\t\t`component.refs.${name} = ${local.name};`\n\t\t\t);\n\n\t\t\tgenerator.current.builders.teardown.addLine( deindent`\n\t\t\t\tif ( component.refs.${name} === ${local.name} ) component.refs.${name} = null;\n\t\t\t` );\n\t\t}\n\n\t\telse {\n\t\t\tthrow new Error( `Not implemented: ${attribute.type}` );\n\t\t}\n\t});\n}\n","import deindent from '../../../../utils/deindent.js';\nimport flattenReference from '../../../../utils/flattenReference.js';\nimport getSetter from './binding/getSetter.js';\n\nexport default function createBinding ( generator, node, attribute, current, local ) {\n\tconst { name } = flattenReference( attribute.value );\n\tconst { snippet, contexts, dependencies } = generator.contextualise( attribute.value );\n\n\tif ( dependencies.length > 1 ) throw new Error( 'An unexpected situation arose. Please raise an issue at https://github.com/sveltejs/svelte/issues — thanks!' );\n\n\tcontexts.forEach( context => {\n\t\tif ( !~local.allUsedContexts.indexOf( context ) ) local.allUsedContexts.push( context );\n\t});\n\n\tconst contextual = name in current.contexts;\n\n\tlet obj;\n\tlet prop;\n\n\tif ( contextual ) {\n\t\tobj = current.listNames[ name ];\n\t\tprop = current.indexNames[ name ];\n\t} else if ( attribute.value.type === 'MemberExpression' ) {\n\t\tprop = `'[✂${attribute.value.property.start}-${attribute.value.property.end}✂]}'`;\n\t\tobj = `root.[✂${attribute.value.object.start}-${attribute.value.object.end}✂]}`;\n\t} else {\n\t\tobj = 'root';\n\t\tprop = `'${name}'`;\n\t}\n\n\tlocal.bindings.push({\n\t\tname: attribute.name,\n\t\tvalue: snippet,\n\t\tobj,\n\t\tprop\n\t});\n\n\tconst setter = getSetter({ current, name, context: '_context', attribute, dependencies, snippet, value: 'value' });\n\n\tgenerator.hasComplexBindings = true;\n\n\tlocal.init.addBlock( deindent`\n\t\tvar ${local.name}_updating = false;\n\n\t\tcomponent._bindings.push( function () {\n\t\t\tif ( ${local.name}._torndown ) return;\n\t\t\t${local.name}.observe( '${attribute.name}', function ( value ) {\n\t\t\t\t${local.name}_updating = true;\n\t\t\t\t${setter}\n\t\t\t\t${local.name}_updating = false;\n\t\t\t});\n\t\t});\n\t` );\n\n\tlocal.update.addBlock( deindent`\n\t\tif ( !${local.name}_updating && ${dependencies.map( dependency => `'${dependency}' in changed` ).join( '||' )} ) {\n\t\t\t${local.name}._set({ ${attribute.name}: ${snippet} });\n\t\t}\n\t` );\n}\n","import addComponentBinding from './addComponentBinding.js';\nimport deindent from '../../../../utils/deindent.js';\n\nexport default function addComponentAttributes ( generator, node, local ) {\n\tlocal.staticAttributes = [];\n\tlocal.dynamicAttributes = [];\n\tlocal.bindings = [];\n\n\tnode.attributes.forEach( attribute => {\n\t\tif ( attribute.type === 'Attribute' ) {\n\t\t\tif ( attribute.value === true ) {\n\t\t\t\t// attributes without values, e.g. <textarea readonly>\n\t\t\t\tlocal.staticAttributes.push({\n\t\t\t\t\tname: attribute.name,\n\t\t\t\t\tvalue: true\n\t\t\t\t});\n\t\t\t}\n\n\t\t\telse if ( attribute.value.length === 0 ) {\n\t\t\t\tlocal.staticAttributes.push({\n\t\t\t\t\tname: attribute.name,\n\t\t\t\t\tvalue: `''`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\telse if ( attribute.value.length === 1 ) {\n\t\t\t\tconst value = attribute.value[0];\n\n\t\t\t\tif ( value.type === 'Text' ) {\n\t\t\t\t\t// static attributes\n\t\t\t\t\tconst result = isNaN( value.data ) ? JSON.stringify( value.data ) : value.data;\n\t\t\t\t\tlocal.staticAttributes.push({\n\t\t\t\t\t\tname: attribute.name,\n\t\t\t\t\t\tvalue: result\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\telse {\n\t\t\t\t\t// simple dynamic attributes\n\t\t\t\t\tconst { dependencies, string } = generator.contextualise( value.expression );\n\n\t\t\t\t\t// TODO only update attributes that have changed\n\t\t\t\t\tlocal.dynamicAttributes.push({\n\t\t\t\t\t\tname: attribute.name,\n\t\t\t\t\t\tvalue: string,\n\t\t\t\t\t\tdependencies\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse {\n\t\t\t\t// complex dynamic attributes\n\t\t\t\tconst allDependencies = [];\n\n\t\t\t\tconst value = ( attribute.value[0].type === 'Text' ? '' : `\"\" + ` ) + (\n\t\t\t\t\tattribute.value.map( chunk => {\n\t\t\t\t\t\tif ( chunk.type === 'Text' ) {\n\t\t\t\t\t\t\treturn JSON.stringify( chunk.data );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst { dependencies, string } = generator.contextualise( chunk.expression );\n\t\t\t\t\t\t\tdependencies.forEach( dependency => {\n\t\t\t\t\t\t\t\tif ( !~allDependencies.indexOf( dependency ) ) allDependencies.push( dependency );\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn `( ${string} )`;\n\t\t\t\t\t\t}\n\t\t\t\t\t}).join( ' + ' )\n\t\t\t\t);\n\n\t\t\t\tlocal.dynamicAttributes.push({\n\t\t\t\t\tname: attribute.name,\n\t\t\t\t\tvalue,\n\t\t\t\t\tdependencies: allDependencies\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\telse if ( attribute.type === 'EventHandler' ) {\n\t\t\t// TODO verify that it's a valid callee (i.e. built-in or declared method)\n\t\t\tgenerator.addSourcemapLocations( attribute.expression );\n\t\t\tgenerator.code.prependRight( attribute.expression.start, 'component.' );\n\n\t\t\tconst usedContexts = [];\n\t\t\tattribute.expression.arguments.forEach( arg => {\n\t\t\t\tconst { contexts } = generator.contextualise( arg, true );\n\n\t\t\t\tcontexts.forEach( context => {\n\t\t\t\t\tif ( !~usedContexts.indexOf( context ) ) usedContexts.push( context );\n\t\t\t\t\tif ( !~local.allUsedContexts.indexOf( context ) ) local.allUsedContexts.push( context );\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// TODO hoist event handlers? can do `this.__component.method(...)`\n\t\t\tconst declarations = usedContexts.map( name => {\n\t\t\t\tif ( name === 'root' ) return 'var root = this._context.root;';\n\n\t\t\t\tconst listName = generator.current.listNames[ name ];\n\t\t\t\tconst indexName = generator.current.indexNames[ name ];\n\n\t\t\t\treturn `var ${listName} = this._context.${listName}, ${indexName} = this._context.${indexName}, ${name} = ${listName}[${indexName}]`;\n\t\t\t});\n\n\t\t\tconst handlerBody = ( declarations.length ? declarations.join( '\\n' ) + '\\n\\n' : '' ) + `[✂${attribute.expression.start}-${attribute.expression.end}✂];`;\n\n\t\t\tlocal.init.addBlock( deindent`\n\t\t\t\t${local.name}.on( '${attribute.name}', function ( event ) {\n\t\t\t\t\t${handlerBody}\n\t\t\t\t});\n\t\t\t` );\n\t\t}\n\n\t\telse if ( attribute.type === 'Binding' ) {\n\t\t\taddComponentBinding( generator, node, attribute, generator.current, local );\n\t\t}\n\n\t\telse if ( attribute.type === 'Ref' ) {\n\t\t\tgenerator.usesRefs = true;\n\n\t\t\tlocal.init.addLine(\n\t\t\t\t`component.refs.${attribute.name} = ${local.name};`\n\t\t\t);\n\n\t\t\tgenerator.current.builders.teardown.addLine( deindent`\n\t\t\t\tif ( component.refs.${attribute.name} === ${local.name} ) component.refs.${attribute.name} = null;\n\t\t\t` );\n\t\t}\n\n\t\telse {\n\t\t\tthrow new Error( `Not implemented: ${attribute.type}` );\n\t\t}\n\t});\n}\n","import deindent from '../../../utils/deindent.js';\nimport CodeBuilder from '../../../utils/CodeBuilder.js';\nimport addComponentAttributes from './attributes/addComponentAttributes.js';\n\nfunction capDown ( name ) {\n\treturn `${name[0].toLowerCase()}${name.slice( 1 )}`;\n}\n\nexport default {\n\tenter ( generator, node ) {\n\t\tconst hasChildren = node.children.length > 0;\n\t\tconst name = generator.current.getUniqueName( capDown( node.name === ':Self' ? generator.name : node.name ) );\n\n\t\tconst local = {\n\t\t\tname,\n\t\t\tnamespace: generator.current.namespace,\n\t\t\tisComponent: true,\n\n\t\t\tallUsedContexts: [],\n\n\t\t\tinit: new CodeBuilder(),\n\t\t\tupdate: new CodeBuilder()\n\t\t};\n\n\t\tconst isToplevel = generator.current.localElementDepth === 0;\n\n\t\tgenerator.hasComponents = true;\n\n\t\taddComponentAttributes( generator, node, local );\n\n\t\tif ( local.allUsedContexts.length ) {\n\t\t\tconst initialProps = local.allUsedContexts.map( contextName => {\n\t\t\t\tif ( contextName === 'root' ) return `root: root`;\n\n\t\t\t\tconst listName = generator.current.listNames[ contextName ];\n\t\t\t\tconst indexName = generator.current.indexNames[ contextName ];\n\n\t\t\t\treturn `${listName}: ${listName},\\n${indexName}: ${indexName}`;\n\t\t\t}).join( ',\\n' );\n\n\t\t\tconst updates = local.allUsedContexts.map( contextName => {\n\t\t\t\tif ( contextName === 'root' ) return `${name}._context.root = root;`;\n\n\t\t\t\tconst listName = generator.current.listNames[ contextName ];\n\t\t\t\tconst indexName = generator.current.indexNames[ contextName ];\n\n\t\t\t\treturn `${name}._context.${listName} = ${listName};\\n${name}._context.${indexName} = ${indexName};`;\n\t\t\t}).join( '\\n' );\n\n\t\t\tlocal.init.addBlock( deindent`\n\t\t\t\t${name}._context = {\n\t\t\t\t\t${initialProps}\n\t\t\t\t};\n\t\t\t` );\n\n\t\t\tlocal.update.addBlock( updates );\n\t\t}\n\n\t\tconst componentInitProperties = [\n\t\t\t`target: ${!isToplevel ? generator.current.target: 'null'}`,\n\t\t\t'_root: component._root || component'\n\t\t];\n\n\t\t// Component has children, put them in a separate {{yield}} block\n\t\tif ( hasChildren ) {\n\t\t\tconst yieldName = generator.getUniqueName( `render${name}YieldFragment` );\n\t\t\tconst params = generator.current.params.join( ', ' );\n\n\t\t\tgenerator.generateBlock( node, yieldName );\n\n\t\t\tgenerator.current.builders.init.addLine(\n\t\t\t\t`var ${name}_yieldFragment = ${yieldName}( ${params}, component );`\n\t\t\t);\n\n\t\t\tgenerator.current.builders.update.addLine(\n\t\t\t\t`${name}_yieldFragment.update( changed, ${params} );`\n\t\t\t);\n\n\t\t\tcomponentInitProperties.push( `_yield: ${name}_yieldFragment`);\n\t\t}\n\n\t\tconst statements = [];\n\n\t\tif ( local.staticAttributes.length || local.dynamicAttributes.length || local.bindings.length ) {\n\t\t\tconst initialProps = local.staticAttributes\n\t\t\t\t.concat( local.dynamicAttributes )\n\t\t\t\t.map( attribute => `${attribute.name}: ${attribute.value}` );\n\n\t\t\tif ( initialProps.length ) {\n\t\t\t\tstatements.push( deindent`\n\t\t\t\t\tvar ${name}_initialData = {\n\t\t\t\t\t\t${initialProps.join( ',\\n' )}\n\t\t\t\t\t};\n\t\t\t\t` );\n\t\t\t} else {\n\t\t\t\tstatements.push( `var ${name}_initialData = {};` );\n\t\t\t}\n\n\t\t\tif ( local.bindings.length ) {\n\t\t\t\tconst bindings = local.bindings.map( binding => {\n\t\t\t\t\treturn `if ( ${binding.prop} in ${binding.obj} ) ${name}_initialData.${binding.name} = ${binding.value};`;\n\t\t\t\t});\n\n\t\t\t\tstatements.push( bindings.join( '\\n' ) );\n\t\t\t}\n\t\t\tcomponentInitProperties.push(`data: ${name}_initialData`);\n\t\t}\n\n\t\tconst expression = node.name === ':Self' ? generator.name : generator.importedComponents[ node.name ] || `template.components.${node.name}`;\n\n\t\tlocal.init.addBlockAtStart( deindent`\n\t\t\t${statements.join( '\\n\\n' )}\n\t\t\tvar ${name} = new ${expression}({\n\t\t\t\t${componentInitProperties.join(',\\n')}\n\t\t\t});\n\t\t` );\n\n\t\tif ( isToplevel ) {\n\t\t\tgenerator.current.builders.mount.addLine( `${name}._fragment.mount( target, anchor );` );\n\t\t}\n\n\t\tif ( local.dynamicAttributes.length ) {\n\t\t\tconst updates = local.dynamicAttributes.map( attribute => {\n\t\t\t\tif ( attribute.dependencies.length ) {\n\t\t\t\t\treturn deindent`\n\t\t\t\t\t\tif ( ${attribute.dependencies.map( dependency => `'${dependency}' in changed` ).join( '||' )} ) ${name}_changes.${attribute.name} = ${attribute.value};\n\t\t\t\t\t`;\n\t\t\t\t}\n\n\t\t\t\t// TODO this is an odd situation to encounter – I *think* it should only happen with\n\t\t\t\t// each block indices, in which case it may be possible to optimise this\n\t\t\t\treturn `${name}_changes.${attribute.name} = ${attribute.value};`;\n\t\t\t});\n\n\t\t\tlocal.update.addBlock( deindent`\n\t\t\t\tvar ${name}_changes = {};\n\n\t\t\t\t${updates.join( '\\n' )}\n\n\t\t\t\tif ( Object.keys( ${name}_changes ).length ) ${name}.set( ${name}_changes );\n\t\t\t` );\n\t\t}\n\n\t\tgenerator.current.builders.teardown.addLine( `${name}.destroy( ${isToplevel ? 'detach' : 'false'} );` );\n\n\t\tgenerator.current.builders.init.addBlock( local.init );\n\t\tif ( !local.update.isEmpty() ) generator.current.builders.update.addBlock( local.update );\n\n\t\tgenerator.push({\n\t\t\tnamespace: local.namespace,\n\t\t\ttarget: name,\n\t\t\tparent: generator.current,\n\t\t\tlocalElementDepth: generator.current.localElementDepth + 1,\n\t\t\tkey: null\n\t\t});\n\t},\n\n\tleave ( generator ) {\n\t\tgenerator.pop();\n\t}\n};\n","import CodeBuilder from '../../../utils/CodeBuilder.js';\nimport deindent from '../../../utils/deindent.js';\nimport addElementAttributes from './attributes/addElementAttributes.js';\nimport Component from './Component.js';\n\nexport default {\n\tenter ( generator, node ) {\n\t\tconst isComponent = node.name in generator.components || node.name === ':Self';\n\t\tif ( isComponent ) {\n\t\t\treturn Component.enter( generator, node );\n\t\t}\n\n\t\tconst name = generator.current.getUniqueName( node.name );\n\n\t\tconst local = {\n\t\t\tname,\n\t\t\tnamespace: node.name === 'svg' ? 'http://www.w3.org/2000/svg' : generator.current.namespace,\n\t\t\tisComponent: false,\n\n\t\t\tallUsedContexts: [],\n\n\t\t\tinit: new CodeBuilder(),\n\t\t\tupdate: new CodeBuilder(),\n\t\t\tteardown: new CodeBuilder()\n\t\t};\n\n\t\tconst isToplevel = generator.current.localElementDepth === 0;\n\n\t\taddElementAttributes( generator, node, local );\n\n\t\tif ( local.allUsedContexts.length ) {\n\t\t\tconst initialProps = local.allUsedContexts.map( contextName => {\n\t\t\t\tif ( contextName === 'root' ) return `root: root`;\n\n\t\t\t\tconst listName = generator.current.listNames[ contextName ];\n\t\t\t\tconst indexName = generator.current.indexNames[ contextName ];\n\n\t\t\t\treturn `${listName}: ${listName},\\n${indexName}: ${indexName}`;\n\t\t\t}).join( ',\\n' );\n\n\t\t\tconst updates = local.allUsedContexts.map( contextName => {\n\t\t\t\tif ( contextName === 'root' ) return `${name}.__svelte.root = root;`;\n\n\t\t\t\tconst listName = generator.current.listNames[ contextName ];\n\t\t\t\tconst indexName = generator.current.indexNames[ contextName ];\n\n\t\t\t\treturn `${name}.__svelte.${listName} = ${listName};\\n${name}.__svelte.${indexName} = ${indexName};`;\n\t\t\t}).join( '\\n' );\n\n\t\t\tlocal.init.addBlock( deindent`\n\t\t\t\t${name}.__svelte = {\n\t\t\t\t\t${initialProps}\n\t\t\t\t};\n\t\t\t` );\n\n\t\t\tlocal.update.addBlock( updates );\n\t\t}\n\n\t\tlet render;\n\n\t\tif ( local.namespace ) {\n\t\t\tif ( local.namespace === 'http://www.w3.org/2000/svg' ) {\n\t\t\t\trender = `var ${name} = ${generator.helper( 'createSvgElement' )}( '${node.name}' )`;\n\t\t\t} else {\n\t\t\t\trender = `var ${name} = document.createElementNS( '${local.namespace}', '${node.name}' );`;\n\t\t\t}\n\t\t} else {\n\t\t\trender = `var ${name} = ${generator.helper( 'createElement' )}( '${node.name}' );`;\n\t\t}\n\n\t\tif ( generator.cssId && !generator.elementDepth ) {\n\t\t\trender += `\\n${generator.helper( 'setAttribute' )}( ${name}, '${generator.cssId}', '' );`;\n\t\t}\n\n\t\tlocal.init.addLineAtStart( render );\n\t\tif ( isToplevel ) {\n\t\t\tgenerator.current.builders.detach.addLine( `${generator.helper( 'detachNode' )}( ${name} );` );\n\t\t}\n\n\t\t// special case – bound <option> without a value attribute\n\t\tif ( node.name === 'option' && !node.attributes.find( attribute => attribute.type === 'Attribute' && attribute.name === 'value' ) ) { \t// TODO check it's bound\n\t\t\tconst statement = `${name}.__value = ${name}.textContent;`;\n\t\t\tlocal.update.addLine( statement );\n\t\t\tnode.initialUpdate = statement;\n\t\t}\n\n\t\tgenerator.current.builders.init.addBlock( local.init );\n\t\tif ( !local.update.isEmpty() ) generator.current.builders.update.addBlock( local.update );\n\t\tif ( !local.teardown.isEmpty() ) generator.current.builders.teardown.addBlock( local.teardown );\n\n\t\tgenerator.createMountStatement( name );\n\n\t\tgenerator.push({\n\t\t\tnamespace: local.namespace,\n\t\t\ttarget: name,\n\t\t\tparent: generator.current,\n\t\t\tlocalElementDepth: generator.current.localElementDepth + 1,\n\t\t\tkey: null\n\t\t});\n\t},\n\n\tleave ( generator, node ) {\n\t\tconst isComponent = node.name in generator.components;\n\t\tif ( isComponent ) {\n\t\t\treturn Component.leave( generator, node );\n\t\t}\n\n\t\tif ( node.initialUpdate ) {\n\t\t\tgenerator.current.builders.init.addBlock( node.initialUpdate );\n\t\t}\n\n\t\tgenerator.pop();\n\t}\n};\n","import deindent from '../../../utils/deindent.js';\n\nfunction getConditionsAndBlocks ( generator, node, _name, i = 0 ) {\n\tgenerator.addSourcemapLocations( node.expression );\n\tconst name = `${_name}_${i}`;\n\n\tconst conditionsAndBlocks = [{\n\t\tcondition: generator.contextualise( node.expression ).snippet,\n\t\tblock: name\n\t}];\n\n\tgenerator.generateBlock( node, name );\n\n\tif ( node.else && node.else.children.length === 1 &&\n\t\tnode.else.children[0].type === 'IfBlock' ) {\n\t\tconditionsAndBlocks.push(\n\t\t\t...getConditionsAndBlocks( generator, node.else.children[0], _name, i + 1 )\n\t\t);\n\t} else {\n\t\tconst name = `${_name}_${i + 1}`;\n\t\tconditionsAndBlocks.push({\n\t\t\tcondition: null,\n\t\t\tblock: node.else ? name : null,\n\t\t});\n\n\t\tif ( node.else ) {\n\t\t\tgenerator.generateBlock( node.else, name );\n\t\t}\n\t}\n\treturn conditionsAndBlocks;\n}\n\nexport default {\n\tenter ( generator, node ) {\n\t\tconst params = generator.current.params.join( ', ' );\n\t\tconst name = generator.getUniqueName( `ifBlock` );\n\t\tconst getBlock = generator.getUniqueName( `getBlock` );\n\t\tconst currentBlock = generator.getUniqueName( `currentBlock` );\n\n\t\tconst isToplevel = generator.current.localElementDepth === 0;\n\t\tconst conditionsAndBlocks = getConditionsAndBlocks( generator, node, generator.getUniqueName( `renderIfBlock` ) );\n\n\t\tconst anchor = `${name}_anchor`;\n\t\tgenerator.createAnchor( anchor );\n\n\t\tgenerator.current.builders.init.addBlock( deindent`\n\t\t\tfunction ${getBlock} ( ${params} ) {\n\t\t\t\t${conditionsAndBlocks.map( ({ condition, block }) => {\n\t\t\t\t\treturn `${condition ? `if ( ${condition} ) ` : ''}return ${block};`;\n\t\t\t\t} ).join( '\\n' )}\n\t\t\t}\n\n\t\t\tvar ${currentBlock} = ${getBlock}( ${params} );\n\t\t\tvar ${name} = ${currentBlock} && ${currentBlock}( ${params}, component );\n\t\t` );\n\n\t\tconst mountStatement = `if ( ${name} ) ${name}.mount( ${anchor}.parentNode, ${anchor} );`;\n\t\tif ( isToplevel ) {\n\t\t\tgenerator.current.builders.mount.addLine( mountStatement );\n\t\t} else {\n\t\t\tgenerator.current.builders.init.addLine( mountStatement );\n\t\t}\n\n\t\tgenerator.current.builders.update.addBlock( deindent`\n\t\t\tvar _${currentBlock} = ${currentBlock};\n\t\t\t${currentBlock} = ${getBlock}( ${params} );\n\t\t\tif ( _${currentBlock} === ${currentBlock} && ${name}) {\n\t\t\t\t${name}.update( changed, ${params} );\n\t\t\t} else {\n\t\t\t\tif ( ${name} ) ${name}.teardown( true );\n\t\t\t\t${name} = ${currentBlock} && ${currentBlock}( ${params}, component );\n\t\t\t\tif ( ${name} ) ${name}.mount( ${anchor}.parentNode, ${anchor} );\n\t\t\t}\n\t\t` );\n\n\t\tgenerator.current.builders.teardown.addLine(\n\t\t\t`if ( ${name} ) ${name}.teardown( ${isToplevel ? 'detach' : 'false'} );`\n\t\t);\n\t}\n};\n","import deindent from '../../../utils/deindent.js';\n\nexport default {\n\tenter ( generator, node ) {\n\t\tconst name = generator.current.getUniqueName( 'text' );\n\n\t\tconst { snippet } = generator.contextualise( node.expression );\n\n\t\tgenerator.current.builders.init.addLine( `var last_${name} = ${snippet}` );\n\t\tgenerator.addElement( name, `${generator.helper( 'createText' )}( last_${name} )`, true );\n\n\t\tgenerator.current.builders.update.addBlock( deindent`\n\t\t\tif ( ( __tmp = ${snippet} ) !== last_${name} ) {\n\t\t\t\t${name}.data = last_${name} = __tmp;\n\t\t\t}\n\t\t` );\n\t}\n};\n","import deindent from '../../../utils/deindent.js';\n\nexport default {\n\tenter ( generator, node ) {\n\t\tconst name = generator.current.getUniqueName( 'raw' );\n\n\t\tconst { snippet } = generator.contextualise( node.expression );\n\n\t\t// we would have used comments here, but the `insertAdjacentHTML` api only\n\t\t// exists for `Element`s.\n\t\tconst before = `${name}_before`;\n\t\tgenerator.addElement( before, `${generator.helper( 'createElement' )}( 'noscript' )`, true );\n\n\t\tconst after = `${name}_after`;\n\t\tgenerator.addElement( after, `${generator.helper( 'createElement' )}( 'noscript' )`, true );\n\n\t\tconst isToplevel = generator.current.localElementDepth === 0;\n\n\t\tgenerator.current.builders.init.addLine( `var last_${name} = ${snippet};` );\n\t\tconst mountStatement = `${before}.insertAdjacentHTML( 'afterend', last_${name} );`;\n\t\tconst detachStatement = `${generator.helper( 'detachBetween' )}( ${before}, ${after} );`;\n\n\t\tif ( isToplevel ) {\n\t\t\tgenerator.current.builders.mount.addLine( mountStatement );\n\t\t} else {\n\t\t\tgenerator.current.builders.init.addLine( mountStatement );\n\t\t}\n\n\t\tgenerator.current.builders.update.addBlock( deindent`\n\t\t\tif ( ( __tmp = ${snippet} ) !== last_${name} ) {\n\t\t\t\tlast_${name} = __tmp;\n\t\t\t\t${detachStatement}\n\t\t\t\t${mountStatement}\n\t\t\t}\n\t\t` );\n\n\t\tgenerator.current.builders.detachRaw.addBlock( detachStatement );\n\t}\n};\n","export default {\n\tenter ( generator, node ) {\n\t\tif ( generator.current.namespace && !/\\S/.test( node.data ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst name = generator.current.getUniqueName( `text` );\n\t\tgenerator.addElement( name, `${generator.helper( 'createText' )}( ${JSON.stringify( node.data )} )`, false );\n\t}\n};\n","export default {\n\tenter ( generator ) {\n\t\tconst anchor = `yield_anchor`;\n\t\tgenerator.createAnchor( anchor );\n\n\t\tgenerator.current.builders.mount.addLine(\n\t\t\t`component._yield && component._yield.mount( ${generator.current.target}, ${anchor} );`\n\t\t);\n\n\t\tgenerator.current.builders.teardown.addLine(\n\t\t\t`component._yield && component._yield.teardown( detach );`\n\t\t);\n\t}\n};\n","import Comment from './Comment.js';\nimport EachBlock from './EachBlock.js';\nimport Element from './Element.js';\nimport IfBlock from './IfBlock.js';\nimport MustacheTag from './MustacheTag.js';\nimport RawMustacheTag from './RawMustacheTag.js';\nimport Text from './Text.js';\nimport YieldTag from './YieldTag.js';\n\nexport default {\n\tComment,\n\tEachBlock,\n\tElement,\n\tIfBlock,\n\tMustacheTag,\n\tRawMustacheTag,\n\tText,\n\tYieldTag\n};\n","var charToInteger = {};\nvar integerToChar = {};\n\n'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.split( '' ).forEach( function ( char, i ) {\n\tcharToInteger[ char ] = i;\n\tintegerToChar[ i ] = char;\n});\n\nexport function decode ( string ) {\n\tvar result = [],\n\t\tlen = string.length,\n\t\ti,\n\t\thasContinuationBit,\n\t\tshift = 0,\n\t\tvalue = 0,\n\t\tinteger,\n\t\tshouldNegate;\n\n\tfor ( i = 0; i < len; i += 1 ) {\n\t\tinteger = charToInteger[ string[i] ];\n\n\t\tif ( integer === undefined ) {\n\t\t\tthrow new Error( 'Invalid character (' + string[i] + ')' );\n\t\t}\n\n\t\thasContinuationBit = integer & 32;\n\n\t\tinteger &= 31;\n\t\tvalue += integer << shift;\n\n\t\tif ( hasContinuationBit ) {\n\t\t\tshift += 5;\n\t\t} else {\n\t\t\tshouldNegate = value & 1;\n\t\t\tvalue >>= 1;\n\n\t\t\tresult.push( shouldNegate ? -value : value );\n\n\t\t\t// reset\n\t\t\tvalue = shift = 0;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function encode ( value ) {\n\tvar result, i;\n\n\tif ( typeof value === 'number' ) {\n\t\tresult = encodeInteger( value );\n\t} else {\n\t\tresult = '';\n\t\tfor ( i = 0; i < value.length; i += 1 ) {\n\t\t\tresult += encodeInteger( value[i] );\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction encodeInteger ( num ) {\n\tvar result = '', clamped;\n\n\tif ( num < 0 ) {\n\t\tnum = ( -num << 1 ) | 1;\n\t} else {\n\t\tnum <<= 1;\n\t}\n\n\tdo {\n\t\tclamped = num & 31;\n\t\tnum >>= 5;\n\n\t\tif ( num > 0 ) {\n\t\t\tclamped |= 32;\n\t\t}\n\n\t\tresult += integerToChar[ clamped ];\n\t} while ( num > 0 );\n\n\treturn result;\n}\n","import { encode } from 'vlq';\n\nfunction Chunk ( start, end, content ) {\n\tthis.start = start;\n\tthis.end = end;\n\tthis.original = content;\n\n\tthis.intro = '';\n\tthis.outro = '';\n\n\tthis.content = content;\n\tthis.storeName = false;\n\tthis.edited = false;\n\n\t// we make these non-enumerable, for sanity while debugging\n\tObject.defineProperties( this, {\n\t\tprevious: { writable: true, value: null },\n\t\tnext: { writable: true, value: null }\n\t});\n}\n\nChunk.prototype = {\n\tappendLeft: function appendLeft ( content ) {\n\t\tthis.outro += content;\n\t},\n\n\tappendRight: function appendRight ( content ) {\n\t\tthis.intro = this.intro + content;\n\t},\n\n\tclone: function clone () {\n\t\tvar chunk = new Chunk( this.start, this.end, this.original );\n\n\t\tchunk.intro = this.intro;\n\t\tchunk.outro = this.outro;\n\t\tchunk.content = this.content;\n\t\tchunk.storeName = this.storeName;\n\t\tchunk.edited = this.edited;\n\n\t\treturn chunk;\n\t},\n\n\tcontains: function contains ( index ) {\n\t\treturn this.start < index && index < this.end;\n\t},\n\n\teachNext: function eachNext ( fn ) {\n\t\tvar chunk = this;\n\t\twhile ( chunk ) {\n\t\t\tfn( chunk );\n\t\t\tchunk = chunk.next;\n\t\t}\n\t},\n\n\teachPrevious: function eachPrevious ( fn ) {\n\t\tvar chunk = this;\n\t\twhile ( chunk ) {\n\t\t\tfn( chunk );\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t},\n\n\tedit: function edit ( content, storeName ) {\n\t\tthis.content = content;\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\t\tthis.storeName = storeName;\n\n\t\tthis.edited = true;\n\n\t\treturn this;\n\t},\n\n\tprependLeft: function prependLeft ( content ) {\n\t\tthis.outro = content + this.outro;\n\t},\n\n\tprependRight: function prependRight ( content ) {\n\t\tthis.intro = content + this.intro;\n\t},\n\n\tsplit: function split ( index ) {\n\t\tvar sliceIndex = index - this.start;\n\n\t\tvar originalBefore = this.original.slice( 0, sliceIndex );\n\t\tvar originalAfter = this.original.slice( sliceIndex );\n\n\t\tthis.original = originalBefore;\n\n\t\tvar newChunk = new Chunk( index, this.end, originalAfter );\n\t\tnewChunk.outro = this.outro;\n\t\tthis.outro = '';\n\n\t\tthis.end = index;\n\n\t\tif ( this.edited ) {\n\t\t\t// TODO is this block necessary?...\n\t\t\tnewChunk.edit( '', false );\n\t\t\tthis.content = '';\n\t\t} else {\n\t\t\tthis.content = originalBefore;\n\t\t}\n\n\t\tnewChunk.next = this.next;\n\t\tif ( newChunk.next ) { newChunk.next.previous = newChunk; }\n\t\tnewChunk.previous = this;\n\t\tthis.next = newChunk;\n\n\t\treturn newChunk;\n\t},\n\n\ttoString: function toString () {\n\t\treturn this.intro + this.content + this.outro;\n\t},\n\n\ttrimEnd: function trimEnd ( rx ) {\n\t\tthis.outro = this.outro.replace( rx, '' );\n\t\tif ( this.outro.length ) { return true; }\n\n\t\tvar trimmed = this.content.replace( rx, '' );\n\n\t\tif ( trimmed.length ) {\n\t\t\tif ( trimmed !== this.content ) {\n\t\t\t\tthis.split( this.start + trimmed.length ).edit( '', false );\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit( '', false );\n\n\t\t\tthis.intro = this.intro.replace( rx, '' );\n\t\t\tif ( this.intro.length ) { return true; }\n\t\t}\n\t},\n\n\ttrimStart: function trimStart ( rx ) {\n\t\tthis.intro = this.intro.replace( rx, '' );\n\t\tif ( this.intro.length ) { return true; }\n\n\t\tvar trimmed = this.content.replace( rx, '' );\n\n\t\tif ( trimmed.length ) {\n\t\t\tif ( trimmed !== this.content ) {\n\t\t\t\tthis.split( this.end - trimmed.length );\n\t\t\t\tthis.edit( '', false );\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit( '', false );\n\n\t\t\tthis.outro = this.outro.replace( rx, '' );\n\t\t\tif ( this.outro.length ) { return true; }\n\t\t}\n\t}\n};\n\nvar _btoa;\n\nif ( typeof window !== 'undefined' && typeof window.btoa === 'function' ) {\n\t_btoa = window.btoa;\n} else if ( typeof Buffer === 'function' ) {\n\t_btoa = function (str) { return new Buffer( str ).toString( 'base64' ); };\n} else {\n\t_btoa = function () {\n\t\tthrow new Error( 'Unsupported environment: `window.btoa` or `Buffer` should be supported.' );\n\t};\n}\n\nvar btoa = _btoa;\n\nfunction SourceMap ( properties ) {\n\tthis.version = 3;\n\n\tthis.file = properties.file;\n\tthis.sources = properties.sources;\n\tthis.sourcesContent = properties.sourcesContent;\n\tthis.names = properties.names;\n\tthis.mappings = properties.mappings;\n}\n\nSourceMap.prototype = {\n\ttoString: function toString () {\n\t\treturn JSON.stringify( this );\n\t},\n\n\ttoUrl: function toUrl () {\n\t\treturn 'data:application/json;charset=utf-8;base64,' + btoa( this.toString() );\n\t}\n};\n\nfunction guessIndent ( code ) {\n\tvar lines = code.split( '\\n' );\n\n\tvar tabbed = lines.filter( function (line) { return /^\\t+/.test( line ); } );\n\tvar spaced = lines.filter( function (line) { return /^ {2,}/.test( line ); } );\n\n\tif ( tabbed.length === 0 && spaced.length === 0 ) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif ( tabbed.length >= spaced.length ) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tvar min = spaced.reduce( function ( previous, current ) {\n\t\tvar numSpaces = /^ +/.exec( current )[0].length;\n\t\treturn Math.min( numSpaces, previous );\n\t}, Infinity );\n\n\treturn new Array( min + 1 ).join( ' ' );\n}\n\nfunction getRelativePath ( from, to ) {\n\tvar fromParts = from.split( /[\\/\\\\]/ );\n\tvar toParts = to.split( /[\\/\\\\]/ );\n\n\tfromParts.pop(); // get dirname\n\n\twhile ( fromParts[0] === toParts[0] ) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif ( fromParts.length ) {\n\t\tvar i = fromParts.length;\n\t\twhile ( i-- ) { fromParts[i] = '..'; }\n\t}\n\n\treturn fromParts.concat( toParts ).join( '/' );\n}\n\nvar toString$1 = Object.prototype.toString;\n\nfunction isObject ( thing ) {\n\treturn toString$1.call( thing ) === '[object Object]';\n}\n\nfunction getLocator ( source ) {\n\tvar originalLines = source.split( '\\n' );\n\n\tvar start = 0;\n\tvar lineRanges = originalLines.map( function ( line, i ) {\n\t\tvar end = start + line.length + 1;\n\t\tvar range = { start: start, end: end, line: i };\n\n\t\tstart = end;\n\t\treturn range;\n\t});\n\n\tvar i = 0;\n\n\tfunction rangeContains ( range, index ) {\n\t\treturn range.start <= index && index < range.end;\n\t}\n\n\tfunction getLocation ( range, index ) {\n\t\treturn { line: range.line, column: index - range.start };\n\t}\n\n\treturn function locate ( index ) {\n\t\tvar range = lineRanges[i];\n\n\t\tvar d = index >= range.end ? 1 : -1;\n\n\t\twhile ( range ) {\n\t\t\tif ( rangeContains( range, index ) ) { return getLocation( range, index ); }\n\n\t\t\ti += d;\n\t\t\trange = lineRanges[i];\n\t\t}\n\t};\n}\n\nfunction Mappings ( hires ) {\n\tvar this$1 = this;\n\n\tvar offsets = {\n\t\tgeneratedCodeColumn: 0,\n\t\tsourceIndex: 0,\n\t\tsourceCodeLine: 0,\n\t\tsourceCodeColumn: 0,\n\t\tsourceCodeName: 0\n\t};\n\n\tvar generatedCodeLine = 0;\n\tvar generatedCodeColumn = 0;\n\n\tthis.raw = [];\n\tvar rawSegments = this.raw[ generatedCodeLine ] = [];\n\n\tvar pending = null;\n\n\tthis.addEdit = function ( sourceIndex, content, original, loc, nameIndex ) {\n\t\tif ( content.length ) {\n\t\t\trawSegments.push([\n\t\t\t\tgeneratedCodeColumn,\n\t\t\t\tsourceIndex,\n\t\t\t\tloc.line,\n\t\t\t\tloc.column,\n\t\t\t\tnameIndex ]);\n\t\t} else if ( pending ) {\n\t\t\trawSegments.push( pending );\n\t\t}\n\n\t\tthis$1.advance( content );\n\t\tpending = null;\n\t};\n\n\tthis.addUneditedChunk = function ( sourceIndex, chunk, original, loc, sourcemapLocations ) {\n\t\tvar originalCharIndex = chunk.start;\n\t\tvar first = true;\n\n\t\twhile ( originalCharIndex < chunk.end ) {\n\t\t\tif ( hires || first || sourcemapLocations[ originalCharIndex ] ) {\n\t\t\t\trawSegments.push([\n\t\t\t\t\tgeneratedCodeColumn,\n\t\t\t\t\tsourceIndex,\n\t\t\t\t\tloc.line,\n\t\t\t\t\tloc.column,\n\t\t\t\t\t-1\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\tif ( original[ originalCharIndex ] === '\\n' ) {\n\t\t\t\tloc.line += 1;\n\t\t\t\tloc.column = 0;\n\t\t\t\tgeneratedCodeLine += 1;\n\t\t\t\tthis$1.raw[ generatedCodeLine ] = rawSegments = [];\n\t\t\t\tgeneratedCodeColumn = 0;\n\t\t\t} else {\n\t\t\t\tloc.column += 1;\n\t\t\t\tgeneratedCodeColumn += 1;\n\t\t\t}\n\n\t\t\toriginalCharIndex += 1;\n\t\t\tfirst = false;\n\t\t}\n\n\t\tpending = [\n\t\t\tgeneratedCodeColumn,\n\t\t\tsourceIndex,\n\t\t\tloc.line,\n\t\t\tloc.column,\n\t\t\t-1 ];\n\t};\n\n\tthis.advance = function (str) {\n\t\tif ( !str ) { return; }\n\n\t\tvar lines = str.split( '\\n' );\n\t\tvar lastLine = lines.pop();\n\n\t\tif ( lines.length ) {\n\t\t\tgeneratedCodeLine += lines.length;\n\t\t\tthis$1.raw[ generatedCodeLine ] = rawSegments = [];\n\t\t\tgeneratedCodeColumn = lastLine.length;\n\t\t} else {\n\t\t\tgeneratedCodeColumn += lastLine.length;\n\t\t}\n\t};\n\n\tthis.encode = function () {\n\t\treturn this$1.raw.map( function (segments) {\n\t\t\tvar generatedCodeColumn = 0;\n\n\t\t\treturn segments.map( function (segment) {\n\t\t\t\tvar arr = [\n\t\t\t\t\tsegment[0] - generatedCodeColumn,\n\t\t\t\t\tsegment[1] - offsets.sourceIndex,\n\t\t\t\t\tsegment[2] - offsets.sourceCodeLine,\n\t\t\t\t\tsegment[3] - offsets.sourceCodeColumn\n\t\t\t\t];\n\n\t\t\t\tgeneratedCodeColumn = segment[0];\n\t\t\t\toffsets.sourceIndex = segment[1];\n\t\t\t\toffsets.sourceCodeLine = segment[2];\n\t\t\t\toffsets.sourceCodeColumn = segment[3];\n\n\t\t\t\tif ( ~segment[4] ) {\n\t\t\t\t\tarr.push( segment[4] - offsets.sourceCodeName );\n\t\t\t\t\toffsets.sourceCodeName = segment[4];\n\t\t\t\t}\n\n\t\t\t\treturn encode( arr );\n\t\t\t}).join( ',' );\n\t\t}).join( ';' );\n\t};\n}\n\nvar Stats = function Stats () {\n\tObject.defineProperties( this, {\n\t\tstartTimes: { value: {} }\n\t});\n};\n\nStats.prototype.time = function time ( label ) {\n\tthis.startTimes[ label ] = process.hrtime();\n};\n\nStats.prototype.timeEnd = function timeEnd ( label ) {\n\tvar elapsed = process.hrtime( this.startTimes[ label ] );\n\n\tif ( !this[ label ] ) { this[ label ] = 0; }\n\tthis[ label ] += elapsed[0] * 1e3 + elapsed[1] * 1e-6;\n};\n\nvar warned = {\n\tinsertLeft: false,\n\tinsertRight: false\n};\n\nfunction MagicString$1 ( string, options ) {\n\tif ( options === void 0 ) options = {};\n\n\tvar chunk = new Chunk( 0, string.length, string );\n\n\tObject.defineProperties( this, {\n\t\toriginal: { writable: true, value: string },\n\t\toutro: { writable: true, value: '' },\n\t\tintro: { writable: true, value: '' },\n\t\tfirstChunk: { writable: true, value: chunk },\n\t\tlastChunk: { writable: true, value: chunk },\n\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\tbyStart: { writable: true, value: {} },\n\t\tbyEnd: { writable: true, value: {} },\n\t\tfilename: { writable: true, value: options.filename },\n\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\tsourcemapLocations: { writable: true, value: {} },\n\t\tstoredNames: { writable: true, value: {} },\n\t\tindentStr: { writable: true, value: guessIndent( string ) }\n\t});\n\n\tthis.byStart[ 0 ] = chunk;\n\tthis.byEnd[ string.length ] = chunk;\n}\n\nMagicString$1.prototype = {\n\taddSourcemapLocation: function addSourcemapLocation ( char ) {\n\t\tthis.sourcemapLocations[ char ] = true;\n\t},\n\n\tappend: function append ( content ) {\n\t\tif ( typeof content !== 'string' ) { throw new TypeError( 'outro content must be a string' ); }\n\n\t\tthis.outro += content;\n\t\treturn this;\n\t},\n\n\tappendLeft: function appendLeft ( index, content ) {\n\t\tif ( typeof content !== 'string' ) { throw new TypeError( 'inserted content must be a string' ); }\n\n\t\tthis._split( index );\n\n\t\tvar chunk = this.byEnd[ index ];\n\n\t\tif ( chunk ) {\n\t\t\tchunk.appendLeft( content );\n\t\t} else {\n\t\t\tthis.intro += content;\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tappendRight: function appendRight ( index, content ) {\n\t\tif ( typeof content !== 'string' ) { throw new TypeError( 'inserted content must be a string' ); }\n\n\t\tthis._split( index );\n\n\t\tvar chunk = this.byStart[ index ];\n\n\t\tif ( chunk ) {\n\t\t\tchunk.appendRight( content );\n\t\t} else {\n\t\t\tthis.outro += content;\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function clone () {\n\t\tvar cloned = new MagicString$1( this.original, { filename: this.filename });\n\n\t\tvar originalChunk = this.firstChunk;\n\t\tvar clonedChunk = cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone();\n\n\t\twhile ( originalChunk ) {\n\t\t\tcloned.byStart[ clonedChunk.start ] = clonedChunk;\n\t\t\tcloned.byEnd[ clonedChunk.end ] = clonedChunk;\n\n\t\t\tvar nextOriginalChunk = originalChunk.next;\n\t\t\tvar nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\t\tif ( nextClonedChunk ) {\n\t\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\t\tclonedChunk = nextClonedChunk;\n\t\t\t}\n\n\t\t\toriginalChunk = nextOriginalChunk;\n\t\t}\n\n\t\tcloned.lastChunk = clonedChunk;\n\n\t\tif ( this.indentExclusionRanges ) {\n\t\t\tcloned.indentExclusionRanges = typeof this.indentExclusionRanges[0] === 'number' ?\n\t\t\t\t[ this.indentExclusionRanges[0], this.indentExclusionRanges[1] ] :\n\t\t\t\tthis.indentExclusionRanges.map( function (range) { return [ range.start, range.end ]; } );\n\t\t}\n\n\t\tObject.keys( this.sourcemapLocations ).forEach( function (loc) {\n\t\t\tcloned.sourcemapLocations[ loc ] = true;\n\t\t});\n\n\t\treturn cloned;\n\t},\n\n\tgenerateMap: function generateMap ( options ) {\n\t\tvar this$1 = this;\n\n\t\toptions = options || {};\n\n\t\tvar sourceIndex = 0;\n\t\tvar names = Object.keys( this.storedNames );\n\t\tvar mappings = new Mappings( options.hires );\n\n\t\tvar locate = getLocator( this.original );\n\n\t\tif ( this.intro ) {\n\t\t\tmappings.advance( this.intro );\n\t\t}\n\n\t\tthis.firstChunk.eachNext( function (chunk) {\n\t\t\tvar loc = locate( chunk.start );\n\n\t\t\tif ( chunk.intro.length ) { mappings.advance( chunk.intro ); }\n\n\t\t\tif ( chunk.edited ) {\n\t\t\t\tmappings.addEdit( sourceIndex, chunk.content, chunk.original, loc, chunk.storeName ? names.indexOf( chunk.original ) : -1 );\n\t\t\t} else {\n\t\t\t\tmappings.addUneditedChunk( sourceIndex, chunk, this$1.original, loc, this$1.sourcemapLocations );\n\t\t\t}\n\n\t\t\tif ( chunk.outro.length ) { mappings.advance( chunk.outro ); }\n\t\t});\n\n\t\tvar map = new SourceMap({\n\t\t\tfile: ( options.file ? options.file.split( /[\\/\\\\]/ ).pop() : null ),\n\t\t\tsources: [ options.source ? getRelativePath( options.file || '', options.source ) : null ],\n\t\t\tsourcesContent: options.includeContent ? [ this.original ] : [ null ],\n\t\t\tnames: names,\n\t\t\tmappings: mappings.encode()\n\t\t});\n\t\treturn map;\n\t},\n\n\tgetIndentString: function getIndentString () {\n\t\treturn this.indentStr === null ? '\\t' : this.indentStr;\n\t},\n\n\tindent: function indent ( indentStr, options ) {\n\t\tvar this$1 = this;\n\n\t\tvar pattern = /^[^\\r\\n]/gm;\n\n\t\tif ( isObject( indentStr ) ) {\n\t\t\toptions = indentStr;\n\t\t\tindentStr = undefined;\n\t\t}\n\n\t\tindentStr = indentStr !== undefined ? indentStr : ( this.indentStr || '\\t' );\n\n\t\tif ( indentStr === '' ) { return this; } // noop\n\n\t\toptions = options || {};\n\n\t\t// Process exclusion ranges\n\t\tvar isExcluded = {};\n\n\t\tif ( options.exclude ) {\n\t\t\tvar exclusions = typeof options.exclude[0] === 'number' ? [ options.exclude ] : options.exclude;\n\t\t\texclusions.forEach( function (exclusion) {\n\t\t\t\tfor ( var i = exclusion[0]; i < exclusion[1]; i += 1 ) {\n\t\t\t\t\tisExcluded[i] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar shouldIndentNextCharacter = options.indentStart !== false;\n\t\tvar replacer = function (match) {\n\t\t\tif ( shouldIndentNextCharacter ) { return (\"\" + indentStr + match); }\n\t\t\tshouldIndentNextCharacter = true;\n\t\t\treturn match;\n\t\t};\n\n\t\tthis.intro = this.intro.replace( pattern, replacer );\n\n\t\tvar charIndex = 0;\n\n\t\tvar chunk = this.firstChunk;\n\n\t\twhile ( chunk ) {\n\t\t\tvar end = chunk.end;\n\n\t\t\tif ( chunk.edited ) {\n\t\t\t\tif ( !isExcluded[ charIndex ] ) {\n\t\t\t\t\tchunk.content = chunk.content.replace( pattern, replacer );\n\n\t\t\t\t\tif ( chunk.content.length ) {\n\t\t\t\t\t\tshouldIndentNextCharacter = chunk.content[ chunk.content.length - 1 ] === '\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcharIndex = chunk.start;\n\n\t\t\t\twhile ( charIndex < end ) {\n\t\t\t\t\tif ( !isExcluded[ charIndex ] ) {\n\t\t\t\t\t\tvar char = this$1.original[ charIndex ];\n\n\t\t\t\t\t\tif ( char === '\\n' ) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t\t} else if ( char !== '\\r' && shouldIndentNextCharacter ) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\t\tif ( charIndex === chunk.start ) {\n\t\t\t\t\t\t\t\tchunk.prependRight( indentStr );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvar rhs = chunk.split( charIndex );\n\t\t\t\t\t\t\t\trhs.prependRight( indentStr );\n\n\t\t\t\t\t\t\t\tthis$1.byStart[ charIndex ] = rhs;\n\t\t\t\t\t\t\t\tthis$1.byEnd[ charIndex ] = chunk;\n\n\t\t\t\t\t\t\t\tchunk = rhs;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcharIndex = chunk.end;\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tthis.outro = this.outro.replace( pattern, replacer );\n\n\t\treturn this;\n\t},\n\n\tinsert: function insert () {\n\t\tthrow new Error( 'magicString.insert(...) is deprecated. Use insertRight(...) or insertLeft(...)' );\n\t},\n\n\tinsertLeft: function insertLeft ( index, content ) {\n\t\tif ( !warned.insertLeft ) {\n\t\t\tconsole.warn( 'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead' ); // eslint-disable-line no-console\n\t\t\twarned.insertLeft = true;\n\t\t}\n\n\t\treturn this.appendLeft( index, content );\n\t},\n\n\tinsertRight: function insertRight ( index, content ) {\n\t\tif ( !warned.insertRight ) {\n\t\t\tconsole.warn( 'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead' ); // eslint-disable-line no-console\n\t\t\twarned.insertRight = true;\n\t\t}\n\n\t\treturn this.prependRight( index, content );\n\t},\n\n\tmove: function move ( start, end, index ) {\n\t\tif ( index >= start && index <= end ) { throw new Error( 'Cannot move a selection inside itself' ); }\n\n\t\tthis._split( start );\n\t\tthis._split( end );\n\t\tthis._split( index );\n\n\t\tvar first = this.byStart[ start ];\n\t\tvar last = this.byEnd[ end ];\n\n\t\tvar oldLeft = first.previous;\n\t\tvar oldRight = last.next;\n\n\t\tvar newRight = this.byStart[ index ];\n\t\tif ( !newRight && last === this.lastChunk ) { return this; }\n\t\tvar newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\t\tif ( oldLeft ) { oldLeft.next = oldRight; }\n\t\tif ( oldRight ) { oldRight.previous = oldLeft; }\n\n\t\tif ( newLeft ) { newLeft.next = first; }\n\t\tif ( newRight ) { newRight.previous = last; }\n\n\t\tif ( !first.previous ) { this.firstChunk = last.next; }\n\t\tif ( !last.next ) {\n\t\t\tthis.lastChunk = first.previous;\n\t\t\tthis.lastChunk.next = null;\n\t\t}\n\n\t\tfirst.previous = newLeft;\n\t\tlast.next = newRight;\n\n\t\tif ( !newLeft ) { this.firstChunk = first; }\n\t\tif ( !newRight ) { this.lastChunk = last; }\n\n\t\treturn this;\n\t},\n\n\toverwrite: function overwrite ( start, end, content, storeName ) {\n\t\tvar this$1 = this;\n\n\t\tif ( typeof content !== 'string' ) { throw new TypeError( 'replacement content must be a string' ); }\n\n\t\twhile ( start < 0 ) { start += this$1.original.length; }\n\t\twhile ( end < 0 ) { end += this$1.original.length; }\n\n\t\tif ( end > this.original.length ) { throw new Error( 'end is out of bounds' ); }\n\t\tif ( start === end ) { throw new Error( 'Cannot overwrite a zero-length range – use insertLeft or insertRight instead' ); }\n\n\t\tthis._split( start );\n\t\tthis._split( end );\n\n\t\tif ( storeName ) {\n\t\t\tvar original = this.original.slice( start, end );\n\t\t\tthis.storedNames[ original ] = true;\n\t\t}\n\n\t\tvar first = this.byStart[ start ];\n\t\tvar last = this.byEnd[ end ];\n\n\t\tif ( first ) {\n\t\t\tfirst.edit( content, storeName );\n\n\t\t\tif ( last ) {\n\t\t\t\tfirst.next = last.next;\n\t\t\t} else {\n\t\t\t\tfirst.next = null;\n\t\t\t\tthis.lastChunk = first;\n\t\t\t}\n\n\t\t\tfirst.original = this.original.slice( start, end );\n\t\t\tfirst.end = end;\n\t\t}\n\n\t\telse {\n\t\t\t// must be inserting at the end\n\t\t\tvar newChunk = new Chunk( start, end, '' ).edit( content, storeName );\n\n\t\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\t\tlast.next = newChunk;\n\t\t\tnewChunk.previous = last;\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tprepend: function prepend ( content ) {\n\t\tif ( typeof content !== 'string' ) { throw new TypeError( 'outro content must be a string' ); }\n\n\t\tthis.intro = content + this.intro;\n\t\treturn this;\n\t},\n\n\tprependLeft: function prependLeft ( index, content ) {\n\t\tif ( typeof content !== 'string' ) { throw new TypeError( 'inserted content must be a string' ); }\n\n\t\tthis._split( index );\n\n\t\tvar chunk = this.byEnd[ index ];\n\n\t\tif ( chunk ) {\n\t\t\tchunk.prependLeft( content );\n\t\t} else {\n\t\t\tthis.intro = content + this.intro;\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tprependRight: function prependRight ( index, content ) {\n\t\tif ( typeof content !== 'string' ) { throw new TypeError( 'inserted content must be a string' ); }\n\n\t\tthis._split( index );\n\n\t\tvar chunk = this.byStart[ index ];\n\n\t\tif ( chunk ) {\n\t\t\tchunk.prependRight( content );\n\t\t} else {\n\t\t\tthis.outro = content + this.outro;\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremove: function remove ( start, end ) {\n\t\tvar this$1 = this;\n\n\t\twhile ( start < 0 ) { start += this$1.original.length; }\n\t\twhile ( end < 0 ) { end += this$1.original.length; }\n\n\t\tif ( start === end ) { return this; }\n\n\t\tif ( start < 0 || end > this.original.length ) { throw new Error( 'Character is out of bounds' ); }\n\t\tif ( start > end ) { throw new Error( 'end must be greater than start' ); }\n\n\t\treturn this.overwrite( start, end, '', false );\n\t},\n\n\tslice: function slice ( start, end ) {\n\t\tvar this$1 = this;\n\t\tif ( start === void 0 ) start = 0;\n\t\tif ( end === void 0 ) end = this.original.length;\n\n\t\twhile ( start < 0 ) { start += this$1.original.length; }\n\t\twhile ( end < 0 ) { end += this$1.original.length; }\n\n\t\tvar result = '';\n\n\t\t// find start chunk\n\t\tvar chunk = this.firstChunk;\n\t\twhile ( chunk && ( chunk.start > start || chunk.end <= start ) ) {\n\n\t\t\t// found end chunk before start\n\t\t\tif ( chunk.start < end && chunk.end >= end ) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tif ( chunk && chunk.edited && chunk.start !== start ) { throw new Error((\"Cannot use replaced character \" + start + \" as slice start anchor.\")); }\n\n\t\tvar startChunk = chunk;\n\t\twhile ( chunk ) {\n\t\t\tif ( chunk.intro && ( startChunk !== chunk || chunk.start === start ) ) {\n\t\t\t\tresult += chunk.intro;\n\t\t\t}\n\n\t\t\tvar containsEnd = chunk.start < end && chunk.end >= end;\n\t\t\tif ( containsEnd && chunk.edited && chunk.end !== end ) { throw new Error((\"Cannot use replaced character \" + end + \" as slice end anchor.\")); }\n\n\t\t\tvar sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\t\tvar sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\t\tresult += chunk.content.slice( sliceStart, sliceEnd );\n\n\t\t\tif ( chunk.outro && ( !containsEnd || chunk.end === end ) ) {\n\t\t\t\tresult += chunk.outro;\n\t\t\t}\n\n\t\t\tif ( containsEnd ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\t// TODO deprecate this? not really very useful\n\tsnip: function snip ( start, end ) {\n\t\tvar clone = this.clone();\n\t\tclone.remove( 0, start );\n\t\tclone.remove( end, clone.original.length );\n\n\t\treturn clone;\n\t},\n\n\t_split: function _split ( index ) {\n\t\tvar this$1 = this;\n\n\t\tif ( this.byStart[ index ] || this.byEnd[ index ] ) { return; }\n\n\t\tvar chunk = this.lastSearchedChunk;\n\t\tvar searchForward = index > chunk.end;\n\n\t\twhile ( true ) {\n\t\t\tif ( chunk.contains( index ) ) { return this$1._splitChunk( chunk, index ); }\n\n\t\t\tchunk = searchForward ?\n\t\t\t\tthis$1.byStart[ chunk.end ] :\n\t\t\t\tthis$1.byEnd[ chunk.start ];\n\t\t}\n\t},\n\n\t_splitChunk: function _splitChunk ( chunk, index ) {\n\t\tif ( chunk.edited && chunk.content.length ) { // zero-length edited chunks are a special case (overlapping replacements)\n\t\t\tvar loc = getLocator( this.original )( index );\n\t\t\tthrow new Error( (\"Cannot split a chunk that has already been edited (\" + (loc.line) + \":\" + (loc.column) + \" – \\\"\" + (chunk.original) + \"\\\")\") );\n\t\t}\n\n\t\tvar newChunk = chunk.split( index );\n\n\t\tthis.byEnd[ index ] = chunk;\n\t\tthis.byStart[ index ] = newChunk;\n\t\tthis.byEnd[ newChunk.end ] = newChunk;\n\n\t\tif ( chunk === this.lastChunk ) { this.lastChunk = newChunk; }\n\n\t\tthis.lastSearchedChunk = chunk;\n\t\treturn true;\n\t},\n\n\ttoString: function toString () {\n\t\tvar str = this.intro;\n\n\t\tvar chunk = this.firstChunk;\n\t\twhile ( chunk ) {\n\t\t\tstr += chunk.toString();\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn str + this.outro;\n\t},\n\n\ttrimLines: function trimLines () {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t},\n\n\ttrim: function trim ( charType ) {\n\t\treturn this.trimStart( charType ).trimEnd( charType );\n\t},\n\n\ttrimEnd: function trimEnd ( charType ) {\n\t\tvar this$1 = this;\n\n\t\tvar rx = new RegExp( ( charType || '\\\\s' ) + '+$' );\n\n\t\tthis.outro = this.outro.replace( rx, '' );\n\t\tif ( this.outro.length ) { return this; }\n\n\t\tvar chunk = this.lastChunk;\n\n\t\tdo {\n\t\t\tvar end = chunk.end;\n\t\t\tvar aborted = chunk.trimEnd( rx );\n\n\t\t\t// if chunk was trimmed, we have a new lastChunk\n\t\t\tif ( chunk.end !== end ) {\n\t\t\t\tthis$1.lastChunk = chunk.next;\n\n\t\t\t\tthis$1.byEnd[ chunk.end ] = chunk;\n\t\t\t\tthis$1.byStart[ chunk.next.start ] = chunk.next;\n\t\t\t}\n\n\t\t\tif ( aborted ) { return this$1; }\n\t\t\tchunk = chunk.previous;\n\t\t} while ( chunk );\n\n\t\treturn this;\n\t},\n\n\ttrimStart: function trimStart ( charType ) {\n\t\tvar this$1 = this;\n\n\t\tvar rx = new RegExp( '^' + ( charType || '\\\\s' ) + '+' );\n\n\t\tthis.intro = this.intro.replace( rx, '' );\n\t\tif ( this.intro.length ) { return this; }\n\n\t\tvar chunk = this.firstChunk;\n\n\t\tdo {\n\t\t\tvar end = chunk.end;\n\t\t\tvar aborted = chunk.trimStart( rx );\n\n\t\t\tif ( chunk.end !== end ) {\n\t\t\t\t// special case...\n\t\t\t\tif ( chunk === this$1.lastChunk ) { this$1.lastChunk = chunk.next; }\n\n\t\t\t\tthis$1.byEnd[ chunk.end ] = chunk;\n\t\t\t\tthis$1.byStart[ chunk.next.start ] = chunk.next;\n\t\t\t}\n\n\t\t\tif ( aborted ) { return this$1; }\n\t\t\tchunk = chunk.next;\n\t\t} while ( chunk );\n\n\t\treturn this;\n\t}\n};\n\nvar hasOwnProp = Object.prototype.hasOwnProperty;\n\nfunction Bundle ( options ) {\n\tif ( options === void 0 ) options = {};\n\n\tthis.intro = options.intro || '';\n\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\n\tthis.sources = [];\n\n\tthis.uniqueSources = [];\n\tthis.uniqueSourceIndexByFilename = {};\n}\n\nBundle.prototype = {\n\taddSource: function addSource ( source ) {\n\t\tif ( source instanceof MagicString$1 ) {\n\t\t\treturn this.addSource({\n\t\t\t\tcontent: source,\n\t\t\t\tfilename: source.filename,\n\t\t\t\tseparator: this.separator\n\t\t\t});\n\t\t}\n\n\t\tif ( !isObject( source ) || !source.content ) {\n\t\t\tthrow new Error( 'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`' );\n\t\t}\n\n\t\t[ 'filename', 'indentExclusionRanges', 'separator' ].forEach( function (option) {\n\t\t\tif ( !hasOwnProp.call( source, option ) ) { source[ option ] = source.content[ option ]; }\n\t\t});\n\n\t\tif ( source.separator === undefined ) { // TODO there's a bunch of this sort of thing, needs cleaning up\n\t\t\tsource.separator = this.separator;\n\t\t}\n\n\t\tif ( source.filename ) {\n\t\t\tif ( !hasOwnProp.call( this.uniqueSourceIndexByFilename, source.filename ) ) {\n\t\t\t\tthis.uniqueSourceIndexByFilename[ source.filename ] = this.uniqueSources.length;\n\t\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t\t} else {\n\t\t\t\tvar uniqueSource = this.uniqueSources[ this.uniqueSourceIndexByFilename[ source.filename ] ];\n\t\t\t\tif ( source.content.original !== uniqueSource.content ) {\n\t\t\t\t\tthrow new Error( (\"Illegal source: same filename (\" + (source.filename) + \"), different contents\") );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.sources.push( source );\n\t\treturn this;\n\t},\n\n\tappend: function append ( str, options ) {\n\t\tthis.addSource({\n\t\t\tcontent: new MagicString$1( str ),\n\t\t\tseparator: ( options && options.separator ) || ''\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tclone: function clone () {\n\t\tvar bundle = new Bundle({\n\t\t\tintro: this.intro,\n\t\t\tseparator: this.separator\n\t\t});\n\n\t\tthis.sources.forEach( function (source) {\n\t\t\tbundle.addSource({\n\t\t\t\tfilename: source.filename,\n\t\t\t\tcontent: source.content.clone(),\n\t\t\t\tseparator: source.separator\n\t\t\t});\n\t\t});\n\n\t\treturn bundle;\n\t},\n\n\tgenerateMap: function generateMap ( options ) {\n\t\tvar this$1 = this;\n\t\tif ( options === void 0 ) options = {};\n\n\t\tvar names = [];\n\t\tthis.sources.forEach( function (source) {\n\t\t\tObject.keys( source.content.storedNames ).forEach( function (name) {\n\t\t\t\tif ( !~names.indexOf( name ) ) { names.push( name ); }\n\t\t\t});\n\t\t});\n\n\t\tvar mappings = new Mappings( options.hires );\n\n\t\tif ( this.intro ) {\n\t\t\tmappings.advance( this.intro );\n\t\t}\n\n\t\tthis.sources.forEach( function ( source, i ) {\n\t\t\tif ( i > 0 ) {\n\t\t\t\tmappings.advance( this$1.separator );\n\t\t\t}\n\n\t\t\tvar sourceIndex = source.filename ? this$1.uniqueSourceIndexByFilename[ source.filename ] : -1;\n\t\t\tvar magicString = source.content;\n\t\t\tvar locate = getLocator( magicString.original );\n\n\t\t\tif ( magicString.intro ) {\n\t\t\t\tmappings.advance( magicString.intro );\n\t\t\t}\n\n\t\t\tmagicString.firstChunk.eachNext( function (chunk) {\n\t\t\t\tvar loc = locate( chunk.start );\n\n\t\t\t\tif ( chunk.intro.length ) { mappings.advance( chunk.intro ); }\n\n\t\t\t\tif ( source.filename ) {\n\t\t\t\t\tif ( chunk.edited ) {\n\t\t\t\t\t\tmappings.addEdit( sourceIndex, chunk.content, chunk.original, loc, chunk.storeName ? names.indexOf( chunk.original ) : -1 );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmappings.addUneditedChunk( sourceIndex, chunk, magicString.original, loc, magicString.sourcemapLocations );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telse {\n\t\t\t\t\tmappings.advance( chunk.content );\n\t\t\t\t}\n\n\t\t\t\tif ( chunk.outro.length ) { mappings.advance( chunk.outro ); }\n\t\t\t});\n\n\t\t\tif ( magicString.outro ) {\n\t\t\t\tmappings.advance( magicString.outro );\n\t\t\t}\n\t\t});\n\n\t\treturn new SourceMap({\n\t\t\tfile: ( options.file ? options.file.split( /[\\/\\\\]/ ).pop() : null ),\n\t\t\tsources: this.uniqueSources.map( function (source) {\n\t\t\t\treturn options.file ? getRelativePath( options.file, source.filename ) : source.filename;\n\t\t\t}),\n\t\t\tsourcesContent: this.uniqueSources.map( function (source) {\n\t\t\t\treturn options.includeContent ? source.content : null;\n\t\t\t}),\n\t\t\tnames: names,\n\t\t\tmappings: mappings.encode()\n\t\t});\n\t},\n\n\tgetIndentString: function getIndentString () {\n\t\tvar indentStringCounts = {};\n\n\t\tthis.sources.forEach( function (source) {\n\t\t\tvar indentStr = source.content.indentStr;\n\n\t\t\tif ( indentStr === null ) { return; }\n\n\t\t\tif ( !indentStringCounts[ indentStr ] ) { indentStringCounts[ indentStr ] = 0; }\n\t\t\tindentStringCounts[ indentStr ] += 1;\n\t\t});\n\n\t\treturn ( Object.keys( indentStringCounts ).sort( function ( a, b ) {\n\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t})[0] ) || '\\t';\n\t},\n\n\tindent: function indent ( indentStr ) {\n\t\tvar this$1 = this;\n\n\t\tif ( !arguments.length ) {\n\t\t\tindentStr = this.getIndentString();\n\t\t}\n\n\t\tif ( indentStr === '' ) { return this; } // noop\n\n\t\tvar trailingNewline = !this.intro || this.intro.slice( -1 ) === '\\n';\n\n\t\tthis.sources.forEach( function ( source, i ) {\n\t\t\tvar separator = source.separator !== undefined ? source.separator : this$1.separator;\n\t\t\tvar indentStart = trailingNewline || ( i > 0 && /\\r?\\n$/.test( separator ) );\n\n\t\t\tsource.content.indent( indentStr, {\n\t\t\t\texclude: source.indentExclusionRanges,\n\t\t\t\tindentStart: indentStart//: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t\t});\n\n\t\t\t// TODO this is a very slow way to determine this\n\t\t\ttrailingNewline = source.content.toString().slice( 0, -1 ) === '\\n';\n\t\t});\n\n\t\tif ( this.intro ) {\n\t\t\tthis.intro = indentStr + this.intro.replace( /^[^\\n]/gm, function ( match, index ) {\n\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tprepend: function prepend ( str ) {\n\t\tthis.intro = str + this.intro;\n\t\treturn this;\n\t},\n\n\ttoString: function toString () {\n\t\tvar this$1 = this;\n\n\t\tvar body = this.sources.map( function ( source, i ) {\n\t\t\tvar separator = source.separator !== undefined ? source.separator : this$1.separator;\n\t\t\tvar str = ( i > 0 ? separator : '' ) + source.content.toString();\n\n\t\t\treturn str;\n\t\t}).join( '' );\n\n\t\treturn this.intro + body;\n\t},\n\n\ttrimLines: function trimLines () {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t},\n\n\ttrim: function trim ( charType ) {\n\t\treturn this.trimStart( charType ).trimEnd( charType );\n\t},\n\n\ttrimStart: function trimStart ( charType ) {\n\t\tvar this$1 = this;\n\n\t\tvar rx = new RegExp( '^' + ( charType || '\\\\s' ) + '+' );\n\t\tthis.intro = this.intro.replace( rx, '' );\n\n\t\tif ( !this.intro ) {\n\t\t\tvar source;\n\t\t\tvar i = 0;\n\n\t\t\tdo {\n\t\t\t\tsource = this$1.sources[i];\n\n\t\t\t\tif ( !source ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tsource.content.trimStart( charType );\n\t\t\t\ti += 1;\n\t\t\t} while ( source.content.toString() === '' ); // TODO faster way to determine non-empty source?\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttrimEnd: function trimEnd ( charType ) {\n\t\tvar this$1 = this;\n\n\t\tvar rx = new RegExp( ( charType || '\\\\s' ) + '+$' );\n\n\t\tvar source;\n\t\tvar i = this.sources.length - 1;\n\n\t\tdo {\n\t\t\tsource = this$1.sources[i];\n\n\t\t\tif ( !source ) {\n\t\t\t\tthis$1.intro = this$1.intro.replace( rx, '' );\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tsource.content.trimEnd( charType );\n\t\t\ti -= 1;\n\t\t} while ( source.content.toString() === '' ); // TODO faster way to determine non-empty source?\n\n\t\treturn this;\n\t}\n};\n\nexport { Bundle };export default MagicString$1;\n//# sourceMappingURL=magic-string.es.js.map\n","export default function counter ( used ) {\n\tconst counts = {};\n\n\tused.forEach( name => counts[ name ] = 1 );\n\n\treturn function ( name ) {\n\t\tif ( name in counts ) {\n\t\t\treturn `${name}${counts[ name ]++}`;\n\t\t}\n\n\t\tcounts[ name ] = 1;\n\t\treturn name;\n\t};\n}\n","export default {\n\tArray: true,\n\tBoolean: true,\n\tconsole: true,\n\tDate: true,\n\tdecodeURI: true,\n\tdecodeURIComponent: true,\n\tencodeURI: true,\n\tencodeURIComponent: true,\n\tInfinity: true,\n\tIntl: true,\n\tisFinite: true,\n\tisNaN: true,\n\tJSON: true,\n\tMap: true,\n\tMath: true,\n\tNaN: true,\n\tNumber: true,\n\tObject: true,\n\tparseFloat: true,\n\tparseInt: true,\n\tRegExp: true,\n\tSet: true,\n\tString: true,\n\tundefined: true,\n};\n","export default function getGlobals ( imports, { globals, onerror, onwarn } ) {\n\tconst globalFn = getGlobalFn( globals );\n\n\treturn imports.map( x => {\n\t\tlet name = globalFn( x.source.value );\n\n\t\tif ( !name ) {\n\t\t\tif ( x.name.startsWith( '__import' ) ) {\n\t\t\t\tconst error = new Error( `Could not determine name for imported module '${x.source.value}' – use options.globals` );\n\t\t\t\tif ( onerror ) {\n\t\t\t\t\tonerror( error );\n\t\t\t\t} else {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse {\n\t\t\t\tconst warning = {\n\t\t\t\t\tmessage: `No name was supplied for imported module '${x.source.value}'. Guessing '${x.name}', but you should use options.globals`\n\t\t\t\t};\n\n\t\t\t\tif ( onwarn ) {\n\t\t\t\t\tonwarn( warning );\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn( warning ); // eslint-disable-line no-console\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tname = x.name;\n\t\t}\n\n\t\treturn name;\n\t});\n}\n\nfunction getGlobalFn ( globals ) {\n\tif ( typeof globals === 'function' ) return globals;\n\tif ( typeof globals === 'object' ) {\n\t\treturn id => globals[ id ];\n\t}\n\n\treturn () => undefined;\n}\n","import deindent from '../../../utils/deindent.js';\nimport getGlobals from './getGlobals.js';\n\nexport default function getIntro ( format, options, imports ) {\n\tif ( format === 'es' ) return '';\n\tif ( format === 'amd' ) return getAmdIntro( options, imports );\n\tif ( format === 'cjs' ) return getCjsIntro( options, imports );\n\tif ( format === 'iife' ) return getIifeIntro( options, imports );\n\tif ( format === 'umd' ) return getUmdIntro( options, imports );\n\tif ( format === 'eval' ) return getEvalIntro( options, imports );\n\n\tthrow new Error( `Not implemented: ${format}` );\n}\n\nfunction getAmdIntro ( options, imports ) {\n\tconst sourceString = imports.length ?\n\t\t`[ ${imports.map( declaration => `'${removeExtension( declaration.source.value )}'` ).join( ', ' )} ], ` :\n\t\t'';\n\n\tconst id = options.amd && options.amd.id;\n\n\treturn `define(${id ? ` '${id}', ` : ''}${sourceString}function (${paramString( imports )}) { 'use strict';\\n\\n`;\n}\n\nfunction getCjsIntro ( options, imports ) {\n\tconst requireBlock = imports\n\t\t.map( declaration => `var ${declaration.name} = require( '${declaration.source.value}' );` )\n\t\t.join( '\\n\\n' );\n\n\tif ( requireBlock ) {\n\t\treturn `'use strict';\\n\\n${requireBlock}\\n\\n`;\n\t}\n\n\treturn `'use strict';\\n\\n`;\n}\n\nfunction getIifeIntro ( options, imports ) {\n\tif ( !options.name ) {\n\t\tthrow new Error( `Missing required 'name' option for IIFE export` );\n\t}\n\n\treturn `var ${options.name} = (function (${paramString( imports )}) { 'use strict';\\n\\n`;\n}\n\nfunction getUmdIntro ( options, imports ) {\n\tif ( !options.name ) {\n\t\tthrow new Error( `Missing required 'name' option for UMD export` );\n\t}\n\n\tconst amdId = options.amd && options.amd.id ? `'${options.amd.id}', ` : '';\n\n\tconst amdDeps = imports.length ? `[${imports.map( declaration => `'${removeExtension( declaration.source.value )}'` ).join( ', ')}], ` : '';\n\tconst cjsDeps = imports.map( declaration => `require('${declaration.source.value}')` ).join( ', ' );\n\tconst globalDeps = getGlobals( imports, options );\n\n\treturn deindent`\n\t\t(function ( global, factory ) {\n\t\t\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(${cjsDeps}) :\n\t\t\ttypeof define === 'function' && define.amd ? define(${amdId}${amdDeps}factory) :\n\t\t\t(global.${options.name} = factory(${globalDeps}));\n\t\t}(this, (function (${paramString( imports )}) { 'use strict';` + '\\n\\n';\n}\n\nfunction getEvalIntro ( options, imports ) {\n\treturn `(function (${paramString( imports )}) { 'use strict';\\n\\n`;\n}\n\nfunction paramString ( imports ) {\n\treturn imports.length ? ` ${imports.map( dep => dep.name ).join( ', ' )} ` : '';\n}\n\nfunction removeExtension ( file ) {\n\tconst index = file.lastIndexOf( '.' );\n\treturn ~index ? file.slice( 0, index ) : file;\n}\n","import getGlobals from './getGlobals.js';\n\nexport default function getOutro ( format, name, options, imports ) {\n\tif ( format === 'es' ) {\n\t\treturn `export default ${name};`;\n\t}\n\n\tif ( format === 'amd' ) {\n\t\treturn `return ${name};\\n\\n});`;\n\t}\n\n\tif ( format === 'cjs' ) {\n\t\treturn `module.exports = ${name};`;\n\t}\n\n\tif ( format === 'iife' ) {\n\t\tconst globals = getGlobals( imports, options );\n\t\treturn `return ${name};\\n\\n}(${globals.join( ', ' )}));`;\n\t}\n\n\tif ( format === 'eval' ) {\n\t\tconst globals = getGlobals( imports, options );\n\t\treturn `return ${name};\\n\\n}(${globals.join( ', ' )}));`;\n\t}\n\n\tif ( format === 'umd' ) {\n\t\treturn `return ${name};\\n\\n})));`;\n\t}\n\n\tthrow new Error( `Not implemented: ${format}` );\n}\n","import { walk } from 'estree-walker';\n\nexport default function annotateWithScopes ( expression ) {\n\tlet scope = new Scope( null, false );\n\n\twalk( expression, {\n\t\tenter ( node ) {\n\t\t\tif ( /Function/.test( node.type ) ) {\n\t\t\t\tif ( node.type === 'FunctionDeclaration' ) {\n\t\t\t\t\tscope.declarations[ node.id.name ] = true;\n\t\t\t\t} else {\n\t\t\t\t\tnode._scope = scope = new Scope( scope, false );\n\t\t\t\t\tif ( node.id ) scope.declarations[ node.id.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tnode.params.forEach( param => {\n\t\t\t\t\textractNames( param ).forEach( name => {\n\t\t\t\t\t\tscope.declarations[ name ] = true;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\telse if ( /For(?:In|Of)Statement/.test( node.type ) ) {\n\t\t\t\tnode._scope = scope = new Scope( scope, true );\n\t\t\t}\n\n\t\t\telse if ( node.type === 'BlockStatement' ) {\n\t\t\t\tnode._scope = scope = new Scope( scope, true );\n\t\t\t}\n\n\t\t\telse if ( /Declaration/.test( node.type ) ) {\n\t\t\t\tscope.addDeclaration( node );\n\t\t\t}\n\t\t},\n\n\t\tleave ( node ) {\n\t\t\tif ( node._scope ) {\n\t\t\t\tscope = scope.parent;\n\t\t\t}\n\t\t}\n\t});\n\n\treturn scope;\n}\n\nclass Scope {\n\tconstructor ( parent, block ) {\n\t\tthis.parent = parent;\n\t\tthis.block = block;\n\t\tthis.declarations = Object.create( null );\n\t}\n\n\taddDeclaration ( node ) {\n\t\tif ( node.kind === 'var' && !this.block && this.parent ) {\n\t\t\tthis.parent.addDeclaration( node );\n\t\t} else if ( node.type === 'VariableDeclaration' ) {\n\t\t\tnode.declarators.forEach( declarator => {\n\t\t\t\textractNames( declarator.id ).forEach( name => {\n\t\t\t\t\tthis.declarations[ name ] = true;\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tthis.declarations[ node.id.name ] = true;\n\t\t}\n\t}\n\n\thas ( name ) {\n\t\treturn name in this.declarations || this.parent && this.parent.has( name );\n\t}\n}\n\nfunction extractNames ( param ) {\n\tconst names = [];\n\textractors[ param.type ]( names, param );\n\treturn names;\n}\n\nconst extractors = {\n\tIdentifier ( names, param ) {\n\t\tnames.push( param.name );\n\t},\n\n\tObjectPattern ( names, param ) {\n\t\tparam.properties.forEach( prop => {\n\t\t\textractors[ prop.value.type ]( names, prop.value );\n\t\t});\n\t},\n\n\tArrayPattern ( names, param ) {\n\t\tparam.elements.forEach( element => {\n\t\t\tif ( element ) extractors[ element.type ]( names, element );\n\t\t});\n\t},\n\n\tRestElement ( names, param ) {\n\t\textractors[ param.argument.type ]( names, param.argument );\n\t},\n\n\tAssignmentPattern ( names, param ) {\n\t\textractors[ param.left.type ]( names, param.left );\n\t}\n};\n\n","import MagicString, { Bundle } from 'magic-string';\nimport { walk } from 'estree-walker';\nimport isReference from '../utils/isReference.js';\nimport counter from './shared/utils/counter.js';\nimport flattenReference from '../utils/flattenReference.js';\nimport globalWhitelist from '../utils/globalWhitelist.js';\nimport getIntro from './shared/utils/getIntro.js';\nimport getOutro from './shared/utils/getOutro.js';\nimport annotateWithScopes from './annotateWithScopes.js';\n\nexport default class Generator {\n\tconstructor ( parsed, source, name, names, visitors, options ) {\n\t\tthis.parsed = parsed;\n\t\tthis.source = source;\n\t\tthis.name = name;\n\t\tthis.names = names;\n\t\tthis.visitors = visitors;\n\t\tthis.options = options;\n\n\t\tthis.imports = [];\n\t\tthis.helpers = {};\n\t\tthis.components = {};\n\t\tthis.events = {};\n\n\t\tthis.bindingGroups = [];\n\n\t\t// track which properties are needed, so we can provide useful info\n\t\t// in dev mode\n\t\tthis.expectedProperties = {};\n\n\t\tthis.elementDepth = 0;\n\n\t\tthis.code = new MagicString( source );\n\t\tthis.getUniqueName = counter( names );\n\t\tthis.cssId = parsed.css ? `svelte-${parsed.hash}` : '';\n\t\tthis.usesRefs = false;\n\n\t\tthis._callbacks = {};\n\t}\n\n\taddSourcemapLocations ( node ) {\n\t\twalk( node, {\n\t\t\tenter: node => {\n\t\t\t\tthis.code.addSourcemapLocation( node.start );\n\t\t\t\tthis.code.addSourcemapLocation( node.end );\n\t\t\t}\n\t\t});\n\t}\n\n\tcontextualise ( expression, isEventHandler ) {\n\t\tthis.addSourcemapLocations( expression );\n\n\t\tconst usedContexts = [];\n\t\tconst dependencies = [];\n\n\t\tconst { code, helpers } = this;\n\t\tconst { contextDependencies, contexts, indexes } = this.current;\n\n\t\tlet scope = annotateWithScopes( expression );\n\n\t\twalk( expression, {\n\t\t\tenter ( node, parent, key ) {\n\t\t\t\tif ( node._scope ) {\n\t\t\t\t\tscope = node._scope;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( isReference( node, parent ) ) {\n\t\t\t\t\tconst { name } = flattenReference( node );\n\t\t\t\t\tif ( scope.has( name ) ) return;\n\n\t\t\t\t\tif ( parent && parent.type === 'CallExpression' && node === parent.callee && helpers[ name ] ) {\n\t\t\t\t\t\tcode.prependRight( node.start, `template.helpers.` );\n\t\t\t\t\t}\n\n\t\t\t\t\telse if ( name === 'event' && isEventHandler ) {\n\t\t\t\t\t\t// noop\n\t\t\t\t\t}\n\n\t\t\t\t\telse if ( name in contexts ) {\n\t\t\t\t\t\tconst context = contexts[ name ];\n\t\t\t\t\t\tif ( context !== name ) {\n\t\t\t\t\t\t\t// this is true for 'reserved' names like `root` and `component`\n\t\t\t\t\t\t\tcode.overwrite( node.start, node.start + name.length, context, true );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdependencies.push( ...contextDependencies[ name ] );\n\t\t\t\t\t\tif ( !~usedContexts.indexOf( name ) ) usedContexts.push( name );\n\t\t\t\t\t}\n\n\t\t\t\t\telse if ( indexes[ name ] ) {\n\t\t\t\t\t\tconst context = indexes[ name ];\n\t\t\t\t\t\tif ( !~usedContexts.indexOf( context ) ) usedContexts.push( context );\n\t\t\t\t\t}\n\n\t\t\t\t\telse {\n\t\t\t\t\t\t// handle shorthand properties\n\t\t\t\t\t\tif ( parent && parent.type === 'Property' && parent.shorthand ) {\n\t\t\t\t\t\t\tif ( key === 'key' ) {\n\t\t\t\t\t\t\t\tcode.appendLeft( node.start, `${name}: ` );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( globalWhitelist[ name ] ) {\n\t\t\t\t\t\t\tcode.prependRight( node.start, `( '${name}' in root ? root.` );\n\t\t\t\t\t\t\tcode.appendLeft( node.object ? node.object.end : node.end, ` : ${name} )` );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcode.prependRight( node.start, `root.` );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdependencies.push( name );\n\t\t\t\t\t\tif ( !~usedContexts.indexOf( 'root' ) ) usedContexts.push( 'root' );\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.skip();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tleave ( node ) {\n\t\t\t\tif ( node._scope ) scope = scope.parent;\n\t\t\t}\n\t\t});\n\n\t\tdependencies.forEach( name => {\n\t\t\tthis.expectedProperties[ name ] = true;\n\t\t});\n\n\t\treturn {\n\t\t\tdependencies,\n\t\t\tcontexts: usedContexts,\n\t\t\tsnippet: `[✂${expression.start}-${expression.end}✂]`,\n\t\t\tstring: this.code.slice( expression.start, expression.end )\n\t\t};\n\t}\n\n\tfire ( eventName, data ) {\n\t\tconst handlers = eventName in this._callbacks && this._callbacks[ eventName ].slice();\n\t\tif ( !handlers ) return;\n\n\t\tfor ( let i = 0; i < handlers.length; i += 1 ) {\n\t\t\thandlers[i].call( this, data );\n\t\t}\n\t}\n\n\tgenerate ( result, options, { name, format } ) {\n\t\tif ( this.imports.length ) {\n\t\t\tconst statements = [];\n\n\t\t\tthis.imports.forEach( ( declaration, i ) => {\n\t\t\t\tif ( format === 'es' ) {\n\t\t\t\t\tstatements.push( this.source.slice( declaration.start, declaration.end ) );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst defaultImport = declaration.specifiers.find( x => x.type === 'ImportDefaultSpecifier' || x.type === 'ImportSpecifier' && x.imported.name === 'default' );\n\t\t\t\tconst namespaceImport = declaration.specifiers.find( x => x.type === 'ImportNamespaceSpecifier' );\n\t\t\t\tconst namedImports = declaration.specifiers.filter( x => x.type === 'ImportSpecifier' && x.imported.name !== 'default' );\n\n\t\t\t\tconst name = ( defaultImport || namespaceImport ) ? ( defaultImport || namespaceImport ).local.name : `__import${i}`;\n\t\t\t\tdeclaration.name = name; // hacky but makes life a bit easier later\n\n\t\t\t\tnamedImports.forEach( specifier => {\n\t\t\t\t\tstatements.push( `var ${specifier.local.name} = ${name}.${specifier.imported.name}` );\n\t\t\t\t});\n\n\t\t\t\tif ( defaultImport ) {\n\t\t\t\t\tstatements.push( `${name} = ( ${name} && ${name}.__esModule ) ? ${name}['default'] : ${name};` );\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tresult = `${statements.join( '\\n' )}\\n\\n${result}`;\n\t\t}\n\n\t\tconst pattern = /\\[✂(\\d+)-(\\d+)$/;\n\n\t\tconst parts = result.split( '✂]' );\n\t\tconst finalChunk = parts.pop();\n\n\t\tconst compiled = new Bundle({ separator: '' });\n\n\t\tfunction addString ( str ) {\n\t\t\tcompiled.addSource({\n\t\t\t\tcontent: new MagicString( str )\n\t\t\t});\n\t\t}\n\n\t\tconst intro = getIntro( format, options, this.imports );\n\t\tif ( intro ) addString( intro );\n\n\t\tconst { filename } = options;\n\n\t\t// special case — the source file doesn't actually get used anywhere. we need\n\t\t// to add an empty file to populate map.sources and map.sourcesContent\n\t\tif ( !parts.length ) {\n\t\t\tcompiled.addSource({\n\t\t\t\tfilename,\n\t\t\t\tcontent: new MagicString( this.source ).remove( 0, this.source.length )\n\t\t\t});\n\t\t}\n\n\t\tparts.forEach( str => {\n\t\t\tconst chunk = str.replace( pattern, '' );\n\t\t\tif ( chunk ) addString( chunk );\n\n\t\t\tconst match = pattern.exec( str );\n\n\t\t\tconst snippet = this.code.snip( +match[1], +match[2] );\n\n\t\t\tcompiled.addSource({\n\t\t\t\tfilename,\n\t\t\t\tcontent: snippet\n\t\t\t});\n\t\t});\n\n\t\taddString( finalChunk );\n\t\taddString( '\\n\\n' + getOutro( format, name, options, this.imports ) );\n\n\t\treturn {\n\t\t\tcode: compiled.toString(),\n\t\t\tmap: compiled.generateMap({ includeContent: true, file: options.outputFilename })\n\t\t};\n\t}\n\n\tgetUniqueNameMaker () {\n\t\treturn counter( this.names );\n\t}\n\n\tparseJs () {\n\t\tconst { source } = this;\n\t\tconst { js } = this.parsed;\n\n\t\tconst imports = this.imports;\n\t\tconst computations = [];\n\t\tlet defaultExport = null;\n\t\tconst templateProperties = {};\n\n\t\tif ( js ) {\n\t\t\tthis.addSourcemapLocations( js.content );\n\n\t\t\t// imports need to be hoisted out of the IIFE\n\t\t\tfor ( let i = 0; i < js.content.body.length; i += 1 ) {\n\t\t\t\tconst node = js.content.body[i];\n\t\t\t\tif ( node.type === 'ImportDeclaration' ) {\n\t\t\t\t\tlet a = node.start;\n\t\t\t\t\tlet b = node.end;\n\t\t\t\t\twhile ( /[ \\t]/.test( source[ a - 1 ] ) ) a -= 1;\n\t\t\t\t\twhile ( source[b] === '\\n' ) b += 1;\n\n\t\t\t\t\timports.push( node );\n\t\t\t\t\tthis.code.remove( a, b );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdefaultExport = js.content.body.find( node => node.type === 'ExportDefaultDeclaration' );\n\n\t\t\tif ( defaultExport ) {\n\t\t\t\tconst finalNode = js.content.body[ js.content.body.length - 1 ];\n\t\t\t\tif ( defaultExport === finalNode ) {\n\t\t\t\t\t// export is last property, we can just return it\n\t\t\t\t\tthis.code.overwrite( defaultExport.start, defaultExport.declaration.start, `return ` );\n\t\t\t\t} else {\n\t\t\t\t\t// TODO ensure `template` isn't already declared\n\t\t\t\t\tthis.code.overwrite( defaultExport.start, defaultExport.declaration.start, `var template = ` );\n\n\t\t\t\t\tlet i = defaultExport.start;\n\t\t\t\t\twhile ( /\\s/.test( source[ i - 1 ] ) ) i--;\n\n\t\t\t\t\tconst indentation = source.slice( i, defaultExport.start );\n\t\t\t\t\tthis.code.appendLeft( finalNode.end, `\\n\\n${indentation}return template;` );\n\t\t\t\t}\n\n\t\t\t\tdefaultExport.declaration.properties.forEach( prop => {\n\t\t\t\t\ttemplateProperties[ prop.key.name ] = prop;\n\t\t\t\t});\n\n\t\t\t\tthis.code.prependRight( js.content.start, 'var template = (function () {' );\n\t\t\t} else {\n\t\t\t\tthis.code.prependRight( js.content.start, '(function () {' );\n\t\t\t}\n\n\t\t\tthis.code.appendLeft( js.content.end, '}());' );\n\n\t\t\t[ 'helpers', 'events', 'components' ].forEach( key => {\n\t\t\t\tif ( templateProperties[ key ] ) {\n\t\t\t\t\ttemplateProperties[ key ].value.properties.forEach( prop => {\n\t\t\t\t\t\tthis[ key ][ prop.key.name ] = prop.value;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif ( templateProperties.computed ) {\n\t\t\t\tconst dependencies = new Map();\n\n\t\t\t\ttemplateProperties.computed.value.properties.forEach( prop => {\n\t\t\t\t\tconst key = prop.key.name;\n\t\t\t\t\tconst value = prop.value;\n\n\t\t\t\t\tconst deps = value.params.map( param => param.type === 'AssignmentPattern' ? param.left.name : param.name );\n\t\t\t\t\tdependencies.set( key, deps );\n\t\t\t\t});\n\n\t\t\t\tconst visited = new Set();\n\n\t\t\t\tfunction visit ( key ) {\n\t\t\t\t\tif ( !dependencies.has( key ) ) return; // not a computation\n\n\t\t\t\t\tif ( visited.has( key ) ) return;\n\t\t\t\t\tvisited.add( key );\n\n\t\t\t\t\tconst deps = dependencies.get( key );\n\t\t\t\t\tdeps.forEach( visit );\n\n\t\t\t\t\tcomputations.push({ key, deps });\n\t\t\t\t}\n\n\t\t\t\ttemplateProperties.computed.value.properties.forEach( prop => visit( prop.key.name ) );\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tcomputations,\n\t\t\tdefaultExport,\n\t\t\ttemplateProperties\n\t\t};\n\t}\n\n\ton ( eventName, handler ) {\n\t\tconst handlers = this._callbacks[ eventName ] || ( this._callbacks[ eventName ] = [] );\n\t\thandlers.push( handler );\n\t}\n\n\tpop () {\n\t\tconst tail = this.current;\n\t\tthis.current = tail.parent;\n\n\t\treturn tail;\n\t}\n\n\tpush ( fragment ) {\n\t\tconst newFragment = Object.assign( {}, this.current, fragment, {\n\t\t\tparent: this.current\n\t\t});\n\n\t\tthis.current = newFragment;\n\t}\n\n\tvisit ( node ) {\n\t\tconst visitor = this.visitors[ node.type ];\n\t\tif ( !visitor ) throw new Error( `Not implemented: ${node.type}` );\n\n\t\tif ( visitor.enter ) visitor.enter( this, node );\n\n\t\tif ( visitor.type === 'Element' ) {\n\t\t\tthis.elementDepth += 1;\n\t\t}\n\n\t\tif ( node.children ) {\n\t\t\tnode.children.forEach( child => {\n\t\t\t\tthis.visit( child );\n\t\t\t});\n\t\t}\n\n\t\tif ( visitor.type === 'Element' ) {\n\t\t\tthis.elementDepth -= 1;\n\t\t}\n\n\t\tif ( visitor.leave ) visitor.leave( this, node );\n\t}\n}\n","export function appendNode ( node, target ) {\n\ttarget.appendChild( node );\n}\n\nexport function insertNode ( node, target, anchor ) {\n\ttarget.insertBefore( node, anchor );\n}\n\nexport function detachNode ( node ) {\n\tnode.parentNode.removeChild( node );\n}\n\nexport function detachBetween ( before, after ) {\n\twhile ( before.nextSibling && before.nextSibling !== after ) {\n\t\tbefore.parentNode.removeChild( before.nextSibling );\n\t}\n}\n\nexport function teardownEach ( iterations, detach, start ) {\n\tfor ( var i = ( start || 0 ); i < iterations.length; i += 1 ) {\n\t\titerations[i].teardown( detach );\n\t}\n}\n\nexport function createElement ( name ) {\n\treturn document.createElement( name );\n}\n\nexport function createSvgElement ( name ) {\n\treturn document.createElementNS( 'http://www.w3.org/2000/svg', name );\n}\n\nexport function createText ( data ) {\n\treturn document.createTextNode( data );\n}\n\nexport function createComment () {\n\treturn document.createComment( '' );\n}\n\nexport function addEventListener ( node, event, handler ) {\n\tnode.addEventListener ( event, handler, false );\n}\n\nexport function removeEventListener ( node, event, handler ) {\n\tnode.removeEventListener ( event, handler, false );\n}\n\nexport function setAttribute ( node, attribute, value ) {\n\tnode.setAttribute ( attribute, value );\n}\n\nexport function setXlinkAttribute ( node, attribute, value ) {\n\tnode.setAttributeNS( 'http://www.w3.org/1999/xlink', attribute, value );\n}\n\nexport function getBindingGroupValue ( group ) {\n\tvar value = [];\n\tfor ( var i = 0; i < group.length; i += 1 ) {\n\t\tif ( group[i].checked ) value.push( group[i].__value );\n\t}\n\treturn value;\n}","export function get ( key ) {\n\treturn key ? this._state[ key ] : this._state;\n}\n\nexport function fire ( eventName, data ) {\n\tvar handlers = eventName in this._handlers && this._handlers[ eventName ].slice();\n\tif ( !handlers ) return;\n\n\tfor ( var i = 0; i < handlers.length; i += 1 ) {\n\t\thandlers[i].call( this, data );\n\t}\n}\n\nexport function observe ( key, callback, options ) {\n\tvar group = ( options && options.defer ) ? this._observers.pre : this._observers.post;\n\n\t( group[ key ] || ( group[ key ] = [] ) ).push( callback );\n\n\tif ( !options || options.init !== false ) {\n\t\tcallback.__calling = true;\n\t\tcallback.call( this, this._state[ key ] );\n\t\tcallback.__calling = false;\n\t}\n\n\treturn {\n\t\tcancel: function () {\n\t\t\tvar index = group[ key ].indexOf( callback );\n\t\t\tif ( ~index ) group[ key ].splice( index, 1 );\n\t\t}\n\t};\n}\n\nexport function observeDev ( key, callback, options ) {\n\tvar c = ( key = '' + key ).search( /[^\\w]/ );\n\tif ( c > -1 ) {\n\t\tvar message = \"The first argument to component.observe(...) must be the name of a top-level property\";\n\t\tif ( c > 0 ) message += \", i.e. '\" + key.slice( 0, c ) + \"' rather than '\" + key + \"'\";\n\n\t\tthrow new Error( message );\n\t}\n\n\tvar group = ( options && options.defer ) ? this._observers.pre : this._observers.post;\n\n\t( group[ key ] || ( group[ key ] = [] ) ).push( callback );\n\n\tif ( !options || options.init !== false ) {\n\t\tcallback.__calling = true;\n\t\tcallback.call( this, this._state[ key ] );\n\t\tcallback.__calling = false;\n\t}\n\n\treturn {\n\t\tcancel: function () {\n\t\t\tvar index = group[ key ].indexOf( callback );\n\t\t\tif ( ~index ) group[ key ].splice( index, 1 );\n\t\t}\n\t};\n}\n\nexport function on ( eventName, handler ) {\n\tif ( eventName === 'teardown' ) return this.on( 'destroy', handler );\n\n\tvar handlers = this._handlers[ eventName ] || ( this._handlers[ eventName ] = [] );\n\thandlers.push( handler );\n\n\treturn {\n\t\tcancel: function () {\n\t\t\tvar index = handlers.indexOf( handler );\n\t\t\tif ( ~index ) handlers.splice( index, 1 );\n\t\t}\n\t};\n}\n\nexport function onDev ( eventName, handler ) {\n\tif ( eventName === 'teardown' ) {\n\t\tconsole.warn( \"Use component.on('destroy', ...) instead of component.on('teardown', ...) which has been deprecated and will be unsupported in Svelte 2\" );\n\t\treturn this.on( 'destroy', handler );\n\t}\n\n\tvar handlers = this._handlers[ eventName ] || ( this._handlers[ eventName ] = [] );\n\thandlers.push( handler );\n\n\treturn {\n\t\tcancel: function () {\n\t\t\tvar index = handlers.indexOf( handler );\n\t\t\tif ( ~index ) handlers.splice( index, 1 );\n\t\t}\n\t};\n}\n\nexport function set ( newState ) {\n\tthis._set( newState );\n\t( this._root || this )._flush();\n}\n\nexport function _flush () {\n\tif ( !this._renderHooks ) return;\n\n\twhile ( this._renderHooks.length ) {\n\t\tvar hook = this._renderHooks.pop();\n\t\thook.fn.call( hook.context );\n\t}\n}\n\nexport var proto = {\n\tget: get,\n\tfire: fire,\n\tobserve: observe,\n\ton: on,\n\tset: set,\n\t_flush: _flush\n};\n\nexport var protoDev = {\n\tget: get,\n\tfire: fire,\n\tobserve: observeDev,\n\ton: onDev,\n\tset: set,\n\t_flush: _flush\n};","export * from './dom.js';\nexport * from './methods.js';\n\nexport function noop () {}\n\nexport function dispatchObservers ( component, group, newState, oldState ) {\n\tfor ( var key in group ) {\n\t\tif ( !( key in newState ) ) continue;\n\n\t\tvar newValue = newState[ key ];\n\t\tvar oldValue = oldState[ key ];\n\n\t\tif ( newValue === oldValue && typeof newValue !== 'object' ) continue;\n\n\t\tvar callbacks = group[ key ];\n\t\tif ( !callbacks ) continue;\n\n\t\tfor ( var i = 0; i < callbacks.length; i += 1 ) {\n\t\t\tvar callback = callbacks[i];\n\t\t\tif ( callback.__calling ) continue;\n\n\t\t\tcallback.__calling = true;\n\t\t\tcallback.call( component, newValue, oldValue );\n\t\t\tcallback.__calling = false;\n\t\t}\n\t}\n}\n","import deindent from '../../utils/deindent.js';\nimport getBuilders from './utils/getBuilders.js';\nimport CodeBuilder from '../../utils/CodeBuilder.js';\nimport namespaces from '../../utils/namespaces.js';\nimport processCss from '../shared/processCss.js';\nimport removeObjectKey from '../../utils/removeObjectKey.js';\nimport visitors from './visitors/index.js';\nimport Generator from '../Generator.js';\nimport * as shared from '../../shared/index.js';\n\nclass DomGenerator extends Generator {\n\tconstructor ( parsed, source, name, names, visitors, options ) {\n\t\tsuper( parsed, source, name, names, visitors, options );\n\t\tthis.renderers = [];\n\t\tthis.uses = {};\n\n\t\t// allow compiler to deconflict user's `import { get } from 'whatever'` and\n\t\t// Svelte's builtin `import { get, ... } from 'svelte/shared.js'`;\n\t\tthis.importedNames = {};\n\t\tthis.aliases = {};\n\n\t\tthis.importedComponents = {};\n\t}\n\n\taddElement ( name, renderStatement, needsIdentifier = false ) {\n\t\tconst isToplevel = this.current.localElementDepth === 0;\n\t\tif ( needsIdentifier || isToplevel ) {\n\t\t\tthis.current.builders.init.addLine(\n\t\t\t\t`var ${name} = ${renderStatement};`\n\t\t\t);\n\n\t\t\tthis.createMountStatement( name );\n\t\t} else {\n\t\t\tthis.current.builders.init.addLine( `${this.helper( 'appendNode' )}( ${renderStatement}, ${this.current.target} );` );\n\t\t}\n\n\t\tif ( isToplevel ) {\n\t\t\tthis.current.builders.detach.addLine( `${this.helper( 'detachNode' )}( ${name} );` );\n\t\t}\n\t}\n\n\taddRenderer ( fragment ) {\n\t\tif ( fragment.autofocus ) {\n\t\t\tfragment.builders.init.addLine( `${fragment.autofocus}.focus();` );\n\t\t}\n\n\t\t// minor hack – we need to ensure that any {{{triples}}} are detached\n\t\t// first, so we append normal detach statements to detachRaw\n\t\tfragment.builders.detachRaw.addBlock( fragment.builders.detach );\n\n\t\tif ( !fragment.builders.detachRaw.isEmpty() ) {\n\t\t\tfragment.builders.teardown.addBlock( deindent`\n\t\t\t\tif ( detach ) {\n\t\t\t\t\t${fragment.builders.detachRaw}\n\t\t\t\t}\n\t\t\t` );\n\t\t}\n\n\t\tconst properties = new CodeBuilder();\n\n\t\tif ( fragment.key ) properties.addBlock( `key: key,` );\n\n\t\tif ( fragment.builders.mount.isEmpty() ) {\n\t\t\tproperties.addBlock( `mount: ${this.helper( 'noop' )},` );\n\t\t} else {\n\t\t\tproperties.addBlock( deindent`\n\t\t\t\tmount: function ( target, anchor ) {\n\t\t\t\t\t${fragment.builders.mount}\n\t\t\t\t},\n\t\t\t` );\n\t\t}\n\n\t\tif ( fragment.builders.update.isEmpty() ) {\n\t\t\tproperties.addBlock( `update: ${this.helper( 'noop' )},` );\n\t\t} else {\n\t\t\tproperties.addBlock( deindent`\n\t\t\t\tupdate: function ( changed, ${fragment.params.join( ', ' )} ) {\n\t\t\t\t\tvar __tmp;\n\n\t\t\t\t\t${fragment.builders.update}\n\t\t\t\t},\n\t\t\t` );\n\t\t}\n\n\t\tif ( fragment.builders.teardown.isEmpty() ) {\n\t\t\tproperties.addBlock( `teardown: ${this.helper( 'noop' )},` );\n\t\t} else {\n\t\t\tproperties.addBlock( deindent`\n\t\t\t\tteardown: function ( detach ) {\n\t\t\t\t\t${fragment.builders.teardown}\n\t\t\t\t}\n\t\t\t` );\n\t\t}\n\n\t\tthis.renderers.push( deindent`\n\t\t\tfunction ${fragment.name} ( ${fragment.params.join( ', ' )}, component${fragment.key ? `, key` : ''} ) {\n\t\t\t\t${fragment.builders.init}\n\n\t\t\t\treturn {\n\t\t\t\t\t${properties}\n\t\t\t\t};\n\t\t\t}\n\t\t` );\n\t}\n\n\tcreateAnchor ( name ) {\n\t\tconst renderStatement = `${this.helper( 'createComment' )}()`;\n\t\tthis.addElement( name, renderStatement, true );\n\t}\n\n\tcreateMountStatement ( name ) {\n\t\tif ( this.current.target === 'target' ) {\n\t\t\tthis.current.builders.mount.addLine( `${this.helper( 'insertNode' )}( ${name}, target, anchor );` );\n\t\t} else {\n\t\t\tthis.current.builders.init.addLine( `${this.helper( 'appendNode' )}( ${name}, ${this.current.target} );` );\n\t\t}\n\t}\n\n\tgenerateBlock ( node, name ) {\n\t\tthis.push({\n\t\t\tname,\n\t\t\ttarget: 'target',\n\t\t\tlocalElementDepth: 0,\n\t\t\tbuilders: getBuilders(),\n\t\t\tgetUniqueName: this.getUniqueNameMaker()\n\t\t});\n\n\t\t// walk the children here\n\t\tnode.children.forEach( node => this.visit( node ) );\n\t\tthis.addRenderer( this.current );\n\t\tthis.pop();\n\n\t\t// unset the children, to avoid them being visited again\n\t\tnode.children = [];\n\t}\n\n\thelper ( name ) {\n\t\tif ( this.options.dev && `${name}Dev` in shared ) {\n\t\t\tname = `${name}Dev`;\n\t\t}\n\n\t\tthis.uses[ name ] = true;\n\n\t\treturn this.alias( name );\n\t}\n\n\talias ( name ) {\n\t\tif ( !( name in this.aliases ) ) {\n\t\t\tlet alias = name;\n\t\t\tlet i = 1;\n\t\t\twhile ( alias in this.importedNames ) {\n\t\t\t\talias = `${name}$${i++}`;\n\t\t\t}\n\n\t\t\tthis.aliases[ name ] = alias;\n\t\t}\n\n\t\treturn this.aliases[ name ];\n\t}\n}\n\nexport default function dom ( parsed, source, options, names ) {\n\tconst format = options.format || 'es';\n\tconst name = options.name || 'SvelteComponent';\n\n\tconst generator = new DomGenerator( parsed, source, name, names, visitors, options );\n\n\tconst { computations, defaultExport, templateProperties } = generator.parseJs();\n\n\t// Remove these after version 2\n\tif ( templateProperties.onrender ) {\n\t\tconst { key } = templateProperties.onrender;\n\t\tgenerator.code.overwrite( key.start, key.end, 'oncreate', true );\n\t\ttemplateProperties.oncreate = templateProperties.onrender;\n\t}\n\n\tif ( templateProperties.onteardown ) {\n\t\tconst { key } = templateProperties.onteardown;\n\t\tgenerator.code.overwrite( key.start, key.end, 'ondestroy', true );\n\t\ttemplateProperties.ondestroy = templateProperties.onteardown;\n\t}\n\n\tgenerator.imports.forEach( node => {\n\t\tnode.specifiers.forEach( specifier => {\n\t\t\tgenerator.importedNames[ specifier.local.name ] = true;\n\t\t});\n\t});\n\n\tlet namespace = null;\n\tif ( templateProperties.namespace ) {\n\t\tconst ns = templateProperties.namespace.value.value;\n\t\tnamespace = namespaces[ ns ] || ns;\n\n\t\tremoveObjectKey( generator, defaultExport.declaration, 'namespace' );\n\t}\n\n\tif ( templateProperties.components ) {\n\t\tlet hasNonImportedComponent = false;\n\t\ttemplateProperties.components.value.properties.forEach( property => {\n\t\t\tconst key = property.key.name;\n\t\t\tconst value = source.slice( property.value.start, property.value.end );\n\t\t\tif ( generator.importedNames[ value ] ) {\n\t\t\t\tgenerator.importedComponents[ key ] = value;\n\t\t\t} else {\n\t\t\t\thasNonImportedComponent = true;\n\t\t\t}\n\t\t});\n\t\tif ( hasNonImportedComponent ) {\n\t\t\t// remove the specific components which were imported, as we'll refer to them directly\n\t\t\tObject.keys( generator.importedComponents ).forEach ( key => {\n\t\t\t\tremoveObjectKey( generator, templateProperties.components.value, key );\n\t\t\t});\n\t\t} else {\n\t\t\t// remove the entire components portion of the export\n\t\t\tremoveObjectKey( generator, defaultExport.declaration, 'components' );\n\t\t}\n\t}\n\n\tgenerator.push({\n\t\tname: generator.alias( 'renderMainFragment' ),\n\t\tnamespace,\n\t\ttarget: 'target',\n\t\tlocalElementDepth: 0,\n\t\tkey: null,\n\n\t\tcontexts: {},\n\t\tindexes: {},\n\n\t\tparams: [ 'root' ],\n\t\tindexNames: {},\n\t\tlistNames: {},\n\n\t\tbuilders: getBuilders(),\n\t\tgetUniqueName: generator.getUniqueNameMaker()\n\t});\n\n\tparsed.html.children.forEach( node => generator.visit( node ) );\n\n\tgenerator.addRenderer( generator.pop() );\n\n\tconst builders = {\n\t\tmain: new CodeBuilder(),\n\t\tinit: new CodeBuilder(),\n\t\t_set: new CodeBuilder()\n\t};\n\n\tif ( options.dev ) {\n\t\tbuilders._set.addBlock ( deindent`\n\t\t\tif ( typeof newState !== 'object' ) {\n\t\t\t\tthrow new Error( 'Component .set was called without an object of data key-values to update.' );\n\t\t\t}\n\t\t`);\n\t}\n\n\tbuilders._set.addLine( 'var oldState = this._state;' );\n\tbuilders._set.addLine( 'this._state = Object.assign( {}, oldState, newState );' );\n\n\tif ( computations.length ) {\n\t\tconst builder = new CodeBuilder();\n\n\t\tcomputations.forEach( ({ key, deps }) => {\n\t\t\tbuilder.addBlock( deindent`\n\t\t\t\tif ( isInitial || ${deps.map( dep => `( '${dep}' in newState && typeof state.${dep} === 'object' || state.${dep} !== oldState.${dep} )` ).join( ' || ' )} ) {\n\t\t\t\t\tstate.${key} = newState.${key} = template.computed.${key}( ${deps.map( dep => `state.${dep}` ).join( ', ' )} );\n\t\t\t\t}\n\t\t\t` );\n\t\t});\n\n\t\tbuilders.main.addBlock( deindent`\n\t\t\tfunction ${generator.alias( 'applyComputations' )} ( state, newState, oldState, isInitial ) {\n\t\t\t\t${builder}\n\t\t\t}\n\t\t` );\n\n\t\tbuilders._set.addLine( `${generator.alias( 'applyComputations' )}( this._state, newState, oldState, false )` );\n\t}\n\n\t// TODO is the `if` necessary?\n\tbuilders._set.addBlock( deindent`\n\t\t${generator.helper( 'dispatchObservers' )}( this, this._observers.pre, newState, oldState );\n\t\tif ( this._fragment ) this._fragment.update( newState, this._state );\n\t\t${generator.helper( 'dispatchObservers' )}( this, this._observers.post, newState, oldState );\n\t` );\n\n\tif ( parsed.js ) {\n\t\tbuilders.main.addBlock( `[✂${parsed.js.content.start}-${parsed.js.content.end}✂]` );\n\t}\n\n\t if ( parsed.css && options.css !== false ) {\n\t\tbuilders.main.addBlock( deindent`\n\t\t\tvar ${generator.alias( 'addedCss' )} = false;\n\t\t\tfunction ${generator.alias( 'addCss' )} () {\n\t\t\t\tvar style = ${generator.helper( 'createElement' )}( 'style' );\n\t\t\t\tstyle.textContent = ${JSON.stringify( processCss( parsed, generator.code ) )};\n\t\t\t\t${generator.helper( 'appendNode' )}( style, document.head );\n\n\t\t\t\t${generator.alias( 'addedCss' )} = true;\n\t\t\t}\n\t\t` );\n\t}\n\n\tlet i = generator.renderers.length;\n\twhile ( i-- ) builders.main.addBlock( generator.renderers[i] );\n\n\tbuilders.init.addLine( `this._torndown = false;` );\n\n\tif ( parsed.css && options.css !== false ) {\n\t\tbuilders.init.addLine( `if ( !${generator.alias( 'addedCss' )} ) ${generator.alias( 'addCss' )}();` );\n\t}\n\n\tif ( generator.hasComponents ) {\n\t\tbuilders.init.addLine( `this._renderHooks = [];` );\n\t}\n\n\tif ( generator.hasComplexBindings ) {\n\t\tbuilders.init.addBlock( deindent`\n\t\t\tthis._bindings = [];\n\t\t\tthis._fragment = ${generator.alias( 'renderMainFragment' )}( this._state, this );\n\t\t\tif ( options.target ) this._fragment.mount( options.target, null );\n\t\t\twhile ( this._bindings.length ) this._bindings.pop()();\n\t\t` );\n\n\t\tbuilders._set.addLine( `while ( this._bindings.length ) this._bindings.pop()();` );\n\t} else {\n\t\tbuilders.init.addBlock( deindent`\n\t\t\tthis._fragment = ${generator.alias( 'renderMainFragment' )}( this._state, this );\n\t\t\tif ( options.target ) this._fragment.mount( options.target, null );\n\t\t` );\n\t}\n\n\tif ( generator.hasComponents ) {\n\t\tconst statement = `this._flush();`;\n\n\t\tbuilders.init.addBlock( statement );\n\t\tbuilders._set.addBlock( statement );\n\t}\n\n\tif ( templateProperties.oncreate ) {\n\t\tbuilders.init.addBlock( deindent`\n\t\t\tif ( options._root ) {\n\t\t\t\toptions._root._renderHooks.push({ fn: template.oncreate, context: this });\n\t\t\t} else {\n\t\t\t\ttemplate.oncreate.call( this );\n\t\t\t}\n\t\t` );\n\t}\n\n\tconst constructorBlock = new CodeBuilder();\n\n\tconstructorBlock.addLine( `options = options || {};` );\n\tif ( generator.usesRefs ) constructorBlock.addLine( `this.refs = {};` );\n\n\tconstructorBlock.addLine(\n\t\t`this._state = ${templateProperties.data ? `Object.assign( template.data(), options.data )` : `options.data || {}`};`\n\t);\n\n\tif ( templateProperties.computed ) {\n\t\tconstructorBlock.addLine(\n\t\t\t`${generator.alias( 'applyComputations' )}( this._state, this._state, {}, true );`\n\t\t);\n\t}\n\n\tif ( options.dev ) {\n\t\tObject.keys( generator.expectedProperties ).forEach( prop => {\n\t\t\tconstructorBlock.addLine(\n\t\t\t\t`if ( !( '${prop}' in this._state ) ) throw new Error( \"Component was created without expected data property '${prop}'\" );`\n\t\t\t);\n\t\t});\n\n\t\tconstructorBlock.addBlock(\n\t\t\t`if ( !options.target && !options._root ) throw new Error( \"'target' is a required option\" );`\n\t\t);\n\t}\n\n\tif ( generator.bindingGroups.length ) {\n\t\tconstructorBlock.addLine( `this._bindingGroups = [ ${Array( generator.bindingGroups.length ).fill( '[]' ).join( ', ' )} ];` );\n\t}\n\n\tconstructorBlock.addBlock( deindent`\n\t\tthis._observers = {\n\t\t\tpre: Object.create( null ),\n\t\t\tpost: Object.create( null )\n\t\t};\n\n\t\tthis._handlers = Object.create( null );\n\n\t\tthis._root = options._root;\n\t\tthis._yield = options._yield;\n\n\t\t${builders.init}\n\t` );\n\n\tbuilders.main.addBlock( deindent`\n\t\tfunction ${name} ( options ) {\n\t\t\t${constructorBlock}\n\t\t}\n\t` );\n\n\tconst sharedPath = options.shared === true ? 'svelte/shared.js' : options.shared;\n\n\tif ( sharedPath ) {\n\t\tconst base = templateProperties.methods ? `{}, template.methods` : `{}`;\n\t\tbuilders.main.addBlock( `${name}.prototype = Object.assign( ${base}, ${generator.helper( 'proto' )} );` );\n\t} else {\n\t\tif ( templateProperties.methods ) {\n\t\t\tbuilders.main.addBlock( `${name}.prototype = template.methods;` );\n\t\t}\n\n\t\t[ 'get', 'fire', 'observe', 'on', 'set', '_flush' ].forEach( methodName => {\n\t\t\tbuilders.main.addLine( `${name}.prototype.${methodName} = ${generator.helper( methodName )};` );\n\t\t});\n\t}\n\n\t// TODO deprecate component.teardown()\n\tbuilders.main.addBlock( deindent`\n\t\t${name}.prototype._set = function _set ( newState ) {\n\t\t\t${builders._set}\n\t\t};\n\n\t\t${name}.prototype.teardown = ${name}.prototype.destroy = function destroy ( detach ) {\n\t\t\tthis.fire( 'destroy' );${templateProperties.ondestroy ? `\\ntemplate.ondestroy.call( this );` : ``}\n\n\t\t\tthis._fragment.teardown( detach !== false );\n\t\t\tthis._fragment = null;\n\n\t\t\tthis._state = {};\n\t\t\tthis._torndown = true;\n\t\t};\n\t` );\n\n\tif ( sharedPath ) {\n\t\tif ( format !== 'es' ) {\n\t\t\tthrow new Error( `Components with shared helpers must be compiled to ES2015 modules (format: 'es')` );\n\t\t}\n\n\t\tconst names = Object.keys( generator.uses ).map( name => {\n\t\t\treturn name !== generator.aliases[ name ] ? `${name} as ${generator.aliases[ name ]}` : name;\n\t\t});\n\n\t\tbuilders.main.addLineAtStart(\n\t\t\t`import { ${names.join( ', ' )} } from ${JSON.stringify( sharedPath )}`\n\t\t);\n\t} else {\n\t\tObject.keys( generator.uses ).forEach( key => {\n\t\t\tconst fn = shared[ key ]; // eslint-disable-line import/namespace\n\t\t\tbuilders.main.addBlock( fn.toString().replace( /^function [^(]*/, 'function ' + generator.aliases[ key ] ) );\n\t\t});\n\t}\n\n\treturn generator.generate( builders.main.toString(), options, { name, format } );\n}\n","export default {\n\t// do nothing\n};\n","export default {\n\tenter ( generator, node ) {\n\t\tconst { dependencies, snippet } = generator.contextualise( node.expression );\n\n\t\tconst open = `\\${ ${snippet}.map( ${ node.index ? `( ${node.context}, ${node.index} )` : node.context} => \\``;\n\t\tgenerator.append( open );\n\n\t\t// TODO should this be the generator's job? It's duplicated between\n\t\t// here and the equivalent DOM compiler visitor\n\t\tconst contexts = Object.assign( {}, generator.current.contexts );\n\t\tcontexts[ node.context ] = node.context;\n\n\t\tconst indexes = Object.assign( {}, generator.current.indexes );\n\t\tif ( node.index ) indexes[ node.index ] = node.context;\n\n\t\tconst contextDependencies = Object.assign( {}, generator.current.contextDependencies );\n\t\tcontextDependencies[ node.context ] = dependencies;\n\n\t\tgenerator.push({\n\t\t\tcontexts,\n\t\t\tindexes,\n\t\t\tcontextDependencies\n\t\t});\n\t},\n\n\tleave ( generator ) {\n\t\tconst close = `\\` ).join( '' )}`;\n\t\tgenerator.append( close );\n\n\t\tgenerator.pop();\n\t}\n};\n","import flattenReference from '../../../utils/flattenReference.js';\n\nexport default {\n\tenter ( generator, node ) {\n\t\tfunction stringify ( chunk ) {\n\t\t\tif ( chunk.type === 'Text' ) return chunk.data;\n\t\t\tif ( chunk.type === 'MustacheTag' ) {\n\t\t\t\tconst { snippet } = generator.contextualise( chunk.expression );\n\t\t\t\treturn '${__escape( ' + snippet + ')}';\n\t\t\t}\n\t\t}\n\n\t\tconst attributes = [];\n\t\tconst bindings = [];\n\n\t\tnode.attributes.forEach( attribute => {\n\t\t\tif ( attribute.type === 'Attribute' ) {\n\t\t\t\tattributes.push( attribute );\n\t\t\t} else if ( attribute.type === 'Binding' ) {\n\t\t\t\tbindings.push( attribute );\n\t\t\t}\n\t\t});\n\n\t\tconst props = attributes\n\t\t\t.map( attribute => {\n\t\t\t\tlet value;\n\n\t\t\t\tif ( attribute.value === true ) {\n\t\t\t\t\tvalue = `true`;\n\t\t\t\t} else if ( attribute.value.length === 0 ) {\n\t\t\t\t\tvalue = `''`;\n\t\t\t\t} else if ( attribute.value.length === 1 ) {\n\t\t\t\t\tconst chunk = attribute.value[0];\n\t\t\t\t\tif ( chunk.type === 'Text' ) {\n\t\t\t\t\t\tvalue = isNaN( chunk.data ) ? JSON.stringify( chunk.data ) : chunk.data;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { snippet } = generator.contextualise( chunk.expression );\n\t\t\t\t\t\tvalue = snippet;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvalue = '`' + attribute.value.map( stringify ).join( '' ) + '`';\n\t\t\t\t}\n\n\t\t\t\treturn `${attribute.name}: ${value}`;\n\t\t\t})\n\t\t\t.concat( bindings.map( binding => {\n\t\t\t\tconst { name, keypath } = flattenReference( binding.value );\n\t\t\t\tconst value = name in generator.current.contexts ? keypath : `root.${keypath}`;\n\t\t\t\treturn `${binding.name}: ${value}`;\n\t\t\t}))\n\t\t\t.join( ', ' );\n\n\t\tconst expression = node.name === ':Self' ? generator.name : `template.components.${node.name}`;\n\n\t\tbindings.forEach( binding => {\n\t\t\tgenerator.addBinding( binding, expression );\n\t\t});\n\n\t\tlet open = `\\${${expression}.render({${props}}`;\n\n\t\tif ( node.children.length ) {\n\t\t\topen += `, { yield: () => \\``;\n\t\t}\n\n\t\tgenerator.append( open );\n\t},\n\n\tleave ( generator, node ) {\n\t\tconst close = node.children.length ? `\\` })}` : ')}';\n\t\tgenerator.append( close );\n\t}\n};\n","import Component from './Component.js';\nimport isVoidElementName from '../../../utils/isVoidElementName.js';\n\nexport default {\n\tenter ( generator, node ) {\n\t\tif ( node.name in generator.components || node.name === ':Self' ) {\n\t\t\tComponent.enter( generator, node );\n\t\t\treturn;\n\t\t}\n\n\t\tlet openingTag = `<${node.name}`;\n\n\t\tnode.attributes.forEach( attribute => {\n\t\t\tif ( attribute.type !== 'Attribute' ) return;\n\n\t\t\tlet str = ` ${attribute.name}`;\n\n\t\t\tif ( attribute.value !== true ) {\n\t\t\t\tstr += `=\"` + attribute.value.map( chunk => {\n\t\t\t\t\tif ( chunk.type === 'Text' ) {\n\t\t\t\t\t\treturn chunk.data;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { snippet } = generator.contextualise( chunk.expression );\n\t\t\t\t\treturn '${' + snippet + '}';\n\t\t\t\t}).join( '' ) + `\"`;\n\t\t\t}\n\n\t\t\topeningTag += str;\n\t\t});\n\n\t\tif ( generator.cssId && !generator.elementDepth ) {\n\t\t\topeningTag += ` ${generator.cssId}`;\n\t\t}\n\n\t\topeningTag += '>';\n\n\t\tgenerator.append( openingTag );\n\t},\n\n\tleave ( generator, node ) {\n\t\tif ( node.name in generator.components || node.name === ':Self' ) {\n\t\t\tComponent.leave( generator, node );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !isVoidElementName( node.name ) ) {\n\t\t\tgenerator.append( `</${node.name}>` );\n\t\t}\n\t}\n};\n","export default {\n\tenter ( generator, node ) {\n\t\tconst { snippet } = generator.contextualise( node.expression );\n\n\t\tgenerator.append( '${ ' + snippet + ' ? `' );\n\n\t\tgenerator.push({\n\t\t\tconditions: generator.current.conditions.concat( snippet )\n\t\t});\n\t},\n\n\tleave ( generator, node ) {\n\t\tgenerator.append( '` : `' );\n\t\tif ( node.else ) node.else.children.forEach( child => generator.visit( child ) );\n\t\tgenerator.append( '` }' );\n\n\t\tgenerator.pop();\n\t}\n};\n","export default {\n\tenter ( generator, node ) {\n\t\tconst { snippet } = generator.contextualise( node.expression );\n\t\tgenerator.append( '${__escape( ' + snippet + ' )}' );\n\t}\n};\n","export default {\n\tenter ( generator, node ) {\n\t\tconst { snippet } = generator.contextualise( node.expression );\n\t\tgenerator.append( '${' + snippet + '}' );\n\t}\n};\n","export default {\n\tenter ( generator, node ) {\n\t\tgenerator.append( node.data.replace( /\\${/g, '\\\\${' ) );\n\t}\n};\n","export default {\n\tenter ( generator ) {\n\t\tgenerator.append( `\\${options && options.yield ? options.yield() : ''}` );\n\t}\n};\n","import Comment from './Comment.js';\nimport EachBlock from './EachBlock.js';\nimport Element from './Element.js';\nimport IfBlock from './IfBlock.js';\nimport MustacheTag from './MustacheTag.js';\nimport RawMustacheTag from './RawMustacheTag.js';\nimport Text from './Text.js';\nimport YieldTag from './YieldTag.js';\n\nexport default {\n\tComment,\n\tEachBlock,\n\tElement,\n\tIfBlock,\n\tMustacheTag,\n\tRawMustacheTag,\n\tText,\n\tYieldTag\n};\n","import deindent from '../../utils/deindent.js';\nimport CodeBuilder from '../../utils/CodeBuilder.js';\nimport flattenReference from '../../utils/flattenReference.js';\nimport processCss from '../shared/processCss.js';\nimport visitors from './visitors/index.js';\nimport Generator from '../Generator.js';\n\nclass SsrGenerator extends Generator {\n\tconstructor ( parsed, source, name, names, visitors, options ) {\n\t\tsuper( parsed, source, name, names, visitors, options );\n\t\tthis.bindings = [];\n\t\tthis.renderCode = '';\n\t}\n\n\taddBinding ( binding, name ) {\n\t\tconst conditions = [ `!( '${binding.name}' in root )`].concat( // TODO handle contextual bindings...\n\t\t\tthis.current.conditions.map( c => `(${c})` )\n\t\t);\n\n\t\tconst { keypath } = flattenReference( binding.value );\n\n\t\tthis.bindings.push( deindent`\n\t\t\tif ( ${conditions.join( '&&' )} ) {\n\t\t\t\ttmp = ${name}.data();\n\t\t\t\tif ( '${keypath}' in tmp ) {\n\t\t\t\t\troot.${binding.name} = tmp.${keypath};\n\t\t\t\t\tsettled = false;\n\t\t\t\t}\n\t\t\t}\n\t\t` );\n\t}\n\n\tappend ( code ) {\n\t\tthis.renderCode += code;\n\t}\n}\n\nexport default function ssr ( parsed, source, options, names ) {\n\tconst format = options.format || 'cjs';\n\tconst name = options.name || 'SvelteComponent';\n\n\tconst generator = new SsrGenerator( parsed, source, name, names, visitors, options );\n\n\tconst { computations, templateProperties } = generator.parseJs();\n\n\tconst builders = {\n\t\tmain: new CodeBuilder(),\n\t\tbindings: new CodeBuilder(),\n\t\trender: new CodeBuilder(),\n\t\trenderCss: new CodeBuilder()\n\t};\n\n\t// create main render() function\n\tgenerator.push({\n\t\tcontexts: {},\n\t\tindexes: {},\n\t\tconditions: []\n\t});\n\n\tparsed.html.children.forEach( node => generator.visit( node ) );\n\n\tbuilders.render.addLine(\n\t\ttemplateProperties.data ? `root = Object.assign( template.data(), root || {} );` : `root = root || {};`\n\t);\n\n\tcomputations.forEach( ({ key, deps }) => {\n\t\tbuilders.render.addLine(\n\t\t\t`root.${key} = template.computed.${key}( ${deps.map( dep => `root.${dep}` ).join( ', ' )} );`\n\t\t);\n\t});\n\n\tif ( generator.bindings.length ) {\n\t\tconst bindings = generator.bindings.join( '\\n\\n' );\n\n\t\tbuilders.render.addBlock( deindent`\n\t\t\tvar settled = false;\n\t\t\tvar tmp;\n\n\t\t\twhile ( !settled ) {\n\t\t\t\tsettled = true;\n\n\t\t\t\t${bindings}\n\t\t\t}\n\t\t` );\n\t}\n\n\tbuilders.render.addBlock(\n\t\t`return \\`${generator.renderCode}\\`;`\n\t);\n\n\t// create renderCss() function\n\tbuilders.renderCss.addBlock(\n\t\t`var components = [];`\n\t);\n\n\tif ( parsed.css ) {\n\t\tbuilders.renderCss.addBlock( deindent`\n\t\t\tcomponents.push({\n\t\t\t\tfilename: ${name}.filename,\n\t\t\t\tcss: ${JSON.stringify( processCss( parsed, generator.code ) )},\n\t\t\t\tmap: null // TODO\n\t\t\t});\n\t\t` );\n\t}\n\n\tif ( templateProperties.components ) {\n\t\tbuilders.renderCss.addBlock( deindent`\n\t\t\tvar seen = {};\n\n\t\t\tfunction addComponent ( component ) {\n\t\t\t\tvar result = component.renderCss();\n\t\t\t\tresult.components.forEach( x => {\n\t\t\t\t\tif ( seen[ x.filename ] ) return;\n\t\t\t\t\tseen[ x.filename ] = true;\n\t\t\t\t\tcomponents.push( x );\n\t\t\t\t});\n\t\t\t}\n\t\t` );\n\n\t\ttemplateProperties.components.value.properties.forEach( prop => {\n\t\t\tbuilders.renderCss.addLine( `addComponent( template.components.${prop.key.name} );` );\n\t\t});\n\t}\n\n\tbuilders.renderCss.addBlock( deindent`\n\t\treturn {\n\t\t\tcss: components.map( x => x.css ).join( '\\\\n' ),\n\t\t\tmap: null,\n\t\t\tcomponents\n\t\t};\n\t` );\n\n\tif ( parsed.js ) {\n\t\tbuilders.main.addBlock( `[✂${parsed.js.content.start}-${parsed.js.content.end}✂]` );\n\t}\n\n\tbuilders.main.addBlock( deindent`\n\t\tvar ${name} = {};\n\n\t\t${name}.filename = ${JSON.stringify( options.filename )};\n\n\t\t${name}.data = function () {\n\t\t\treturn ${templateProperties.data ? `template.data()` : `{}`};\n\t\t};\n\n\t\t${name}.render = function ( root, options ) {\n\t\t\t${builders.render}\n\t\t};\n\n\t\t${name}.renderCss = function () {\n\t\t\t${builders.renderCss}\n\t\t};\n\n\t\tvar escaped = {\n\t\t\t'\"': '&quot;',\n\t\t\t\"'\": '&#39;',\n\t\t\t'&': '&amp;',\n\t\t\t'<': '&lt;',\n\t\t\t'>': '&gt;'\n\t\t};\n\n\t\tfunction __escape ( html ) {\n\t\t\treturn String( html ).replace( /[\"'&<>]/g, match => escaped[ match ] );\n\t\t}\n\t` );\n\n\tconst result = builders.main.toString();\n\n\treturn generator.generate( result, options, { name, format } );\n}\n","import parse from './parse/index.js';\nimport validate from './validate/index.js';\nimport generate from './generators/dom/index.js';\nimport generateSSR from './generators/server-side-rendering/index.js';\nimport { version } from '../package.json';\n\nfunction normalizeOptions ( options ) {\n\treturn Object.assign( {\n\t\tgenerate: 'dom',\n\n\t\t// a filename is necessary for sourcemap generation\n\t\tfilename: 'SvelteComponent.html',\n\n\t\tonwarn: warning => {\n\t\t\tif ( warning.loc ) {\n\t\t\t\tconsole.warn( `(${warning.loc.line}:${warning.loc.column}) – ${warning.message}` ); // eslint-disable-line no-console\n\t\t\t} else {\n\t\t\t\tconsole.warn( warning.message ); // eslint-disable-line no-console\n\t\t\t}\n\t\t},\n\n\t\tonerror: error => {\n\t\t\tthrow error;\n\t\t}\n\t}, options );\n}\n\nexport function compile ( source, _options ) {\n\tconst options = normalizeOptions( _options );\n\n\tlet parsed;\n\n\ttry {\n\t\tparsed = parse( source, options );\n\t} catch ( err ) {\n\t\toptions.onerror( err );\n\t\treturn;\n\t}\n\n\tconst { names } = validate( parsed, source, options );\n\n\tconst compiler = options.generate === 'ssr'\n\t\t? generateSSR\n\t\t: generate;\n\n\treturn compiler( parsed, source, options, names );\n}\n\nexport function create ( source, _options = {} ) {\n\t_options.format = 'eval';\n\n\tconst compiled = compile( source, _options );\n\n\tif ( !compiled || !compiled.code ) {\n\t\treturn;\n\t}\n\n\tlet result;\n\ttry {\n\t\tresult = (new Function( 'return ' + compiled.code ))();\n\t} catch ( err ) {\n\t\tif ( _options.onerror ) {\n\t\t\t_options.onerror( err );\n\t\t} else {\n\t\t\tthrow err;\n\t\t}\n\t\treturn;\n\t}\n\n\treturn result;\n}\n\nexport { parse, validate, version as VERSION };\n"],"names":["parse","const","let","CssSyntaxError","WHITESPACE","IDENTIFIER","NUMBER","STRING","COMMENT","PUNCTUATOR","N","F","R","TYPE","NAME","SafeUint32Array","SYMBOL_TYPE","constants","require$$0","PUNCTUATION","SYMBOL_TYPE_LENGTH","FULLSTOP","PLUSSIGN","HYPHENMINUS","TAB","SPACE","firstCharOffset","isNumber","cmpStr","findLastNonSpaceLocation","findWhitespaceEnd","findCommentEnd","findStringEnd","findNumberEnd","findIdentifierEnd","require$$1","require$$2","Tokenizer","List","cmpChar","ASTERISK","COLON","LEFTSQUAREBRACKET","VERTICALLINE","TILDE","getOperator","SEMICOLON","COMMERCIALAT","LEFTCURLYBRACKET","RIGHTCURLYBRACKET","RIGHTSQUAREBRACKET","SOLIDUS","GREATERTHANSIGN","DOLLARSIGN","BALANCED","LEFTPARENTHESIS","RIGHTPARENTHESIS","NUMBERSIGN","COMMA","PERCENTSIGN","EXCLAMATIONMARK","isHex","endsWith","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","require$$35","require$$36","require$$37","require$$38","require$$39","Parser","require$$40","require$$41","require$$42","require$$43","require$$44","require$$45","require$$46","walk","block","expression","this","start","length","isArray","i","newResults","svg","html","namespaces.svg","flattenReference","value","attributeLookup","updater","addElementBinding","createBinding","addComponentBinding","initialProps","updates","name","Comment","getLocator","globals","MagicString","context","visitors","super","key","names","Component","EachBlock","Element","IfBlock","MustacheTag","RawMustacheTag","Text","YieldTag","generateSSR","generate"],"mappings":"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C,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAC1hC,IAAI,qBAAqB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE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AAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC1+FA,IAAM,iBAAiB,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,E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"}
data/lib/svelte.rb ADDED
@@ -0,0 +1,43 @@
1
+ require 'execjs'
2
+ require 'open-uri'
3
+ require 'svelte/version'
4
+ require 'core_ext/array/extract_options.rb' unless Array.method_defined?(:extract_options!)
5
+
6
+ module Svelte
7
+ VERSION_JS = '1.12.1'
8
+ LIB_DIR = File.expand_path(File.dirname(__FILE__))
9
+ SOURCE_URI = IO.read(File.join(LIB_DIR, 'svelte.js'))
10
+ CONTEXT = ExecJS.compile(SOURCE_URI)
11
+
12
+ # make all class methods
13
+ extend self
14
+
15
+ # call method on sveltejs compiler
16
+ #
17
+ # @see https://github.com/sveltejs/svelte#options
18
+ # @param method_str [String] svelte method
19
+ # @param arg1 [File,URI] component file
20
+ # @param source_uri [File,URI] sveltejs file (optional)
21
+ # @param args [Hash] sveltejs defined flags (optional)
22
+ # @return [Hash] returns code and map
23
+ def exec_method(method_str, arg1=nil, source_uri=nil, *args)
24
+ raise "Error method is not String" unless method_str.is_a?(String)
25
+ opts = args.extract_options!
26
+ context = source_uri ? ExecJS.compile(open(source_uri).read) : CONTEXT
27
+ arg1 = open(arg1).read if (!arg1.nil? && File.exist?(arg1))
28
+
29
+ context.call(method_str.strip, arg1, opts)
30
+ end
31
+
32
+ # eval code in sveltjs env
33
+ #
34
+ # @param code_str [String] svelte code
35
+ # @param source_uri [File,URI] sveltejs file (optional)
36
+ # @return [String]
37
+ def exec_eval(code_str, source_uri=nil)
38
+ raise "Error code is not String" unless code_str.is_a?(String)
39
+ context = source_uri ? ExecJS.compile(open(source_uri).read) : CONTEXT
40
+
41
+ context.eval(code_str.strip)
42
+ end
43
+ end
@@ -0,0 +1,3 @@
1
+ module Svelte
2
+ VERSION = '0.1.0'
3
+ end
@@ -0,0 +1,48 @@
1
+ require 'FileUtils' unless Object.const_defined?('FileUtils')
2
+
3
+ # in lib/tasks/rollup.rake
4
+ CURRENT_DIR = File.expand_path(File.dirname(__FILE__))
5
+ LIB_DIR = File.join(CURRENT_DIR, '..')
6
+
7
+ namespace :svelte do
8
+
9
+ desc 'Rollup (transpile) svelte/* and write to lib/svelte.js (requires npm rollup)'
10
+ task :rollup do
11
+
12
+ # ensure remove
13
+ output_filename = File.join(LIB_DIR, 'svelte.js')
14
+ rollup_config = File.join(LIB_DIR, '../config/rollup.config.ruby.js')
15
+
16
+ # ensure remove
17
+ FileUtils.rm_f output_filename
18
+ raise "ERROR: could not delete previous file in output path: #{output_filename}" if File.exist?(output_filename)
19
+
20
+ puts "cd svelte && rollup -c ./rollup/rollup.config.ruby.js"
21
+ puts `cd svelte && rollup -c ./rollup/rollup.config.ruby.js`
22
+
23
+ # ensure exists
24
+ raise "ERROR: could not find file in output path: #{output_filename}" unless File.exist?(output_filename)
25
+
26
+ puts "svelte:rollup done: success!"
27
+ end
28
+
29
+
30
+ desc 'Copy `lib/rollup/rollup.config.ruby.js` to `svelte/rollup/`'
31
+ task :copy_config do
32
+
33
+ # ensure remove
34
+ output_filename = File.join(LIB_DIR, '../svelte/rollup/rollup.config.ruby.js')
35
+ rollup_config = File.join(LIB_DIR, 'rollup/rollup.config.ruby.js')
36
+
37
+ FileUtils.rm_f output_filename
38
+ raise "ERROR: could not delete previous file in output path: #{output_filename}" if File.exist?(output_filename)
39
+
40
+ FileUtils.cp(rollup_config, output_filename)
41
+
42
+ # ensure exists
43
+ raise "ERROR: could not find file in output path: #{output_filename}" unless File.exist?(output_filename)
44
+
45
+ puts "rollup:copy_config_to_svelte done: success!"
46
+ end
47
+
48
+ end
@@ -0,0 +1,59 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # stub: svelte-ruby 0.1.0 ruby lib
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "svelte-ruby"
6
+ s.version = "0.1.0"
7
+
8
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
+ s.require_paths = ["lib"]
10
+ s.authors = ["So Awesome Man"]
11
+ s.date = "2017-03-21"
12
+ s.description = "Ruby Gem wrapper for the Svelte compiler"
13
+ s.email = "support@bordee.com"
14
+ s.executables = ["svelte"]
15
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.md", "History.txt"]
16
+ s.files = [".autotest", ".gitignore", ".gitmodules", ".hoeignore", "Gemfile", "History.txt", "LICENSE", "Manifest.txt", "README.md", "Rakefile", "bin/svelte", "lib/core_ext/array/extract_options.rb", "lib/rollup/rollup.config.ruby.js", "lib/svelte.js", "lib/svelte.js.map", "lib/svelte.rb", "lib/svelte/version.rb", "lib/tasks/svelte.rake", "svelte-ruby.gemspec", "test/files/hello_world.html", "test/files/hello_world_output.txt", "test/files/hello_world_output_iife.txt", "test/test_svelte.rb"]
17
+ s.homepage = "https://github.com/bordeeinc/svelte-ruby"
18
+ s.licenses = ["MIT"]
19
+ s.rdoc_options = ["--title", "svelte-ruby", "--markup", "markdown", "--quiet"]
20
+ s.required_ruby_version = Gem::Requirement.new(">= 1.9.2")
21
+ s.rubygems_version = "2.2.5"
22
+ s.summary = "Ruby Gem wrapper for the Svelte compiler"
23
+
24
+ if s.respond_to? :specification_version then
25
+ s.specification_version = 4
26
+
27
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
28
+ s.add_runtime_dependency(%q<execjs>, ["= 2.7.0"])
29
+ s.add_development_dependency(%q<minitest>, ["~> 5.10"])
30
+ s.add_development_dependency(%q<hoe-yard>, [">= 0.1.3"])
31
+ s.add_development_dependency(%q<hoe-bundler>, [">= 1.2"])
32
+ s.add_development_dependency(%q<hoe-gemspec>, [">= 1.0"])
33
+ s.add_development_dependency(%q<hoe-git>, [">= 1.6"])
34
+ s.add_development_dependency(%q<yard>, ["~> 0.8"])
35
+ s.add_development_dependency(%q<redcarpet>, ["~> 3.3"])
36
+ s.add_development_dependency(%q<hoe>, ["~> 3.16"])
37
+ else
38
+ s.add_dependency(%q<execjs>, ["= 2.7.0"])
39
+ s.add_dependency(%q<minitest>, ["~> 5.10"])
40
+ s.add_dependency(%q<hoe-yard>, [">= 0.1.3"])
41
+ s.add_dependency(%q<hoe-bundler>, [">= 1.2"])
42
+ s.add_dependency(%q<hoe-gemspec>, [">= 1.0"])
43
+ s.add_dependency(%q<hoe-git>, [">= 1.6"])
44
+ s.add_dependency(%q<yard>, ["~> 0.8"])
45
+ s.add_dependency(%q<redcarpet>, ["~> 3.3"])
46
+ s.add_dependency(%q<hoe>, ["~> 3.16"])
47
+ end
48
+ else
49
+ s.add_dependency(%q<execjs>, ["= 2.7.0"])
50
+ s.add_dependency(%q<minitest>, ["~> 5.10"])
51
+ s.add_dependency(%q<hoe-yard>, [">= 0.1.3"])
52
+ s.add_dependency(%q<hoe-bundler>, [">= 1.2"])
53
+ s.add_dependency(%q<hoe-gemspec>, [">= 1.0"])
54
+ s.add_dependency(%q<hoe-git>, [">= 1.6"])
55
+ s.add_dependency(%q<yard>, ["~> 0.8"])
56
+ s.add_dependency(%q<redcarpet>, ["~> 3.3"])
57
+ s.add_dependency(%q<hoe>, ["~> 3.16"])
58
+ end
59
+ end
@@ -0,0 +1 @@
1
+ <h1>Hello {{name}}</h1>
@@ -0,0 +1,179 @@
1
+ function renderMainFragment ( root, component ) {
2
+ var h1 = createElement( 'h1' );
3
+
4
+ appendNode( createText( "Hello " ), h1 );
5
+ var last_text1 = root.name
6
+ var text1 = createText( last_text1 );
7
+ appendNode( text1, h1 );
8
+
9
+ return {
10
+ mount: function ( target, anchor ) {
11
+ insertNode( h1, target, anchor );
12
+ },
13
+
14
+ update: function ( changed, root ) {
15
+ var __tmp;
16
+
17
+ if ( ( __tmp = root.name ) !== last_text1 ) {
18
+ text1.data = last_text1 = __tmp;
19
+ }
20
+ },
21
+
22
+ teardown: function ( detach ) {
23
+ if ( detach ) {
24
+ detachNode( h1 );
25
+ }
26
+ }
27
+ };
28
+ }
29
+
30
+ function SvelteComponent ( options ) {
31
+ options = options || {};
32
+ this._state = options.data || {};
33
+
34
+ this._observers = {
35
+ pre: Object.create( null ),
36
+ post: Object.create( null )
37
+ };
38
+
39
+ this._handlers = Object.create( null );
40
+
41
+ this._root = options._root;
42
+ this._yield = options._yield;
43
+
44
+ this._torndown = false;
45
+
46
+ this._fragment = renderMainFragment( this._state, this );
47
+ if ( options.target ) this._fragment.mount( options.target, null );
48
+ }
49
+
50
+ SvelteComponent.prototype.get = get;
51
+ SvelteComponent.prototype.fire = fire;
52
+ SvelteComponent.prototype.observe = observe;
53
+ SvelteComponent.prototype.on = on;
54
+ SvelteComponent.prototype.set = set;
55
+ SvelteComponent.prototype._flush = _flush;
56
+
57
+ SvelteComponent.prototype._set = function _set ( newState ) {
58
+ var oldState = this._state;
59
+ this._state = Object.assign( {}, oldState, newState );
60
+
61
+ dispatchObservers( this, this._observers.pre, newState, oldState );
62
+ if ( this._fragment ) this._fragment.update( newState, this._state );
63
+ dispatchObservers( this, this._observers.post, newState, oldState );
64
+ };
65
+
66
+ SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
67
+ this.fire( 'destroy' );
68
+
69
+ this._fragment.teardown( detach !== false );
70
+ this._fragment = null;
71
+
72
+ this._state = {};
73
+ this._torndown = true;
74
+ };
75
+
76
+ function createElement( name ) {
77
+ return document.createElement( name );
78
+ }
79
+
80
+ function detachNode( node ) {
81
+ node.parentNode.removeChild( node );
82
+ }
83
+
84
+ function insertNode( node, target, anchor ) {
85
+ target.insertBefore( node, anchor );
86
+ }
87
+
88
+ function createText( data ) {
89
+ return document.createTextNode( data );
90
+ }
91
+
92
+ function appendNode( node, target ) {
93
+ target.appendChild( node );
94
+ }
95
+
96
+ function dispatchObservers( component, group, newState, oldState ) {
97
+ for ( var key in group ) {
98
+ if ( !( key in newState ) ) continue;
99
+
100
+ var newValue = newState[ key ];
101
+ var oldValue = oldState[ key ];
102
+
103
+ if ( newValue === oldValue && typeof newValue !== 'object' ) continue;
104
+
105
+ var callbacks = group[ key ];
106
+ if ( !callbacks ) continue;
107
+
108
+ for ( var i = 0; i < callbacks.length; i += 1 ) {
109
+ var callback = callbacks[i];
110
+ if ( callback.__calling ) continue;
111
+
112
+ callback.__calling = true;
113
+ callback.call( component, newValue, oldValue );
114
+ callback.__calling = false;
115
+ }
116
+ }
117
+ }
118
+
119
+ function get( key ) {
120
+ return key ? this._state[ key ] : this._state;
121
+ }
122
+
123
+ function fire( eventName, data ) {
124
+ var handlers = eventName in this._handlers && this._handlers[ eventName ].slice();
125
+ if ( !handlers ) return;
126
+
127
+ for ( var i = 0; i < handlers.length; i += 1 ) {
128
+ handlers[i].call( this, data );
129
+ }
130
+ }
131
+
132
+ function observe( key, callback, options ) {
133
+ var group = ( options && options.defer ) ? this._observers.pre : this._observers.post;
134
+
135
+ ( group[ key ] || ( group[ key ] = [] ) ).push( callback );
136
+
137
+ if ( !options || options.init !== false ) {
138
+ callback.__calling = true;
139
+ callback.call( this, this._state[ key ] );
140
+ callback.__calling = false;
141
+ }
142
+
143
+ return {
144
+ cancel: function () {
145
+ var index = group[ key ].indexOf( callback );
146
+ if ( ~index ) group[ key ].splice( index, 1 );
147
+ }
148
+ };
149
+ }
150
+
151
+ function on( eventName, handler ) {
152
+ if ( eventName === 'teardown' ) return this.on( 'destroy', handler );
153
+
154
+ var handlers = this._handlers[ eventName ] || ( this._handlers[ eventName ] = [] );
155
+ handlers.push( handler );
156
+
157
+ return {
158
+ cancel: function () {
159
+ var index = handlers.indexOf( handler );
160
+ if ( ~index ) handlers.splice( index, 1 );
161
+ }
162
+ };
163
+ }
164
+
165
+ function set( newState ) {
166
+ this._set( newState );
167
+ ( this._root || this )._flush();
168
+ }
169
+
170
+ function _flush() {
171
+ if ( !this._renderHooks ) return;
172
+
173
+ while ( this._renderHooks.length ) {
174
+ var hook = this._renderHooks.pop();
175
+ hook.fn.call( hook.context );
176
+ }
177
+ }
178
+
179
+ export default SvelteComponent;
@@ -0,0 +1,183 @@
1
+ var SvelteComponent = (function () { 'use strict';
2
+
3
+ function renderMainFragment ( root, component ) {
4
+ var h1 = createElement( 'h1' );
5
+
6
+ appendNode( createText( "Hello " ), h1 );
7
+ var last_text1 = root.name
8
+ var text1 = createText( last_text1 );
9
+ appendNode( text1, h1 );
10
+
11
+ return {
12
+ mount: function ( target, anchor ) {
13
+ insertNode( h1, target, anchor );
14
+ },
15
+
16
+ update: function ( changed, root ) {
17
+ var __tmp;
18
+
19
+ if ( ( __tmp = root.name ) !== last_text1 ) {
20
+ text1.data = last_text1 = __tmp;
21
+ }
22
+ },
23
+
24
+ teardown: function ( detach ) {
25
+ if ( detach ) {
26
+ detachNode( h1 );
27
+ }
28
+ }
29
+ };
30
+ }
31
+
32
+ function SvelteComponent ( options ) {
33
+ options = options || {};
34
+ this._state = options.data || {};
35
+
36
+ this._observers = {
37
+ pre: Object.create( null ),
38
+ post: Object.create( null )
39
+ };
40
+
41
+ this._handlers = Object.create( null );
42
+
43
+ this._root = options._root;
44
+ this._yield = options._yield;
45
+
46
+ this._torndown = false;
47
+
48
+ this._fragment = renderMainFragment( this._state, this );
49
+ if ( options.target ) this._fragment.mount( options.target, null );
50
+ }
51
+
52
+ SvelteComponent.prototype.get = get;
53
+ SvelteComponent.prototype.fire = fire;
54
+ SvelteComponent.prototype.observe = observe;
55
+ SvelteComponent.prototype.on = on;
56
+ SvelteComponent.prototype.set = set;
57
+ SvelteComponent.prototype._flush = _flush;
58
+
59
+ SvelteComponent.prototype._set = function _set ( newState ) {
60
+ var oldState = this._state;
61
+ this._state = Object.assign( {}, oldState, newState );
62
+
63
+ dispatchObservers( this, this._observers.pre, newState, oldState );
64
+ if ( this._fragment ) this._fragment.update( newState, this._state );
65
+ dispatchObservers( this, this._observers.post, newState, oldState );
66
+ };
67
+
68
+ SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
69
+ this.fire( 'destroy' );
70
+
71
+ this._fragment.teardown( detach !== false );
72
+ this._fragment = null;
73
+
74
+ this._state = {};
75
+ this._torndown = true;
76
+ };
77
+
78
+ function createElement( name ) {
79
+ return document.createElement( name );
80
+ }
81
+
82
+ function detachNode( node ) {
83
+ node.parentNode.removeChild( node );
84
+ }
85
+
86
+ function insertNode( node, target, anchor ) {
87
+ target.insertBefore( node, anchor );
88
+ }
89
+
90
+ function createText( data ) {
91
+ return document.createTextNode( data );
92
+ }
93
+
94
+ function appendNode( node, target ) {
95
+ target.appendChild( node );
96
+ }
97
+
98
+ function dispatchObservers( component, group, newState, oldState ) {
99
+ for ( var key in group ) {
100
+ if ( !( key in newState ) ) continue;
101
+
102
+ var newValue = newState[ key ];
103
+ var oldValue = oldState[ key ];
104
+
105
+ if ( newValue === oldValue && typeof newValue !== 'object' ) continue;
106
+
107
+ var callbacks = group[ key ];
108
+ if ( !callbacks ) continue;
109
+
110
+ for ( var i = 0; i < callbacks.length; i += 1 ) {
111
+ var callback = callbacks[i];
112
+ if ( callback.__calling ) continue;
113
+
114
+ callback.__calling = true;
115
+ callback.call( component, newValue, oldValue );
116
+ callback.__calling = false;
117
+ }
118
+ }
119
+ }
120
+
121
+ function get( key ) {
122
+ return key ? this._state[ key ] : this._state;
123
+ }
124
+
125
+ function fire( eventName, data ) {
126
+ var handlers = eventName in this._handlers && this._handlers[ eventName ].slice();
127
+ if ( !handlers ) return;
128
+
129
+ for ( var i = 0; i < handlers.length; i += 1 ) {
130
+ handlers[i].call( this, data );
131
+ }
132
+ }
133
+
134
+ function observe( key, callback, options ) {
135
+ var group = ( options && options.defer ) ? this._observers.pre : this._observers.post;
136
+
137
+ ( group[ key ] || ( group[ key ] = [] ) ).push( callback );
138
+
139
+ if ( !options || options.init !== false ) {
140
+ callback.__calling = true;
141
+ callback.call( this, this._state[ key ] );
142
+ callback.__calling = false;
143
+ }
144
+
145
+ return {
146
+ cancel: function () {
147
+ var index = group[ key ].indexOf( callback );
148
+ if ( ~index ) group[ key ].splice( index, 1 );
149
+ }
150
+ };
151
+ }
152
+
153
+ function on( eventName, handler ) {
154
+ if ( eventName === 'teardown' ) return this.on( 'destroy', handler );
155
+
156
+ var handlers = this._handlers[ eventName ] || ( this._handlers[ eventName ] = [] );
157
+ handlers.push( handler );
158
+
159
+ return {
160
+ cancel: function () {
161
+ var index = handlers.indexOf( handler );
162
+ if ( ~index ) handlers.splice( index, 1 );
163
+ }
164
+ };
165
+ }
166
+
167
+ function set( newState ) {
168
+ this._set( newState );
169
+ ( this._root || this )._flush();
170
+ }
171
+
172
+ function _flush() {
173
+ if ( !this._renderHooks ) return;
174
+
175
+ while ( this._renderHooks.length ) {
176
+ var hook = this._renderHooks.pop();
177
+ hook.fn.call( hook.context );
178
+ }
179
+ }
180
+
181
+ return SvelteComponent;
182
+
183
+ }());