{"version":3,"file":"index.js","sources":["../../../node_modules/json-stringify-pretty-compact/index.js","../format.js","../../../node_modules/url/node_modules/punycode/punycode.js","../../../node_modules/url/util.js","../../../node_modules/querystring/decode.js","../../../node_modules/querystring/encode.js","../../../node_modules/querystring/index.js","../../../node_modules/url/url.js","../visit.js","../migrate/v8.js","../util/extend.js","../expression/parsing_error.js","../expression/scope.js","../expression/types.js","../../../node_modules/csscolorparser/csscolorparser.js","../util/color.js","../expression/types/collator.js","../expression/types/formatted.js","../expression/types/resolved_image.js","../expression/values.js","../expression/definitions/literal.js","../expression/runtime_error.js","../expression/definitions/assertion.js","../expression/definitions/format.js","../expression/definitions/image.js","../expression/definitions/coercion.js","../expression/evaluation_context.js","../expression/compound_expression.js","../expression/definitions/collator.js","../expression/definitions/within.js","../expression/is_constant.js","../expression/definitions/var.js","../expression/parsing_context.js","../expression/stops.js","../expression/definitions/step.js","../../../node_modules/@mapbox/unitbezier/index.js","../util/interpolate.js","../util/color_spaces.js","../expression/definitions/interpolate.js","../expression/definitions/coalesce.js","../expression/definitions/let.js","../expression/definitions/at.js","../expression/definitions/in.js","../expression/definitions/index_of.js","../expression/definitions/match.js","../expression/definitions/case.js","../expression/definitions/slice.js","../expression/definitions/comparison.js","../expression/definitions/number_format.js","../expression/definitions/length.js","../expression/definitions/index.js","../util/result.js","../util/properties.js","../util/get_type.js","../function/index.js","../expression/index.js","../function/convert.js","../feature_filter/index.js","../feature_filter/convert.js","../migrate/expressions.js","../migrate.js","../composite.js","../util/ref_properties.js","../deref.js","../util/deep_equal.js","../diff.js","../error/validation_error.js","../error/parsing_error.js","../validate/validate_constants.js","../util/unbundle_jsonlint.js","../validate/validate_object.js","../validate/validate_array.js","../validate/validate_number.js","../validate/validate_function.js","../validate/validate_expression.js","../validate/validate_boolean.js","../validate/validate_color.js","../validate/validate_enum.js","../validate/validate_filter.js","../validate/validate_property.js","../validate/validate_paint_property.js","../validate/validate_layout_property.js","../validate/validate_layer.js","../validate/validate_string.js","../validate/validate_source.js","../validate/validate_light.js","../validate/validate_formatted.js","../validate/validate_image.js","../validate/validate.js","../validate/validate_glyphs_url.js","../validate_style.min.js","../../../node_modules/@mapbox/jsonlint-lines-primitives/lib/jsonlint.js","../read_style.js","../validate_style.js","../validate_mapbox_api_supported.js","../style-spec.js"],"sourcesContent":["\"use strict\";\n\n// Note: This regex matches even invalid JSON strings, but since we’re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don’t care since the output would be invalid anyway).\nvar stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\n\nmodule.exports = function stringify(passedObj, options) {\n var indent, maxLength, replacer;\n\n options = options || {};\n indent = JSON.stringify(\n [1],\n undefined,\n options.indent === undefined ? 2 : options.indent\n ).slice(2, -3);\n maxLength =\n indent === \"\"\n ? Infinity\n : options.maxLength === undefined\n ? 80\n : options.maxLength;\n replacer = options.replacer;\n\n return (function _stringify(obj, currentIndent, reserved) {\n // prettier-ignore\n var end, index, items, key, keyPart, keys, length, nextIndent, prettified, start, string, value;\n\n if (obj && typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n\n string = JSON.stringify(obj, replacer);\n\n if (string === undefined) {\n return string;\n }\n\n length = maxLength - currentIndent.length - reserved;\n\n if (string.length <= length) {\n prettified = string.replace(stringOrChar, function(match, stringLiteral) {\n return stringLiteral || match + \" \";\n });\n if (prettified.length <= length) {\n return prettified;\n }\n }\n\n if (replacer != null) {\n obj = JSON.parse(string);\n replacer = undefined;\n }\n\n if (typeof obj === \"object\" && obj !== null) {\n nextIndent = currentIndent + indent;\n items = [];\n index = 0;\n\n if (Array.isArray(obj)) {\n start = \"[\";\n end = \"]\";\n length = obj.length;\n for (; index < length; index++) {\n items.push(\n _stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) ||\n \"null\"\n );\n }\n } else {\n start = \"{\";\n end = \"}\";\n keys = Object.keys(obj);\n length = keys.length;\n for (; index < length; index++) {\n key = keys[index];\n keyPart = JSON.stringify(key) + \": \";\n value = _stringify(\n obj[key],\n nextIndent,\n keyPart.length + (index === length - 1 ? 0 : 1)\n );\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n }\n }\n\n if (items.length > 0) {\n return [start, indent + items.join(\",\\n\" + nextIndent), end].join(\n \"\\n\" + currentIndent\n );\n }\n }\n\n return string;\n })(passedObj, \"\", 0);\n};\n","\nimport reference from './reference/latest.js';\nimport stringifyPretty from 'json-stringify-pretty-compact';\n\nfunction sortKeysBy(obj, reference) {\n const result = {};\n for (const key in reference) {\n if (obj[key] !== undefined) {\n result[key] = obj[key];\n }\n }\n for (const key in obj) {\n if (result[key] === undefined) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n\n/**\n * Format a Mapbox GL Style. Returns a stringified style with its keys\n * sorted in the same order as the reference style.\n *\n * The optional `space` argument is passed to\n * [`JSON.stringify`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)\n * to generate formatted output.\n *\n * If `space` is unspecified, a default of `2` spaces will be used.\n *\n * @private\n * @param {Object} style a Mapbox GL Style\n * @param {number} [space] space argument to pass to `JSON.stringify`\n * @returns {string} stringified formatted JSON\n * @example\n * var fs = require('fs');\n * var format = require('mapbox-gl-style-spec').format;\n * var style = fs.readFileSync('./source.json', 'utf8');\n * fs.writeFileSync('./dest.json', format(style));\n * fs.writeFileSync('./dest.min.json', format(style, 0));\n */\nfunction format(style, space = 2) {\n style = sortKeysBy(style, reference.$root);\n\n if (style.layers) {\n style.layers = style.layers.map((layer) => sortKeysBy(layer, reference.layer));\n }\n\n return stringifyPretty(style, {indent: space});\n}\n\nexport default format;\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","// @flow\n\nimport Reference from './reference/v8.json';\nimport type {StylePropertySpecification} from './style-spec';\nimport type {\n StyleSpecification,\n SourceSpecification,\n LayerSpecification,\n PropertyValueSpecification,\n DataDrivenPropertyValueSpecification\n} from './types';\n\nfunction getPropertyReference(propertyName): StylePropertySpecification {\n for (let i = 0; i < Reference.layout.length; i++) {\n for (const key in Reference[Reference.layout[i]]) {\n if (key === propertyName) return (Reference[Reference.layout[i]][key]: any);\n }\n }\n for (let i = 0; i < Reference.paint.length; i++) {\n for (const key in Reference[Reference.paint[i]]) {\n if (key === propertyName) return (Reference[Reference.paint[i]][key]: any);\n }\n }\n\n return (null: any);\n}\n\nexport function eachSource(style: StyleSpecification, callback: (_: SourceSpecification) => void) {\n for (const k in style.sources) {\n callback(style.sources[k]);\n }\n}\n\nexport function eachLayer(style: StyleSpecification, callback: (_: LayerSpecification) => void) {\n for (const layer of style.layers) {\n callback(layer);\n }\n}\n\ntype PropertyCallback = ({\n path: [string, 'paint' | 'layout', string], // [layerid, paint/layout, property key]\n key: string,\n value: PropertyValueSpecification | DataDrivenPropertyValueSpecification,\n reference: StylePropertySpecification,\n set: (PropertyValueSpecification | DataDrivenPropertyValueSpecification) => void\n}) => void;\n\nexport function eachProperty(\n style: StyleSpecification,\n options: {paint?: boolean, layout?: boolean},\n callback: PropertyCallback\n) {\n function inner(layer, propertyType: 'paint' | 'layout') {\n const properties = (layer[propertyType]: any);\n if (!properties) return;\n Object.keys(properties).forEach((key) => {\n callback({\n path: [layer.id, propertyType, key],\n key,\n value: properties[key],\n reference: getPropertyReference(key),\n set(x) {\n properties[key] = x;\n }\n });\n });\n }\n\n eachLayer(style, (layer) => {\n if (options.paint) {\n inner(layer, 'paint');\n }\n if (options.layout) {\n inner(layer, 'layout');\n }\n });\n}\n","\nimport URL from 'url';\nimport {eachSource, eachLayer, eachProperty} from '../visit';\n\nfunction eachLayout(layer, callback) {\n for (const k in layer) {\n if (k.indexOf('layout') === 0) {\n callback(layer[k], k);\n }\n }\n}\n\nfunction eachPaint(layer, callback) {\n for (const k in layer) {\n if (k.indexOf('paint') === 0) {\n callback(layer[k], k);\n }\n }\n}\n\nfunction resolveConstant(style, value) {\n if (typeof value === 'string' && value[0] === '@') {\n return resolveConstant(style, style.constants[value]);\n } else {\n return value;\n }\n}\n\nfunction isFunction(value) {\n return Array.isArray(value.stops);\n}\n\nfunction renameProperty(obj, from, to) {\n obj[to] = obj[from]; delete obj[from];\n}\n\nexport default function(style) {\n style.version = 8;\n\n // Rename properties, reverse coordinates in source and layers\n eachSource(style, (source) => {\n if (source.type === 'video' && source.url !== undefined) {\n renameProperty(source, 'url', 'urls');\n }\n if (source.type === 'video') {\n source.coordinates.forEach((coord) => {\n return coord.reverse();\n });\n }\n });\n\n eachLayer(style, (layer) => {\n eachLayout(layer, (layout) => {\n if (layout['symbol-min-distance'] !== undefined) {\n renameProperty(layout, 'symbol-min-distance', 'symbol-spacing');\n }\n });\n\n eachPaint(layer, (paint) => {\n if (paint['background-image'] !== undefined) {\n renameProperty(paint, 'background-image', 'background-pattern');\n }\n if (paint['line-image'] !== undefined) {\n renameProperty(paint, 'line-image', 'line-pattern');\n }\n if (paint['fill-image'] !== undefined) {\n renameProperty(paint, 'fill-image', 'fill-pattern');\n }\n });\n });\n\n // Inline Constants\n eachProperty(style, {paint: true, layout: true}, (property) => {\n const value = resolveConstant(style, property.value);\n\n if (isFunction(value)) {\n value.stops.forEach((stop) => {\n stop[1] = resolveConstant(style, stop[1]);\n });\n }\n\n property.set(value);\n });\n delete style.constants;\n\n eachLayer(style, (layer) => {\n // get rid of text-max-size, icon-max-size\n // turn text-size, icon-size into layout properties\n // https://github.com/mapbox/mapbox-gl-style-spec/issues/255\n\n eachLayout(layer, (layout) => {\n delete layout['text-max-size'];\n delete layout['icon-max-size'];\n });\n\n eachPaint(layer, (paint) => {\n if (paint['text-size']) {\n if (!layer.layout) layer.layout = {};\n layer.layout['text-size'] = paint['text-size'];\n delete paint['text-size'];\n }\n\n if (paint['icon-size']) {\n if (!layer.layout) layer.layout = {};\n layer.layout['icon-size'] = paint['icon-size'];\n delete paint['icon-size'];\n }\n });\n });\n\n function migrateFontstackURL(input) {\n const inputParsed = URL.parse(input);\n const inputPathnameParts = inputParsed.pathname.split('/');\n\n if (inputParsed.protocol !== 'mapbox:') {\n return input;\n\n } else if (inputParsed.hostname === 'fontstack') {\n assert(decodeURI(inputParsed.pathname) === '/{fontstack}/{range}.pbf');\n return 'mapbox://fonts/mapbox/{fontstack}/{range}.pbf';\n\n } else if (inputParsed.hostname === 'fonts') {\n assert(inputPathnameParts[1] === 'v1');\n assert(decodeURI(inputPathnameParts[3]) === '{fontstack}');\n assert(decodeURI(inputPathnameParts[4]) === '{range}.pbf');\n return `mapbox://fonts/${inputPathnameParts[2]}/{fontstack}/{range}.pbf`;\n\n } else {\n assert(false);\n }\n\n function assert(predicate) {\n if (!predicate) {\n throw new Error(`Invalid font url: \"${input}\"`);\n }\n }\n }\n\n if (style.glyphs) {\n style.glyphs = migrateFontstackURL(style.glyphs);\n }\n\n function migrateFontStack(font) {\n function splitAndTrim(string) {\n return string.split(',').map((s) => {\n return s.trim();\n });\n }\n\n if (Array.isArray(font)) {\n // Assume it's a previously migrated font-array.\n return font;\n\n } else if (typeof font === 'string') {\n return splitAndTrim(font);\n\n } else if (typeof font === 'object') {\n font.stops.forEach((stop) => {\n stop[1] = splitAndTrim(stop[1]);\n });\n return font;\n\n } else {\n throw new Error(\"unexpected font value\");\n }\n }\n\n eachLayer(style, (layer) => {\n eachLayout(layer, (layout) => {\n if (layout['text-font']) {\n layout['text-font'] = migrateFontStack(layout['text-font']);\n }\n });\n });\n\n // Reverse order of symbol layers. This is an imperfect migration.\n //\n // The order of a symbol layer in the layers list affects two things:\n // - how it is drawn relative to other layers (like oneway arrows below bridges)\n // - the placement priority compared to other layers\n //\n // It's impossible to reverse the placement priority without breaking the draw order\n // in some cases. This migration only reverses the order of symbol layers that\n // are above all other types of layers.\n //\n // Symbol layers that are at the top of the map preserve their priority.\n // Symbol layers that are below another type (line, fill) of layer preserve their draw order.\n\n let firstSymbolLayer = 0;\n for (let i = style.layers.length - 1; i >= 0; i--) {\n const layer = style.layers[i];\n if (layer.type !== 'symbol') {\n firstSymbolLayer = i + 1;\n break;\n }\n }\n\n const symbolLayers = style.layers.splice(firstSymbolLayer);\n symbolLayers.reverse();\n style.layers = style.layers.concat(symbolLayers);\n\n return style;\n}\n","// @flow\n\nexport default function (output: any, ...inputs: Array) {\n for (const input of inputs) {\n for (const k in input) {\n output[k] = input[k];\n }\n }\n return output;\n}\n","// @flow\n\nclass ParsingError extends Error {\n key: string;\n message: string;\n constructor(key: string, message: string) {\n super(message);\n this.message = message;\n this.key = key;\n }\n}\n\nexport default ParsingError;\n","// @flow\n\nimport type {Expression} from './expression';\n\n/**\n * Tracks `let` bindings during expression parsing.\n * @private\n */\nclass Scope {\n parent: ?Scope;\n bindings: {[_: string]: Expression};\n constructor(parent?: Scope, bindings: Array<[string, Expression]> = []) {\n this.parent = parent;\n this.bindings = {};\n for (const [name, expression] of bindings) {\n this.bindings[name] = expression;\n }\n }\n\n concat(bindings: Array<[string, Expression]>) {\n return new Scope(this, bindings);\n }\n\n get(name: string): Expression {\n if (this.bindings[name]) { return this.bindings[name]; }\n if (this.parent) { return this.parent.get(name); }\n throw new Error(`${name} not found in scope.`);\n }\n\n has(name: string): boolean {\n if (this.bindings[name]) return true;\n return this.parent ? this.parent.has(name) : false;\n }\n}\n\nexport default Scope;\n","// @flow\n\nexport type NullTypeT = { kind: 'null' };\nexport type NumberTypeT = { kind: 'number' };\nexport type StringTypeT = { kind: 'string' };\nexport type BooleanTypeT = { kind: 'boolean' };\nexport type ColorTypeT = { kind: 'color' };\nexport type ObjectTypeT = { kind: 'object' };\nexport type ValueTypeT = { kind: 'value' };\nexport type ErrorTypeT = { kind: 'error' };\nexport type CollatorTypeT = { kind: 'collator' };\nexport type FormattedTypeT = { kind: 'formatted' };\nexport type ResolvedImageTypeT = { kind: 'resolvedImage' };\n\nexport type EvaluationKind = 'constant' | 'source' | 'camera' | 'composite';\n\nexport type Type =\n NullTypeT |\n NumberTypeT |\n StringTypeT |\n BooleanTypeT |\n ColorTypeT |\n ObjectTypeT |\n ValueTypeT |\n ArrayType | // eslint-disable-line no-use-before-define\n ErrorTypeT |\n CollatorTypeT |\n FormattedTypeT |\n ResolvedImageTypeT\n\nexport type ArrayType = {\n kind: 'array',\n itemType: Type,\n N: ?number\n}\n\nexport type NativeType = 'number' | 'string' | 'boolean' | 'null' | 'array' | 'object'\n\nexport const NullType = {kind: 'null'};\nexport const NumberType = {kind: 'number'};\nexport const StringType = {kind: 'string'};\nexport const BooleanType = {kind: 'boolean'};\nexport const ColorType = {kind: 'color'};\nexport const ObjectType = {kind: 'object'};\nexport const ValueType = {kind: 'value'};\nexport const ErrorType = {kind: 'error'};\nexport const CollatorType = {kind: 'collator'};\nexport const FormattedType = {kind: 'formatted'};\nexport const ResolvedImageType = {kind: 'resolvedImage'};\n\nexport function array(itemType: Type, N: ?number): ArrayType {\n return {\n kind: 'array',\n itemType,\n N\n };\n}\n\nexport function toString(type: Type): string {\n if (type.kind === 'array') {\n const itemType = toString(type.itemType);\n return typeof type.N === 'number' ?\n `array<${itemType}, ${type.N}>` :\n type.itemType.kind === 'value' ? 'array' : `array<${itemType}>`;\n } else {\n return type.kind;\n }\n}\n\nconst valueMemberTypes = [\n NullType,\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n FormattedType,\n ObjectType,\n array(ValueType),\n ResolvedImageType\n];\n\n/**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message.\n * @private\n */\nexport function checkSubtype(expected: Type, t: Type): ?string {\n if (t.kind === 'error') {\n // Error is a subtype of every type\n return null;\n } else if (expected.kind === 'array') {\n if (t.kind === 'array' &&\n ((t.N === 0 && t.itemType.kind === 'value') || !checkSubtype(expected.itemType, t.itemType)) &&\n (typeof expected.N !== 'number' || expected.N === t.N)) {\n return null;\n }\n } else if (expected.kind === t.kind) {\n return null;\n } else if (expected.kind === 'value') {\n for (const memberType of valueMemberTypes) {\n if (!checkSubtype(memberType, t)) {\n return null;\n }\n }\n }\n\n return `Expected ${toString(expected)} but found ${toString(t)} instead.`;\n}\n\nexport function isValidType(provided: Type, allowedTypes: Array): boolean {\n return allowedTypes.some(t => t.kind === provided.kind);\n}\n\nexport function isValidNativeType(provided: any, allowedTypes: Array): boolean {\n return allowedTypes.some(t => {\n if (t === 'null') {\n return provided === null;\n } else if (t === 'array') {\n return Array.isArray(provided);\n } else if (t === 'object') {\n return provided && !Array.isArray(provided) && typeof provided === 'object';\n } else {\n return t === typeof provided;\n }\n });\n}\n","// (c) Dean McNamee , 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"rebeccapurple\": [102,51,153,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n","// @flow\n\nimport {parseCSSColor} from 'csscolorparser';\n\n/**\n * An RGBA color value. Create instances from color strings using the static\n * method `Color.parse`. The constructor accepts RGB channel values in the range\n * `[0, 1]`, premultiplied by A.\n *\n * @param {number} r The red channel.\n * @param {number} g The green channel.\n * @param {number} b The blue channel.\n * @param {number} a The alpha channel.\n * @private\n */\nclass Color {\n r: number;\n g: number;\n b: number;\n a: number;\n\n constructor(r: number, g: number, b: number, a: number = 1) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n static black: Color;\n static white: Color;\n static transparent: Color;\n static red: Color;\n\n /**\n * Parses valid CSS color strings and returns a `Color` instance.\n * @returns A `Color` instance, or `undefined` if the input is not a valid color string.\n */\n static parse(input?: string | Color | null): Color | void {\n if (!input) {\n return undefined;\n }\n\n if (input instanceof Color) {\n return input;\n }\n\n if (typeof input !== 'string') {\n return undefined;\n }\n\n const rgba = parseCSSColor(input);\n if (!rgba) {\n return undefined;\n }\n\n return new Color(\n rgba[0] / 255 * rgba[3],\n rgba[1] / 255 * rgba[3],\n rgba[2] / 255 * rgba[3],\n rgba[3]\n );\n }\n\n /**\n * Returns an RGBA string representing the color value.\n *\n * @returns An RGBA string.\n * @example\n * var purple = new Color.parse('purple');\n * purple.toString; // = \"rgba(128,0,128,1)\"\n * var translucentGreen = new Color.parse('rgba(26, 207, 26, .73)');\n * translucentGreen.toString(); // = \"rgba(26,207,26,0.73)\"\n */\n toString(): string {\n const [r, g, b, a] = this.toArray();\n return `rgba(${Math.round(r)},${Math.round(g)},${Math.round(b)},${a})`;\n }\n\n toArray(): [number, number, number, number] {\n const {r, g, b, a} = this;\n return a === 0 ? [0, 0, 0, 0] : [\n r * 255 / a,\n g * 255 / a,\n b * 255 / a,\n a\n ];\n }\n}\n\nColor.black = new Color(0, 0, 0, 1);\nColor.white = new Color(1, 1, 1, 1);\nColor.transparent = new Color(0, 0, 0, 0);\nColor.red = new Color(1, 0, 0, 1);\n\nexport default Color;\n","// @flow\n\n// Flow type declarations for Intl cribbed from\n// https://github.com/facebook/flow/issues/1270\n\ndeclare var Intl: {\n Collator: Class\n};\n\ndeclare class Intl$Collator {\n constructor (\n locales?: string | string[],\n options?: CollatorOptions\n ): Intl$Collator;\n\n static (\n locales?: string | string[],\n options?: CollatorOptions\n ): Intl$Collator;\n\n compare (a: string, b: string): number;\n\n resolvedOptions(): any;\n}\n\ntype CollatorOptions = {\n localeMatcher?: 'lookup' | 'best fit',\n usage?: 'sort' | 'search',\n sensitivity?: 'base' | 'accent' | 'case' | 'variant',\n ignorePunctuation?: boolean,\n numeric?: boolean,\n caseFirst?: 'upper' | 'lower' | 'false'\n}\n\nexport default class Collator {\n locale: string | null;\n sensitivity: 'base' | 'accent' | 'case' | 'variant';\n collator: Intl$Collator;\n\n constructor(caseSensitive: boolean, diacriticSensitive: boolean, locale: string | null) {\n if (caseSensitive)\n this.sensitivity = diacriticSensitive ? 'variant' : 'case';\n else\n this.sensitivity = diacriticSensitive ? 'accent' : 'base';\n\n this.locale = locale;\n this.collator = new Intl.Collator(this.locale ? this.locale : [],\n {sensitivity: this.sensitivity, usage: 'search'});\n }\n\n compare(lhs: string, rhs: string): number {\n return this.collator.compare(lhs, rhs);\n }\n\n resolvedLocale(): string {\n // We create a Collator without \"usage: search\" because we don't want\n // the search options encoded in our result (e.g. \"en-u-co-search\")\n return new Intl.Collator(this.locale ? this.locale : [])\n .resolvedOptions().locale;\n }\n}\n","// @flow\nimport type Color from '../../util/color';\nimport type ResolvedImage from '../types/resolved_image';\n\nexport class FormattedSection {\n text: string;\n image: ResolvedImage | null;\n scale: number | null;\n fontStack: string | null;\n textColor: Color | null;\n\n constructor(text: string, image: ResolvedImage | null, scale: number | null, fontStack: string | null, textColor: Color | null) {\n this.text = text;\n this.image = image;\n this.scale = scale;\n this.fontStack = fontStack;\n this.textColor = textColor;\n }\n}\n\nexport default class Formatted {\n sections: Array;\n\n constructor(sections: Array) {\n this.sections = sections;\n }\n\n static fromString(unformatted: string): Formatted {\n return new Formatted([new FormattedSection(unformatted, null, null, null, null)]);\n }\n\n isEmpty(): boolean {\n if (this.sections.length === 0) return true;\n return !this.sections.some(section => section.text.length !== 0 ||\n (section.image && section.image.name.length !== 0));\n }\n\n static factory(text: Formatted | string): Formatted {\n if (text instanceof Formatted) {\n return text;\n } else {\n return Formatted.fromString(text);\n }\n }\n\n toString(): string {\n if (this.sections.length === 0) return '';\n return this.sections.map(section => section.text).join('');\n }\n\n serialize(): Array {\n const serialized: Array = [\"format\"];\n for (const section of this.sections) {\n if (section.image) {\n serialized.push([\"image\", section.image.name]);\n continue;\n }\n serialized.push(section.text);\n const options: { [key: string]: mixed } = {};\n if (section.fontStack) {\n options[\"text-font\"] = [\"literal\", section.fontStack.split(',')];\n }\n if (section.scale) {\n options[\"font-scale\"] = section.scale;\n }\n if (section.textColor) {\n options[\"text-color\"] = ([\"rgba\"]: Array).concat(section.textColor.toArray());\n }\n serialized.push(options);\n }\n return serialized;\n }\n}\n","// @flow\n\nexport type ResolvedImageOptions = {\n name: string,\n available: boolean\n};\n\nexport default class ResolvedImage {\n name: string;\n available: boolean;\n\n constructor(options: ResolvedImageOptions) {\n this.name = options.name;\n this.available = options.available;\n }\n\n toString(): string {\n return this.name;\n }\n\n static fromString(name: string): ResolvedImage | null {\n if (!name) return null; // treat empty values as no image\n return new ResolvedImage({name, available: false});\n }\n\n serialize(): Array {\n return [\"image\", this.name];\n }\n}\n","// @flow\n\nimport assert from 'assert';\n\nimport Color from '../util/color';\nimport Collator from './types/collator';\nimport Formatted from './types/formatted';\nimport ResolvedImage from './types/resolved_image';\nimport {NullType, NumberType, StringType, BooleanType, ColorType, ObjectType, ValueType, CollatorType, FormattedType, ResolvedImageType, array} from './types';\n\nimport type {Type} from './types';\n\nexport function validateRGBA(r: mixed, g: mixed, b: mixed, a?: mixed): string | null {\n if (!(\n typeof r === 'number' && r >= 0 && r <= 255 &&\n typeof g === 'number' && g >= 0 && g <= 255 &&\n typeof b === 'number' && b >= 0 && b <= 255\n )) {\n const value = typeof a === 'number' ? [r, g, b, a] : [r, g, b];\n return `Invalid rgba value [${value.join(', ')}]: 'r', 'g', and 'b' must be between 0 and 255.`;\n }\n\n if (!(\n typeof a === 'undefined' || (typeof a === 'number' && a >= 0 && a <= 1)\n )) {\n return `Invalid rgba value [${[r, g, b, a].join(', ')}]: 'a' must be between 0 and 1.`;\n }\n\n return null;\n}\n\nexport type Value = null | string | boolean | number | Color | Collator | Formatted | ResolvedImage | $ReadOnlyArray | { +[string]: Value }\n\nexport function isValue(mixed: mixed): boolean {\n if (mixed === null) {\n return true;\n } else if (typeof mixed === 'string') {\n return true;\n } else if (typeof mixed === 'boolean') {\n return true;\n } else if (typeof mixed === 'number') {\n return true;\n } else if (mixed instanceof Color) {\n return true;\n } else if (mixed instanceof Collator) {\n return true;\n } else if (mixed instanceof Formatted) {\n return true;\n } else if (mixed instanceof ResolvedImage) {\n return true;\n } else if (Array.isArray(mixed)) {\n for (const item of mixed) {\n if (!isValue(item)) {\n return false;\n }\n }\n return true;\n } else if (typeof mixed === 'object') {\n for (const key in mixed) {\n if (!isValue(mixed[key])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n}\n\nexport function typeOf(value: Value): Type {\n if (value === null) {\n return NullType;\n } else if (typeof value === 'string') {\n return StringType;\n } else if (typeof value === 'boolean') {\n return BooleanType;\n } else if (typeof value === 'number') {\n return NumberType;\n } else if (value instanceof Color) {\n return ColorType;\n } else if (value instanceof Collator) {\n return CollatorType;\n } else if (value instanceof Formatted) {\n return FormattedType;\n } else if (value instanceof ResolvedImage) {\n return ResolvedImageType;\n } else if (Array.isArray(value)) {\n const length = value.length;\n let itemType: Type | typeof undefined;\n\n for (const item of value) {\n const t = typeOf(item);\n if (!itemType) {\n itemType = t;\n } else if (itemType === t) {\n continue;\n } else {\n itemType = ValueType;\n break;\n }\n }\n\n return array(itemType || ValueType, length);\n } else {\n assert(typeof value === 'object');\n return ObjectType;\n }\n}\n\nexport function toString(value: Value) {\n const type = typeof value;\n if (value === null) {\n return '';\n } else if (type === 'string' || type === 'number' || type === 'boolean') {\n return String(value);\n } else if (value instanceof Color || value instanceof Formatted || value instanceof ResolvedImage) {\n return value.toString();\n } else {\n return JSON.stringify(value);\n }\n}\n\nexport {Color, Collator};\n","// @flow\n\nimport assert from 'assert';\nimport {isValue, typeOf, Color} from '../values';\nimport Formatted from '../types/formatted';\n\nimport type {Type} from '../types';\nimport type {Value} from '../values';\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\n\nclass Literal implements Expression {\n type: Type;\n value: Value;\n\n constructor(type: Type, value: Value) {\n this.type = type;\n this.value = value;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext) {\n if (args.length !== 2)\n return context.error(`'literal' expression requires exactly one argument, but found ${args.length - 1} instead.`);\n\n if (!isValue(args[1]))\n return context.error(`invalid value`);\n\n const value = (args[1]: any);\n let type = typeOf(value);\n\n // special case: infer the item type if possible for zero-length arrays\n const expected = context.expectedType;\n if (\n type.kind === 'array' &&\n type.N === 0 &&\n expected &&\n expected.kind === 'array' &&\n (typeof expected.N !== 'number' || expected.N === 0)\n ) {\n type = expected;\n }\n\n return new Literal(type, value);\n }\n\n evaluate() {\n return this.value;\n }\n\n eachChild() {}\n\n outputDefined() {\n return true;\n }\n\n serialize(): Array {\n if (this.type.kind === 'array' || this.type.kind === 'object') {\n return [\"literal\", this.value];\n } else if (this.value instanceof Color) {\n // Constant-folding can generate Literal expressions that you\n // couldn't actually generate with a \"literal\" expression,\n // so we have to implement an equivalent serialization here\n return [\"rgba\"].concat(this.value.toArray());\n } else if (this.value instanceof Formatted) {\n // Same as Color\n return this.value.serialize();\n } else {\n assert(this.value === null ||\n typeof this.value === 'string' ||\n typeof this.value === 'number' ||\n typeof this.value === 'boolean');\n return (this.value: any);\n }\n }\n}\n\nexport default Literal;\n","// @flow\n\nclass RuntimeError {\n name: string;\n message: string;\n\n constructor(message: string) {\n this.name = 'ExpressionEvaluationError';\n this.message = message;\n }\n\n toJSON() {\n return this.message;\n }\n}\n\nexport default RuntimeError;\n","// @flow\n\nimport assert from 'assert';\n\nimport {\n ObjectType,\n ValueType,\n StringType,\n NumberType,\n BooleanType,\n checkSubtype,\n toString,\n array\n} from '../types';\nimport RuntimeError from '../runtime_error';\nimport {typeOf} from '../values';\n\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nconst types = {\n string: StringType,\n number: NumberType,\n boolean: BooleanType,\n object: ObjectType\n};\n\nclass Assertion implements Expression {\n type: Type;\n args: Array;\n\n constructor(type: Type, args: Array) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression {\n if (args.length < 2)\n return context.error(`Expected at least one argument.`);\n\n let i = 1;\n let type;\n\n const name: string = (args[0]: any);\n if (name === 'array') {\n let itemType;\n if (args.length > 2) {\n const type = args[1];\n if (typeof type !== 'string' || !(type in types) || type === 'object')\n return context.error('The item type argument of \"array\" must be one of string, number, boolean', 1);\n itemType = types[type];\n i++;\n } else {\n itemType = ValueType;\n }\n\n let N;\n if (args.length > 3) {\n if (args[2] !== null &&\n (typeof args[2] !== 'number' ||\n args[2] < 0 ||\n args[2] !== Math.floor(args[2]))\n ) {\n return context.error('The length argument to \"array\" must be a positive integer literal', 2);\n }\n N = args[2];\n i++;\n }\n\n type = array(itemType, N);\n } else {\n assert(types[name], name);\n type = types[name];\n }\n\n const parsed = [];\n for (; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input) return null;\n parsed.push(input);\n }\n\n return new Assertion(type, parsed);\n }\n\n evaluate(ctx: EvaluationContext) {\n for (let i = 0; i < this.args.length; i++) {\n const value = this.args[i].evaluate(ctx);\n const error = checkSubtype(this.type, typeOf(value));\n if (!error) {\n return value;\n } else if (i === this.args.length - 1) {\n throw new RuntimeError(`Expected value to be of type ${toString(this.type)}, but found ${toString(typeOf(value))} instead.`);\n }\n }\n\n assert(false);\n return null;\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return this.args.every(arg => arg.outputDefined());\n }\n\n serialize(): Array {\n const type = this.type;\n const serialized = [type.kind];\n if (type.kind === 'array') {\n const itemType = type.itemType;\n if (itemType.kind === 'string' ||\n itemType.kind === 'number' ||\n itemType.kind === 'boolean') {\n serialized.push(itemType.kind);\n const N = type.N;\n if (typeof N === 'number' || this.args.length > 1) {\n serialized.push(N);\n }\n }\n }\n return serialized.concat(this.args.map(arg => arg.serialize()));\n }\n}\n\nexport default Assertion;\n","// @flow\n\nimport {NumberType, ValueType, FormattedType, array, StringType, ColorType, ResolvedImageType} from '../types';\nimport Formatted, {FormattedSection} from '../types/formatted';\nimport {toString, typeOf} from '../values';\n\nimport type {Expression} from '../expression';\nimport type EvaluationContext from '../evaluation_context';\nimport type ParsingContext from '../parsing_context';\nimport type {Type} from '../types';\n\ntype FormattedSectionExpression = {\n // Content of a section may be Image expression or other\n // type of expression that is coercable to 'string'.\n content: Expression,\n scale: Expression | null;\n font: Expression | null;\n textColor: Expression | null;\n}\n\nexport default class FormatExpression implements Expression {\n type: Type;\n sections: Array;\n\n constructor(sections: Array) {\n this.type = FormattedType;\n this.sections = sections;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression {\n if (args.length < 2) {\n return context.error(`Expected at least one argument.`);\n }\n\n const firstArg = args[1];\n if (!Array.isArray(firstArg) && typeof firstArg === 'object') {\n return context.error(`First argument must be an image or text section.`);\n }\n\n const sections: Array = [];\n let nextTokenMayBeObject = false;\n for (let i = 1; i <= args.length - 1; ++i) {\n const arg = (args[i]: any);\n\n if (nextTokenMayBeObject && typeof arg === \"object\" && !Array.isArray(arg)) {\n nextTokenMayBeObject = false;\n\n let scale = null;\n if (arg['font-scale']) {\n scale = context.parse(arg['font-scale'], 1, NumberType);\n if (!scale) return null;\n }\n\n let font = null;\n if (arg['text-font']) {\n font = context.parse(arg['text-font'], 1, array(StringType));\n if (!font) return null;\n }\n\n let textColor = null;\n if (arg['text-color']) {\n textColor = context.parse(arg['text-color'], 1, ColorType);\n if (!textColor) return null;\n }\n\n const lastExpression = sections[sections.length - 1];\n lastExpression.scale = scale;\n lastExpression.font = font;\n lastExpression.textColor = textColor;\n } else {\n const content = context.parse(args[i], 1, ValueType);\n if (!content) return null;\n\n const kind = content.type.kind;\n if (kind !== 'string' && kind !== 'value' && kind !== 'null' && kind !== 'resolvedImage')\n return context.error(`Formatted text type must be 'string', 'value', 'image' or 'null'.`);\n\n nextTokenMayBeObject = true;\n sections.push({content, scale: null, font: null, textColor: null});\n }\n }\n\n return new FormatExpression(sections);\n }\n\n evaluate(ctx: EvaluationContext) {\n const evaluateSection = section => {\n const evaluatedContent = section.content.evaluate(ctx);\n if (typeOf(evaluatedContent) === ResolvedImageType) {\n return new FormattedSection('', evaluatedContent, null, null, null);\n }\n\n return new FormattedSection(\n toString(evaluatedContent),\n null,\n section.scale ? section.scale.evaluate(ctx) : null,\n section.font ? section.font.evaluate(ctx).join(',') : null,\n section.textColor ? section.textColor.evaluate(ctx) : null\n );\n };\n\n return new Formatted(this.sections.map(evaluateSection));\n }\n\n eachChild(fn: (_: Expression) => void) {\n for (const section of this.sections) {\n fn(section.content);\n if (section.scale) {\n fn(section.scale);\n }\n if (section.font) {\n fn(section.font);\n }\n if (section.textColor) {\n fn(section.textColor);\n }\n }\n }\n\n outputDefined() {\n // Technically the combinatoric set of all children\n // Usually, this.text will be undefined anyway\n return false;\n }\n\n serialize() {\n const serialized = [\"format\"];\n for (const section of this.sections) {\n serialized.push(section.content.serialize());\n const options = {};\n if (section.scale) {\n options['font-scale'] = section.scale.serialize();\n }\n if (section.font) {\n options['text-font'] = section.font.serialize();\n }\n if (section.textColor) {\n options['text-color'] = section.textColor.serialize();\n }\n serialized.push(options);\n }\n return serialized;\n }\n}\n","// @flow\n\nimport {ResolvedImageType, StringType} from '../types';\nimport ResolvedImage from '../types/resolved_image';\n\nimport type {Expression} from '../expression';\nimport type EvaluationContext from '../evaluation_context';\nimport type ParsingContext from '../parsing_context';\nimport type {Type} from '../types';\n\nexport default class ImageExpression implements Expression {\n type: Type;\n input: Expression;\n\n constructor(input: Expression) {\n this.type = ResolvedImageType;\n this.input = input;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression {\n if (args.length !== 2) {\n return context.error(`Expected two arguments.`);\n }\n\n const name = context.parse(args[1], 1, StringType);\n if (!name) return context.error(`No image name provided.`);\n\n return new ImageExpression(name);\n }\n\n evaluate(ctx: EvaluationContext) {\n const evaluatedImageName = this.input.evaluate(ctx);\n\n const value = ResolvedImage.fromString(evaluatedImageName);\n if (value && ctx.availableImages) value.available = ctx.availableImages.indexOf(evaluatedImageName) > -1;\n\n return value;\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n }\n\n outputDefined() {\n // The output of image is determined by the list of available images in the evaluation context\n return false;\n }\n\n serialize() {\n return [\"image\", this.input.serialize()];\n }\n}\n","// @flow\n\nimport assert from 'assert';\n\nimport {BooleanType, ColorType, NumberType, StringType, ValueType} from '../types';\nimport {Color, toString as valueToString, validateRGBA} from '../values';\nimport RuntimeError from '../runtime_error';\nimport Formatted from '../types/formatted';\nimport FormatExpression from '../definitions/format';\nimport ImageExpression from '../definitions/image';\nimport ResolvedImage from '../types/resolved_image';\n\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nconst types = {\n 'to-boolean': BooleanType,\n 'to-color': ColorType,\n 'to-number': NumberType,\n 'to-string': StringType\n};\n\n/**\n * Special form for error-coalescing coercion expressions \"to-number\",\n * \"to-color\". Since these coercions can fail at runtime, they accept multiple\n * arguments, only evaluating one at a time until one succeeds.\n *\n * @private\n */\nclass Coercion implements Expression {\n type: Type;\n args: Array;\n\n constructor(type: Type, args: Array) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression {\n if (args.length < 2)\n return context.error(`Expected at least one argument.`);\n\n const name: string = (args[0]: any);\n assert(types[name], name);\n\n if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2)\n return context.error(`Expected one argument.`);\n\n const type = types[name];\n\n const parsed = [];\n for (let i = 1; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input) return null;\n parsed.push(input);\n }\n\n return new Coercion(type, parsed);\n }\n\n evaluate(ctx: EvaluationContext) {\n if (this.type.kind === 'boolean') {\n return Boolean(this.args[0].evaluate(ctx));\n } else if (this.type.kind === 'color') {\n let input;\n let error;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n error = null;\n if (input instanceof Color) {\n return input;\n } else if (typeof input === 'string') {\n const c = ctx.parseColor(input);\n if (c) return c;\n } else if (Array.isArray(input)) {\n if (input.length < 3 || input.length > 4) {\n error = `Invalid rbga value ${JSON.stringify(input)}: expected an array containing either three or four numeric values.`;\n } else {\n error = validateRGBA(input[0], input[1], input[2], input[3]);\n }\n if (!error) {\n return new Color((input[0]: any) / 255, (input[1]: any) / 255, (input[2]: any) / 255, (input[3]: any));\n }\n }\n }\n throw new RuntimeError(error || `Could not parse color from value '${typeof input === 'string' ? input : String(JSON.stringify(input))}'`);\n } else if (this.type.kind === 'number') {\n let value = null;\n for (const arg of this.args) {\n value = arg.evaluate(ctx);\n if (value === null) return 0;\n const num = Number(value);\n if (isNaN(num)) continue;\n return num;\n }\n throw new RuntimeError(`Could not convert ${JSON.stringify(value)} to number.`);\n } else if (this.type.kind === 'formatted') {\n // There is no explicit 'to-formatted' but this coercion can be implicitly\n // created by properties that expect the 'formatted' type.\n return Formatted.fromString(valueToString(this.args[0].evaluate(ctx)));\n } else if (this.type.kind === 'resolvedImage') {\n return ResolvedImage.fromString(valueToString(this.args[0].evaluate(ctx)));\n } else {\n return valueToString(this.args[0].evaluate(ctx));\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return this.args.every(arg => arg.outputDefined());\n }\n\n serialize() {\n if (this.type.kind === 'formatted') {\n return new FormatExpression([{content: this.args[0], scale: null, font: null, textColor: null}]).serialize();\n }\n\n if (this.type.kind === 'resolvedImage') {\n return new ImageExpression(this.args[0]).serialize();\n }\n\n const serialized = [`to-${this.type.kind}`];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Coercion;\n","// @flow\n\nimport {Color} from './values';\nimport type {FormattedSection} from './types/formatted';\nimport type {GlobalProperties, Feature, FeatureState} from './index';\nimport type {CanonicalTileID} from '../../source/tile_id';\n\nconst geometryTypes = ['Unknown', 'Point', 'LineString', 'Polygon'];\n\nclass EvaluationContext {\n globals: GlobalProperties;\n feature: ?Feature;\n featureState: ?FeatureState;\n formattedSection: ?FormattedSection;\n availableImages: ?Array;\n canonical: ?CanonicalTileID;\n\n _parseColorCache: {[_: string]: ?Color};\n\n constructor() {\n this.globals = (null: any);\n this.feature = null;\n this.featureState = null;\n this.formattedSection = null;\n this._parseColorCache = {};\n this.availableImages = null;\n this.canonical = null;\n }\n\n id() {\n return this.feature && 'id' in this.feature ? this.feature.id : null;\n }\n\n geometryType() {\n return this.feature ? typeof this.feature.type === 'number' ? geometryTypes[this.feature.type] : this.feature.type : null;\n }\n\n geometry() {\n return this.feature && 'geometry' in this.feature ? this.feature.geometry : null;\n }\n\n canonicalID() {\n return this.canonical;\n }\n\n properties() {\n return this.feature && this.feature.properties || {};\n }\n\n parseColor(input: string): ?Color {\n let cached = this._parseColorCache[input];\n if (!cached) {\n cached = this._parseColorCache[input] = Color.parse(input);\n }\n return cached;\n }\n}\n\nexport default EvaluationContext;\n","// @flow\n\nimport {toString} from './types';\n\nimport ParsingContext from './parsing_context';\nimport EvaluationContext from './evaluation_context';\nimport assert from 'assert';\n\nimport type {Expression, ExpressionRegistry} from './expression';\nimport type {Type} from './types';\nimport type {Value} from './values';\n\nexport type Varargs = {| type: Type |};\ntype Signature = Array | Varargs;\ntype Evaluate = (EvaluationContext, Array) => Value;\ntype Definition = [Type, Signature, Evaluate] |\n {|type: Type, overloads: Array<[Signature, Evaluate]>|};\n\nclass CompoundExpression implements Expression {\n name: string;\n type: Type;\n _evaluate: Evaluate;\n args: Array;\n\n static definitions: {[_: string]: Definition };\n\n constructor(name: string, type: Type, evaluate: Evaluate, args: Array) {\n this.name = name;\n this.type = type;\n this._evaluate = evaluate;\n this.args = args;\n }\n\n evaluate(ctx: EvaluationContext) {\n return this._evaluate(ctx, this.args);\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined() {\n return false;\n }\n\n serialize(): Array {\n return [this.name].concat(this.args.map(arg => arg.serialize()));\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression {\n const op: string = (args[0]: any);\n const definition = CompoundExpression.definitions[op];\n if (!definition) {\n return context.error(`Unknown expression \"${op}\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n }\n\n // Now check argument types against each signature\n const type = Array.isArray(definition) ?\n definition[0] : definition.type;\n\n const availableOverloads = Array.isArray(definition) ?\n [[definition[1], definition[2]]] :\n definition.overloads;\n\n const overloads = availableOverloads.filter(([signature]) => (\n !Array.isArray(signature) || // varags\n signature.length === args.length - 1 // correct param count\n ));\n\n let signatureContext: ParsingContext = (null: any);\n\n for (const [params, evaluate] of overloads) {\n // Use a fresh context for each attempted signature so that, if\n // we eventually succeed, we haven't polluted `context.errors`.\n signatureContext = new ParsingContext(context.registry, context.path, null, context.scope);\n\n // First parse all the args, potentially coercing to the\n // types expected by this overload.\n const parsedArgs: Array = [];\n let argParseFailed = false;\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n const expectedType = Array.isArray(params) ?\n params[i - 1] :\n params.type;\n\n const parsed = signatureContext.parse(arg, 1 + parsedArgs.length, expectedType);\n if (!parsed) {\n argParseFailed = true;\n break;\n }\n parsedArgs.push(parsed);\n }\n if (argParseFailed) {\n // Couldn't coerce args of this overload to expected type, move\n // on to next one.\n continue;\n }\n\n if (Array.isArray(params)) {\n if (params.length !== parsedArgs.length) {\n signatureContext.error(`Expected ${params.length} arguments, but found ${parsedArgs.length} instead.`);\n continue;\n }\n }\n\n for (let i = 0; i < parsedArgs.length; i++) {\n const expected = Array.isArray(params) ? params[i] : params.type;\n const arg = parsedArgs[i];\n signatureContext.concat(i + 1).checkSubtype(expected, arg.type);\n }\n\n if (signatureContext.errors.length === 0) {\n return new CompoundExpression(op, type, evaluate, parsedArgs);\n }\n }\n\n assert(!signatureContext || signatureContext.errors.length > 0);\n\n if (overloads.length === 1) {\n context.errors.push(...signatureContext.errors);\n } else {\n const expected = overloads.length ? overloads : availableOverloads;\n const signatures = expected\n .map(([params]) => stringifySignature(params))\n .join(' | ');\n\n const actualTypes = [];\n // For error message, re-parse arguments without trying to\n // apply any coercions\n for (let i = 1; i < args.length; i++) {\n const parsed = context.parse(args[i], 1 + actualTypes.length);\n if (!parsed) return null;\n actualTypes.push(toString(parsed.type));\n }\n context.error(`Expected arguments of type ${signatures}, but found (${actualTypes.join(', ')}) instead.`);\n }\n\n return null;\n }\n\n static register(\n registry: ExpressionRegistry,\n definitions: {[_: string]: Definition }\n ) {\n assert(!CompoundExpression.definitions);\n CompoundExpression.definitions = definitions;\n for (const name in definitions) {\n registry[name] = CompoundExpression;\n }\n }\n}\n\nfunction stringifySignature(signature: Signature): string {\n if (Array.isArray(signature)) {\n return `(${signature.map(toString).join(', ')})`;\n } else {\n return `(${toString(signature.type)}...)`;\n }\n}\n\nexport default CompoundExpression;\n","// @flow\n\nimport {StringType, BooleanType, CollatorType} from '../types';\nimport Collator from '../types/collator';\n\nimport type {Expression} from '../expression';\nimport type EvaluationContext from '../evaluation_context';\nimport type ParsingContext from '../parsing_context';\nimport type {Type} from '../types';\n\nexport default class CollatorExpression implements Expression {\n type: Type;\n caseSensitive: Expression;\n diacriticSensitive: Expression;\n locale: Expression | null;\n\n constructor(caseSensitive: Expression, diacriticSensitive: Expression, locale: Expression | null) {\n this.type = CollatorType;\n this.locale = locale;\n this.caseSensitive = caseSensitive;\n this.diacriticSensitive = diacriticSensitive;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression {\n if (args.length !== 2)\n return context.error(`Expected one argument.`);\n\n const options = (args[1]: any);\n if (typeof options !== \"object\" || Array.isArray(options))\n return context.error(`Collator options argument must be an object.`);\n\n const caseSensitive = context.parse(\n options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType);\n if (!caseSensitive) return null;\n\n const diacriticSensitive = context.parse(\n options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType);\n if (!diacriticSensitive) return null;\n\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale) return null;\n }\n\n return new CollatorExpression(caseSensitive, diacriticSensitive, locale);\n }\n\n evaluate(ctx: EvaluationContext) {\n return new Collator(this.caseSensitive.evaluate(ctx), this.diacriticSensitive.evaluate(ctx), this.locale ? this.locale.evaluate(ctx) : null);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.caseSensitive);\n fn(this.diacriticSensitive);\n if (this.locale) {\n fn(this.locale);\n }\n }\n\n outputDefined() {\n // Technically the set of possible outputs is the combinatoric set of Collators produced\n // by all possible outputs of locale/caseSensitive/diacriticSensitive\n // But for the primary use of Collators in comparison operators, we ignore the Collator's\n // possible outputs anyway, so we can get away with leaving this false for now.\n return false;\n }\n\n serialize() {\n const options = {};\n options['case-sensitive'] = this.caseSensitive.serialize();\n options['diacritic-sensitive'] = this.diacriticSensitive.serialize();\n if (this.locale) {\n options['locale'] = this.locale.serialize();\n }\n return [\"collator\", options];\n }\n}\n","// @flow\n\nimport {isValue} from '../values';\nimport type {Type} from '../types';\nimport {BooleanType} from '../types';\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {GeoJSON, GeoJSONPolygon, GeoJSONMultiPolygon} from '@mapbox/geojson-types';\nimport Point from '@mapbox/point-geometry';\nimport type {CanonicalTileID} from '../../../source/tile_id';\n\ntype GeoJSONPolygons =| GeoJSONPolygon | GeoJSONMultiPolygon;\n\n// minX, minY, maxX, maxY\ntype BBox = [number, number, number, number];\nconst EXTENT = 8192;\n\nfunction updateBBox(bbox: BBox, coord: Point) {\n bbox[0] = Math.min(bbox[0], coord[0]);\n bbox[1] = Math.min(bbox[1], coord[1]);\n bbox[2] = Math.max(bbox[2], coord[0]);\n bbox[3] = Math.max(bbox[3], coord[1]);\n}\n\nfunction mercatorXfromLng(lng: number) {\n return (180 + lng) / 360;\n}\n\nfunction mercatorYfromLat(lat: number) {\n return (180 - (180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360)))) / 360;\n}\n\nfunction boxWithinBox(bbox1: BBox, bbox2: BBox) {\n if (bbox1[0] <= bbox2[0]) return false;\n if (bbox1[2] >= bbox2[2]) return false;\n if (bbox1[1] <= bbox2[1]) return false;\n if (bbox1[3] >= bbox2[3]) return false;\n return true;\n}\n\nfunction getTileCoordinates(p, canonical: CanonicalTileID) {\n const x = mercatorXfromLng(p[0]);\n const y = mercatorYfromLat(p[1]);\n const tilesAtZoom = Math.pow(2, canonical.z);\n return [Math.round(x * tilesAtZoom * EXTENT), Math.round(y * tilesAtZoom * EXTENT)];\n}\n\nfunction onBoundary(p, p1, p2) {\n const x1 = p[0] - p1[0];\n const y1 = p[1] - p1[1];\n const x2 = p[0] - p2[0];\n const y2 = p[1] - p2[1];\n return (x1 * y2 - x2 * y1 === 0) && (x1 * x2 <= 0) && (y1 * y2 <= 0);\n}\n\nfunction rayIntersect(p, p1, p2) {\n return ((p1[1] > p[1]) !== (p2[1] > p[1])) && (p[0] < (p2[0] - p1[0]) * (p[1] - p1[1]) / (p2[1] - p1[1]) + p1[0]);\n}\n\n// ray casting algorithm for detecting if point is in polygon\nfunction pointWithinPolygon(point, rings) {\n let inside = false;\n for (let i = 0, len = rings.length; i < len; i++) {\n const ring = rings[i];\n for (let j = 0, len2 = ring.length; j < len2 - 1; j++) {\n if (onBoundary(point, ring[j], ring[j + 1])) return false;\n if (rayIntersect(point, ring[j], ring[j + 1])) inside = !inside;\n }\n }\n return inside;\n}\n\nfunction pointWithinPolygons(point, polygons) {\n for (let i = 0; i < polygons.length; i++) {\n if (pointWithinPolygon(point, polygons[i])) return true;\n }\n return false;\n}\n\nfunction perp(v1, v2) {\n return (v1[0] * v2[1] - v1[1] * v2[0]);\n}\n\n// check if p1 and p2 are in different sides of line segment q1->q2\nfunction twoSided(p1, p2, q1, q2) {\n // q1->p1 (x1, y1), q1->p2 (x2, y2), q1->q2 (x3, y3)\n const x1 = p1[0] - q1[0];\n const y1 = p1[1] - q1[1];\n const x2 = p2[0] - q1[0];\n const y2 = p2[1] - q1[1];\n const x3 = q2[0] - q1[0];\n const y3 = q2[1] - q1[1];\n const det1 = (x1 * y3 - x3 * y1);\n const det2 = (x2 * y3 - x3 * y2);\n if ((det1 > 0 && det2 < 0) || (det1 < 0 && det2 > 0)) return true;\n return false;\n}\n// a, b are end points for line segment1, c and d are end points for line segment2\nfunction lineIntersectLine(a, b, c, d) {\n // check if two segments are parallel or not\n // precondition is end point a, b is inside polygon, if line a->b is\n // parallel to polygon edge c->d, then a->b won't intersect with c->d\n const vectorP = [b[0] - a[0], b[1] - a[1]];\n const vectorQ = [d[0] - c[0], d[1] - c[1]];\n if (perp(vectorQ, vectorP) === 0) return false;\n\n // If lines are intersecting with each other, the relative location should be:\n // a and b lie in different sides of segment c->d\n // c and d lie in different sides of segment a->b\n if (twoSided(a, b, c, d) && twoSided(c, d, a, b)) return true;\n return false;\n}\n\nfunction lineIntersectPolygon(p1, p2, polygon) {\n for (const ring of polygon) {\n // loop through every edge of the ring\n for (let j = 0; j < ring.length - 1; ++j) {\n if (lineIntersectLine(p1, p2, ring[j], ring[j + 1])) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction lineStringWithinPolygon(line, polygon) {\n // First, check if geometry points of line segments are all inside polygon\n for (let i = 0; i < line.length; ++i) {\n if (!pointWithinPolygon(line[i], polygon)) {\n return false;\n }\n }\n\n // Second, check if there is line segment intersecting polygon edge\n for (let i = 0; i < line.length - 1; ++i) {\n if (lineIntersectPolygon(line[i], line[i + 1], polygon)) {\n return false;\n }\n }\n return true;\n}\n\nfunction lineStringWithinPolygons(line, polygons) {\n for (let i = 0; i < polygons.length; i++) {\n if (lineStringWithinPolygon(line, polygons[i])) return true;\n }\n return false;\n}\n\nfunction getTilePolygon(coordinates, bbox, canonical) {\n const polygon = [];\n for (let i = 0; i < coordinates.length; i++) {\n const ring = [];\n for (let j = 0; j < coordinates[i].length; j++) {\n const coord = getTileCoordinates(coordinates[i][j], canonical);\n updateBBox(bbox, coord);\n ring.push(coord);\n }\n polygon.push(ring);\n }\n return polygon;\n}\n\nfunction getTilePolygons(coordinates, bbox, canonical) {\n const polygons = [];\n for (let i = 0; i < coordinates.length; i++) {\n const polygon = getTilePolygon(coordinates[i], bbox, canonical);\n polygons.push(polygon);\n }\n return polygons;\n}\n\nfunction updatePoint(p, bbox, polyBBox, worldSize) {\n if (p[0] < polyBBox[0] || p[0] > polyBBox[2]) {\n const halfWorldSize = worldSize * 0.5;\n let shift = (p[0] - polyBBox[0] > halfWorldSize) ? -worldSize : (polyBBox[0] - p[0] > halfWorldSize) ? worldSize : 0;\n if (shift === 0) {\n shift = (p[0] - polyBBox[2] > halfWorldSize) ? -worldSize : (polyBBox[2] - p[0] > halfWorldSize) ? worldSize : 0;\n }\n p[0] += shift;\n }\n updateBBox(bbox, p);\n}\n\nfunction resetBBox(bbox) {\n bbox[0] = bbox[1] = Infinity;\n bbox[2] = bbox[3] = -Infinity;\n}\n\nfunction getTilePoints(geometry, pointBBox, polyBBox, canonical) {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n const tilePoints = [];\n for (const points of geometry) {\n for (const point of points) {\n const p = [point.x + shifts[0], point.y + shifts[1]];\n updatePoint(p, pointBBox, polyBBox, worldSize);\n tilePoints.push(p);\n }\n }\n return tilePoints;\n}\n\nfunction getTileLines(geometry, lineBBox, polyBBox, canonical) {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n const tileLines = [];\n for (const line of geometry) {\n const tileLine = [];\n for (const point of line) {\n const p = [point.x + shifts[0], point.y + shifts[1]];\n updateBBox(lineBBox, p);\n tileLine.push(p);\n }\n tileLines.push(tileLine);\n }\n if (lineBBox[2] - lineBBox[0] <= worldSize / 2) {\n resetBBox(lineBBox);\n for (const line of tileLines) {\n for (const p of line) {\n updatePoint(p, lineBBox, polyBBox, worldSize);\n }\n }\n }\n return tileLines;\n}\n\nfunction pointsWithinPolygons(ctx: EvaluationContext, polygonGeometry: GeoJSONPolygons) {\n const pointBBox = [Infinity, Infinity, -Infinity, -Infinity];\n const polyBBox = [Infinity, Infinity, -Infinity, -Infinity];\n\n const canonical = ctx.canonicalID();\n\n if (polygonGeometry.type === 'Polygon') {\n const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n if (!boxWithinBox(pointBBox, polyBBox)) return false;\n\n for (const point of tilePoints) {\n if (!pointWithinPolygon(point, tilePolygon)) return false;\n }\n }\n if (polygonGeometry.type === 'MultiPolygon') {\n const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n if (!boxWithinBox(pointBBox, polyBBox)) return false;\n\n for (const point of tilePoints) {\n if (!pointWithinPolygons(point, tilePolygons)) return false;\n }\n }\n\n return true;\n}\n\nfunction linesWithinPolygons(ctx: EvaluationContext, polygonGeometry: GeoJSONPolygons) {\n const lineBBox = [Infinity, Infinity, -Infinity, -Infinity];\n const polyBBox = [Infinity, Infinity, -Infinity, -Infinity];\n\n const canonical = ctx.canonicalID();\n\n if (polygonGeometry.type === 'Polygon') {\n const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n if (!boxWithinBox(lineBBox, polyBBox)) return false;\n\n for (const line of tileLines) {\n if (!lineStringWithinPolygon(line, tilePolygon)) return false;\n }\n }\n if (polygonGeometry.type === 'MultiPolygon') {\n const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n if (!boxWithinBox(lineBBox, polyBBox)) return false;\n\n for (const line of tileLines) {\n if (!lineStringWithinPolygons(line, tilePolygons)) return false;\n }\n }\n return true;\n}\n\nclass Within implements Expression {\n type: Type;\n geojson: GeoJSON\n geometries: GeoJSONPolygons;\n\n constructor(geojson: GeoJSON, geometries: GeoJSONPolygons) {\n this.type = BooleanType;\n this.geojson = geojson;\n this.geometries = geometries;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext) {\n if (args.length !== 2)\n return context.error(`'within' expression requires exactly one argument, but found ${args.length - 1} instead.`);\n if (isValue(args[1])) {\n const geojson = (args[1]: Object);\n if (geojson.type === 'FeatureCollection') {\n for (let i = 0; i < geojson.features.length; ++i) {\n const type = geojson.features[i].geometry.type;\n if (type === 'Polygon' || type === 'MultiPolygon') {\n return new Within(geojson, geojson.features[i].geometry);\n }\n }\n } else if (geojson.type === 'Feature') {\n const type = geojson.geometry.type;\n if (type === 'Polygon' || type === 'MultiPolygon') {\n return new Within(geojson, geojson.geometry);\n }\n } else if (geojson.type === 'Polygon' || geojson.type === 'MultiPolygon') {\n return new Within(geojson, geojson);\n }\n }\n return context.error(`'within' expression requires valid geojson object that contains polygon geometry type.`);\n }\n\n evaluate(ctx: EvaluationContext) {\n if (ctx.geometry() != null && ctx.canonicalID() != null) {\n if (ctx.geometryType() === 'Point') {\n return pointsWithinPolygons(ctx, this.geometries);\n } else if (ctx.geometryType() === 'LineString') {\n return linesWithinPolygons(ctx, this.geometries);\n }\n }\n return false;\n }\n\n eachChild() {}\n\n outputDefined(): boolean {\n return true;\n }\n\n serialize(): Array {\n return [\"within\", this.geojson];\n }\n\n}\n\nexport default Within;\n","// @flow\n\nimport CompoundExpression from './compound_expression';\nimport Within from './definitions/within';\nimport type {Expression} from './expression.js';\n\nfunction isFeatureConstant(e: Expression) {\n if (e instanceof CompoundExpression) {\n if (e.name === 'get' && e.args.length === 1) {\n return false;\n } else if (e.name === 'feature-state') {\n return false;\n } else if (e.name === 'has' && e.args.length === 1) {\n return false;\n } else if (\n e.name === 'properties' ||\n e.name === 'geometry-type' ||\n e.name === 'id'\n ) {\n return false;\n } else if (/^filter-/.test(e.name)) {\n return false;\n }\n }\n\n if (e instanceof Within) {\n return false;\n }\n\n let result = true;\n e.eachChild(arg => {\n if (result && !isFeatureConstant(arg)) { result = false; }\n });\n return result;\n}\n\nfunction isStateConstant(e: Expression) {\n if (e instanceof CompoundExpression) {\n if (e.name === 'feature-state') {\n return false;\n }\n }\n let result = true;\n e.eachChild(arg => {\n if (result && !isStateConstant(arg)) { result = false; }\n });\n return result;\n}\n\nfunction isGlobalPropertyConstant(e: Expression, properties: Array) {\n if (e instanceof CompoundExpression && properties.indexOf(e.name) >= 0) { return false; }\n let result = true;\n e.eachChild((arg) => {\n if (result && !isGlobalPropertyConstant(arg, properties)) { result = false; }\n });\n return result;\n}\n\nexport {isFeatureConstant, isGlobalPropertyConstant, isStateConstant};\n","// @flow\n\nimport type {Type} from '../types';\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\n\nclass Var implements Expression {\n type: Type;\n name: string;\n boundExpression: Expression;\n\n constructor(name: string, boundExpression: Expression) {\n this.type = boundExpression.type;\n this.name = name;\n this.boundExpression = boundExpression;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext) {\n if (args.length !== 2 || typeof args[1] !== 'string')\n return context.error(`'var' expression requires exactly one string literal argument.`);\n\n const name = args[1];\n if (!context.scope.has(name)) {\n return context.error(`Unknown variable \"${name}\". Make sure \"${name}\" has been bound in an enclosing \"let\" expression before using it.`, 1);\n }\n\n return new Var(name, context.scope.get(name));\n }\n\n evaluate(ctx: EvaluationContext) {\n return this.boundExpression.evaluate(ctx);\n }\n\n eachChild() {}\n\n outputDefined() {\n return false;\n }\n\n serialize() {\n return [\"var\", this.name];\n }\n}\n\nexport default Var;\n","// @flow\n\nimport Scope from './scope';\nimport {checkSubtype} from './types';\nimport ParsingError from './parsing_error';\nimport Literal from './definitions/literal';\nimport Assertion from './definitions/assertion';\nimport Coercion from './definitions/coercion';\nimport EvaluationContext from './evaluation_context';\nimport CompoundExpression from './compound_expression';\nimport CollatorExpression from './definitions/collator';\nimport Within from './definitions/within';\nimport {isGlobalPropertyConstant, isFeatureConstant} from './is_constant';\nimport Var from './definitions/var';\n\nimport type {Expression, ExpressionRegistry} from './expression';\nimport type {Type} from './types';\n\n/**\n * State associated parsing at a given point in an expression tree.\n * @private\n */\nclass ParsingContext {\n registry: ExpressionRegistry;\n path: Array;\n key: string;\n scope: Scope;\n errors: Array;\n\n // The expected type of this expression. Provided only to allow Expression\n // implementations to infer argument types: Expression#parse() need not\n // check that the output type of the parsed expression matches\n // `expectedType`.\n expectedType: ?Type;\n\n constructor(\n registry: ExpressionRegistry,\n path: Array = [],\n expectedType: ?Type,\n scope: Scope = new Scope(),\n errors: Array = []\n ) {\n this.registry = registry;\n this.path = path;\n this.key = path.map(part => `[${part}]`).join('');\n this.scope = scope;\n this.errors = errors;\n this.expectedType = expectedType;\n }\n\n /**\n * @param expr the JSON expression to parse\n * @param index the optional argument index if this expression is an argument of a parent expression that's being parsed\n * @param options\n * @param options.omitTypeAnnotations set true to omit inferred type annotations. Caller beware: with this option set, the parsed expression's type will NOT satisfy `expectedType` if it would normally be wrapped in an inferred annotation.\n * @private\n */\n parse(\n expr: mixed,\n index?: number,\n expectedType?: ?Type,\n bindings?: Array<[string, Expression]>,\n options: {typeAnnotation?: 'assert' | 'coerce' | 'omit'} = {}\n ): ?Expression {\n if (index) {\n return this.concat(index, expectedType, bindings)._parse(expr, options);\n }\n return this._parse(expr, options);\n }\n\n _parse(expr: mixed, options: {typeAnnotation?: 'assert' | 'coerce' | 'omit'}): ?Expression {\n if (expr === null || typeof expr === 'string' || typeof expr === 'boolean' || typeof expr === 'number') {\n expr = ['literal', expr];\n }\n\n function annotate(parsed, type, typeAnnotation: 'assert' | 'coerce' | 'omit') {\n if (typeAnnotation === 'assert') {\n return new Assertion(type, [parsed]);\n } else if (typeAnnotation === 'coerce') {\n return new Coercion(type, [parsed]);\n } else {\n return parsed;\n }\n }\n\n if (Array.isArray(expr)) {\n if (expr.length === 0) {\n return this.error(`Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].`);\n }\n\n const op = expr[0];\n if (typeof op !== 'string') {\n this.error(`Expression name must be a string, but found ${typeof op} instead. If you wanted a literal array, use [\"literal\", [...]].`, 0);\n return null;\n }\n\n const Expr = this.registry[op];\n if (Expr) {\n let parsed = Expr.parse(expr, this);\n if (!parsed) return null;\n\n if (this.expectedType) {\n const expected = this.expectedType;\n const actual = parsed.type;\n\n // When we expect a number, string, boolean, or array but have a value, wrap it in an assertion.\n // When we expect a color or formatted string, but have a string or value, wrap it in a coercion.\n // Otherwise, we do static type-checking.\n //\n // These behaviors are overridable for:\n // * The \"coalesce\" operator, which needs to omit type annotations.\n // * String-valued properties (e.g. `text-field`), where coercion is more convenient than assertion.\n //\n if ((expected.kind === 'string' || expected.kind === 'number' || expected.kind === 'boolean' || expected.kind === 'object' || expected.kind === 'array') && actual.kind === 'value') {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'assert');\n } else if ((expected.kind === 'color' || expected.kind === 'formatted' || expected.kind === 'resolvedImage') && (actual.kind === 'value' || actual.kind === 'string')) {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'coerce');\n } else if (this.checkSubtype(expected, actual)) {\n return null;\n }\n }\n\n // If an expression's arguments are all literals, we can evaluate\n // it immediately and replace it with a literal value in the\n // parsed/compiled result. Expressions that expect an image should\n // not be resolved here so we can later get the available images.\n if (!(parsed instanceof Literal) && (parsed.type.kind !== 'resolvedImage') && isConstant(parsed)) {\n const ec = new EvaluationContext();\n try {\n parsed = new Literal(parsed.type, parsed.evaluate(ec));\n } catch (e) {\n this.error(e.message);\n return null;\n }\n }\n\n return parsed;\n }\n\n return this.error(`Unknown expression \"${op}\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n } else if (typeof expr === 'undefined') {\n return this.error(`'undefined' value invalid. Use null instead.`);\n } else if (typeof expr === 'object') {\n return this.error(`Bare objects invalid. Use [\"literal\", {...}] instead.`);\n } else {\n return this.error(`Expected an array, but found ${typeof expr} instead.`);\n }\n }\n\n /**\n * Returns a copy of this context suitable for parsing the subexpression at\n * index `index`, optionally appending to 'let' binding map.\n *\n * Note that `errors` property, intended for collecting errors while\n * parsing, is copied by reference rather than cloned.\n * @private\n */\n concat(index: number, expectedType?: ?Type, bindings?: Array<[string, Expression]>) {\n const path = typeof index === 'number' ? this.path.concat(index) : this.path;\n const scope = bindings ? this.scope.concat(bindings) : this.scope;\n return new ParsingContext(\n this.registry,\n path,\n expectedType || null,\n scope,\n this.errors\n );\n }\n\n /**\n * Push a parsing (or type checking) error into the `this.errors`\n * @param error The message\n * @param keys Optionally specify the source of the error at a child\n * of the current expression at `this.key`.\n * @private\n */\n error(error: string, ...keys: Array) {\n const key = `${this.key}${keys.map(k => `[${k}]`).join('')}`;\n this.errors.push(new ParsingError(key, error));\n }\n\n /**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message and also pushes it to `this.errors`.\n */\n checkSubtype(expected: Type, t: Type): ?string {\n const error = checkSubtype(expected, t);\n if (error) this.error(error);\n return error;\n }\n}\n\nexport default ParsingContext;\n\nfunction isConstant(expression: Expression) {\n if (expression instanceof Var) {\n return isConstant(expression.boundExpression);\n } else if (expression instanceof CompoundExpression && expression.name === 'error') {\n return false;\n } else if (expression instanceof CollatorExpression) {\n // Although the results of a Collator expression with fixed arguments\n // generally shouldn't change between executions, we can't serialize them\n // as constant expressions because results change based on environment.\n return false;\n } else if (expression instanceof Within) {\n return false;\n }\n\n const isTypeAnnotation = expression instanceof Coercion ||\n expression instanceof Assertion;\n\n let childrenConstant = true;\n expression.eachChild(child => {\n // We can _almost_ assume that if `expressions` children are constant,\n // they would already have been evaluated to Literal values when they\n // were parsed. Type annotations are the exception, because they might\n // have been inferred and added after a child was parsed.\n\n // So we recurse into isConstant() for the children of type annotations,\n // but otherwise simply check whether they are Literals.\n if (isTypeAnnotation) {\n childrenConstant = childrenConstant && isConstant(child);\n } else {\n childrenConstant = childrenConstant && child instanceof Literal;\n }\n });\n if (!childrenConstant) {\n return false;\n }\n\n return isFeatureConstant(expression) &&\n isGlobalPropertyConstant(expression, ['zoom', 'heatmap-density', 'line-progress', 'accumulated', 'is-supported-script']);\n}\n","// @flow\n\nimport RuntimeError from './runtime_error';\n\nimport type {Expression} from './expression';\n\nexport type Stops = Array<[number, Expression]>;\n\n/**\n * Returns the index of the last stop <= input, or 0 if it doesn't exist.\n * @private\n */\nexport function findStopLessThanOrEqualTo(stops: Array, input: number) {\n const lastIndex = stops.length - 1;\n let lowerIndex = 0;\n let upperIndex = lastIndex;\n let currentIndex = 0;\n let currentValue, nextValue;\n\n while (lowerIndex <= upperIndex) {\n currentIndex = Math.floor((lowerIndex + upperIndex) / 2);\n currentValue = stops[currentIndex];\n nextValue = stops[currentIndex + 1];\n\n if (currentValue <= input) {\n if (currentIndex === lastIndex || input < nextValue) { // Search complete\n return currentIndex;\n }\n\n lowerIndex = currentIndex + 1;\n } else if (currentValue > input) {\n upperIndex = currentIndex - 1;\n } else {\n throw new RuntimeError('Input is not a number.');\n }\n }\n\n return 0;\n}\n","// @flow\n\nimport {NumberType} from '../types';\n\nimport {findStopLessThanOrEqualTo} from '../stops';\n\nimport type {Stops} from '../stops';\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nclass Step implements Expression {\n type: Type;\n\n input: Expression;\n labels: Array;\n outputs: Array;\n\n constructor(type: Type, input: Expression, stops: Stops) {\n this.type = type;\n this.input = input;\n\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext) {\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n }\n\n if ((args.length - 1) % 2 !== 0) {\n return context.error(`Expected an even number of arguments.`);\n }\n\n const input = context.parse(args[1], 1, NumberType);\n if (!input) return null;\n\n const stops: Stops = [];\n\n let outputType: Type = (null: any);\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n\n for (let i = 1; i < args.length; i += 2) {\n const label = i === 1 ? -Infinity : args[i];\n const value = args[i + 1];\n\n const labelKey = i;\n const valueKey = i + 1;\n\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n stops.push([label, parsed]);\n }\n\n return new Step(outputType, input, stops);\n }\n\n evaluate(ctx: EvaluationContext) {\n const labels = this.labels;\n const outputs = this.outputs;\n\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n\n const value = ((this.input.evaluate(ctx): any): number);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n\n const index = findStopLessThanOrEqualTo(labels, value);\n return outputs[index].evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n\n outputDefined(): boolean {\n return this.outputs.every(out => out.outputDefined());\n }\n\n serialize() {\n const serialized = [\"step\", this.input.serialize()];\n for (let i = 0; i < this.labels.length; i++) {\n if (i > 0) {\n serialized.push(this.labels[i]);\n }\n serialized.push(this.outputs[i].serialize());\n }\n return serialized;\n }\n}\n\nexport default Step;\n","/*\n * Copyright (C) 2008 Apple Inc. All Rights Reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * Ported from Webkit\n * http://svn.webkit.org/repository/webkit/trunk/Source/WebCore/platform/graphics/UnitBezier.h\n */\n\nmodule.exports = UnitBezier;\n\nfunction UnitBezier(p1x, p1y, p2x, p2y) {\n // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).\n this.cx = 3.0 * p1x;\n this.bx = 3.0 * (p2x - p1x) - this.cx;\n this.ax = 1.0 - this.cx - this.bx;\n\n this.cy = 3.0 * p1y;\n this.by = 3.0 * (p2y - p1y) - this.cy;\n this.ay = 1.0 - this.cy - this.by;\n\n this.p1x = p1x;\n this.p1y = p2y;\n this.p2x = p2x;\n this.p2y = p2y;\n}\n\nUnitBezier.prototype.sampleCurveX = function(t) {\n // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.\n return ((this.ax * t + this.bx) * t + this.cx) * t;\n};\n\nUnitBezier.prototype.sampleCurveY = function(t) {\n return ((this.ay * t + this.by) * t + this.cy) * t;\n};\n\nUnitBezier.prototype.sampleCurveDerivativeX = function(t) {\n return (3.0 * this.ax * t + 2.0 * this.bx) * t + this.cx;\n};\n\nUnitBezier.prototype.solveCurveX = function(x, epsilon) {\n if (typeof epsilon === 'undefined') epsilon = 1e-6;\n\n var t0, t1, t2, x2, i;\n\n // First try a few iterations of Newton's method -- normally very fast.\n for (t2 = x, i = 0; i < 8; i++) {\n\n x2 = this.sampleCurveX(t2) - x;\n if (Math.abs(x2) < epsilon) return t2;\n\n var d2 = this.sampleCurveDerivativeX(t2);\n if (Math.abs(d2) < 1e-6) break;\n\n t2 = t2 - x2 / d2;\n }\n\n // Fall back to the bisection method for reliability.\n t0 = 0.0;\n t1 = 1.0;\n t2 = x;\n\n if (t2 < t0) return t0;\n if (t2 > t1) return t1;\n\n while (t0 < t1) {\n\n x2 = this.sampleCurveX(t2);\n if (Math.abs(x2 - x) < epsilon) return t2;\n\n if (x > x2) {\n t0 = t2;\n } else {\n t1 = t2;\n }\n\n t2 = (t1 - t0) * 0.5 + t0;\n }\n\n // Failure.\n return t2;\n};\n\nUnitBezier.prototype.solve = function(x, epsilon) {\n return this.sampleCurveY(this.solveCurveX(x, epsilon));\n};\n","// @flow\n\nimport Color from './color';\n\nexport function number(a: number, b: number, t: number) {\n return (a * (1 - t)) + (b * t);\n}\n\nexport function color(from: Color, to: Color, t: number) {\n return new Color(\n number(from.r, to.r, t),\n number(from.g, to.g, t),\n number(from.b, to.b, t),\n number(from.a, to.a, t)\n );\n}\n\nexport function array(from: Array, to: Array, t: number): Array {\n return from.map((d, i) => {\n return number(d, to[i], t);\n });\n}\n","// @flow\n\nimport Color from './color';\n\nimport {number as interpolateNumber} from './interpolate';\n\ntype LABColor = {\n l: number,\n a: number,\n b: number,\n alpha: number\n};\n\ntype HCLColor = {\n h: number,\n c: number,\n l: number,\n alpha: number\n};\n\n// Constants\nconst Xn = 0.950470, // D65 standard referent\n Yn = 1,\n Zn = 1.088830,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1,\n deg2rad = Math.PI / 180,\n rad2deg = 180 / Math.PI;\n\n// Utilities\nfunction xyz2lab(t: number) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t: number) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction xyz2rgb(x: number) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2xyz(x: number) {\n x /= 255;\n return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\n// LAB\nfunction rgbToLab(rgbColor: Color): LABColor {\n const b = rgb2xyz(rgbColor.r),\n a = rgb2xyz(rgbColor.g),\n l = rgb2xyz(rgbColor.b),\n x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),\n y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),\n z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);\n\n return {\n l: 116 * y - 16,\n a: 500 * (x - y),\n b: 200 * (y - z),\n alpha: rgbColor.a\n };\n}\n\nfunction labToRgb(labColor: LABColor): Color {\n let y = (labColor.l + 16) / 116,\n x = isNaN(labColor.a) ? y : y + labColor.a / 500,\n z = isNaN(labColor.b) ? y : y - labColor.b / 200;\n y = Yn * lab2xyz(y);\n x = Xn * lab2xyz(x);\n z = Zn * lab2xyz(z);\n return new Color(\n xyz2rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),\n xyz2rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z),\n labColor.alpha\n );\n}\n\nfunction interpolateLab(from: LABColor, to: LABColor, t: number) {\n return {\n l: interpolateNumber(from.l, to.l, t),\n a: interpolateNumber(from.a, to.a, t),\n b: interpolateNumber(from.b, to.b, t),\n alpha: interpolateNumber(from.alpha, to.alpha, t)\n };\n}\n\n// HCL\nfunction rgbToHcl(rgbColor: Color): HCLColor {\n const {l, a, b} = rgbToLab(rgbColor);\n const h = Math.atan2(b, a) * rad2deg;\n return {\n h: h < 0 ? h + 360 : h,\n c: Math.sqrt(a * a + b * b),\n l,\n alpha: rgbColor.a\n };\n}\n\nfunction hclToRgb(hclColor: HCLColor): Color {\n const h = hclColor.h * deg2rad,\n c = hclColor.c,\n l = hclColor.l;\n return labToRgb({\n l,\n a: Math.cos(h) * c,\n b: Math.sin(h) * c,\n alpha: hclColor.alpha\n });\n}\n\nfunction interpolateHue(a: number, b: number, t: number) {\n const d = b - a;\n return a + t * (d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d);\n}\n\nfunction interpolateHcl(from: HCLColor, to: HCLColor, t: number) {\n return {\n h: interpolateHue(from.h, to.h, t),\n c: interpolateNumber(from.c, to.c, t),\n l: interpolateNumber(from.l, to.l, t),\n alpha: interpolateNumber(from.alpha, to.alpha, t)\n };\n}\n\nexport const lab = {\n forward: rgbToLab,\n reverse: labToRgb,\n interpolate: interpolateLab\n};\n\nexport const hcl = {\n forward: rgbToHcl,\n reverse: hclToRgb,\n interpolate: interpolateHcl\n};\n","// @flow\n\nimport UnitBezier from '@mapbox/unitbezier';\n\nimport * as interpolate from '../../util/interpolate';\nimport {toString, NumberType, ColorType} from '../types';\nimport {findStopLessThanOrEqualTo} from '../stops';\nimport {hcl, lab} from '../../util/color_spaces';\n\nimport type {Stops} from '../stops';\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nexport type InterpolationType =\n { name: 'linear' } |\n { name: 'exponential', base: number } |\n { name: 'cubic-bezier', controlPoints: [number, number, number, number] };\n\nclass Interpolate implements Expression {\n type: Type;\n\n operator: 'interpolate' | 'interpolate-hcl' | 'interpolate-lab';\n interpolation: InterpolationType;\n input: Expression;\n labels: Array;\n outputs: Array;\n\n constructor(type: Type, operator: 'interpolate' | 'interpolate-hcl' | 'interpolate-lab', interpolation: InterpolationType, input: Expression, stops: Stops) {\n this.type = type;\n this.operator = operator;\n this.interpolation = interpolation;\n this.input = input;\n\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n\n static interpolationFactor(interpolation: InterpolationType, input: number, lower: number, upper: number) {\n let t = 0;\n if (interpolation.name === 'exponential') {\n t = exponentialInterpolation(input, interpolation.base, lower, upper);\n } else if (interpolation.name === 'linear') {\n t = exponentialInterpolation(input, 1, lower, upper);\n } else if (interpolation.name === 'cubic-bezier') {\n const c = interpolation.controlPoints;\n const ub = new UnitBezier(c[0], c[1], c[2], c[3]);\n t = ub.solve(exponentialInterpolation(input, 1, lower, upper));\n }\n return t;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext) {\n let [operator, interpolation, input, ...rest] = args;\n\n if (!Array.isArray(interpolation) || interpolation.length === 0) {\n return context.error(`Expected an interpolation type expression.`, 1);\n }\n\n if (interpolation[0] === 'linear') {\n interpolation = {name: 'linear'};\n } else if (interpolation[0] === 'exponential') {\n const base = interpolation[1];\n if (typeof base !== 'number')\n return context.error(`Exponential interpolation requires a numeric base.`, 1, 1);\n interpolation = {\n name: 'exponential',\n base\n };\n } else if (interpolation[0] === 'cubic-bezier') {\n const controlPoints = interpolation.slice(1);\n if (\n controlPoints.length !== 4 ||\n controlPoints.some(t => typeof t !== 'number' || t < 0 || t > 1)\n ) {\n return context.error('Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1);\n }\n\n interpolation = {\n name: 'cubic-bezier',\n controlPoints: (controlPoints: any)\n };\n } else {\n return context.error(`Unknown interpolation type ${String(interpolation[0])}`, 1, 0);\n }\n\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n }\n\n if ((args.length - 1) % 2 !== 0) {\n return context.error(`Expected an even number of arguments.`);\n }\n\n input = context.parse(input, 2, NumberType);\n if (!input) return null;\n\n const stops: Stops = [];\n\n let outputType: Type = (null: any);\n if (operator === 'interpolate-hcl' || operator === 'interpolate-lab') {\n outputType = ColorType;\n } else if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n\n for (let i = 0; i < rest.length; i += 2) {\n const label = rest[i];\n const value = rest[i + 1];\n\n const labelKey = i + 3;\n const valueKey = i + 4;\n\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n stops.push([label, parsed]);\n }\n\n if (outputType.kind !== 'number' &&\n outputType.kind !== 'color' &&\n !(\n outputType.kind === 'array' &&\n outputType.itemType.kind === 'number' &&\n typeof outputType.N === 'number'\n )\n ) {\n return context.error(`Type ${toString(outputType)} is not interpolatable.`);\n }\n\n return new Interpolate(outputType, (operator: any), interpolation, input, stops);\n }\n\n evaluate(ctx: EvaluationContext) {\n const labels = this.labels;\n const outputs = this.outputs;\n\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n\n const value = ((this.input.evaluate(ctx): any): number);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n\n const index = findStopLessThanOrEqualTo(labels, value);\n const lower = labels[index];\n const upper = labels[index + 1];\n const t = Interpolate.interpolationFactor(this.interpolation, value, lower, upper);\n\n const outputLower = outputs[index].evaluate(ctx);\n const outputUpper = outputs[index + 1].evaluate(ctx);\n\n if (this.operator === 'interpolate') {\n return (interpolate[this.type.kind.toLowerCase()]: any)(outputLower, outputUpper, t); // eslint-disable-line import/namespace\n } else if (this.operator === 'interpolate-hcl') {\n return hcl.reverse(hcl.interpolate(hcl.forward(outputLower), hcl.forward(outputUpper), t));\n } else {\n return lab.reverse(lab.interpolate(lab.forward(outputLower), lab.forward(outputUpper), t));\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n\n outputDefined(): boolean {\n return this.outputs.every(out => out.outputDefined());\n }\n\n serialize(): Array {\n let interpolation;\n if (this.interpolation.name === 'linear') {\n interpolation = [\"linear\"];\n } else if (this.interpolation.name === 'exponential') {\n if (this.interpolation.base === 1) {\n interpolation = [\"linear\"];\n } else {\n interpolation = [\"exponential\", this.interpolation.base];\n }\n } else {\n interpolation = [\"cubic-bezier\" ].concat(this.interpolation.controlPoints);\n }\n\n const serialized = [this.operator, interpolation, this.input.serialize()];\n\n for (let i = 0; i < this.labels.length; i++) {\n serialized.push(\n this.labels[i],\n this.outputs[i].serialize()\n );\n }\n return serialized;\n }\n}\n\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n * How it works: Two consecutive stop values define a (scaled and shifted) exponential function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n * = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`. In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n*/\nfunction exponentialInterpolation(input, base, lowerValue, upperValue) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n\nexport default Interpolate;\n","// @flow\n\nimport assert from 'assert';\n\nimport {checkSubtype, ValueType} from '../types';\nimport ResolvedImage from '../types/resolved_image';\n\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nclass Coalesce implements Expression {\n type: Type;\n args: Array;\n\n constructor(type: Type, args: Array) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext) {\n if (args.length < 2) {\n return context.error(\"Expectected at least one argument.\");\n }\n let outputType: Type = (null: any);\n const expectedType = context.expectedType;\n if (expectedType && expectedType.kind !== 'value') {\n outputType = expectedType;\n }\n const parsedArgs = [];\n\n for (const arg of args.slice(1)) {\n const parsed = context.parse(arg, 1 + parsedArgs.length, outputType, undefined, {typeAnnotation: 'omit'});\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n parsedArgs.push(parsed);\n }\n assert(outputType);\n\n // Above, we parse arguments without inferred type annotation so that\n // they don't produce a runtime error for `null` input, which would\n // preempt the desired null-coalescing behavior.\n // Thus, if any of our arguments would have needed an annotation, we\n // need to wrap the enclosing coalesce expression with it instead.\n const needsAnnotation = expectedType &&\n parsedArgs.some(arg => checkSubtype(expectedType, arg.type));\n\n return needsAnnotation ?\n new Coalesce(ValueType, parsedArgs) :\n new Coalesce((outputType: any), parsedArgs);\n }\n\n evaluate(ctx: EvaluationContext) {\n let result = null;\n let argCount = 0;\n let requestedImageName;\n for (const arg of this.args) {\n argCount++;\n result = arg.evaluate(ctx);\n // we need to keep track of the first requested image in a coalesce statement\n // if coalesce can't find a valid image, we return the first image name so styleimagemissing can fire\n if (result && result instanceof ResolvedImage && !result.available) {\n if (!requestedImageName) {\n requestedImageName = result.name;\n }\n result = null;\n if (argCount === this.args.length) {\n result = requestedImageName;\n }\n }\n\n if (result !== null) break;\n }\n return result;\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return this.args.every(arg => arg.outputDefined());\n }\n\n serialize() {\n const serialized = [\"coalesce\"];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Coalesce;\n","// @flow\n\nimport type {Type} from '../types';\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\n\nclass Let implements Expression {\n type: Type;\n bindings: Array<[string, Expression]>;\n result: Expression;\n\n constructor(bindings: Array<[string, Expression]>, result: Expression) {\n this.type = result.type;\n this.bindings = [].concat(bindings);\n this.result = result;\n }\n\n evaluate(ctx: EvaluationContext) {\n return this.result.evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n for (const binding of this.bindings) {\n fn(binding[1]);\n }\n fn(this.result);\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext) {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found ${args.length - 1} instead.`);\n\n const bindings: Array<[string, Expression]> = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const name = args[i];\n\n if (typeof name !== 'string') {\n return context.error(`Expected string, but found ${typeof name} instead.`, i);\n }\n\n if (/[^a-zA-Z0-9_]/.test(name)) {\n return context.error(`Variable names must contain only alphanumeric characters or '_'.`, i);\n }\n\n const value = context.parse(args[i + 1], i + 1);\n if (!value) return null;\n\n bindings.push([name, value]);\n }\n\n const result = context.parse(args[args.length - 1], args.length - 1, context.expectedType, bindings);\n if (!result) return null;\n\n return new Let(bindings, result);\n }\n\n outputDefined() {\n return this.result.outputDefined();\n }\n\n serialize() {\n const serialized = [\"let\"];\n for (const [name, expr] of this.bindings) {\n serialized.push(name, expr.serialize());\n }\n serialized.push(this.result.serialize());\n return serialized;\n }\n}\n\nexport default Let;\n","// @flow\n\nimport {array, ValueType, NumberType} from '../types';\n\nimport RuntimeError from '../runtime_error';\n\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type, ArrayType} from '../types';\nimport type {Value} from '../values';\n\nclass At implements Expression {\n type: Type;\n index: Expression;\n input: Expression;\n\n constructor(type: Type, index: Expression, input: Expression) {\n this.type = type;\n this.index = index;\n this.input = input;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext) {\n if (args.length !== 3)\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n\n const index = context.parse(args[1], 1, NumberType);\n const input = context.parse(args[2], 2, array(context.expectedType || ValueType));\n\n if (!index || !input) return null;\n\n const t: ArrayType = (input.type: any);\n return new At(t.itemType, index, input);\n }\n\n evaluate(ctx: EvaluationContext) {\n const index = ((this.index.evaluate(ctx): any): number);\n const array = ((this.input.evaluate(ctx): any): Array);\n\n if (index < 0) {\n throw new RuntimeError(`Array index out of bounds: ${index} < 0.`);\n }\n\n if (index >= array.length) {\n throw new RuntimeError(`Array index out of bounds: ${index} > ${array.length - 1}.`);\n }\n\n if (index !== Math.floor(index)) {\n throw new RuntimeError(`Array index must be an integer, but found ${index} instead.`);\n }\n\n return array[index];\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.index);\n fn(this.input);\n }\n\n outputDefined() {\n return false;\n }\n\n serialize() {\n return [\"at\", this.index.serialize(), this.input.serialize()];\n }\n}\n\nexport default At;\n","// @flow\n\nimport {BooleanType, StringType, ValueType, NullType, toString, NumberType, isValidType, isValidNativeType} from '../types';\nimport RuntimeError from '../runtime_error';\nimport {typeOf} from '../values';\n\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nclass In implements Expression {\n type: Type;\n needle: Expression;\n haystack: Expression;\n\n constructor(needle: Expression, haystack: Expression) {\n this.type = BooleanType;\n this.needle = needle;\n this.haystack = haystack;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext) {\n if (args.length !== 3) {\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n }\n\n const needle = context.parse(args[1], 1, ValueType);\n\n const haystack = context.parse(args[2], 2, ValueType);\n\n if (!needle || !haystack) return null;\n\n if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) {\n return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`);\n }\n\n return new In(needle, haystack);\n }\n\n evaluate(ctx: EvaluationContext) {\n const needle = (this.needle.evaluate(ctx): any);\n const haystack = (this.haystack.evaluate(ctx): any);\n\n if (!haystack) return false;\n\n if (!isValidNativeType(needle, ['boolean', 'string', 'number', 'null'])) {\n throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${toString(typeOf(needle))} instead.`);\n }\n\n if (!isValidNativeType(haystack, ['string', 'array'])) {\n throw new RuntimeError(`Expected second argument to be of type array or string, but found ${toString(typeOf(haystack))} instead.`);\n }\n\n return haystack.indexOf(needle) >= 0;\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.needle);\n fn(this.haystack);\n }\n\n outputDefined() {\n return true;\n }\n\n serialize() {\n return [\"in\", this.needle.serialize(), this.haystack.serialize()];\n }\n}\n\nexport default In;\n","// @flow\n\nimport {BooleanType, StringType, ValueType, NullType, toString, NumberType, isValidType, isValidNativeType} from '../types';\nimport RuntimeError from '../runtime_error';\nimport {typeOf} from '../values';\n\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nclass IndexOf implements Expression {\n type: Type;\n needle: Expression;\n haystack: Expression;\n fromIndex: ?Expression;\n\n constructor(needle: Expression, haystack: Expression, fromIndex?: Expression) {\n this.type = NumberType;\n this.needle = needle;\n this.haystack = haystack;\n this.fromIndex = fromIndex;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext) {\n if (args.length <= 2 || args.length >= 5) {\n return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`);\n }\n\n const needle = context.parse(args[1], 1, ValueType);\n\n const haystack = context.parse(args[2], 2, ValueType);\n\n if (!needle || !haystack) return null;\n if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) {\n return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`);\n }\n\n if (args.length === 4) {\n const fromIndex = context.parse(args[3], 3, NumberType);\n if (!fromIndex) return null;\n return new IndexOf(needle, haystack, fromIndex);\n } else {\n return new IndexOf(needle, haystack);\n }\n }\n\n evaluate(ctx: EvaluationContext) {\n const needle = (this.needle.evaluate(ctx): any);\n const haystack = (this.haystack.evaluate(ctx): any);\n\n if (!isValidNativeType(needle, ['boolean', 'string', 'number', 'null'])) {\n throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${toString(typeOf(needle))} instead.`);\n }\n\n if (!isValidNativeType(haystack, ['string', 'array'])) {\n throw new RuntimeError(`Expected second argument to be of type array or string, but found ${toString(typeOf(haystack))} instead.`);\n }\n\n if (this.fromIndex) {\n const fromIndex = (this.fromIndex.evaluate(ctx): number);\n return haystack.indexOf(needle, fromIndex);\n }\n\n return haystack.indexOf(needle);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.needle);\n fn(this.haystack);\n if (this.fromIndex) {\n fn(this.fromIndex);\n }\n }\n\n outputDefined() {\n return false;\n }\n\n serialize() {\n if (this.fromIndex != null && this.fromIndex !== undefined) {\n const fromIndex = this.fromIndex.serialize();\n return [\"index-of\", this.needle.serialize(), this.haystack.serialize(), fromIndex];\n }\n return [\"index-of\", this.needle.serialize(), this.haystack.serialize()];\n }\n}\n\nexport default IndexOf;\n","// @flow\n\nimport assert from 'assert';\n\nimport {typeOf} from '../values';\nimport {ValueType, type Type} from '../types';\n\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\n\n// Map input label values to output expression index\ntype Cases = {[number | string]: number};\n\nclass Match implements Expression {\n type: Type;\n inputType: Type;\n\n input: Expression;\n cases: Cases;\n outputs: Array;\n otherwise: Expression;\n\n constructor(inputType: Type, outputType: Type, input: Expression, cases: Cases, outputs: Array, otherwise: Expression) {\n this.inputType = inputType;\n this.type = outputType;\n this.input = input;\n this.cases = cases;\n this.outputs = outputs;\n this.otherwise = otherwise;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext) {\n if (args.length < 5)\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n if (args.length % 2 !== 1)\n return context.error(`Expected an even number of arguments.`);\n\n let inputType;\n let outputType;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n const cases = {};\n const outputs = [];\n for (let i = 2; i < args.length - 1; i += 2) {\n let labels = args[i];\n const value = args[i + 1];\n\n if (!Array.isArray(labels)) {\n labels = [labels];\n }\n\n const labelContext = context.concat(i);\n if (labels.length === 0) {\n return labelContext.error('Expected at least one branch label.');\n }\n\n for (const label of labels) {\n if (typeof label !== 'number' && typeof label !== 'string') {\n return labelContext.error(`Branch labels must be numbers or strings.`);\n } else if (typeof label === 'number' && Math.abs(label) > Number.MAX_SAFE_INTEGER) {\n return labelContext.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);\n\n } else if (typeof label === 'number' && Math.floor(label) !== label) {\n return labelContext.error(`Numeric branch labels must be integer values.`);\n\n } else if (!inputType) {\n inputType = typeOf(label);\n } else if (labelContext.checkSubtype(inputType, typeOf(label))) {\n return null;\n }\n\n if (typeof cases[String(label)] !== 'undefined') {\n return labelContext.error('Branch labels must be unique.');\n }\n\n cases[String(label)] = outputs.length;\n }\n\n const result = context.parse(value, i, outputType);\n if (!result) return null;\n outputType = outputType || result.type;\n outputs.push(result);\n }\n\n const input = context.parse(args[1], 1, ValueType);\n if (!input) return null;\n\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise) return null;\n\n assert(inputType && outputType);\n\n if (input.type.kind !== 'value' && context.concat(1).checkSubtype((inputType: any), input.type)) {\n return null;\n }\n\n return new Match((inputType: any), (outputType: any), input, cases, outputs, otherwise);\n }\n\n evaluate(ctx: EvaluationContext) {\n const input = (this.input.evaluate(ctx): any);\n const output = (typeOf(input) === this.inputType && this.outputs[this.cases[input]]) || this.otherwise;\n return output.evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n this.outputs.forEach(fn);\n fn(this.otherwise);\n }\n\n outputDefined(): boolean {\n return this.outputs.every(out => out.outputDefined()) && this.otherwise.outputDefined();\n }\n\n serialize(): Array {\n const serialized = [\"match\", this.input.serialize()];\n\n // Sort so serialization has an arbitrary defined order, even though\n // branch order doesn't affect evaluation\n const sortedLabels = Object.keys(this.cases).sort();\n\n // Group branches by unique match expression to support condensed\n // serializations of the form [case1, case2, ...] -> matchExpression\n const groupedByOutput: Array<[number, Array]> = [];\n const outputLookup: {[index: number]: number} = {}; // lookup index into groupedByOutput for a given output expression\n for (const label of sortedLabels) {\n const outputIndex = outputLookup[this.cases[label]];\n if (outputIndex === undefined) {\n // First time seeing this output, add it to the end of the grouped list\n outputLookup[this.cases[label]] = groupedByOutput.length;\n groupedByOutput.push([this.cases[label], [label]]);\n } else {\n // We've seen this expression before, add the label to that output's group\n groupedByOutput[outputIndex][1].push(label);\n }\n }\n\n const coerceLabel = (label) => this.inputType.kind === 'number' ? Number(label) : label;\n\n for (const [outputIndex, labels] of groupedByOutput) {\n if (labels.length === 1) {\n // Only a single label matches this output expression\n serialized.push(coerceLabel(labels[0]));\n } else {\n // Array of literal labels pointing to this output expression\n serialized.push(labels.map(coerceLabel));\n }\n serialized.push(this.outputs[outputIndex].serialize());\n }\n serialized.push(this.otherwise.serialize());\n return serialized;\n }\n}\n\nexport default Match;\n","// @flow\n\nimport assert from 'assert';\n\nimport {BooleanType} from '../types';\n\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\ntype Branches = Array<[Expression, Expression]>;\n\nclass Case implements Expression {\n type: Type;\n\n branches: Branches;\n otherwise: Expression;\n\n constructor(type: Type, branches: Branches, otherwise: Expression) {\n this.type = type;\n this.branches = branches;\n this.otherwise = otherwise;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext) {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found only ${args.length - 1}.`);\n if (args.length % 2 !== 0)\n return context.error(`Expected an odd number of arguments.`);\n\n let outputType: ?Type;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n\n const branches = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const test = context.parse(args[i], i, BooleanType);\n if (!test) return null;\n\n const result = context.parse(args[i + 1], i + 1, outputType);\n if (!result) return null;\n\n branches.push([test, result]);\n\n outputType = outputType || result.type;\n }\n\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise) return null;\n\n assert(outputType);\n return new Case((outputType: any), branches, otherwise);\n }\n\n evaluate(ctx: EvaluationContext) {\n for (const [test, expression] of this.branches) {\n if (test.evaluate(ctx)) {\n return expression.evaluate(ctx);\n }\n }\n return this.otherwise.evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n for (const [test, expression] of this.branches) {\n fn(test);\n fn(expression);\n }\n fn(this.otherwise);\n }\n\n outputDefined(): boolean {\n return this.branches.every(([_, out]) => out.outputDefined()) && this.otherwise.outputDefined();\n }\n\n serialize() {\n const serialized = [\"case\"];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Case;\n","// @flow\n\nimport {ValueType, NumberType, StringType, array, toString, isValidType, isValidNativeType} from '../types';\nimport RuntimeError from '../runtime_error';\nimport {typeOf} from '../values';\n\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nclass Slice implements Expression {\n type: Type;\n input: Expression;\n beginIndex: Expression;\n endIndex: ?Expression;\n\n constructor(type: Type, input: Expression, beginIndex: Expression, endIndex?: Expression) {\n this.type = type;\n this.input = input;\n this.beginIndex = beginIndex;\n this.endIndex = endIndex;\n\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext) {\n if (args.length <= 2 || args.length >= 5) {\n return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`);\n }\n\n const input = context.parse(args[1], 1, ValueType);\n const beginIndex = context.parse(args[2], 2, NumberType);\n\n if (!input || !beginIndex) return null;\n\n if (!isValidType(input.type, [array(ValueType), StringType, ValueType])) {\n return context.error(`Expected first argument to be of type array or string, but found ${toString(input.type)} instead`);\n }\n\n if (args.length === 4) {\n const endIndex = context.parse(args[3], 3, NumberType);\n if (!endIndex) return null;\n return new Slice(input.type, input, beginIndex, endIndex);\n } else {\n return new Slice(input.type, input, beginIndex);\n }\n }\n\n evaluate(ctx: EvaluationContext) {\n const input = (this.input.evaluate(ctx): any);\n const beginIndex = (this.beginIndex.evaluate(ctx): number);\n\n if (!isValidNativeType(input, ['string', 'array'])) {\n throw new RuntimeError(`Expected first argument to be of type array or string, but found ${toString(typeOf(input))} instead.`);\n }\n\n if (this.endIndex) {\n const endIndex = (this.endIndex.evaluate(ctx): number);\n return input.slice(beginIndex, endIndex);\n }\n\n return input.slice(beginIndex);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n fn(this.beginIndex);\n if (this.endIndex) {\n fn(this.endIndex);\n }\n }\n\n outputDefined() {\n return false;\n }\n\n serialize() {\n if (this.endIndex != null && this.endIndex !== undefined) {\n const endIndex = this.endIndex.serialize();\n return [\"slice\", this.input.serialize(), this.beginIndex.serialize(), endIndex];\n }\n return [\"slice\", this.input.serialize(), this.beginIndex.serialize()];\n }\n}\n\nexport default Slice;\n","// @flow\n\nimport {toString, ValueType, BooleanType, CollatorType} from '../types';\nimport Assertion from './assertion';\nimport {typeOf} from '../values';\nimport RuntimeError from '../runtime_error';\n\nimport type {Expression} from '../expression';\nimport type EvaluationContext from '../evaluation_context';\nimport type ParsingContext from '../parsing_context';\nimport type {Type} from '../types';\n\ntype ComparisonOperator = '==' | '!=' | '<' | '>' | '<=' | '>=' ;\n\nfunction isComparableType(op: ComparisonOperator, type: Type) {\n if (op === '==' || op === '!=') {\n // equality operator\n return type.kind === 'boolean' ||\n type.kind === 'string' ||\n type.kind === 'number' ||\n type.kind === 'null' ||\n type.kind === 'value';\n } else {\n // ordering operator\n return type.kind === 'string' ||\n type.kind === 'number' ||\n type.kind === 'value';\n }\n}\n\nfunction eq(ctx, a, b) { return a === b; }\nfunction neq(ctx, a, b) { return a !== b; }\nfunction lt(ctx, a, b) { return a < b; }\nfunction gt(ctx, a, b) { return a > b; }\nfunction lteq(ctx, a, b) { return a <= b; }\nfunction gteq(ctx, a, b) { return a >= b; }\n\nfunction eqCollate(ctx, a, b, c) { return c.compare(a, b) === 0; }\nfunction neqCollate(ctx, a, b, c) { return !eqCollate(ctx, a, b, c); }\nfunction ltCollate(ctx, a, b, c) { return c.compare(a, b) < 0; }\nfunction gtCollate(ctx, a, b, c) { return c.compare(a, b) > 0; }\nfunction lteqCollate(ctx, a, b, c) { return c.compare(a, b) <= 0; }\nfunction gteqCollate(ctx, a, b, c) { return c.compare(a, b) >= 0; }\n\n/**\n * Special form for comparison operators, implementing the signatures:\n * - (T, T, ?Collator) => boolean\n * - (T, value, ?Collator) => boolean\n * - (value, T, ?Collator) => boolean\n *\n * For inequalities, T must be either value, string, or number. For ==/!=, it\n * can also be boolean or null.\n *\n * Equality semantics are equivalent to Javascript's strict equality (===/!==)\n * -- i.e., when the arguments' types don't match, == evaluates to false, != to\n * true.\n *\n * When types don't match in an ordering comparison, a runtime error is thrown.\n *\n * @private\n */\nfunction makeComparison(op: ComparisonOperator, compareBasic, compareWithCollator) {\n const isOrderComparison = op !== '==' && op !== '!=';\n\n return class Comparison implements Expression {\n type: Type;\n lhs: Expression;\n rhs: Expression;\n collator: ?Expression;\n hasUntypedArgument: boolean;\n\n constructor(lhs: Expression, rhs: Expression, collator: ?Expression) {\n this.type = BooleanType;\n this.lhs = lhs;\n this.rhs = rhs;\n this.collator = collator;\n this.hasUntypedArgument = lhs.type.kind === 'value' || rhs.type.kind === 'value';\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression {\n if (args.length !== 3 && args.length !== 4)\n return context.error(`Expected two or three arguments.`);\n\n const op: ComparisonOperator = (args[0]: any);\n\n let lhs = context.parse(args[1], 1, ValueType);\n if (!lhs) return null;\n if (!isComparableType(op, lhs.type)) {\n return context.concat(1).error(`\"${op}\" comparisons are not supported for type '${toString(lhs.type)}'.`);\n }\n let rhs = context.parse(args[2], 2, ValueType);\n if (!rhs) return null;\n if (!isComparableType(op, rhs.type)) {\n return context.concat(2).error(`\"${op}\" comparisons are not supported for type '${toString(rhs.type)}'.`);\n }\n\n if (\n lhs.type.kind !== rhs.type.kind &&\n lhs.type.kind !== 'value' &&\n rhs.type.kind !== 'value'\n ) {\n return context.error(`Cannot compare types '${toString(lhs.type)}' and '${toString(rhs.type)}'.`);\n }\n\n if (isOrderComparison) {\n // typing rules specific to less/greater than operators\n if (lhs.type.kind === 'value' && rhs.type.kind !== 'value') {\n // (value, T)\n lhs = new Assertion(rhs.type, [lhs]);\n } else if (lhs.type.kind !== 'value' && rhs.type.kind === 'value') {\n // (T, value)\n rhs = new Assertion(lhs.type, [rhs]);\n }\n }\n\n let collator = null;\n if (args.length === 4) {\n if (\n lhs.type.kind !== 'string' &&\n rhs.type.kind !== 'string' &&\n lhs.type.kind !== 'value' &&\n rhs.type.kind !== 'value'\n ) {\n return context.error(`Cannot use collator to compare non-string types.`);\n }\n collator = context.parse(args[3], 3, CollatorType);\n if (!collator) return null;\n }\n\n return new Comparison(lhs, rhs, collator);\n }\n\n evaluate(ctx: EvaluationContext) {\n const lhs = this.lhs.evaluate(ctx);\n const rhs = this.rhs.evaluate(ctx);\n\n if (isOrderComparison && this.hasUntypedArgument) {\n const lt = typeOf(lhs);\n const rt = typeOf(rhs);\n // check that type is string or number, and equal\n if (lt.kind !== rt.kind || !(lt.kind === 'string' || lt.kind === 'number')) {\n throw new RuntimeError(`Expected arguments for \"${op}\" to be (string, string) or (number, number), but found (${lt.kind}, ${rt.kind}) instead.`);\n }\n }\n\n if (this.collator && !isOrderComparison && this.hasUntypedArgument) {\n const lt = typeOf(lhs);\n const rt = typeOf(rhs);\n if (lt.kind !== 'string' || rt.kind !== 'string') {\n return compareBasic(ctx, lhs, rhs);\n }\n }\n\n return this.collator ?\n compareWithCollator(ctx, lhs, rhs, this.collator.evaluate(ctx)) :\n compareBasic(ctx, lhs, rhs);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.lhs);\n fn(this.rhs);\n if (this.collator) {\n fn(this.collator);\n }\n }\n\n outputDefined(): boolean {\n return true;\n }\n\n serialize() {\n const serialized = [op];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n };\n}\n\nexport const Equals = makeComparison('==', eq, eqCollate);\nexport const NotEquals = makeComparison('!=', neq, neqCollate);\nexport const LessThan = makeComparison('<', lt, ltCollate);\nexport const GreaterThan = makeComparison('>', gt, gtCollate);\nexport const LessThanOrEqual = makeComparison('<=', lteq, lteqCollate);\nexport const GreaterThanOrEqual = makeComparison('>=', gteq, gteqCollate);\n","// @flow\n\nimport {StringType, NumberType} from '../types';\n\nimport type {Expression} from '../expression';\nimport type EvaluationContext from '../evaluation_context';\nimport type ParsingContext from '../parsing_context';\nimport type {Type} from '../types';\n\ndeclare var Intl: {\n NumberFormat: Class\n};\n\ndeclare class Intl$NumberFormat {\n constructor (\n locales?: string | string[],\n options?: NumberFormatOptions\n ): Intl$NumberFormat;\n\n static (\n locales?: string | string[],\n options?: NumberFormatOptions\n ): Intl$NumberFormat;\n\n format(a: number): string;\n\n resolvedOptions(): any;\n}\n\ntype NumberFormatOptions = {\n style?: 'decimal' | 'currency' | 'percent';\n currency?: null | string;\n minimumFractionDigits?: null | string;\n maximumFractionDigits?: null | string;\n};\n\nexport default class NumberFormat implements Expression {\n type: Type;\n number: Expression;\n locale: Expression | null; // BCP 47 language tag\n currency: Expression | null; // ISO 4217 currency code, required if style=currency\n minFractionDigits: Expression | null; // Default 0\n maxFractionDigits: Expression | null; // Default 3\n\n constructor(number: Expression,\n locale: Expression | null,\n currency: Expression | null,\n minFractionDigits: Expression | null,\n maxFractionDigits: Expression | null) {\n this.type = StringType;\n this.number = number;\n this.locale = locale;\n this.currency = currency;\n this.minFractionDigits = minFractionDigits;\n this.maxFractionDigits = maxFractionDigits;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression {\n if (args.length !== 3)\n return context.error(`Expected two arguments.`);\n\n const number = context.parse(args[1], 1, NumberType);\n if (!number) return null;\n\n const options = (args[2]: any);\n if (typeof options !== \"object\" || Array.isArray(options))\n return context.error(`NumberFormat options argument must be an object.`);\n\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale) return null;\n }\n\n let currency = null;\n if (options['currency']) {\n currency = context.parse(options['currency'], 1, StringType);\n if (!currency) return null;\n }\n\n let minFractionDigits = null;\n if (options['min-fraction-digits']) {\n minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType);\n if (!minFractionDigits) return null;\n }\n\n let maxFractionDigits = null;\n if (options['max-fraction-digits']) {\n maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType);\n if (!maxFractionDigits) return null;\n }\n\n return new NumberFormat(number, locale, currency, minFractionDigits, maxFractionDigits);\n }\n\n evaluate(ctx: EvaluationContext) {\n return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [],\n {\n style: this.currency ? \"currency\" : \"decimal\",\n currency: this.currency ? this.currency.evaluate(ctx) : undefined,\n minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(ctx) : undefined,\n maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(ctx) : undefined,\n }).format(this.number.evaluate(ctx));\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.number);\n if (this.locale) {\n fn(this.locale);\n }\n if (this.currency) {\n fn(this.currency);\n }\n if (this.minFractionDigits) {\n fn(this.minFractionDigits);\n }\n if (this.maxFractionDigits) {\n fn(this.maxFractionDigits);\n }\n }\n\n outputDefined() {\n return false;\n }\n\n serialize() {\n const options = {};\n if (this.locale) {\n options['locale'] = this.locale.serialize();\n }\n if (this.currency) {\n options['currency'] = this.currency.serialize();\n }\n if (this.minFractionDigits) {\n options['min-fraction-digits'] = this.minFractionDigits.serialize();\n }\n if (this.maxFractionDigits) {\n options['max-fraction-digits'] = this.maxFractionDigits.serialize();\n }\n return [\"number-format\", this.number.serialize(), options];\n }\n}\n","// @flow\n\nimport {NumberType, toString} from '../types';\n\nimport {typeOf} from '../values';\nimport RuntimeError from '../runtime_error';\n\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nclass Length implements Expression {\n type: Type;\n input: Expression;\n\n constructor(input: Expression) {\n this.type = NumberType;\n this.input = input;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext) {\n if (args.length !== 2)\n return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`);\n\n const input = context.parse(args[1], 1);\n if (!input) return null;\n\n if (input.type.kind !== 'array' && input.type.kind !== 'string' && input.type.kind !== 'value')\n return context.error(`Expected argument of type string or array, but found ${toString(input.type)} instead.`);\n\n return new Length(input);\n }\n\n evaluate(ctx: EvaluationContext) {\n const input = this.input.evaluate(ctx);\n if (typeof input === 'string') {\n return input.length;\n } else if (Array.isArray(input)) {\n return input.length;\n } else {\n throw new RuntimeError(`Expected value to be of type string or array, but found ${toString(typeOf(input))} instead.`);\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n }\n\n outputDefined() {\n return false;\n }\n\n serialize() {\n const serialized = [\"length\"];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Length;\n","// @flow\n\nimport {\n type Type,\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n ObjectType,\n ValueType,\n ErrorType,\n CollatorType,\n array,\n toString as typeToString\n} from '../types';\n\nimport {typeOf, Color, validateRGBA, toString as valueToString} from '../values';\nimport CompoundExpression from '../compound_expression';\nimport RuntimeError from '../runtime_error';\nimport Let from './let';\nimport Var from './var';\nimport Literal from './literal';\nimport Assertion from './assertion';\nimport Coercion from './coercion';\nimport At from './at';\nimport In from './in';\nimport IndexOf from './index_of';\nimport Match from './match';\nimport Case from './case';\nimport Slice from './slice';\nimport Step from './step';\nimport Interpolate from './interpolate';\nimport Coalesce from './coalesce';\nimport {\n Equals,\n NotEquals,\n LessThan,\n GreaterThan,\n LessThanOrEqual,\n GreaterThanOrEqual\n} from './comparison';\nimport CollatorExpression from './collator';\nimport NumberFormat from './number_format';\nimport FormatExpression from './format';\nimport ImageExpression from './image';\nimport Length from './length';\nimport Within from './within';\n\nimport type {Varargs} from '../compound_expression';\nimport type {ExpressionRegistry} from '../expression';\n\nconst expressions: ExpressionRegistry = {\n // special forms\n '==': Equals,\n '!=': NotEquals,\n '>': GreaterThan,\n '<': LessThan,\n '>=': GreaterThanOrEqual,\n '<=': LessThanOrEqual,\n 'array': Assertion,\n 'at': At,\n 'boolean': Assertion,\n 'case': Case,\n 'coalesce': Coalesce,\n 'collator': CollatorExpression,\n 'format': FormatExpression,\n 'image': ImageExpression,\n 'in': In,\n 'index-of': IndexOf,\n 'interpolate': Interpolate,\n 'interpolate-hcl': Interpolate,\n 'interpolate-lab': Interpolate,\n 'length': Length,\n 'let': Let,\n 'literal': Literal,\n 'match': Match,\n 'number': Assertion,\n 'number-format': NumberFormat,\n 'object': Assertion,\n 'slice': Slice,\n 'step': Step,\n 'string': Assertion,\n 'to-boolean': Coercion,\n 'to-color': Coercion,\n 'to-number': Coercion,\n 'to-string': Coercion,\n 'var': Var,\n 'within': Within\n};\n\nfunction rgba(ctx, [r, g, b, a]) {\n r = r.evaluate(ctx);\n g = g.evaluate(ctx);\n b = b.evaluate(ctx);\n const alpha = a ? a.evaluate(ctx) : 1;\n const error = validateRGBA(r, g, b, alpha);\n if (error) throw new RuntimeError(error);\n return new Color(r / 255 * alpha, g / 255 * alpha, b / 255 * alpha, alpha);\n}\n\nfunction has(key, obj) {\n return key in obj;\n}\n\nfunction get(key, obj) {\n const v = obj[key];\n return typeof v === 'undefined' ? null : v;\n}\n\nfunction binarySearch(v, a, i, j) {\n while (i <= j) {\n const m = (i + j) >> 1;\n if (a[m] === v)\n return true;\n if (a[m] > v)\n j = m - 1;\n else\n i = m + 1;\n }\n return false;\n}\n\nfunction varargs(type: Type): Varargs {\n return {type};\n}\n\nCompoundExpression.register(expressions, {\n 'error': [\n ErrorType,\n [StringType],\n (ctx, [v]) => { throw new RuntimeError(v.evaluate(ctx)); }\n ],\n 'typeof': [\n StringType,\n [ValueType],\n (ctx, [v]) => typeToString(typeOf(v.evaluate(ctx)))\n ],\n 'to-rgba': [\n array(NumberType, 4),\n [ColorType],\n (ctx, [v]) => {\n return v.evaluate(ctx).toArray();\n }\n ],\n 'rgb': [\n ColorType,\n [NumberType, NumberType, NumberType],\n rgba\n ],\n 'rgba': [\n ColorType,\n [NumberType, NumberType, NumberType, NumberType],\n rgba\n ],\n 'has': {\n type: BooleanType,\n overloads: [\n [\n [StringType],\n (ctx, [key]) => has(key.evaluate(ctx), ctx.properties())\n ], [\n [StringType, ObjectType],\n (ctx, [key, obj]) => has(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'get': {\n type: ValueType,\n overloads: [\n [\n [StringType],\n (ctx, [key]) => get(key.evaluate(ctx), ctx.properties())\n ], [\n [StringType, ObjectType],\n (ctx, [key, obj]) => get(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'feature-state': [\n ValueType,\n [StringType],\n (ctx, [key]) => get(key.evaluate(ctx), ctx.featureState || {})\n ],\n 'properties': [\n ObjectType,\n [],\n (ctx) => ctx.properties()\n ],\n 'geometry-type': [\n StringType,\n [],\n (ctx) => ctx.geometryType()\n ],\n 'id': [\n ValueType,\n [],\n (ctx) => ctx.id()\n ],\n 'zoom': [\n NumberType,\n [],\n (ctx) => ctx.globals.zoom\n ],\n 'heatmap-density': [\n NumberType,\n [],\n (ctx) => ctx.globals.heatmapDensity || 0\n ],\n 'line-progress': [\n NumberType,\n [],\n (ctx) => ctx.globals.lineProgress || 0\n ],\n 'accumulated': [\n ValueType,\n [],\n (ctx) => ctx.globals.accumulated === undefined ? null : ctx.globals.accumulated\n ],\n '+': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 0;\n for (const arg of args) {\n result += arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '*': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 1;\n for (const arg of args) {\n result *= arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '-': {\n type: NumberType,\n overloads: [\n [\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) - b.evaluate(ctx)\n ], [\n [NumberType],\n (ctx, [a]) => -a.evaluate(ctx)\n ]\n ]\n },\n '/': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) / b.evaluate(ctx)\n ],\n '%': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) % b.evaluate(ctx)\n ],\n 'ln2': [\n NumberType,\n [],\n () => Math.LN2\n ],\n 'pi': [\n NumberType,\n [],\n () => Math.PI\n ],\n 'e': [\n NumberType,\n [],\n () => Math.E\n ],\n '^': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [b, e]) => Math.pow(b.evaluate(ctx), e.evaluate(ctx))\n ],\n 'sqrt': [\n NumberType,\n [NumberType],\n (ctx, [x]) => Math.sqrt(x.evaluate(ctx))\n ],\n 'log10': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN10\n ],\n 'ln': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx))\n ],\n 'log2': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN2\n ],\n 'sin': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.sin(n.evaluate(ctx))\n ],\n 'cos': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.cos(n.evaluate(ctx))\n ],\n 'tan': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.tan(n.evaluate(ctx))\n ],\n 'asin': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.asin(n.evaluate(ctx))\n ],\n 'acos': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.acos(n.evaluate(ctx))\n ],\n 'atan': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.atan(n.evaluate(ctx))\n ],\n 'min': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => Math.min(...args.map(arg => arg.evaluate(ctx)))\n ],\n 'max': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => Math.max(...args.map(arg => arg.evaluate(ctx)))\n ],\n 'abs': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.abs(n.evaluate(ctx))\n ],\n 'round': [\n NumberType,\n [NumberType],\n (ctx, [n]) => {\n const v = n.evaluate(ctx);\n // Javascript's Math.round() rounds towards +Infinity for halfway\n // values, even when they're negative. It's more common to round\n // away from 0 (e.g., this is what python and C++ do)\n return v < 0 ? -Math.round(-v) : Math.round(v);\n }\n ],\n 'floor': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.floor(n.evaluate(ctx))\n ],\n 'ceil': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.ceil(n.evaluate(ctx))\n ],\n 'filter-==': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => ctx.properties()[(k: any).value] === (v: any).value\n ],\n 'filter-id-==': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => ctx.id() === (v: any).value\n ],\n 'filter-type-==': [\n BooleanType,\n [StringType],\n (ctx, [v]) => ctx.geometryType() === (v: any).value\n ],\n 'filter-<': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k: any).value];\n const b = (v: any).value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter-id-<': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = (v: any).value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter->': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k: any).value];\n const b = (v: any).value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-id->': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = (v: any).value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-<=': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k: any).value];\n const b = (v: any).value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter-id-<=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = (v: any).value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter->=': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k: any).value];\n const b = (v: any).value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-id->=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = (v: any).value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-has': [\n BooleanType,\n [ValueType],\n (ctx, [k]) => (k: any).value in ctx.properties()\n ],\n 'filter-has-id': [\n BooleanType,\n [],\n (ctx) => (ctx.id() !== null && ctx.id() !== undefined)\n ],\n 'filter-type-in': [\n BooleanType,\n [array(StringType)],\n (ctx, [v]) => (v: any).value.indexOf(ctx.geometryType()) >= 0\n ],\n 'filter-id-in': [\n BooleanType,\n [array(ValueType)],\n (ctx, [v]) => (v: any).value.indexOf(ctx.id()) >= 0\n ],\n 'filter-in-small': [\n BooleanType,\n [StringType, array(ValueType)],\n // assumes v is an array literal\n (ctx, [k, v]) => (v: any).value.indexOf(ctx.properties()[(k: any).value]) >= 0\n ],\n 'filter-in-large': [\n BooleanType,\n [StringType, array(ValueType)],\n // assumes v is a array literal with values sorted in ascending order and of a single type\n (ctx, [k, v]) => binarySearch(ctx.properties()[(k: any).value], (v: any).value, 0, (v: any).value.length - 1)\n ],\n 'all': {\n type: BooleanType,\n overloads: [\n [\n [BooleanType, BooleanType],\n (ctx, [a, b]) => a.evaluate(ctx) && b.evaluate(ctx)\n ],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (!arg.evaluate(ctx))\n return false;\n }\n return true;\n }\n ]\n ]\n },\n 'any': {\n type: BooleanType,\n overloads: [\n [\n [BooleanType, BooleanType],\n (ctx, [a, b]) => a.evaluate(ctx) || b.evaluate(ctx)\n ],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (arg.evaluate(ctx))\n return true;\n }\n return false;\n }\n ]\n ]\n },\n '!': [\n BooleanType,\n [BooleanType],\n (ctx, [b]) => !b.evaluate(ctx)\n ],\n 'is-supported-script': [\n BooleanType,\n [StringType],\n // At parse time this will always return true, so we need to exclude this expression with isGlobalPropertyConstant\n (ctx, [s]) => {\n const isSupportedScript = ctx.globals && ctx.globals.isSupportedScript;\n if (isSupportedScript) {\n return isSupportedScript(s.evaluate(ctx));\n }\n return true;\n }\n ],\n 'upcase': [\n StringType,\n [StringType],\n (ctx, [s]) => s.evaluate(ctx).toUpperCase()\n ],\n 'downcase': [\n StringType,\n [StringType],\n (ctx, [s]) => s.evaluate(ctx).toLowerCase()\n ],\n 'concat': [\n StringType,\n varargs(ValueType),\n (ctx, args) => args.map(arg => valueToString(arg.evaluate(ctx))).join('')\n ],\n 'resolved-locale': [\n StringType,\n [CollatorType],\n (ctx, [collator]) => collator.evaluate(ctx).resolvedLocale()\n ]\n});\n\nexport default expressions;\n","// @flow\n\n/**\n * A type used for returning and propagating errors. The first element of the union\n * represents success and contains a value, and the second represents an error and\n * contains an error value.\n * @private\n */\nexport type Result =\n | {| result: 'success', value: T |}\n | {| result: 'error', value: E |};\n\nexport function success(value: T): Result {\n return {result: 'success', value};\n}\n\nexport function error(value: E): Result {\n return {result: 'error', value};\n}\n","// @flow\n\nimport type {StylePropertySpecification} from '../style-spec';\n\nexport function supportsPropertyExpression(spec: StylePropertySpecification): boolean {\n return spec['property-type'] === 'data-driven' || spec['property-type'] === 'cross-faded-data-driven';\n}\n\nexport function supportsZoomExpression(spec: StylePropertySpecification): boolean {\n return !!spec.expression && spec.expression.parameters.indexOf('zoom') > -1;\n}\n\nexport function supportsInterpolation(spec: StylePropertySpecification): boolean {\n return !!spec.expression && spec.expression.interpolated;\n}\n","// @flow\n\nexport default function getType(val: mixed): string {\n if (val instanceof Number) {\n return 'number';\n } else if (val instanceof String) {\n return 'string';\n } else if (val instanceof Boolean) {\n return 'boolean';\n } else if (Array.isArray(val)) {\n return 'array';\n } else if (val === null) {\n return 'null';\n } else {\n return typeof val;\n }\n}\n","\nimport * as colorSpaces from '../util/color_spaces';\nimport Color from '../util/color';\nimport extend from '../util/extend';\nimport getType from '../util/get_type';\nimport * as interpolate from '../util/interpolate';\nimport Interpolate from '../expression/definitions/interpolate';\nimport Formatted from '../expression/types/formatted';\nimport ResolvedImage from '../expression/types/resolved_image';\nimport {supportsInterpolation} from '../util/properties';\nimport {findStopLessThanOrEqualTo} from '../expression/stops';\n\nexport function isFunction(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction identityFunction(x) {\n return x;\n}\n\nexport function createFunction(parameters, propertySpec) {\n const isColor = propertySpec.type === 'color';\n const zoomAndFeatureDependent = parameters.stops && typeof parameters.stops[0][0] === 'object';\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n const type = parameters.type || (supportsInterpolation(propertySpec) ? 'exponential' : 'interval');\n\n if (isColor) {\n parameters = extend({}, parameters);\n\n if (parameters.stops) {\n parameters.stops = parameters.stops.map((stop) => {\n return [stop[0], Color.parse(stop[1])];\n });\n }\n\n if (parameters.default) {\n parameters.default = Color.parse(parameters.default);\n } else {\n parameters.default = Color.parse(propertySpec.default);\n }\n }\n\n if (parameters.colorSpace && parameters.colorSpace !== 'rgb' && !colorSpaces[parameters.colorSpace]) { // eslint-disable-line import/namespace\n throw new Error(`Unknown color space: ${parameters.colorSpace}`);\n }\n\n let innerFun;\n let hashedStops;\n let categoricalKeyType;\n if (type === 'exponential') {\n innerFun = evaluateExponentialFunction;\n } else if (type === 'interval') {\n innerFun = evaluateIntervalFunction;\n } else if (type === 'categorical') {\n innerFun = evaluateCategoricalFunction;\n\n // For categorical functions, generate an Object as a hashmap of the stops for fast searching\n hashedStops = Object.create(null);\n for (const stop of parameters.stops) {\n hashedStops[stop[0]] = stop[1];\n }\n\n // Infer key type based on first stop key-- used to encforce strict type checking later\n categoricalKeyType = typeof parameters.stops[0][0];\n\n } else if (type === 'identity') {\n innerFun = evaluateIdentityFunction;\n } else {\n throw new Error(`Unknown function type \"${type}\"`);\n }\n\n if (zoomAndFeatureDependent) {\n const featureFunctions = {};\n const zoomStops = [];\n for (let s = 0; s < parameters.stops.length; s++) {\n const stop = parameters.stops[s];\n const zoom = stop[0].zoom;\n if (featureFunctions[zoom] === undefined) {\n featureFunctions[zoom] = {\n zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default,\n stops: []\n };\n zoomStops.push(zoom);\n }\n featureFunctions[zoom].stops.push([stop[0].value, stop[1]]);\n }\n\n const featureFunctionStops = [];\n for (const z of zoomStops) {\n featureFunctionStops.push([featureFunctions[z].zoom, createFunction(featureFunctions[z], propertySpec)]);\n }\n\n const interpolationType = {name: 'linear'};\n return {\n kind: 'composite',\n interpolationType,\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n zoomStops: featureFunctionStops.map(s => s[0]),\n evaluate({zoom}, properties) {\n return evaluateExponentialFunction({\n stops: featureFunctionStops,\n base: parameters.base\n }, propertySpec, zoom).evaluate(zoom, properties);\n }\n };\n } else if (zoomDependent) {\n const interpolationType = type === 'exponential' ?\n {name: 'exponential', base: parameters.base !== undefined ? parameters.base : 1} : null;\n return {\n kind: 'camera',\n interpolationType,\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n zoomStops: parameters.stops.map(s => s[0]),\n evaluate: ({zoom}) => innerFun(parameters, propertySpec, zoom, hashedStops, categoricalKeyType)\n };\n } else {\n return {\n kind: 'source',\n evaluate(_, feature) {\n const value = feature && feature.properties ? feature.properties[parameters.property] : undefined;\n if (value === undefined) {\n return coalesce(parameters.default, propertySpec.default);\n }\n return innerFun(parameters, propertySpec, value, hashedStops, categoricalKeyType);\n }\n };\n }\n}\n\nfunction coalesce(a, b, c) {\n if (a !== undefined) return a;\n if (b !== undefined) return b;\n if (c !== undefined) return c;\n}\n\nfunction evaluateCategoricalFunction(parameters, propertySpec, input, hashedStops, keyType) {\n const evaluated = typeof input === keyType ? hashedStops[input] : undefined; // Enforce strict typing on input\n return coalesce(evaluated, parameters.default, propertySpec.default);\n}\n\nfunction evaluateIntervalFunction(parameters, propertySpec, input) {\n // Edge cases\n if (getType(input) !== 'number') return coalesce(parameters.default, propertySpec.default);\n const n = parameters.stops.length;\n if (n === 1) return parameters.stops[0][1];\n if (input <= parameters.stops[0][0]) return parameters.stops[0][1];\n if (input >= parameters.stops[n - 1][0]) return parameters.stops[n - 1][1];\n\n const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n\n return parameters.stops[index][1];\n}\n\nfunction evaluateExponentialFunction(parameters, propertySpec, input) {\n const base = parameters.base !== undefined ? parameters.base : 1;\n\n // Edge cases\n if (getType(input) !== 'number') return coalesce(parameters.default, propertySpec.default);\n const n = parameters.stops.length;\n if (n === 1) return parameters.stops[0][1];\n if (input <= parameters.stops[0][0]) return parameters.stops[0][1];\n if (input >= parameters.stops[n - 1][0]) return parameters.stops[n - 1][1];\n\n const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n const t = interpolationFactor(\n input, base,\n parameters.stops[index][0],\n parameters.stops[index + 1][0]);\n\n const outputLower = parameters.stops[index][1];\n const outputUpper = parameters.stops[index + 1][1];\n let interp = interpolate[propertySpec.type] || identityFunction; // eslint-disable-line import/namespace\n\n if (parameters.colorSpace && parameters.colorSpace !== 'rgb') {\n const colorspace = colorSpaces[parameters.colorSpace]; // eslint-disable-line import/namespace\n interp = (a, b) => colorspace.reverse(colorspace.interpolate(colorspace.forward(a), colorspace.forward(b), t));\n }\n\n if (typeof outputLower.evaluate === 'function') {\n return {\n evaluate(...args) {\n const evaluatedLower = outputLower.evaluate.apply(undefined, args);\n const evaluatedUpper = outputUpper.evaluate.apply(undefined, args);\n // Special case for fill-outline-color, which has no spec default.\n if (evaluatedLower === undefined || evaluatedUpper === undefined) {\n return undefined;\n }\n return interp(evaluatedLower, evaluatedUpper, t);\n }\n };\n }\n\n return interp(outputLower, outputUpper, t);\n}\n\nfunction evaluateIdentityFunction(parameters, propertySpec, input) {\n if (propertySpec.type === 'color') {\n input = Color.parse(input);\n } else if (propertySpec.type === 'formatted') {\n input = Formatted.fromString(input.toString());\n } else if (propertySpec.type === 'resolvedImage') {\n input = ResolvedImage.fromString(input.toString());\n } else if (getType(input) !== propertySpec.type && (propertySpec.type !== 'enum' || !propertySpec.values[input])) {\n input = undefined;\n }\n return coalesce(input, parameters.default, propertySpec.default);\n}\n\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n *\n * How it works:\n * Two consecutive stop values define a (scaled and shifted) exponential\n * function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n * = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`. In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n */\nfunction interpolationFactor(input, base, lowerValue, upperValue) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n","// @flow\n\nimport assert from 'assert';\n\nimport extend from '../util/extend';\nimport ParsingError from './parsing_error';\nimport ParsingContext from './parsing_context';\nimport EvaluationContext from './evaluation_context';\nimport CompoundExpression from './compound_expression';\nimport Step from './definitions/step';\nimport Interpolate from './definitions/interpolate';\nimport Coalesce from './definitions/coalesce';\nimport Let from './definitions/let';\nimport definitions from './definitions';\nimport * as isConstant from './is_constant';\nimport RuntimeError from './runtime_error';\nimport {success, error} from '../util/result';\nimport {supportsPropertyExpression, supportsZoomExpression, supportsInterpolation} from '../util/properties';\n\nimport type {Type, EvaluationKind} from './types';\nimport type {Value} from './values';\nimport type {Expression} from './expression';\nimport type {StylePropertySpecification} from '../style-spec';\nimport type {Result} from '../util/result';\nimport type {InterpolationType} from './definitions/interpolate';\nimport type {PropertyValueSpecification} from '../types';\nimport type {FormattedSection} from './types/formatted';\nimport type Point from '@mapbox/point-geometry';\nimport type {CanonicalTileID} from '../../source/tile_id';\n\nexport type Feature = {\n +type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'MultiPoint' | 'LineString' | 'MultiLineString' | 'Polygon' | 'MultiPolygon',\n +id?: any,\n +properties: {[_: string]: any},\n +patterns?: {[_: string]: {\"min\": string, \"mid\": string, \"max\": string}},\n +geometry?: Array>\n};\n\nexport type FeatureState = {[_: string]: any};\n\nexport type GlobalProperties = $ReadOnly<{\n zoom: number,\n heatmapDensity?: number,\n lineProgress?: number,\n isSupportedScript?: (_: string) => boolean,\n accumulated?: Value\n}>;\n\nexport class StyleExpression {\n expression: Expression;\n\n _evaluator: EvaluationContext;\n _defaultValue: Value;\n _warningHistory: {[key: string]: boolean};\n _enumValues: ?{[_: string]: any};\n\n constructor(expression: Expression, propertySpec: ?StylePropertySpecification) {\n this.expression = expression;\n this._warningHistory = {};\n this._evaluator = new EvaluationContext();\n this._defaultValue = propertySpec ? getDefaultValue(propertySpec) : null;\n this._enumValues = propertySpec && propertySpec.type === 'enum' ? propertySpec.values : null;\n }\n\n evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection): any {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature;\n this._evaluator.featureState = featureState;\n this._evaluator.canonical = canonical;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection;\n\n return this.expression.evaluate(this._evaluator);\n }\n\n evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection): any {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature || null;\n this._evaluator.featureState = featureState || null;\n this._evaluator.canonical = canonical;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection || null;\n\n try {\n const val = this.expression.evaluate(this._evaluator);\n // eslint-disable-next-line no-self-compare\n if (val === null || val === undefined || (typeof val === 'number' && val !== val)) {\n return this._defaultValue;\n }\n if (this._enumValues && !(val in this._enumValues)) {\n throw new RuntimeError(`Expected value to be one of ${Object.keys(this._enumValues).map(v => JSON.stringify(v)).join(', ')}, but found ${JSON.stringify(val)} instead.`);\n }\n return val;\n } catch (e) {\n if (!this._warningHistory[e.message]) {\n this._warningHistory[e.message] = true;\n if (typeof console !== 'undefined') {\n console.warn(e.message);\n }\n }\n return this._defaultValue;\n }\n }\n}\n\nexport function isExpression(expression: mixed) {\n return Array.isArray(expression) && expression.length > 0 &&\n typeof expression[0] === 'string' && expression[0] in definitions;\n}\n\n/**\n * Parse and typecheck the given style spec JSON expression. If\n * options.defaultValue is provided, then the resulting StyleExpression's\n * `evaluate()` method will handle errors by logging a warning (once per\n * message) and returning the default value. Otherwise, it will throw\n * evaluation errors.\n *\n * @private\n */\nexport function createExpression(expression: mixed, propertySpec: ?StylePropertySpecification): Result> {\n const parser = new ParsingContext(definitions, [], propertySpec ? getExpectedType(propertySpec) : undefined);\n\n // For string-valued properties, coerce to string at the top level rather than asserting.\n const parsed = parser.parse(expression, undefined, undefined, undefined,\n propertySpec && propertySpec.type === 'string' ? {typeAnnotation: 'coerce'} : undefined);\n\n if (!parsed) {\n assert(parser.errors.length > 0);\n return error(parser.errors);\n }\n\n return success(new StyleExpression(parsed, propertySpec));\n}\n\nexport class ZoomConstantExpression {\n kind: Kind;\n isStateDependent: boolean;\n _styleExpression: StyleExpression;\n\n constructor(kind: Kind, expression: StyleExpression) {\n this.kind = kind;\n this._styleExpression = expression;\n this.isStateDependent = kind !== ('constant': EvaluationKind) && !isConstant.isStateConstant(expression.expression);\n }\n\n evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection): any {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n\n evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection): any {\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n}\n\nexport class ZoomDependentExpression {\n kind: Kind;\n zoomStops: Array;\n isStateDependent: boolean;\n\n _styleExpression: StyleExpression;\n interpolationType: ?InterpolationType;\n\n constructor(kind: Kind, expression: StyleExpression, zoomStops: Array, interpolationType?: InterpolationType) {\n this.kind = kind;\n this.zoomStops = zoomStops;\n this._styleExpression = expression;\n this.isStateDependent = kind !== ('camera': EvaluationKind) && !isConstant.isStateConstant(expression.expression);\n this.interpolationType = interpolationType;\n }\n\n evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection): any {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n\n evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection): any {\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n\n interpolationFactor(input: number, lower: number, upper: number): number {\n if (this.interpolationType) {\n return Interpolate.interpolationFactor(this.interpolationType, input, lower, upper);\n } else {\n return 0;\n }\n }\n}\n\nexport type ConstantExpression = {\n kind: 'constant',\n +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array) => any,\n}\n\nexport type SourceExpression = {\n kind: 'source',\n isStateDependent: boolean,\n +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection) => any,\n};\n\nexport type CameraExpression = {\n kind: 'camera',\n +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array) => any,\n +interpolationFactor: (input: number, lower: number, upper: number) => number,\n zoomStops: Array,\n interpolationType: ?InterpolationType\n};\n\nexport type CompositeExpression = {\n kind: 'composite',\n isStateDependent: boolean,\n +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection) => any,\n +interpolationFactor: (input: number, lower: number, upper: number) => number,\n zoomStops: Array,\n interpolationType: ?InterpolationType\n};\n\nexport type StylePropertyExpression =\n | ConstantExpression\n | SourceExpression\n | CameraExpression\n | CompositeExpression;\n\nexport function createPropertyExpression(expression: mixed, propertySpec: StylePropertySpecification): Result> {\n expression = createExpression(expression, propertySpec);\n if (expression.result === 'error') {\n return expression;\n }\n\n const parsed = expression.value.expression;\n\n const isFeatureConstant = isConstant.isFeatureConstant(parsed);\n if (!isFeatureConstant && !supportsPropertyExpression(propertySpec)) {\n return error([new ParsingError('', 'data expressions not supported')]);\n }\n\n const isZoomConstant = isConstant.isGlobalPropertyConstant(parsed, ['zoom']);\n if (!isZoomConstant && !supportsZoomExpression(propertySpec)) {\n return error([new ParsingError('', 'zoom expressions not supported')]);\n }\n\n const zoomCurve = findZoomCurve(parsed);\n if (!zoomCurve && !isZoomConstant) {\n return error([new ParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')]);\n } else if (zoomCurve instanceof ParsingError) {\n return error([zoomCurve]);\n } else if (zoomCurve instanceof Interpolate && !supportsInterpolation(propertySpec)) {\n return error([new ParsingError('', '\"interpolate\" expressions cannot be used with this property')]);\n }\n\n if (!zoomCurve) {\n return success(isFeatureConstant ?\n (new ZoomConstantExpression('constant', expression.value): ConstantExpression) :\n (new ZoomConstantExpression('source', expression.value): SourceExpression));\n }\n\n const interpolationType = zoomCurve instanceof Interpolate ? zoomCurve.interpolation : undefined;\n\n return success(isFeatureConstant ?\n (new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType): CameraExpression) :\n (new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType): CompositeExpression));\n}\n\nimport {isFunction, createFunction} from '../function';\nimport {Color} from './values';\n\n// serialization wrapper for old-style stop functions normalized to the\n// expression interface\nexport class StylePropertyFunction {\n _parameters: PropertyValueSpecification;\n _specification: StylePropertySpecification;\n\n kind: EvaluationKind;\n evaluate: (globals: GlobalProperties, feature?: Feature) => any;\n interpolationFactor: ?(input: number, lower: number, upper: number) => number;\n zoomStops: ?Array;\n\n constructor(parameters: PropertyValueSpecification, specification: StylePropertySpecification) {\n this._parameters = parameters;\n this._specification = specification;\n extend(this, createFunction(this._parameters, this._specification));\n }\n\n static deserialize(serialized: {_parameters: PropertyValueSpecification, _specification: StylePropertySpecification}) {\n return ((new StylePropertyFunction(serialized._parameters, serialized._specification)): StylePropertyFunction);\n }\n\n static serialize(input: StylePropertyFunction) {\n return {\n _parameters: input._parameters,\n _specification: input._specification\n };\n }\n}\n\nexport function normalizePropertyExpression(value: PropertyValueSpecification, specification: StylePropertySpecification): StylePropertyExpression {\n if (isFunction(value)) {\n return (new StylePropertyFunction(value, specification): any);\n\n } else if (isExpression(value)) {\n const expression = createPropertyExpression(value, specification);\n if (expression.result === 'error') {\n // this should have been caught in validation\n throw new Error(expression.value.map(err => `${err.key}: ${err.message}`).join(', '));\n }\n return expression.value;\n\n } else {\n let constant: any = value;\n if (typeof value === 'string' && specification.type === 'color') {\n constant = Color.parse(value);\n }\n return {\n kind: 'constant',\n evaluate: () => constant\n };\n }\n}\n\n// Zoom-dependent expressions may only use [\"zoom\"] as the input to a top-level \"step\" or \"interpolate\"\n// expression (collectively referred to as a \"curve\"). The curve may be wrapped in one or more \"let\" or\n// \"coalesce\" expressions.\nfunction findZoomCurve(expression: Expression): Step | Interpolate | ParsingError | null {\n let result = null;\n if (expression instanceof Let) {\n result = findZoomCurve(expression.result);\n\n } else if (expression instanceof Coalesce) {\n for (const arg of expression.args) {\n result = findZoomCurve(arg);\n if (result) {\n break;\n }\n }\n\n } else if ((expression instanceof Step || expression instanceof Interpolate) &&\n expression.input instanceof CompoundExpression &&\n expression.input.name === 'zoom') {\n\n result = expression;\n }\n\n if (result instanceof ParsingError) {\n return result;\n }\n\n expression.eachChild((child) => {\n const childResult = findZoomCurve(child);\n if (childResult instanceof ParsingError) {\n result = childResult;\n } else if (!result && childResult) {\n result = new ParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.');\n } else if (result && childResult && result !== childResult) {\n result = new ParsingError('', 'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.');\n }\n });\n\n return result;\n}\n\nimport {ColorType, StringType, NumberType, BooleanType, ValueType, FormattedType, ResolvedImageType, array} from './types';\n\nfunction getExpectedType(spec: StylePropertySpecification): Type {\n const types = {\n color: ColorType,\n string: StringType,\n number: NumberType,\n enum: StringType,\n boolean: BooleanType,\n formatted: FormattedType,\n resolvedImage: ResolvedImageType\n };\n\n if (spec.type === 'array') {\n return array(types[spec.value] || ValueType, spec.length);\n }\n\n return types[spec.type];\n}\n\nfunction getDefaultValue(spec: StylePropertySpecification): Value {\n if (spec.type === 'color' && isFunction(spec.default)) {\n // Special case for heatmap-color: it uses the 'default:' to define a\n // default color ramp, but createExpression expects a simple value to fall\n // back to in case of runtime errors\n return new Color(0, 0, 0, 0);\n } else if (spec.type === 'color') {\n return Color.parse(spec.default) || null;\n } else if (spec.default === undefined) {\n return null;\n } else {\n return spec.default;\n }\n}\n","// @flow\n\nimport assert from 'assert';\nimport type {StylePropertySpecification} from '../style-spec';\n\nexport default convertFunction;\n\nfunction convertLiteral(value) {\n return typeof value === 'object' ? ['literal', value] : value;\n}\n\nfunction convertFunction(parameters: any, propertySpec: StylePropertySpecification) {\n let stops = parameters.stops;\n if (!stops) {\n // identity function\n return convertIdentityFunction(parameters, propertySpec);\n }\n\n const zoomAndFeatureDependent = stops && typeof stops[0][0] === 'object';\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n\n stops = stops.map((stop) => {\n if (!featureDependent && propertySpec.tokens && typeof stop[1] === 'string') {\n return [stop[0], convertTokenString(stop[1])];\n }\n return [stop[0], convertLiteral(stop[1])];\n });\n\n if (zoomAndFeatureDependent) {\n return convertZoomAndPropertyFunction(parameters, propertySpec, stops);\n } else if (zoomDependent) {\n return convertZoomFunction(parameters, propertySpec, stops);\n } else {\n return convertPropertyFunction(parameters, propertySpec, stops);\n }\n}\n\nfunction convertIdentityFunction(parameters, propertySpec): Array {\n const get = ['get', parameters.property];\n\n if (parameters.default === undefined) {\n // By default, expressions for string-valued properties get coerced. To preserve\n // legacy function semantics, insert an explicit assertion instead.\n return propertySpec.type === 'string' ? ['string', get] : get;\n } else if (propertySpec.type === 'enum') {\n return [\n 'match',\n get,\n Object.keys(propertySpec.values),\n get,\n parameters.default\n ];\n } else {\n const expression = [propertySpec.type === 'color' ? 'to-color' : propertySpec.type, get, convertLiteral(parameters.default)];\n if (propertySpec.type === 'array') {\n expression.splice(1, 0, propertySpec.value, propertySpec.length || null);\n }\n return expression;\n }\n}\n\nfunction getInterpolateOperator(parameters) {\n switch (parameters.colorSpace) {\n case 'hcl': return 'interpolate-hcl';\n case 'lab': return 'interpolate-lab';\n default: return 'interpolate';\n }\n}\n\nfunction convertZoomAndPropertyFunction(parameters, propertySpec, stops) {\n const featureFunctionParameters = {};\n const featureFunctionStops = {};\n const zoomStops = [];\n for (let s = 0; s < stops.length; s++) {\n const stop = stops[s];\n const zoom = stop[0].zoom;\n if (featureFunctionParameters[zoom] === undefined) {\n featureFunctionParameters[zoom] = {\n zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default,\n };\n featureFunctionStops[zoom] = [];\n zoomStops.push(zoom);\n }\n featureFunctionStops[zoom].push([stop[0].value, stop[1]]);\n }\n\n // the interpolation type for the zoom dimension of a zoom-and-property\n // function is determined directly from the style property specification\n // for which it's being used: linear for interpolatable properties, step\n // otherwise.\n const functionType = getFunctionType({}, propertySpec);\n if (functionType === 'exponential') {\n const expression = [getInterpolateOperator(parameters), ['linear'], ['zoom']];\n\n for (const z of zoomStops) {\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, false);\n }\n\n return expression;\n } else {\n const expression = ['step', ['zoom']];\n\n for (const z of zoomStops) {\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, true);\n }\n\n fixupDegenerateStepCurve(expression);\n\n return expression;\n }\n}\n\nfunction coalesce(a, b) {\n if (a !== undefined) return a;\n if (b !== undefined) return b;\n}\n\nfunction getFallback(parameters, propertySpec) {\n const defaultValue = convertLiteral(coalesce(parameters.default, propertySpec.default));\n\n /*\n * Some fields with type: resolvedImage have an undefined default.\n * Because undefined is an invalid value for resolvedImage, set fallback to\n * an empty string instead of undefined to ensure output\n * passes validation.\n */\n if (defaultValue === undefined && propertySpec.type === 'resolvedImage') {\n return '';\n }\n return defaultValue;\n}\n\nfunction convertPropertyFunction(parameters, propertySpec, stops) {\n const type = getFunctionType(parameters, propertySpec);\n const get = ['get', parameters.property];\n if (type === 'categorical' && typeof stops[0][0] === 'boolean') {\n assert(parameters.stops.length > 0 && parameters.stops.length <= 2);\n const expression = ['case'];\n for (const stop of stops) {\n expression.push(['==', get, stop[0]], stop[1]);\n }\n\n expression.push(getFallback(parameters, propertySpec));\n return expression;\n } else if (type === 'categorical') {\n const expression = ['match', get];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n expression.push(getFallback(parameters, propertySpec));\n return expression;\n } else if (type === 'interval') {\n const expression = ['step', ['number', get]];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], true);\n }\n fixupDegenerateStepCurve(expression);\n return parameters.default === undefined ? expression : [\n 'case',\n ['==', ['typeof', get], 'number'],\n expression,\n convertLiteral(parameters.default)\n ];\n } else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n const expression = [\n getInterpolateOperator(parameters),\n base === 1 ? [\"linear\"] : [\"exponential\", base],\n [\"number\", get]\n ];\n\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n return parameters.default === undefined ? expression : [\n 'case',\n ['==', ['typeof', get], 'number'],\n expression,\n convertLiteral(parameters.default)\n ];\n } else {\n throw new Error(`Unknown property function type ${type}`);\n }\n}\n\nfunction convertZoomFunction(parameters, propertySpec, stops, input = ['zoom']) {\n const type = getFunctionType(parameters, propertySpec);\n let expression;\n let isStep = false;\n if (type === 'interval') {\n expression = ['step', input];\n isStep = true;\n } else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n expression = [getInterpolateOperator(parameters), base === 1 ? [\"linear\"] : [\"exponential\", base], input];\n\n } else {\n throw new Error(`Unknown zoom function type \"${type}\"`);\n }\n\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], isStep);\n }\n\n fixupDegenerateStepCurve(expression);\n\n return expression;\n}\n\nfunction fixupDegenerateStepCurve(expression) {\n // degenerate step curve (i.e. a constant function): add a noop stop\n if (expression[0] === 'step' && expression.length === 3) {\n expression.push(0);\n expression.push(expression[3]);\n }\n}\n\nfunction appendStopPair(curve, input, output, isStep) {\n // Skip duplicate stop values. They were not validated for functions, but they are for expressions.\n // https://github.com/mapbox/mapbox-gl-js/issues/4107\n if (curve.length > 3 && input === curve[curve.length - 2]) {\n return;\n }\n // step curves don't get the first input value, as it is redundant.\n if (!(isStep && curve.length === 2)) {\n curve.push(input);\n }\n curve.push(output);\n}\n\nfunction getFunctionType(parameters, propertySpec) {\n if (parameters.type) {\n return parameters.type;\n } else {\n assert(propertySpec.expression);\n return (propertySpec.expression: any).interpolated ? 'exponential' : 'interval';\n }\n}\n\n// \"String with {name} token\" => [\"concat\", \"String with \", [\"get\", \"name\"], \" token\"]\nexport function convertTokenString(s: string) {\n const result = ['concat'];\n const re = /{([^{}]+)}/g;\n let pos = 0;\n for (let match = re.exec(s); match !== null; match = re.exec(s)) {\n const literal = s.slice(pos, re.lastIndex - match[0].length);\n pos = re.lastIndex;\n if (literal.length > 0) result.push(literal);\n result.push(['get', match[1]]);\n }\n\n if (result.length === 1) {\n return s;\n }\n\n if (pos < s.length) {\n result.push(s.slice(pos));\n } else if (result.length === 2) {\n return ['to-string', result[1]];\n }\n\n return result;\n}\n\n","// @flow\n\nimport {createExpression} from '../expression';\nimport type {GlobalProperties, Feature} from '../expression';\nimport type {CanonicalTileID} from '../../source/tile_id';\n\ntype FilterExpression = (globalProperties: GlobalProperties, feature: Feature, canonical?: CanonicalTileID) => boolean;\nexport type FeatureFilter ={filter: FilterExpression, needGeometry: boolean};\n\nexport default createFilter;\nexport {isExpressionFilter};\n\nfunction isExpressionFilter(filter: any) {\n if (filter === true || filter === false) {\n return true;\n }\n\n if (!Array.isArray(filter) || filter.length === 0) {\n return false;\n }\n switch (filter[0]) {\n case 'has':\n return filter.length >= 2 && filter[1] !== '$id' && filter[1] !== '$type';\n\n case 'in':\n return filter.length >= 3 && (typeof filter[1] !== 'string' || Array.isArray(filter[2]));\n\n case '!in':\n case '!has':\n case 'none':\n return false;\n\n case '==':\n case '!=':\n case '>':\n case '>=':\n case '<':\n case '<=':\n return filter.length !== 3 || (Array.isArray(filter[1]) || Array.isArray(filter[2]));\n\n case 'any':\n case 'all':\n for (const f of filter.slice(1)) {\n if (!isExpressionFilter(f) && typeof f !== 'boolean') {\n return false;\n }\n }\n return true;\n\n default:\n return true;\n }\n}\n\nconst filterSpec = {\n 'type': 'boolean',\n 'default': false,\n 'transition': false,\n 'property-type': 'data-driven',\n 'expression': {\n 'interpolated': false,\n 'parameters': ['zoom', 'feature']\n }\n};\n\n/**\n * Given a filter expressed as nested arrays, return a new function\n * that evaluates whether a given feature (with a .properties or .tags property)\n * passes its test.\n *\n * @private\n * @param {Array} filter mapbox gl filter\n * @returns {Function} filter-evaluating function\n */\nfunction createFilter(filter: any): FeatureFilter {\n if (filter === null || filter === undefined) {\n return {filter: () => true, needGeometry: false};\n }\n\n if (!isExpressionFilter(filter)) {\n filter = convertFilter(filter);\n }\n\n const compiled = createExpression(filter, filterSpec);\n if (compiled.result === 'error') {\n throw new Error(compiled.value.map(err => `${err.key}: ${err.message}`).join(', '));\n } else {\n const needGeometry = geometryNeeded(filter);\n return {filter: (globalProperties: GlobalProperties, feature: Feature, canonical?: CanonicalTileID) => compiled.value.evaluate(globalProperties, feature, {}, canonical),\n needGeometry};\n }\n}\n\n// Comparison function to sort numbers and strings\nfunction compare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nfunction geometryNeeded(filter) {\n if (!Array.isArray(filter)) return false;\n if (filter[0] === 'within') return true;\n for (let index = 1; index < filter.length; index++) {\n if (geometryNeeded(filter[index])) return true;\n }\n return false;\n}\n\nfunction convertFilter(filter: ?Array): mixed {\n if (!filter) return true;\n const op = filter[0];\n if (filter.length <= 1) return (op !== 'any');\n const converted =\n op === '==' ? convertComparisonOp(filter[1], filter[2], '==') :\n op === '!=' ? convertNegation(convertComparisonOp(filter[1], filter[2], '==')) :\n op === '<' ||\n op === '>' ||\n op === '<=' ||\n op === '>=' ? convertComparisonOp(filter[1], filter[2], op) :\n op === 'any' ? convertDisjunctionOp(filter.slice(1)) :\n op === 'all' ? ['all'].concat(filter.slice(1).map(convertFilter)) :\n op === 'none' ? ['all'].concat(filter.slice(1).map(convertFilter).map(convertNegation)) :\n op === 'in' ? convertInOp(filter[1], filter.slice(2)) :\n op === '!in' ? convertNegation(convertInOp(filter[1], filter.slice(2))) :\n op === 'has' ? convertHasOp(filter[1]) :\n op === '!has' ? convertNegation(convertHasOp(filter[1])) :\n op === 'within' ? filter :\n true;\n return converted;\n}\n\nfunction convertComparisonOp(property: string, value: any, op: string) {\n switch (property) {\n case '$type':\n return [`filter-type-${op}`, value];\n case '$id':\n return [`filter-id-${op}`, value];\n default:\n return [`filter-${op}`, property, value];\n }\n}\n\nfunction convertDisjunctionOp(filters: Array>) {\n return ['any'].concat(filters.map(convertFilter));\n}\n\nfunction convertInOp(property: string, values: Array) {\n if (values.length === 0) { return false; }\n switch (property) {\n case '$type':\n return [`filter-type-in`, ['literal', values]];\n case '$id':\n return [`filter-id-in`, ['literal', values]];\n default:\n if (values.length > 200 && !values.some(v => typeof v !== typeof values[0])) {\n return ['filter-in-large', property, ['literal', values.sort(compare)]];\n } else {\n return ['filter-in-small', property, ['literal', values]];\n }\n }\n}\n\nfunction convertHasOp(property: string) {\n switch (property) {\n case '$type':\n return true;\n case '$id':\n return [`filter-has-id`];\n default:\n return [`filter-has`, property];\n }\n}\n\nfunction convertNegation(filter: mixed) {\n return ['!', filter];\n}\n","// @flow\n\nimport {isExpressionFilter} from './index';\n\nimport type {FilterSpecification} from '../types';\n\ntype ExpectedTypes = {[_: string]: 'string' | 'number' | 'boolean'};\n\n/**\n * Convert the given legacy filter to (the JSON representation of) an\n * equivalent expression\n * @private\n */\nexport default function convertFilter(filter: FilterSpecification): mixed {\n return _convertFilter(filter, {});\n}\n\n/*\n * Convert the given filter to an expression, storing the expected types for\n * any feature properties referenced in expectedTypes.\n *\n * These expected types are needed in order to construct preflight type checks\n * needed for handling 'any' filters. A preflight type check is necessary in\n * order to mimic legacy filters' semantics around expected type mismatches.\n * For example, consider the legacy filter:\n *\n * [\"any\", [\"all\", [\">\", \"y\", 0], [\">\", \"y\", 0]], [\">\", \"x\", 0]]\n *\n * Naively, we might convert this to the expression:\n *\n * [\"any\", [\"all\", [\">\", [\"get\", \"y\"], 0], [\">\", [\"get\", \"z\"], 0]], [\">\", [\"get\", \"x\"], 0]]\n *\n * But if we tried to evaluate this against, say `{x: 1, y: null, z: 0}`, the\n * [\">\", [\"get\", \"y\"], 0] would cause an evaluation error, leading to the\n * entire filter returning false. Legacy filter semantics, though, ask for\n * [\">\", \"y\", 0] to simply return `false` when `y` is of the wrong type,\n * allowing the subsequent terms of the outer \"any\" expression to be evaluated\n * (resulting, in this case, in a `true` value, because x > 0).\n *\n * We account for this by inserting a preflight type-checking expression before\n * each \"any\" term, allowing us to avoid evaluating the actual converted filter\n * if any type mismatches would cause it to produce an evalaution error:\n *\n * [\"any\",\n * [\"case\",\n * [\"all\", [\"==\", [\"typeof\", [\"get\", \"y\"]], \"number\"], [\"==\", [\"typeof\", [\"get\", \"z\"], \"number]],\n * [\"all\", [\">\", [\"get\", \"y\"], 0], [\">\", [\"get\", \"z\"], 0]],\n * false\n * ],\n * [\"case\",\n * [\"==\", [\"typeof\", [\"get\", \"x\"], \"number\"]],\n * [\">\", [\"get\", \"x\"], 0],\n * false\n * ]\n * ]\n *\n * An alternative, possibly more direct approach would be to use type checks\n * in the conversion of each comparison operator, so that the converted version\n * of each individual ==, >=, etc. would mimic the legacy filter semantics. The\n * downside of this approach is that it can lead to many more type checks than\n * would otherwise be necessary: outside the context of an \"any\" expression,\n * bailing out due to a runtime type error (expression semantics) and returning\n * false (legacy filter semantics) are equivalent: they cause the filter to\n * produce a `false` result.\n */\nfunction _convertFilter(filter: FilterSpecification, expectedTypes: ExpectedTypes): mixed {\n if (isExpressionFilter(filter)) { return filter; }\n\n if (!filter) return true;\n const op = filter[0];\n if (filter.length <= 1) return (op !== 'any');\n\n let converted;\n\n if (\n op === '==' ||\n op === '!=' ||\n op === '<' ||\n op === '>' ||\n op === '<=' ||\n op === '>='\n ) {\n const [, property, value] = (filter: any);\n converted = convertComparisonOp(property, value, op, expectedTypes);\n } else if (op === 'any') {\n const children = (filter: any).slice(1).map(f => {\n const types = {};\n const child = _convertFilter(f, types);\n const typechecks = runtimeTypeChecks(types);\n return typechecks === true ? child : ['case', typechecks, child, false];\n });\n return ['any'].concat(children);\n } else if (op === 'all') {\n const children = (filter: any).slice(1).map(f => _convertFilter(f, expectedTypes));\n return children.length > 1 ? ['all'].concat(children) : [].concat(...children);\n } else if (op === 'none') {\n return ['!', _convertFilter(['any'].concat(filter.slice(1)), {})];\n } else if (op === 'in') {\n converted = convertInOp((filter[1]: any), filter.slice(2));\n } else if (op === '!in') {\n converted = convertInOp((filter[1]: any), filter.slice(2), true);\n } else if (op === 'has') {\n converted = convertHasOp((filter[1]: any));\n } else if (op === '!has') {\n converted = ['!', convertHasOp((filter[1]: any))];\n } else {\n converted = true;\n }\n\n return converted;\n}\n\n// Given a set of feature properties and an expected type for each one,\n// construct an boolean expression that tests whether each property has the\n// right type.\n// E.g.: for {name: 'string', population: 'number'}, return\n// [ 'all',\n// ['==', ['typeof', ['get', 'name'], 'string']],\n// ['==', ['typeof', ['get', 'population'], 'number]]\n// ]\nfunction runtimeTypeChecks(expectedTypes: ExpectedTypes) {\n const conditions = [];\n for (const property in expectedTypes) {\n const get = property === '$id' ? ['id'] : ['get', property];\n conditions.push(['==', ['typeof', get], expectedTypes[property]]);\n }\n if (conditions.length === 0) return true;\n if (conditions.length === 1) return conditions[0];\n return ['all'].concat(conditions);\n}\n\nfunction convertComparisonOp(property: string, value: any, op: string, expectedTypes: ?ExpectedTypes) {\n let get;\n if (property === '$type') {\n return [op, ['geometry-type'], value];\n } else if (property === '$id') {\n get = ['id'];\n } else {\n get = ['get', property];\n }\n\n if (expectedTypes && value !== null) {\n const type = ((typeof value): any);\n expectedTypes[property] = type;\n }\n\n if (op === '==' && property !== '$id' && value === null) {\n return [\n 'all',\n ['has', property], // missing property != null for legacy filters\n ['==', get, null]\n ];\n } else if (op === '!=' && property !== '$id' && value === null) {\n return [\n 'any',\n ['!', ['has', property]], // missing property != null for legacy filters\n ['!=', get, null]\n ];\n }\n\n return [op, get, value];\n}\n\nfunction convertInOp(property: string, values: Array, negate = false) {\n if (values.length === 0) return negate;\n\n let get;\n if (property === '$type') {\n get = ['geometry-type'];\n } else if (property === '$id') {\n get = ['id'];\n } else {\n get = ['get', property];\n }\n\n // Determine if the list of values to be searched is homogenously typed.\n // If so (and if the type is string or number), then we can use a\n // [match, input, [...values], true, false] construction rather than a\n // bunch of `==` tests.\n let uniformTypes = true;\n const type = typeof values[0];\n for (const value of values) {\n if (typeof value !== type) {\n uniformTypes = false;\n break;\n }\n }\n\n if (uniformTypes && (type === 'string' || type === 'number')) {\n // Match expressions must have unique values.\n const uniqueValues = values.sort().filter((v, i) => i === 0 || values[i - 1] !== v);\n return ['match', get, uniqueValues, !negate, negate];\n }\n\n return [ negate ? 'all' : 'any' ].concat(\n values.map(v => [negate ? '!=' : '==', get, v])\n );\n}\n\nfunction convertHasOp(property: string) {\n if (property === '$type') {\n return true;\n } else if (property === '$id') {\n return ['!=', ['id'], null];\n } else {\n return ['has', property];\n }\n}\n","// @flow\n\nimport {\n eachLayer,\n eachProperty\n} from '../visit';\nimport {isExpression} from '../expression';\nimport convertFunction, {convertTokenString} from '../function/convert';\nimport convertFilter from '../feature_filter/convert';\n\nimport type {StyleSpecification} from '../types';\n\n/**\n * Migrate the given style object in place to use expressions. Specifically,\n * this will convert (a) \"stop\" functions, and (b) legacy filters to their\n * expression equivalents.\n */\nexport default function(style: StyleSpecification) {\n const converted = [];\n\n eachLayer(style, (layer) => {\n if (layer.filter) {\n layer.filter = (convertFilter(layer.filter): any);\n }\n });\n\n eachProperty(style, {paint: true, layout: true}, ({path, value, reference, set}) => {\n if (isExpression(value)) return;\n if (typeof value === 'object' && !Array.isArray(value)) {\n set(convertFunction(value, reference));\n converted.push(path.join('.'));\n } else if (reference.tokens && typeof value === 'string') {\n set(convertTokenString(value));\n }\n });\n\n return style;\n}\n\n","\nimport migrateToV8 from './migrate/v8';\nimport migrateToExpressions from './migrate/expressions';\n\n/**\n * Migrate a Mapbox GL Style to the latest version.\n *\n * @private\n * @alias migrate\n * @param {object} style a Mapbox GL Style\n * @returns {Object} a migrated style\n * @example\n * var fs = require('fs');\n * var migrate = require('mapbox-gl-style-spec').migrate;\n * var style = fs.readFileSync('./style.json', 'utf8');\n * fs.writeFileSync('./style.json', JSON.stringify(migrate(style)));\n */\nexport default function(style) {\n let migrated = false;\n\n if (style.version === 7) {\n style = migrateToV8(style);\n migrated = true;\n }\n\n if (style.version === 8) {\n migrated = migrateToExpressions(style);\n migrated = true;\n }\n\n if (!migrated) {\n throw new Error('cannot migrate from', style.version);\n }\n\n return style;\n}\n","\nexport default function (style) {\n const styleIDs = [];\n const sourceIDs = [];\n const compositedSourceLayers = [];\n\n for (const id in style.sources) {\n const source = style.sources[id];\n\n if (source.type !== \"vector\")\n continue;\n\n const match = /^mapbox:\\/\\/(.*)/.exec(source.url);\n if (!match)\n continue;\n\n styleIDs.push(id);\n sourceIDs.push(match[1]);\n }\n\n if (styleIDs.length < 2)\n return style;\n\n styleIDs.forEach((id) => {\n delete style.sources[id];\n });\n\n const compositeID = sourceIDs.join(\",\");\n\n style.sources[compositeID] = {\n \"type\": \"vector\",\n \"url\": `mapbox://${compositeID}`\n };\n\n style.layers.forEach((layer) => {\n if (styleIDs.indexOf(layer.source) >= 0) {\n layer.source = compositeID;\n\n if ('source-layer' in layer) {\n if (compositedSourceLayers.indexOf(layer['source-layer']) >= 0) {\n throw new Error('Conflicting source layer names');\n } else {\n compositedSourceLayers.push(layer['source-layer']);\n }\n }\n }\n });\n\n return style;\n}\n","\nexport default ['type', 'source', 'source-layer', 'minzoom', 'maxzoom', 'filter', 'layout'];\n","\nimport refProperties from './util/ref_properties';\n\nfunction deref(layer, parent) {\n const result = {};\n\n for (const k in layer) {\n if (k !== 'ref') {\n result[k] = layer[k];\n }\n }\n\n refProperties.forEach((k) => {\n if (k in parent) {\n result[k] = parent[k];\n }\n });\n\n return result;\n}\n\nexport default derefLayers;\n\n/**\n * Given an array of layers, some of which may contain `ref` properties\n * whose value is the `id` of another property, return a new array where\n * such layers have been augmented with the 'type', 'source', etc. properties\n * from the parent layer, and the `ref` property has been removed.\n *\n * The input is not modified. The output may contain references to portions\n * of the input.\n *\n * @private\n * @param {Array} layers\n * @returns {Array}\n */\nfunction derefLayers(layers) {\n layers = layers.slice();\n\n const map = Object.create(null);\n for (let i = 0; i < layers.length; i++) {\n map[layers[i].id] = layers[i];\n }\n\n for (let i = 0; i < layers.length; i++) {\n if ('ref' in layers[i]) {\n layers[i] = deref(layers[i], map[layers[i].ref]);\n }\n }\n\n return layers;\n}\n","// @flow\n\n/**\n * Deeply compares two object literals.\n *\n * @private\n */\nfunction deepEqual(a: ?mixed, b: ?mixed): boolean {\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) return false;\n }\n return true;\n }\n if (typeof a === 'object' && a !== null && b !== null) {\n if (!(typeof b === 'object')) return false;\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n for (const key in a) {\n if (!deepEqual(a[key], b[key])) return false;\n }\n return true;\n }\n return a === b;\n}\n\nexport default deepEqual;\n","\nimport isEqual from './util/deep_equal';\n\nconst operations = {\n\n /*\n * { command: 'setStyle', args: [stylesheet] }\n */\n setStyle: 'setStyle',\n\n /*\n * { command: 'addLayer', args: [layer, 'beforeLayerId'] }\n */\n addLayer: 'addLayer',\n\n /*\n * { command: 'removeLayer', args: ['layerId'] }\n */\n removeLayer: 'removeLayer',\n\n /*\n * { command: 'setPaintProperty', args: ['layerId', 'prop', value] }\n */\n setPaintProperty: 'setPaintProperty',\n\n /*\n * { command: 'setLayoutProperty', args: ['layerId', 'prop', value] }\n */\n setLayoutProperty: 'setLayoutProperty',\n\n /*\n * { command: 'setFilter', args: ['layerId', filter] }\n */\n setFilter: 'setFilter',\n\n /*\n * { command: 'addSource', args: ['sourceId', source] }\n */\n addSource: 'addSource',\n\n /*\n * { command: 'removeSource', args: ['sourceId'] }\n */\n removeSource: 'removeSource',\n\n /*\n * { command: 'setGeoJSONSourceData', args: ['sourceId', data] }\n */\n setGeoJSONSourceData: 'setGeoJSONSourceData',\n\n /*\n * { command: 'setLayerZoomRange', args: ['layerId', 0, 22] }\n */\n setLayerZoomRange: 'setLayerZoomRange',\n\n /*\n * { command: 'setLayerProperty', args: ['layerId', 'prop', value] }\n */\n setLayerProperty: 'setLayerProperty',\n\n /*\n * { command: 'setCenter', args: [[lon, lat]] }\n */\n setCenter: 'setCenter',\n\n /*\n * { command: 'setZoom', args: [zoom] }\n */\n setZoom: 'setZoom',\n\n /*\n * { command: 'setBearing', args: [bearing] }\n */\n setBearing: 'setBearing',\n\n /*\n * { command: 'setPitch', args: [pitch] }\n */\n setPitch: 'setPitch',\n\n /*\n * { command: 'setSprite', args: ['spriteUrl'] }\n */\n setSprite: 'setSprite',\n\n /*\n * { command: 'setGlyphs', args: ['glyphsUrl'] }\n */\n setGlyphs: 'setGlyphs',\n\n /*\n * { command: 'setTransition', args: [transition] }\n */\n setTransition: 'setTransition',\n\n /*\n * { command: 'setLighting', args: [lightProperties] }\n */\n setLight: 'setLight'\n\n};\n\nfunction addSource(sourceId, after, commands) {\n commands.push({command: operations.addSource, args: [sourceId, after[sourceId]]});\n}\n\nfunction removeSource(sourceId, commands, sourcesRemoved) {\n commands.push({command: operations.removeSource, args: [sourceId]});\n sourcesRemoved[sourceId] = true;\n}\n\nfunction updateSource(sourceId, after, commands, sourcesRemoved) {\n removeSource(sourceId, commands, sourcesRemoved);\n addSource(sourceId, after, commands);\n}\n\nfunction canUpdateGeoJSON(before, after, sourceId) {\n let prop;\n for (prop in before[sourceId]) {\n if (!before[sourceId].hasOwnProperty(prop)) continue;\n if (prop !== 'data' && !isEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n for (prop in after[sourceId]) {\n if (!after[sourceId].hasOwnProperty(prop)) continue;\n if (prop !== 'data' && !isEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n return true;\n}\n\nfunction diffSources(before, after, commands, sourcesRemoved) {\n before = before || {};\n after = after || {};\n\n let sourceId;\n\n // look for sources to remove\n for (sourceId in before) {\n if (!before.hasOwnProperty(sourceId)) continue;\n if (!after.hasOwnProperty(sourceId)) {\n removeSource(sourceId, commands, sourcesRemoved);\n }\n }\n\n // look for sources to add/update\n for (sourceId in after) {\n if (!after.hasOwnProperty(sourceId)) continue;\n if (!before.hasOwnProperty(sourceId)) {\n addSource(sourceId, after, commands);\n } else if (!isEqual(before[sourceId], after[sourceId])) {\n if (before[sourceId].type === 'geojson' && after[sourceId].type === 'geojson' && canUpdateGeoJSON(before, after, sourceId)) {\n commands.push({command: operations.setGeoJSONSourceData, args: [sourceId, after[sourceId].data]});\n } else {\n // no update command, must remove then add\n updateSource(sourceId, after, commands, sourcesRemoved);\n }\n }\n }\n}\n\nfunction diffLayerPropertyChanges(before, after, commands, layerId, klass, command) {\n before = before || {};\n after = after || {};\n\n let prop;\n\n for (prop in before) {\n if (!before.hasOwnProperty(prop)) continue;\n if (!isEqual(before[prop], after[prop])) {\n commands.push({command, args: [layerId, prop, after[prop], klass]});\n }\n }\n for (prop in after) {\n if (!after.hasOwnProperty(prop) || before.hasOwnProperty(prop)) continue;\n if (!isEqual(before[prop], after[prop])) {\n commands.push({command, args: [layerId, prop, after[prop], klass]});\n }\n }\n}\n\nfunction pluckId(layer) {\n return layer.id;\n}\nfunction indexById(group, layer) {\n group[layer.id] = layer;\n return group;\n}\n\nfunction diffLayers(before, after, commands) {\n before = before || [];\n after = after || [];\n\n // order of layers by id\n const beforeOrder = before.map(pluckId);\n const afterOrder = after.map(pluckId);\n\n // index of layer by id\n const beforeIndex = before.reduce(indexById, {});\n const afterIndex = after.reduce(indexById, {});\n\n // track order of layers as if they have been mutated\n const tracker = beforeOrder.slice();\n\n // layers that have been added do not need to be diffed\n const clean = Object.create(null);\n\n let i, d, layerId, beforeLayer, afterLayer, insertBeforeLayerId, prop;\n\n // remove layers\n for (i = 0, d = 0; i < beforeOrder.length; i++) {\n layerId = beforeOrder[i];\n if (!afterIndex.hasOwnProperty(layerId)) {\n commands.push({command: operations.removeLayer, args: [layerId]});\n tracker.splice(tracker.indexOf(layerId, d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n }\n\n // add/reorder layers\n for (i = 0, d = 0; i < afterOrder.length; i++) {\n // work backwards as insert is before an existing layer\n layerId = afterOrder[afterOrder.length - 1 - i];\n\n if (tracker[tracker.length - 1 - i] === layerId) continue;\n\n if (beforeIndex.hasOwnProperty(layerId)) {\n // remove the layer before we insert at the correct position\n commands.push({command: operations.removeLayer, args: [layerId]});\n tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n\n // add layer at correct position\n insertBeforeLayerId = tracker[tracker.length - i];\n commands.push({command: operations.addLayer, args: [afterIndex[layerId], insertBeforeLayerId]});\n tracker.splice(tracker.length - i, 0, layerId);\n clean[layerId] = true;\n }\n\n // update layers\n for (i = 0; i < afterOrder.length; i++) {\n layerId = afterOrder[i];\n beforeLayer = beforeIndex[layerId];\n afterLayer = afterIndex[layerId];\n\n // no need to update if previously added (new or moved)\n if (clean[layerId] || isEqual(beforeLayer, afterLayer)) continue;\n\n // If source, source-layer, or type have changes, then remove the layer\n // and add it back 'from scratch'.\n if (!isEqual(beforeLayer.source, afterLayer.source) || !isEqual(beforeLayer['source-layer'], afterLayer['source-layer']) || !isEqual(beforeLayer.type, afterLayer.type)) {\n commands.push({command: operations.removeLayer, args: [layerId]});\n // we add the layer back at the same position it was already in, so\n // there's no need to update the `tracker`\n insertBeforeLayerId = tracker[tracker.lastIndexOf(layerId) + 1];\n commands.push({command: operations.addLayer, args: [afterLayer, insertBeforeLayerId]});\n continue;\n }\n\n // layout, paint, filter, minzoom, maxzoom\n diffLayerPropertyChanges(beforeLayer.layout, afterLayer.layout, commands, layerId, null, operations.setLayoutProperty);\n diffLayerPropertyChanges(beforeLayer.paint, afterLayer.paint, commands, layerId, null, operations.setPaintProperty);\n if (!isEqual(beforeLayer.filter, afterLayer.filter)) {\n commands.push({command: operations.setFilter, args: [layerId, afterLayer.filter]});\n }\n if (!isEqual(beforeLayer.minzoom, afterLayer.minzoom) || !isEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) {\n commands.push({command: operations.setLayerZoomRange, args: [layerId, afterLayer.minzoom, afterLayer.maxzoom]});\n }\n\n // handle all other layer props, including paint.*\n for (prop in beforeLayer) {\n if (!beforeLayer.hasOwnProperty(prop)) continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) {\n commands.push({command: operations.setLayerProperty, args: [layerId, prop, afterLayer[prop]]});\n }\n }\n for (prop in afterLayer) {\n if (!afterLayer.hasOwnProperty(prop) || beforeLayer.hasOwnProperty(prop)) continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) {\n commands.push({command: operations.setLayerProperty, args: [layerId, prop, afterLayer[prop]]});\n }\n }\n }\n}\n\n/**\n * Diff two stylesheet\n *\n * Creates semanticly aware diffs that can easily be applied at runtime.\n * Operations produced by the diff closely resemble the mapbox-gl-js API. Any\n * error creating the diff will fall back to the 'setStyle' operation.\n *\n * Example diff:\n * [\n * { command: 'setConstant', args: ['@water', '#0000FF'] },\n * { command: 'setPaintProperty', args: ['background', 'background-color', 'black'] }\n * ]\n *\n * @private\n * @param {*} [before] stylesheet to compare from\n * @param {*} after stylesheet to compare to\n * @returns Array list of changes\n */\nfunction diffStyles(before, after) {\n if (!before) return [{command: operations.setStyle, args: [after]}];\n\n let commands = [];\n\n try {\n // Handle changes to top-level properties\n if (!isEqual(before.version, after.version)) {\n return [{command: operations.setStyle, args: [after]}];\n }\n if (!isEqual(before.center, after.center)) {\n commands.push({command: operations.setCenter, args: [after.center]});\n }\n if (!isEqual(before.zoom, after.zoom)) {\n commands.push({command: operations.setZoom, args: [after.zoom]});\n }\n if (!isEqual(before.bearing, after.bearing)) {\n commands.push({command: operations.setBearing, args: [after.bearing]});\n }\n if (!isEqual(before.pitch, after.pitch)) {\n commands.push({command: operations.setPitch, args: [after.pitch]});\n }\n if (!isEqual(before.sprite, after.sprite)) {\n commands.push({command: operations.setSprite, args: [after.sprite]});\n }\n if (!isEqual(before.glyphs, after.glyphs)) {\n commands.push({command: operations.setGlyphs, args: [after.glyphs]});\n }\n if (!isEqual(before.transition, after.transition)) {\n commands.push({command: operations.setTransition, args: [after.transition]});\n }\n if (!isEqual(before.light, after.light)) {\n commands.push({command: operations.setLight, args: [after.light]});\n }\n\n // Handle changes to `sources`\n // If a source is to be removed, we also--before the removeSource\n // command--need to remove all the style layers that depend on it.\n const sourcesRemoved = {};\n\n // First collect the {add,remove}Source commands\n const removeOrAddSourceCommands = [];\n diffSources(before.sources, after.sources, removeOrAddSourceCommands, sourcesRemoved);\n\n // Push a removeLayer command for each style layer that depends on a\n // source that's being removed.\n // Also, exclude any such layers them from the input to `diffLayers`\n // below, so that diffLayers produces the appropriate `addLayers`\n // command\n const beforeLayers = [];\n if (before.layers) {\n before.layers.forEach((layer) => {\n if (sourcesRemoved[layer.source]) {\n commands.push({command: operations.removeLayer, args: [layer.id]});\n } else {\n beforeLayers.push(layer);\n }\n });\n }\n commands = commands.concat(removeOrAddSourceCommands);\n\n // Handle changes to `layers`\n diffLayers(beforeLayers, after.layers, commands);\n\n } catch (e) {\n // fall back to setStyle\n console.warn('Unable to compute style diff:', e);\n commands = [{command: operations.setStyle, args: [after]}];\n }\n\n return commands;\n}\n\nexport default diffStyles;\nexport {operations};\n","// @flow\n\n// Note: Do not inherit from Error. It breaks when transpiling to ES5.\n\nexport default class ValidationError {\n message: string;\n identifier: ?string;\n line: ?number;\n\n constructor(key: ?string, value: ?{ __line__: number }, message: string, identifier: ?string) {\n this.message = (key ? `${key}: ` : '') + message;\n if (identifier) this.identifier = identifier;\n\n if (value !== null && value !== undefined && value.__line__) {\n this.line = value.__line__;\n }\n }\n}\n","// @flow\n\n// Note: Do not inherit from Error. It breaks when transpiling to ES5.\n\nexport default class ParsingError {\n message: string;\n error: Error;\n line: number;\n\n constructor(error: Error) {\n this.error = error;\n this.message = error.message;\n const match = error.message.match(/line (\\d+)/);\n this.line = match ? parseInt(match[1], 10) : 0;\n }\n}\n","\nimport ValidationError from '../error/validation_error';\n\nexport default function validateConstants(options) {\n const key = options.key;\n const constants = options.value;\n\n if (constants) {\n return [new ValidationError(key, constants, 'constants have been deprecated as of v8')];\n } else {\n return [];\n }\n}\n","// @flow\n\n// Turn jsonlint-lines-primitives objects into primitive objects\nexport function unbundle(value: mixed) {\n if (value instanceof Number || value instanceof String || value instanceof Boolean) {\n return value.valueOf();\n } else {\n return value;\n }\n}\n\nexport function deepUnbundle(value: mixed): mixed {\n if (Array.isArray(value)) {\n return value.map(deepUnbundle);\n } else if (value instanceof Object && !(value instanceof Number || value instanceof String || value instanceof Boolean)) {\n const unbundledValue: { [key: string]: mixed } = {};\n for (const key in value) {\n unbundledValue[key] = deepUnbundle(value[key]);\n }\n return unbundledValue;\n }\n\n return unbundle(value);\n}\n","\nimport ValidationError from '../error/validation_error';\nimport getType from '../util/get_type';\nimport validateSpec from './validate';\n\nexport default function validateObject(options) {\n const key = options.key;\n const object = options.value;\n const elementSpecs = options.valueSpec || {};\n const elementValidators = options.objectElementValidators || {};\n const style = options.style;\n const styleSpec = options.styleSpec;\n let errors = [];\n\n const type = getType(object);\n if (type !== 'object') {\n return [new ValidationError(key, object, `object expected, ${type} found`)];\n }\n\n for (const objectKey in object) {\n const elementSpecKey = objectKey.split('.')[0]; // treat 'paint.*' as 'paint'\n const elementSpec = elementSpecs[elementSpecKey] || elementSpecs['*'];\n\n let validateElement;\n if (elementValidators[elementSpecKey]) {\n validateElement = elementValidators[elementSpecKey];\n } else if (elementSpecs[elementSpecKey]) {\n validateElement = validateSpec;\n } else if (elementValidators['*']) {\n validateElement = elementValidators['*'];\n } else if (elementSpecs['*']) {\n validateElement = validateSpec;\n } else {\n errors.push(new ValidationError(key, object[objectKey], `unknown property \"${objectKey}\"`));\n continue;\n }\n\n errors = errors.concat(validateElement({\n key: (key ? `${key}.` : key) + objectKey,\n value: object[objectKey],\n valueSpec: elementSpec,\n style,\n styleSpec,\n object,\n objectKey\n }, object));\n }\n\n for (const elementSpecKey in elementSpecs) {\n // Don't check `required` when there's a custom validator for that property.\n if (elementValidators[elementSpecKey]) {\n continue;\n }\n\n if (elementSpecs[elementSpecKey].required && elementSpecs[elementSpecKey]['default'] === undefined && object[elementSpecKey] === undefined) {\n errors.push(new ValidationError(key, object, `missing required property \"${elementSpecKey}\"`));\n }\n }\n\n return errors;\n}\n","\nimport getType from '../util/get_type';\nimport validate from './validate';\nimport ValidationError from '../error/validation_error';\n\nexport default function validateArray(options) {\n const array = options.value;\n const arraySpec = options.valueSpec;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const key = options.key;\n const validateArrayElement = options.arrayElementValidator || validate;\n\n if (getType(array) !== 'array') {\n return [new ValidationError(key, array, `array expected, ${getType(array)} found`)];\n }\n\n if (arraySpec.length && array.length !== arraySpec.length) {\n return [new ValidationError(key, array, `array length ${arraySpec.length} expected, length ${array.length} found`)];\n }\n\n if (arraySpec['min-length'] && array.length < arraySpec['min-length']) {\n return [new ValidationError(key, array, `array length at least ${arraySpec['min-length']} expected, length ${array.length} found`)];\n }\n\n let arrayElementSpec = {\n \"type\": arraySpec.value,\n \"values\": arraySpec.values\n };\n\n if (styleSpec.$version < 7) {\n arrayElementSpec.function = arraySpec.function;\n }\n\n if (getType(arraySpec.value) === 'object') {\n arrayElementSpec = arraySpec.value;\n }\n\n let errors = [];\n for (let i = 0; i < array.length; i++) {\n errors = errors.concat(validateArrayElement({\n array,\n arrayIndex: i,\n value: array[i],\n valueSpec: arrayElementSpec,\n style,\n styleSpec,\n key: `${key}[${i}]`\n }));\n }\n return errors;\n}\n","\nimport getType from '../util/get_type';\nimport ValidationError from '../error/validation_error';\n\nexport default function validateNumber(options) {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n let type = getType(value);\n\n // eslint-disable-next-line no-self-compare\n if (type === 'number' && value !== value) {\n type = 'NaN';\n }\n\n if (type !== 'number') {\n return [new ValidationError(key, value, `number expected, ${type} found`)];\n }\n\n if ('minimum' in valueSpec && value < valueSpec.minimum) {\n return [new ValidationError(key, value, `${value} is less than the minimum value ${valueSpec.minimum}`)];\n }\n\n if ('maximum' in valueSpec && value > valueSpec.maximum) {\n return [new ValidationError(key, value, `${value} is greater than the maximum value ${valueSpec.maximum}`)];\n }\n\n return [];\n}\n","\nimport ValidationError from '../error/validation_error';\nimport getType from '../util/get_type';\nimport validate from './validate';\nimport validateObject from './validate_object';\nimport validateArray from './validate_array';\nimport validateNumber from './validate_number';\nimport {isExpression} from '../expression';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint';\nimport {\n supportsPropertyExpression,\n supportsZoomExpression,\n supportsInterpolation\n} from '../util/properties';\n\nexport default function validateFunction(options) {\n const functionValueSpec = options.valueSpec;\n const functionType = unbundle(options.value.type);\n let stopKeyType;\n let stopDomainValues = {};\n let previousStopDomainValue;\n let previousStopDomainZoom;\n\n const isZoomFunction = functionType !== 'categorical' && options.value.property === undefined;\n const isPropertyFunction = !isZoomFunction;\n const isZoomAndPropertyFunction =\n getType(options.value.stops) === 'array' &&\n getType(options.value.stops[0]) === 'array' &&\n getType(options.value.stops[0][0]) === 'object';\n\n const errors = validateObject({\n key: options.key,\n value: options.value,\n valueSpec: options.styleSpec.function,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n stops: validateFunctionStops,\n default: validateFunctionDefault\n }\n });\n\n if (functionType === 'identity' && isZoomFunction) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"property\"'));\n }\n\n if (functionType !== 'identity' && !options.value.stops) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"stops\"'));\n }\n\n if (functionType === 'exponential' && options.valueSpec.expression && !supportsInterpolation(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'exponential functions not supported'));\n }\n\n if (options.styleSpec.$version >= 8) {\n if (isPropertyFunction && !supportsPropertyExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'property functions not supported'));\n } else if (isZoomFunction && !supportsZoomExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'zoom functions not supported'));\n }\n }\n\n if ((functionType === 'categorical' || isZoomAndPropertyFunction) && options.value.property === undefined) {\n errors.push(new ValidationError(options.key, options.value, '\"property\" property is required'));\n }\n\n return errors;\n\n function validateFunctionStops(options) {\n if (functionType === 'identity') {\n return [new ValidationError(options.key, options.value, 'identity function may not have a \"stops\" property')];\n }\n\n let errors = [];\n const value = options.value;\n\n errors = errors.concat(validateArray({\n key: options.key,\n value,\n valueSpec: options.valueSpec,\n style: options.style,\n styleSpec: options.styleSpec,\n arrayElementValidator: validateFunctionStop\n }));\n\n if (getType(value) === 'array' && value.length === 0) {\n errors.push(new ValidationError(options.key, value, 'array must have at least one stop'));\n }\n\n return errors;\n }\n\n function validateFunctionStop(options) {\n let errors = [];\n const value = options.value;\n const key = options.key;\n\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n }\n\n if (value.length !== 2) {\n return [new ValidationError(key, value, `array length 2 expected, length ${value.length} found`)];\n }\n\n if (isZoomAndPropertyFunction) {\n if (getType(value[0]) !== 'object') {\n return [new ValidationError(key, value, `object expected, ${getType(value[0])} found`)];\n }\n if (value[0].zoom === undefined) {\n return [new ValidationError(key, value, 'object stop key must have zoom')];\n }\n if (value[0].value === undefined) {\n return [new ValidationError(key, value, 'object stop key must have value')];\n }\n if (previousStopDomainZoom && previousStopDomainZoom > unbundle(value[0].zoom)) {\n return [new ValidationError(key, value[0].zoom, 'stop zoom values must appear in ascending order')];\n }\n if (unbundle(value[0].zoom) !== previousStopDomainZoom) {\n previousStopDomainZoom = unbundle(value[0].zoom);\n previousStopDomainValue = undefined;\n stopDomainValues = {};\n }\n errors = errors.concat(validateObject({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: {zoom: {}},\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {zoom: validateNumber, value: validateStopDomainValue}\n }));\n } else {\n errors = errors.concat(validateStopDomainValue({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: {},\n style: options.style,\n styleSpec: options.styleSpec\n }, value));\n }\n\n if (isExpression(deepUnbundle(value[1]))) {\n return errors.concat([new ValidationError(`${key}[1]`, value[1], 'expressions are not allowed in function stops.')]);\n }\n\n return errors.concat(validate({\n key: `${key}[1]`,\n value: value[1],\n valueSpec: functionValueSpec,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n\n function validateStopDomainValue(options, stop) {\n const type = getType(options.value);\n const value = unbundle(options.value);\n\n const reportValue = options.value !== null ? options.value : stop;\n\n if (!stopKeyType) {\n stopKeyType = type;\n } else if (type !== stopKeyType) {\n return [new ValidationError(options.key, reportValue, `${type} stop domain type must match previous stop domain type ${stopKeyType}`)];\n }\n\n if (type !== 'number' && type !== 'string' && type !== 'boolean') {\n return [new ValidationError(options.key, reportValue, 'stop domain value must be a number, string, or boolean')];\n }\n\n if (type !== 'number' && functionType !== 'categorical') {\n let message = `number expected, ${type} found`;\n if (supportsPropertyExpression(functionValueSpec) && functionType === undefined) {\n message += '\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.';\n }\n return [new ValidationError(options.key, reportValue, message)];\n }\n\n if (functionType === 'categorical' && type === 'number' && (!isFinite(value) || Math.floor(value) !== value)) {\n return [new ValidationError(options.key, reportValue, `integer expected, found ${value}`)];\n }\n\n if (functionType !== 'categorical' && type === 'number' && previousStopDomainValue !== undefined && value < previousStopDomainValue) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must appear in ascending order')];\n } else {\n previousStopDomainValue = value;\n }\n\n if (functionType === 'categorical' && value in stopDomainValues) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must be unique')];\n } else {\n stopDomainValues[value] = true;\n }\n\n return [];\n }\n\n function validateFunctionDefault(options) {\n return validate({\n key: options.key,\n value: options.value,\n valueSpec: functionValueSpec,\n style: options.style,\n styleSpec: options.styleSpec\n });\n }\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error';\n\nimport {createExpression, createPropertyExpression} from '../expression';\nimport {deepUnbundle} from '../util/unbundle_jsonlint';\nimport {isStateConstant, isGlobalPropertyConstant, isFeatureConstant} from '../expression/is_constant';\n\nexport default function validateExpression(options: any): Array {\n const expression = (options.expressionContext === 'property' ? createPropertyExpression : createExpression)(deepUnbundle(options.value), options.valueSpec);\n if (expression.result === 'error') {\n return expression.value.map((error) => {\n return new ValidationError(`${options.key}${error.key}`, options.value, error.message);\n });\n }\n\n const expressionObj = (expression.value: any).expression || (expression.value: any)._styleExpression.expression;\n\n if (options.expressionContext === 'property' && (options.propertyKey === 'text-font') &&\n !expressionObj.outputDefined()) {\n return [new ValidationError(options.key, options.value, `Invalid data expression for \"${options.propertyKey}\". Output values must be contained as literals within the expression.`)];\n }\n\n if (options.expressionContext === 'property' && options.propertyType === 'layout' &&\n (!isStateConstant(expressionObj))) {\n return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with layout properties.')];\n }\n\n if (options.expressionContext === 'filter' && !isStateConstant(expressionObj)) {\n return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with filters.')];\n }\n\n if (options.expressionContext && options.expressionContext.indexOf('cluster') === 0) {\n if (!isGlobalPropertyConstant(expressionObj, ['zoom', 'feature-state'])) {\n return [new ValidationError(options.key, options.value, '\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];\n }\n if (options.expressionContext === 'cluster-initial' && !isFeatureConstant(expressionObj)) {\n return [new ValidationError(options.key, options.value, 'Feature data expressions are not supported with initial expression part of cluster properties.')];\n }\n }\n\n return [];\n}\n","\nimport getType from '../util/get_type';\nimport ValidationError from '../error/validation_error';\n\nexport default function validateBoolean(options) {\n const value = options.value;\n const key = options.key;\n const type = getType(value);\n\n if (type !== 'boolean') {\n return [new ValidationError(key, value, `boolean expected, ${type} found`)];\n }\n\n return [];\n}\n","\nimport ValidationError from '../error/validation_error';\nimport getType from '../util/get_type';\nimport {parseCSSColor} from 'csscolorparser';\n\nexport default function validateColor(options) {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n\n if (type !== 'string') {\n return [new ValidationError(key, value, `color expected, ${type} found`)];\n }\n\n if (parseCSSColor(value) === null) {\n return [new ValidationError(key, value, `color expected, \"${value}\" found`)];\n }\n\n return [];\n}\n","\nimport ValidationError from '../error/validation_error';\nimport {unbundle} from '../util/unbundle_jsonlint';\n\nexport default function validateEnum(options) {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n const errors = [];\n\n if (Array.isArray(valueSpec.values)) { // <=v7\n if (valueSpec.values.indexOf(unbundle(value)) === -1) {\n errors.push(new ValidationError(key, value, `expected one of [${valueSpec.values.join(', ')}], ${JSON.stringify(value)} found`));\n }\n } else { // >=v8\n if (Object.keys(valueSpec.values).indexOf(unbundle(value)) === -1) {\n errors.push(new ValidationError(key, value, `expected one of [${Object.keys(valueSpec.values).join(', ')}], ${JSON.stringify(value)} found`));\n }\n }\n return errors;\n}\n","\nimport ValidationError from '../error/validation_error';\nimport validateExpression from './validate_expression';\nimport validateEnum from './validate_enum';\nimport getType from '../util/get_type';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint';\nimport extend from '../util/extend';\nimport {isExpressionFilter} from '../feature_filter';\n\nexport default function validateFilter(options) {\n if (isExpressionFilter(deepUnbundle(options.value))) {\n return validateExpression(extend({}, options, {\n expressionContext: 'filter',\n valueSpec: {value: 'boolean'}\n }));\n } else {\n return validateNonExpressionFilter(options);\n }\n}\n\nfunction validateNonExpressionFilter(options) {\n const value = options.value;\n const key = options.key;\n\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n }\n\n const styleSpec = options.styleSpec;\n let type;\n\n let errors = [];\n\n if (value.length < 1) {\n return [new ValidationError(key, value, 'filter array must have at least 1 element')];\n }\n\n errors = errors.concat(validateEnum({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: styleSpec.filter_operator,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n\n switch (unbundle(value[0])) {\n case '<':\n case '<=':\n case '>':\n case '>=':\n if (value.length >= 2 && unbundle(value[1]) === '$type') {\n errors.push(new ValidationError(key, value, `\"$type\" cannot be use with operator \"${value[0]}\"`));\n }\n /* falls through */\n case '==':\n case '!=':\n if (value.length !== 3) {\n errors.push(new ValidationError(key, value, `filter array for operator \"${value[0]}\" must have 3 elements`));\n }\n /* falls through */\n case 'in':\n case '!in':\n if (value.length >= 2) {\n type = getType(value[1]);\n if (type !== 'string') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));\n }\n }\n for (let i = 2; i < value.length; i++) {\n type = getType(value[i]);\n if (unbundle(value[1]) === '$type') {\n errors = errors.concat(validateEnum({\n key: `${key}[${i}]`,\n value: value[i],\n valueSpec: styleSpec.geometry_type,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n } else if (type !== 'string' && type !== 'number' && type !== 'boolean') {\n errors.push(new ValidationError(`${key}[${i}]`, value[i], `string, number, or boolean expected, ${type} found`));\n }\n }\n break;\n\n case 'any':\n case 'all':\n case 'none':\n for (let i = 1; i < value.length; i++) {\n errors = errors.concat(validateNonExpressionFilter({\n key: `${key}[${i}]`,\n value: value[i],\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n break;\n\n case 'has':\n case '!has':\n type = getType(value[1]);\n if (value.length !== 2) {\n errors.push(new ValidationError(key, value, `filter array for \"${value[0]}\" operator must have 2 elements`));\n } else if (type !== 'string') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));\n }\n break;\n case 'within':\n type = getType(value[1]);\n if (value.length !== 2) {\n errors.push(new ValidationError(key, value, `filter array for \"${value[0]}\" operator must have 2 elements`));\n } else if (type !== 'object') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `object expected, ${type} found`));\n }\n break;\n }\n return errors;\n}\n","\nimport validate from './validate';\nimport ValidationError from '../error/validation_error';\nimport getType from '../util/get_type';\nimport {isFunction} from '../function';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint';\nimport {supportsPropertyExpression} from '../util/properties';\n\nexport default function validateProperty(options, propertyType) {\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const value = options.value;\n const propertyKey = options.objectKey;\n const layerSpec = styleSpec[`${propertyType}_${options.layerType}`];\n\n if (!layerSpec) return [];\n\n const transitionMatch = propertyKey.match(/^(.*)-transition$/);\n if (propertyType === 'paint' && transitionMatch && layerSpec[transitionMatch[1]] && layerSpec[transitionMatch[1]].transition) {\n return validate({\n key,\n value,\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n });\n }\n\n const valueSpec = options.valueSpec || layerSpec[propertyKey];\n if (!valueSpec) {\n return [new ValidationError(key, value, `unknown property \"${propertyKey}\"`)];\n }\n\n let tokenMatch;\n if (getType(value) === 'string' && supportsPropertyExpression(valueSpec) && !valueSpec.tokens && (tokenMatch = /^{([^}]+)}$/.exec(value))) {\n return [new ValidationError(\n key, value,\n `\"${propertyKey}\" does not support interpolation syntax\\n` +\n `Use an identity property function instead: \\`{ \"type\": \"identity\", \"property\": ${JSON.stringify(tokenMatch[1])} }\\`.`)];\n }\n\n const errors = [];\n\n if (options.layerType === 'symbol') {\n if (propertyKey === 'text-field' && style && !style.glyphs) {\n errors.push(new ValidationError(key, value, 'use of \"text-field\" requires a style \"glyphs\" property'));\n }\n if (propertyKey === 'text-font' && isFunction(deepUnbundle(value)) && unbundle(value.type) === 'identity') {\n errors.push(new ValidationError(key, value, '\"text-font\" does not support identity functions'));\n }\n }\n\n return errors.concat(validate({\n key: options.key,\n value,\n valueSpec,\n style,\n styleSpec,\n expressionContext: 'property',\n propertyType,\n propertyKey\n }));\n}\n","\nimport validateProperty from './validate_property';\n\nexport default function validatePaintProperty(options) {\n return validateProperty(options, 'paint');\n}\n","\nimport validateProperty from './validate_property';\n\nexport default function validateLayoutProperty(options) {\n return validateProperty(options, 'layout');\n}\n","\nimport ValidationError from '../error/validation_error';\nimport {unbundle} from '../util/unbundle_jsonlint';\nimport validateObject from './validate_object';\nimport validateFilter from './validate_filter';\nimport validatePaintProperty from './validate_paint_property';\nimport validateLayoutProperty from './validate_layout_property';\nimport validateSpec from './validate';\nimport extend from '../util/extend';\n\nexport default function validateLayer(options) {\n let errors = [];\n\n const layer = options.value;\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n\n if (!layer.type && !layer.ref) {\n errors.push(new ValidationError(key, layer, 'either \"type\" or \"ref\" is required'));\n }\n let type = unbundle(layer.type);\n const ref = unbundle(layer.ref);\n\n if (layer.id) {\n const layerId = unbundle(layer.id);\n for (let i = 0; i < options.arrayIndex; i++) {\n const otherLayer = style.layers[i];\n if (unbundle(otherLayer.id) === layerId) {\n errors.push(new ValidationError(key, layer.id, `duplicate layer id \"${layer.id}\", previously used at line ${otherLayer.id.__line__}`));\n }\n }\n }\n\n if ('ref' in layer) {\n ['type', 'source', 'source-layer', 'filter', 'layout'].forEach((p) => {\n if (p in layer) {\n errors.push(new ValidationError(key, layer[p], `\"${p}\" is prohibited for ref layers`));\n }\n });\n\n let parent;\n\n style.layers.forEach((layer) => {\n if (unbundle(layer.id) === ref) parent = layer;\n });\n\n if (!parent) {\n errors.push(new ValidationError(key, layer.ref, `ref layer \"${ref}\" not found`));\n } else if (parent.ref) {\n errors.push(new ValidationError(key, layer.ref, 'ref cannot reference another ref layer'));\n } else {\n type = unbundle(parent.type);\n }\n } else if (type !== 'background') {\n if (!layer.source) {\n errors.push(new ValidationError(key, layer, 'missing required property \"source\"'));\n } else {\n const source = style.sources && style.sources[layer.source];\n const sourceType = source && unbundle(source.type);\n if (!source) {\n errors.push(new ValidationError(key, layer.source, `source \"${layer.source}\" not found`));\n } else if (sourceType === 'vector' && type === 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a raster source`));\n } else if (sourceType === 'raster' && type !== 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a vector source`));\n } else if (sourceType === 'vector' && !layer['source-layer']) {\n errors.push(new ValidationError(key, layer, `layer \"${layer.id}\" must specify a \"source-layer\"`));\n } else if (sourceType === 'raster-dem' && type !== 'hillshade') {\n errors.push(new ValidationError(key, layer.source, 'raster-dem source can only be used with layer type \\'hillshade\\'.'));\n } else if (type === 'line' && layer.paint && layer.paint['line-gradient'] &&\n (sourceType !== 'geojson' || !source.lineMetrics)) {\n errors.push(new ValidationError(key, layer, `layer \"${layer.id}\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`));\n }\n }\n }\n\n errors = errors.concat(validateObject({\n key,\n value: layer,\n valueSpec: styleSpec.layer,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'() {\n return [];\n },\n // We don't want to enforce the spec's `\"requires\": true` for backward compatibility with refs;\n // the actual requirement is validated above. See https://github.com/mapbox/mapbox-gl-js/issues/5772.\n type() {\n return validateSpec({\n key: `${key}.type`,\n value: layer.type,\n valueSpec: styleSpec.layer.type,\n style: options.style,\n styleSpec: options.styleSpec,\n object: layer,\n objectKey: 'type'\n });\n },\n filter: validateFilter,\n layout(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'(options) {\n return validateLayoutProperty(extend({layerType: type}, options));\n }\n }\n });\n },\n paint(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'(options) {\n return validatePaintProperty(extend({layerType: type}, options));\n }\n }\n });\n }\n }\n }));\n\n return errors;\n}\n","\nimport getType from '../util/get_type';\nimport ValidationError from '../error/validation_error';\n\nexport default function validateString(options) {\n const value = options.value;\n const key = options.key;\n const type = getType(value);\n\n if (type !== 'string') {\n return [new ValidationError(key, value, `string expected, ${type} found`)];\n }\n\n return [];\n}\n","\nimport ValidationError from '../error/validation_error';\nimport {unbundle} from '../util/unbundle_jsonlint';\nimport validateObject from './validate_object';\nimport validateEnum from './validate_enum';\nimport validateExpression from './validate_expression';\nimport validateString from './validate_string';\nimport getType from '../util/get_type';\n\nconst objectElementValidators = {\n promoteId: validatePromoteId\n};\n\nexport default function validateSource(options) {\n const value = options.value;\n const key = options.key;\n const styleSpec = options.styleSpec;\n const style = options.style;\n\n if (!value.type) {\n return [new ValidationError(key, value, '\"type\" is required')];\n }\n\n const type = unbundle(value.type);\n let errors;\n\n switch (type) {\n case 'vector':\n case 'raster':\n case 'raster-dem':\n errors = validateObject({\n key,\n value,\n valueSpec: styleSpec[`source_${type.replace('-', '_')}`],\n style: options.style,\n styleSpec,\n objectElementValidators\n });\n return errors;\n\n case 'geojson':\n errors = validateObject({\n key,\n value,\n valueSpec: styleSpec.source_geojson,\n style,\n styleSpec,\n objectElementValidators\n });\n if (value.cluster) {\n for (const prop in value.clusterProperties) {\n const [operator, mapExpr] = value.clusterProperties[prop];\n const reduceExpr = typeof operator === 'string' ? [operator, ['accumulated'], ['get', prop]] : operator;\n\n errors.push(...validateExpression({\n key: `${key}.${prop}.map`,\n value: mapExpr,\n expressionContext: 'cluster-map'\n }));\n errors.push(...validateExpression({\n key: `${key}.${prop}.reduce`,\n value: reduceExpr,\n expressionContext: 'cluster-reduce'\n }));\n }\n }\n return errors;\n\n case 'video':\n return validateObject({\n key,\n value,\n valueSpec: styleSpec.source_video,\n style,\n styleSpec\n });\n\n case 'image':\n return validateObject({\n key,\n value,\n valueSpec: styleSpec.source_image,\n style,\n styleSpec\n });\n\n case 'canvas':\n return [new ValidationError(key, null, `Please use runtime APIs to add canvas sources, rather than including them in stylesheets.`, 'source.canvas')];\n\n default:\n return validateEnum({\n key: `${key}.type`,\n value: value.type,\n valueSpec: {values: ['vector', 'raster', 'raster-dem', 'geojson', 'video', 'image']},\n style,\n styleSpec\n });\n }\n}\n\nfunction validatePromoteId({key, value}) {\n if (getType(value) === 'string') {\n return validateString({key, value});\n } else {\n const errors = [];\n for (const prop in value) {\n errors.push(...validateString({key: `${key}.${prop}`, value: value[prop]}));\n }\n return errors;\n }\n}\n","\nimport ValidationError from '../error/validation_error';\nimport getType from '../util/get_type';\nimport validate from './validate';\n\nexport default function validateLight(options) {\n const light = options.value;\n const styleSpec = options.styleSpec;\n const lightSpec = styleSpec.light;\n const style = options.style;\n\n let errors = [];\n\n const rootType = getType(light);\n if (light === undefined) {\n return errors;\n } else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('light', light, `object expected, ${rootType} found`)]);\n return errors;\n }\n\n for (const key in light) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n\n if (transitionMatch && lightSpec[transitionMatch[1]] && lightSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n } else if (lightSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n valueSpec: lightSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, light[key], `unknown property \"${key}\"`)]);\n }\n }\n\n return errors;\n}\n","// @flow\nimport validateExpression from './validate_expression';\nimport validateString from './validate_string';\n\nexport default function validateFormatted(options: any) {\n if (validateString(options).length === 0) {\n return [];\n }\n\n return validateExpression(options);\n}\n","// @flow\nimport validateExpression from './validate_expression';\nimport validateString from './validate_string';\n\nexport default function validateImage(options: any) {\n if (validateString(options).length === 0) {\n return [];\n }\n\n return validateExpression(options);\n}\n","\nimport extend from '../util/extend';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint';\nimport {isExpression} from '../expression';\nimport {isFunction} from '../function';\n\nimport validateFunction from './validate_function';\nimport validateExpression from './validate_expression';\nimport validateObject from './validate_object';\nimport validateArray from './validate_array';\nimport validateBoolean from './validate_boolean';\nimport validateNumber from './validate_number';\nimport validateColor from './validate_color';\nimport validateConstants from './validate_constants';\nimport validateEnum from './validate_enum';\nimport validateFilter from './validate_filter';\nimport validateLayer from './validate_layer';\nimport validateSource from './validate_source';\nimport validateLight from './validate_light';\nimport validateString from './validate_string';\nimport validateFormatted from './validate_formatted';\nimport validateImage from './validate_image';\n\nconst VALIDATORS = {\n '*'() {\n return [];\n },\n 'array': validateArray,\n 'boolean': validateBoolean,\n 'number': validateNumber,\n 'color': validateColor,\n 'constants': validateConstants,\n 'enum': validateEnum,\n 'filter': validateFilter,\n 'function': validateFunction,\n 'layer': validateLayer,\n 'object': validateObject,\n 'source': validateSource,\n 'light': validateLight,\n 'string': validateString,\n 'formatted': validateFormatted,\n 'resolvedImage': validateImage\n};\n\n// Main recursive validation function. Tracks:\n//\n// - key: string representing location of validation in style tree. Used only\n// for more informative error reporting.\n// - value: current value from style being evaluated. May be anything from a\n// high level object that needs to be descended into deeper or a simple\n// scalar value.\n// - valueSpec: current spec being evaluated. Tracks value.\n// - styleSpec: current full spec being evaluated.\n\nexport default function validate(options) {\n const value = options.value;\n const valueSpec = options.valueSpec;\n const styleSpec = options.styleSpec;\n\n if (valueSpec.expression && isFunction(unbundle(value))) {\n return validateFunction(options);\n\n } else if (valueSpec.expression && isExpression(deepUnbundle(value))) {\n return validateExpression(options);\n\n } else if (valueSpec.type && VALIDATORS[valueSpec.type]) {\n return VALIDATORS[valueSpec.type](options);\n\n } else {\n const valid = validateObject(extend({}, options, {\n valueSpec: valueSpec.type ? styleSpec[valueSpec.type] : valueSpec\n }));\n return valid;\n }\n}\n","\nimport ValidationError from '../error/validation_error';\nimport validateString from './validate_string';\n\nexport default function(options) {\n const value = options.value;\n const key = options.key;\n\n const errors = validateString(options);\n if (errors.length) return errors;\n\n if (value.indexOf('{fontstack}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{fontstack}\" token'));\n }\n\n if (value.indexOf('{range}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{range}\" token'));\n }\n\n return errors;\n}\n","\nimport validateConstants from './validate/validate_constants';\nimport validate from './validate/validate';\nimport latestStyleSpec from './reference/latest';\nimport validateGlyphsURL from './validate/validate_glyphs_url';\n\nimport validateSource from './validate/validate_source';\nimport validateLight from './validate/validate_light';\nimport validateLayer from './validate/validate_layer';\nimport validateFilter from './validate/validate_filter';\nimport validatePaintProperty from './validate/validate_paint_property';\nimport validateLayoutProperty from './validate/validate_layout_property';\n\n/**\n * Validate a Mapbox GL style against the style specification. This entrypoint,\n * `mapbox-gl-style-spec/lib/validate_style.min`, is designed to produce as\n * small a browserify bundle as possible by omitting unnecessary functionality\n * and legacy style specifications.\n *\n * @private\n * @param {Object} style The style to be validated.\n * @param {Object} [styleSpec] The style specification to validate against.\n * If omitted, the latest style spec is used.\n * @returns {Array}\n * @example\n * var validate = require('mapbox-gl-style-spec/lib/validate_style.min');\n * var errors = validate(style);\n */\nfunction validateStyleMin(style, styleSpec = latestStyleSpec) {\n\n let errors = [];\n\n errors = errors.concat(validate({\n key: '',\n value: style,\n valueSpec: styleSpec.$root,\n styleSpec,\n style,\n objectElementValidators: {\n glyphs: validateGlyphsURL,\n '*'() {\n return [];\n }\n }\n }));\n\n if (style.constants) {\n errors = errors.concat(validateConstants({\n key: 'constants',\n value: style.constants,\n style,\n styleSpec\n }));\n }\n\n return sortErrors(errors);\n}\n\nvalidateStyleMin.source = wrapCleanErrors(validateSource);\nvalidateStyleMin.light = wrapCleanErrors(validateLight);\nvalidateStyleMin.layer = wrapCleanErrors(validateLayer);\nvalidateStyleMin.filter = wrapCleanErrors(validateFilter);\nvalidateStyleMin.paintProperty = wrapCleanErrors(validatePaintProperty);\nvalidateStyleMin.layoutProperty = wrapCleanErrors(validateLayoutProperty);\n\nfunction sortErrors(errors) {\n return [].concat(errors).sort((a, b) => {\n return a.line - b.line;\n });\n}\n\nfunction wrapCleanErrors(inner) {\n return function(...args) {\n return sortErrors(inner.apply(this, args));\n };\n}\n\nexport default validateStyleMin;\n","/* parser generated by jison 0.4.15 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,12],$V1=[1,13],$V2=[1,9],$V3=[1,10],$V4=[1,11],$V5=[1,14],$V6=[1,15],$V7=[14,18,22,24],$V8=[18,22],$V9=[22,24];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"JSONString\":3,\"STRING\":4,\"JSONNumber\":5,\"NUMBER\":6,\"JSONNullLiteral\":7,\"NULL\":8,\"JSONBooleanLiteral\":9,\"TRUE\":10,\"FALSE\":11,\"JSONText\":12,\"JSONValue\":13,\"EOF\":14,\"JSONObject\":15,\"JSONArray\":16,\"{\":17,\"}\":18,\"JSONMemberList\":19,\"JSONMember\":20,\":\":21,\",\":22,\"[\":23,\"]\":24,\"JSONElementList\":25,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"STRING\",6:\"NUMBER\",8:\"NULL\",10:\"TRUE\",11:\"FALSE\",14:\"EOF\",17:\"{\",18:\"}\",21:\":\",22:\",\",23:\"[\",24:\"]\"},\nproductions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n // replace escaped characters with actual character\n this.$ = new String(yytext.replace(/\\\\(\\\\|\")/g, \"$\"+\"1\")\n .replace(/\\\\n/g,'\\n')\n .replace(/\\\\r/g,'\\r')\n .replace(/\\\\t/g,'\\t')\n .replace(/\\\\v/g,'\\v')\n .replace(/\\\\f/g,'\\f')\n .replace(/\\\\b/g,'\\b'));\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 2:\n\n this.$ = new Number(yytext);\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 3:\n\n this.$ = null;\n \nbreak;\ncase 4:\n\n this.$ = new Boolean(true);\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 5:\n\n this.$ = new Boolean(false);\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 6:\nreturn this.$ = $$[$0-1];\nbreak;\ncase 13:\nthis.$ = {}; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n })\nbreak;\ncase 14: case 19:\nthis.$ = $$[$0-1]; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n })\nbreak;\ncase 15:\nthis.$ = [$$[$0-2], $$[$0]];\nbreak;\ncase 16:\nthis.$ = {}; this.$[$$[$0][0]] = $$[$0][1];\nbreak;\ncase 17:\nthis.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1];\nbreak;\ncase 18:\nthis.$ = []; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n })\nbreak;\ncase 20:\nthis.$ = [$$[$0]];\nbreak;\ncase 21:\nthis.$ = $$[$0-2]; $$[$0-2].push($$[$0]);\nbreak;\n}\n},\ntable: [{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,12:1,13:2,15:7,16:8,17:$V5,23:$V6},{1:[3]},{14:[1,16]},o($V7,[2,7]),o($V7,[2,8]),o($V7,[2,9]),o($V7,[2,10]),o($V7,[2,11]),o($V7,[2,12]),o($V7,[2,3]),o($V7,[2,4]),o($V7,[2,5]),o([14,18,21,22,24],[2,1]),o($V7,[2,2]),{3:20,4:$V0,18:[1,17],19:18,20:19},{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:23,15:7,16:8,17:$V5,23:$V6,24:[1,21],25:22},{1:[2,6]},o($V7,[2,13]),{18:[1,24],22:[1,25]},o($V8,[2,16]),{21:[1,26]},o($V7,[2,18]),{22:[1,28],24:[1,27]},o($V9,[2,20]),o($V7,[2,14]),{3:20,4:$V0,20:29},{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:30,15:7,16:8,17:$V5,23:$V6},o($V7,[2,19]),{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:31,15:7,16:8,17:$V5,23:$V6},o($V8,[2,17]),o($V8,[2,15]),o($V9,[2,21])],\ndefaultActions: {16:[2,6]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n throw new Error(str);\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n function lex() {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* skip whitespace */\nbreak;\ncase 1:return 6\nbreak;\ncase 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4\nbreak;\ncase 3:return 17\nbreak;\ncase 4:return 18\nbreak;\ncase 5:return 23\nbreak;\ncase 6:return 24\nbreak;\ncase 7:return 22\nbreak;\ncase 8:return 21\nbreak;\ncase 9:return 10\nbreak;\ncase 10:return 11\nbreak;\ncase 11:return 8\nbreak;\ncase 12:return 14\nbreak;\ncase 13:return 'INVALID'\nbreak;\n}\n},\nrules: [/^(?:\\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\\.[0-9]+)?([eE][-+]?[0-9]+)?\\b)/,/^(?:\"(?:\\\\[\\\\\"bfnrt/]|\\\\u[a-fA-F0-9]{4}|[^\\\\\\0-\\x09\\x0a-\\x1f\"])*\")/,/^(?:\\{)/,/^(?:\\})/,/^(?:\\[)/,/^(?:\\])/,/^(?:,)/,/^(?::)/,/^(?:true\\b)/,/^(?:false\\b)/,/^(?:null\\b)/,/^(?:$)/,/^(?:.)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\n}\n","import ParsingError from './error/parsing_error';\nimport jsonlint from '@mapbox/jsonlint-lines-primitives';\n\nexport default function readStyle(style) {\n if (style instanceof String || typeof style === 'string' || style instanceof Buffer) {\n try {\n return jsonlint.parse(style.toString());\n } catch (e) {\n throw new ParsingError(e);\n }\n }\n\n return style;\n}\n","\nimport validateStyleMin from './validate_style.min';\nimport {v8} from './style-spec';\nimport readStyle from './read_style';\n\n/**\n * Validate a Mapbox GL style against the style specification.\n *\n * @private\n * @alias validate\n * @param {Object|String|Buffer} style The style to be validated. If a `String`\n * or `Buffer` is provided, the returned errors will contain line numbers.\n * @param {Object} [styleSpec] The style specification to validate against.\n * If omitted, the spec version is inferred from the stylesheet.\n * @returns {Array}\n * @example\n * var validate = require('mapbox-gl-style-spec').validate;\n * var style = fs.readFileSync('./style.json', 'utf8');\n * var errors = validate(style);\n */\n\nexport default function validateStyle(style, styleSpec = v8) {\n let s = style;\n\n try {\n s = readStyle(s);\n } catch (e) {\n return [e];\n }\n\n return validateStyleMin(s, styleSpec);\n}\n\nexport const source = validateStyleMin.source;\nexport const light = validateStyleMin.light;\nexport const layer = validateStyleMin.layer;\nexport const filter = validateStyleMin.filter;\nexport const paintProperty = validateStyleMin.paintProperty;\nexport const layoutProperty = validateStyleMin.layoutProperty;\n","// @flow\n\nimport validateStyle from './validate_style.min';\nimport {v8} from './style-spec';\nimport readStyle from './read_style';\nimport ValidationError from './error/validation_error';\nimport getType from './util/get_type';\n\nconst SUPPORTED_SPEC_VERSION = 8;\nconst MAX_SOURCES_IN_STYLE = 15;\n\nfunction isValid(value: ?string, regex: RegExp): boolean {\n if (!value || getType(value) !== 'string') return true;\n return !!value.match(regex);\n}\n\nfunction getSourceCount(source: Object): number {\n if (source.url) {\n return source.url.split(',').length;\n } else {\n return 0;\n }\n}\n\nfunction getAllowedKeyErrors(obj: Object, keys: Array<*>, path: ?string): Array {\n const allowed = new Set(keys);\n const errors = [];\n Object.keys(obj).forEach(k => {\n if (!allowed.has(k)) {\n const prop = path ? `${path}.${k}` : null;\n errors.push(new ValidationError(prop, obj[k], `Unsupported property \"${k}\"`));\n }\n });\n return errors;\n}\n\nfunction getSourceErrors(source: Object, i: number): Array {\n const errors = [];\n\n /*\n * Inlined sources are not supported by the Mapbox Styles API, so only\n * \"type\", \"url\", and \"tileSize\" properties are valid\n */\n const sourceKeys = ['type', 'url', 'tileSize'];\n errors.push(...getAllowedKeyErrors(source, sourceKeys, 'source'));\n\n /*\n * \"source\" is required. Valid examples:\n * mapbox://mapbox.abcd1234\n * mapbox://penny.abcd1234\n * mapbox://mapbox.abcd1234,penny.abcd1234\n */\n const sourceUrlPattern = /^mapbox:\\/\\/([^/]*)$/;\n if (!isValid(source.url, sourceUrlPattern)) {\n errors.push(new ValidationError(`sources[${i}]`, source.url, 'Source url must be a valid Mapbox tileset url'));\n }\n\n return errors;\n}\n\nfunction getSourcesErrors(sources: Object): Array {\n const errors = [];\n let count = 0;\n\n Object.keys(sources).forEach((s: string, i: number) => {\n const sourceErrors = getSourceErrors(sources[s], i);\n\n // If source has errors, skip counting\n if (!sourceErrors.length) {\n count = count + getSourceCount(sources[s]);\n }\n\n errors.push(...sourceErrors);\n });\n\n if (count > MAX_SOURCES_IN_STYLE) {\n errors.push(new ValidationError('sources', null, `Styles must contain ${MAX_SOURCES_IN_STYLE} or fewer sources`));\n }\n\n return errors;\n}\n\nfunction getRootErrors(style: Object, specKeys: Array): Array {\n const errors = [];\n\n /*\n * The following keys are optional but fully managed by the Mapbox Styles\n * API. Values on stylesheet on POST or PATCH will be ignored: \"owner\",\n * \"id\", \"cacheControl\", \"draft\", \"created\", \"modified\"\n *\n * The following keys are optional. The Mapbox Styles API respects value on\n * stylesheet on PATCH, but ignores the value on POST: \"visibility\"\n */\n const optionalRootProperties = [\n 'owner',\n 'id',\n 'cacheControl',\n 'draft',\n 'created',\n 'modified',\n 'visibility'\n ];\n\n const allowedKeyErrors = getAllowedKeyErrors(style, [...specKeys, ...optionalRootProperties]);\n errors.push(...allowedKeyErrors);\n\n if (style.version > SUPPORTED_SPEC_VERSION || style.version < SUPPORTED_SPEC_VERSION) {\n errors.push(new ValidationError('version', style.version, `Style version must be ${SUPPORTED_SPEC_VERSION}`));\n }\n\n /*\n * \"glyphs\" is optional. If present, valid examples:\n * mapbox://fonts/penny/{fontstack}/{range}.pbf\n * mapbox://fonts/mapbox/{fontstack}/{range}.pbf\n */\n const glyphUrlPattern = /^mapbox:\\/\\/fonts\\/([^/]*)\\/{fontstack}\\/{range}.pbf$/;\n if (!isValid(style.glyphs, glyphUrlPattern)) {\n errors.push(new ValidationError('glyphs', style.glyphs, 'Styles must reference glyphs hosted by Mapbox'));\n }\n\n /*\n * \"sprite\" is optional. If present, valid examples:\n * mapbox://sprites/penny/abcd1234\n * mapbox://sprites/mapbox/abcd1234/draft\n * mapbox://sprites/cyrus/abcd1234/abcd1234\n */\n const spriteUrlPattern = /^mapbox:\\/\\/sprites\\/([^/]*)\\/([^/]*)\\/?([^/]*)?$/;\n if (!isValid(style.sprite, spriteUrlPattern)) {\n errors.push(new ValidationError('sprite', style.sprite, 'Styles must reference sprites hosted by Mapbox'));\n }\n\n /*\n * \"visibility\" is optional. If present, valid examples:\n * \"private\"\n * \"public\"\n */\n const visibilityPattern = /^(public|private)$/;\n if (!isValid(style.visibility, visibilityPattern)) {\n errors.push(new ValidationError('visibility', style.visibility, 'Style visibility must be public or private'));\n }\n\n return errors;\n}\n\n/**\n * Validate a Mapbox GL style against the style specification and check for\n * compatibility with the Mapbox Styles API.\n *\n * @param {Object} style The style to be validated.\n * @returns {Array}\n * @example\n * var validateMapboxApiSupported = require('mapbox-gl-style-spec/lib/validate_style_mapbox_api_supported.js');\n * var errors = validateMapboxApiSupported(style);\n */\nexport default function validateMapboxApiSupported(style: Object): Array {\n let s = style;\n try {\n s = readStyle(s);\n } catch (e) {\n return [e];\n }\n\n let errors = validateStyle(s, v8)\n .concat(getRootErrors(s, Object.keys(v8.$root)));\n\n if (s.sources) {\n errors = errors.concat(getSourcesErrors(s.sources));\n }\n\n return errors;\n}\n","// @flow\n\ntype ExpressionType = 'data-driven' | 'cross-faded' | 'cross-faded-data-driven' | 'color-ramp' | 'data-constant' | 'constant';\ntype ExpressionParameters = Array<'zoom' | 'feature' | 'feature-state' | 'heatmap-density' | 'line-progress'>;\n\ntype ExpressionSpecification = {\n interpolated: boolean,\n parameters: ExpressionParameters\n}\n\nexport type StylePropertySpecification = {\n type: 'number',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n transition: boolean,\n default?: number\n} | {\n type: 'string',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n transition: boolean,\n default?: string,\n tokens?: boolean\n} | {\n type: 'boolean',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n transition: boolean,\n default?: boolean\n} | {\n type: 'enum',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n values: {[_: string]: {}},\n transition: boolean,\n default?: string\n} | {\n type: 'color',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n transition: boolean,\n default?: string,\n overridable: boolean\n} | {\n type: 'array',\n value: 'number',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n length?: number,\n transition: boolean,\n default?: Array\n} | {\n type: 'array',\n value: 'string',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n length?: number,\n transition: boolean,\n default?: Array\n};\n\nimport v8 from './reference/v8.json';\nimport latest from './reference/latest';\nimport format from './format';\nimport migrate from './migrate';\nimport composite from './composite';\nimport derefLayers from './deref';\nimport diff from './diff';\nimport ValidationError from './error/validation_error';\nimport ParsingError from './error/parsing_error';\nimport {StyleExpression, isExpression, createExpression, createPropertyExpression, normalizePropertyExpression, ZoomConstantExpression, ZoomDependentExpression, StylePropertyFunction} from './expression';\nimport featureFilter, {isExpressionFilter} from './feature_filter';\n\nimport convertFilter from './feature_filter/convert';\nimport Color from './util/color';\nimport {createFunction, isFunction} from './function';\nimport convertFunction from './function/convert';\nimport {eachSource, eachLayer, eachProperty} from './visit';\n\nimport validate from './validate_style';\nimport validateMapboxApiSupported from './validate_mapbox_api_supported';\n\nconst expression = {\n StyleExpression,\n isExpression,\n isExpressionFilter,\n createExpression,\n createPropertyExpression,\n normalizePropertyExpression,\n ZoomConstantExpression,\n ZoomDependentExpression,\n StylePropertyFunction\n};\n\nconst styleFunction = {\n convertFunction,\n createFunction,\n isFunction\n};\n\nconst visit = {eachSource, eachLayer, eachProperty};\n\nexport {\n v8,\n latest,\n format,\n migrate,\n composite,\n derefLayers,\n diff,\n ValidationError,\n ParsingError,\n expression,\n featureFilter,\n convertFilter,\n Color,\n styleFunction as function,\n validate,\n validateMapboxApiSupported,\n visit\n};\n\nvalidate.parsed = validate;\nvalidate.latest = validate;\n"],"names":["sortKeysBy","obj","reference","const","result","key","undefined","format","style","space","$root","layers","map","layer","stringifyPretty","indent","global","this","require$$0","require$$1","getPropertyReference","propertyName","let","i","Reference","layout","length","paint","eachSource","callback","k","sources","eachLayer","eachProperty","options","inner","propertyType","properties","Object","keys","forEach","path","id","value","set","x","eachLayout","indexOf","eachPaint","resolveConstant","constants","isFunction","Array","isArray","stops","renameProperty","from","to","version","source","type","url","coordinates","coord","reverse","property","stop","migrateFontstackURL","input","inputParsed","URL","parse","inputPathnameParts","pathname","split","protocol","hostname","glyphs","migrateFontStack","font","splitAndTrim","string","s","trim","Error","firstSymbolLayer","symbolLayers","splice","concat","output","inputs","ParsingError","message","super","Scope","parent","bindings","name","expression","get","has","NullType","kind","NumberType","StringType","BooleanType","ColorType","ObjectType","ValueType","ErrorType","CollatorType","FormattedType","ResolvedImageType","array","itemType","N","toString","valueMemberTypes","checkSubtype","expected","t","memberType","isValidType","provided","allowedTypes","some","isValidNativeType","Color","r","g","b","a","rgba","parseCSSColor","toArray","Math","round","black","white","transparent","red","Collator","caseSensitive","diacriticSensitive","locale","sensitivity","collator","Intl","usage","compare","lhs","rhs","resolvedLocale","resolvedOptions","FormattedSection","text","image","scale","fontStack","textColor","Formatted","sections","fromString","unformatted","isEmpty","section","factory","join","serialize","serialized","push","ResolvedImage","available","validateRGBA","isValue","mixed","item","typeOf","String","JSON","stringify","Literal","args","context","error","expectedType","evaluate","eachChild","outputDefined","RuntimeError","toJSON","types","number","boolean","object","Assertion","floor","parsed","ctx","fn","every","arg","FormatExpression","firstArg","nextTokenMayBeObject","lastExpression","content","evaluateSection","evaluatedContent","ImageExpression","evaluatedImageName","availableImages","Coercion","Boolean","c","parseColor","num","Number","isNaN","valueToString","child","geometryTypes","EvaluationContext","globals","feature","featureState","formattedSection","_parseColorCache","canonical","geometryType","geometry","canonicalID","cached","CompoundExpression","_evaluate","op","definition","definitions","availableOverloads","overloads","filter","signature","signatureContext","ParsingContext","registry","scope","parsedArgs","argParseFailed","params","errors","signatures","stringifySignature","actualTypes","register","CollatorExpression","EXTENT","updateBBox","bbox","min","max","mercatorXfromLng","lng","mercatorYfromLat","lat","PI","log","tan","boxWithinBox","bbox1","bbox2","getTileCoordinates","p","y","tilesAtZoom","pow","z","onBoundary","p1","p2","x1","y1","x2","y2","rayIntersect","pointWithinPolygon","point","rings","inside","len","ring","j","len2","pointWithinPolygons","polygons","perp","v1","v2","twoSided","q1","q2","x3","y3","det1","det2","lineIntersectLine","d","vectorP","vectorQ","lineIntersectPolygon","polygon","lineStringWithinPolygon","line","lineStringWithinPolygons","getTilePolygon","getTilePolygons","updatePoint","polyBBox","worldSize","halfWorldSize","shift","resetBBox","Infinity","getTilePoints","pointBBox","shifts","tilePoints","points","getTileLines","lineBBox","tileLines","tileLine","pointsWithinPolygons","polygonGeometry","tilePolygon","tilePolygons","linesWithinPolygons","Within","geojson","geometries","features","isFeatureConstant","e","test","isStateConstant","isGlobalPropertyConstant","Var","boundExpression","part","expr","index","_parse","annotate","typeAnnotation","Expr","actual","isConstant","ec","isTypeAnnotation","childrenConstant","findStopLessThanOrEqualTo","lastIndex","lowerIndex","upperIndex","currentIndex","currentValue","nextValue","Step","labels","outputs","label","outputType","labelKey","valueKey","stopCount","out","color","Xn","Yn","Zn","t0","t1","t2","t3","deg2rad","rad2deg","xyz2lab","lab2xyz","xyz2rgb","rgb2xyz","rgbToLab","rgbColor","l","alpha","labToRgb","labColor","interpolateLab","interpolateNumber","rgbToHcl","h","atan2","sqrt","hclToRgb","hclColor","cos","sin","interpolateHue","interpolateHcl","lab","forward","interpolate","hcl","Interpolate","operator","interpolation","interpolationFactor","lower","upper","exponentialInterpolation","base","controlPoints","ub","UnitBezier","solve","slice","rest","outputLower","outputUpper","toLowerCase","lowerValue","upperValue","difference","progress","Coalesce","needsAnnotation","argCount","requestedImageName","Let","binding","At","In","needle","haystack","IndexOf","fromIndex","Match","inputType","cases","otherwise","labelContext","abs","MAX_SAFE_INTEGER","sortedLabels","sort","groupedByOutput","outputLookup","outputIndex","coerceLabel","Case","branches","Slice","beginIndex","endIndex","isComparableType","eq","neq","lt","gt","lteq","gteq","eqCollate","neqCollate","ltCollate","gtCollate","lteqCollate","gteqCollate","makeComparison","compareBasic","compareWithCollator","isOrderComparison","hasUntypedArgument","Comparison","rt","Equals","NotEquals","LessThan","GreaterThan","LessThanOrEqual","GreaterThanOrEqual","NumberFormat","currency","minFractionDigits","maxFractionDigits","minimumFractionDigits","maximumFractionDigits","Length","expressions","v","binarySearch","m","varargs","typeToString","zoom","heatmapDensity","lineProgress","accumulated","LN2","E","n","LN10","asin","acos","atan","ceil","isSupportedScript","toUpperCase","success","supportsPropertyExpression","spec","supportsZoomExpression","parameters","supportsInterpolation","interpolated","getType","val","identityFunction","createFunction","propertySpec","isColor","zoomAndFeatureDependent","featureDependent","zoomDependent","extend","default","colorSpace","colorSpaces","innerFun","hashedStops","categoricalKeyType","evaluateExponentialFunction","evaluateIntervalFunction","evaluateCategoricalFunction","create","evaluateIdentityFunction","featureFunctions","zoomStops","featureFunctionStops","interpolationType","bind","_","coalesce","keyType","evaluated","interp","colorspace","evaluatedLower","apply","evaluatedUpper","values","StyleExpression","_warningHistory","_evaluator","_defaultValue","getDefaultValue","_enumValues","evaluateWithoutErrorHandling","console","warn","isExpression","createExpression","parser","getExpectedType","ZoomConstantExpression","_styleExpression","isStateDependent","ZoomDependentExpression","createPropertyExpression","isZoomConstant","zoomCurve","findZoomCurve","StylePropertyFunction","specification","_parameters","_specification","deserialize","normalizePropertyExpression","err","constant","childResult","enum","formatted","resolvedImage","convertLiteral","convertFunction","convertIdentityFunction","tokens","convertTokenString","convertZoomAndPropertyFunction","convertZoomFunction","convertPropertyFunction","getInterpolateOperator","featureFunctionParameters","functionType","getFunctionType","appendStopPair","fixupDegenerateStepCurve","getFallback","defaultValue","isStep","curve","re","pos","match","exec","literal","isExpressionFilter","f","filterSpec","createFilter","needGeometry","convertFilter","compiled","geometryNeeded","globalProperties","converted","convertComparisonOp","convertNegation","convertDisjunctionOp","convertInOp","convertHasOp","filters","_convertFilter","expectedTypes","children","typechecks","runtimeTypeChecks","conditions","negate","uniformTypes","uniqueValues","migrated","migrateToV8","migrateToExpressions","styleIDs","sourceIDs","compositedSourceLayers","compositeID","deref","refProperties","derefLayers","ref","deepEqual","operations","setStyle","addLayer","removeLayer","setPaintProperty","setLayoutProperty","setFilter","addSource","removeSource","setGeoJSONSourceData","setLayerZoomRange","setLayerProperty","setCenter","setZoom","setBearing","setPitch","setSprite","setGlyphs","setTransition","setLight","sourceId","after","commands","command","sourcesRemoved","updateSource","canUpdateGeoJSON","before","prop","hasOwnProperty","isEqual","diffSources","data","diffLayerPropertyChanges","layerId","klass","pluckId","indexById","group","diffLayers","beforeOrder","afterOrder","beforeIndex","reduce","afterIndex","tracker","clean","beforeLayer","afterLayer","insertBeforeLayerId","lastIndexOf","minzoom","maxzoom","diffStyles","center","bearing","pitch","sprite","transition","light","removeOrAddSourceCommands","beforeLayers","ValidationError","identifier","__line__","parseInt","validateConstants","unbundle","valueOf","deepUnbundle","unbundledValue","validateObject","elementSpecs","valueSpec","elementValidators","objectElementValidators","styleSpec","objectKey","elementSpecKey","elementSpec","validateElement","validateSpec","required","validateArray","arraySpec","validateArrayElement","arrayElementValidator","validate","arrayElementSpec","$version","function","arrayIndex","validateNumber","minimum","maximum","validateFunction","functionValueSpec","stopKeyType","stopDomainValues","previousStopDomainValue","previousStopDomainZoom","isZoomFunction","isPropertyFunction","isZoomAndPropertyFunction","validateFunctionStops","validateFunctionDefault","validateFunctionStop","validateStopDomainValue","reportValue","isFinite","validateExpression","expressionContext","expressionObj","propertyKey","validateBoolean","validateColor","validateEnum","validateFilter","validateNonExpressionFilter","filter_operator","geometry_type","validateProperty","layerSpec","layerType","transitionMatch","tokenMatch","validatePaintProperty","validateLayoutProperty","validateLayer","otherLayer","sourceType","lineMetrics","validateString","promoteId","validatePromoteId","validateSource","replace","source_geojson","cluster","clusterProperties","reduceExpr","mapExpr","source_video","source_image","validateLight","lightSpec","rootType","validateFormatted","validateImage","VALIDATORS","valid","validateStyleMin","latestStyleSpec","validateGlyphsURL","sortErrors","wrapCleanErrors","paintProperty","layoutProperty","require","readStyle","Buffer","jsonlint","validateStyle","v8","SUPPORTED_SPEC_VERSION","MAX_SOURCES_IN_STYLE","isValid","regex","getSourceCount","getAllowedKeyErrors","allowed","Set","getSourceErrors","sourceKeys","sourceUrlPattern","getSourcesErrors","count","sourceErrors","getRootErrors","specKeys","optionalRootProperties","allowedKeyErrors","glyphUrlPattern","spriteUrlPattern","visibilityPattern","visibility","validateMapboxApiSupported","styleFunction","visit","latest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEA;EACA;EACA;EACA;EACA,IAAI,YAAY,GA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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC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"}