{"version":3,"file":"index.es.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","../util/unbundle_jsonlint.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_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_terrain.js","../validate/validate_fog.js","../validate/validate_formatted.js","../validate/validate_image.js","../validate/validate_projection.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":["// 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).\nconst stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\n\nexport default function stringify(passedObj, options = {}) {\n const indent = JSON.stringify(\n [1],\n undefined,\n options.indent === undefined ? 2 : options.indent\n ).slice(2, -3);\n\n const maxLength =\n indent === \"\"\n ? Infinity\n : options.maxLength === undefined\n ? 80\n : options.maxLength;\n\n let { replacer } = options;\n\n return (function _stringify(obj, currentIndent, reserved) {\n if (obj && typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n\n const string = JSON.stringify(obj, replacer);\n\n if (string === undefined) {\n return string;\n }\n\n const length = maxLength - currentIndent.length - reserved;\n\n if (string.length <= length) {\n const prettified = string.replace(\n stringOrChar,\n (match, stringLiteral) => {\n return stringLiteral || `${match} `;\n }\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 const nextIndent = currentIndent + indent;\n const items = [];\n let index = 0;\n let start;\n let end;\n\n if (Array.isArray(obj)) {\n start = \"[\";\n end = \"]\";\n const { length } = obj;\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 const keys = Object.keys(obj);\n const { length } = keys;\n for (; index < length; index++) {\n const key = keys[index];\n const keyPart = `${JSON.stringify(key)}: `;\n const 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.js';\nimport type {\n StyleSpecification,\n SourceSpecification,\n LayerSpecification,\n PropertyValueSpecification,\n DataDrivenPropertyValueSpecification\n} from './types.js';\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.js';\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): any {\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.js';\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]>): Scope {\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 static blue: 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 /**\n * Returns an RGBA array of values representing the color, unpremultiplied by A.\n *\n * @returns An array of RGBA color values in the range [0, 255].\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 /**\n * Returns a RGBA array of float values representing the color, unpremultiplied by A.\n *\n * @returns An array of RGBA color values in the range [0, 1].\n */\n toArray01(): [number, number, number, number] {\n const {r, g, b, a} = this;\n return a === 0 ? [0, 0, 0, 0] : [\n r / a,\n g / a,\n b / a,\n a\n ];\n }\n\n /**\n * Returns an RGBA array of values representing the color, premultiplied by A.\n *\n * @returns An array of RGBA color values in the range [0, 1].\n */\n toArray01PremultipliedAlpha(): [number, number, number, number] {\n const {r, g, b, a} = this;\n return [\n r,\n g,\n b,\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);\nColor.blue = new Color(0, 0, 1, 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.js';\nimport type ResolvedImage from '../types/resolved_image.js';\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 // combine characters so that diacritic marks are not separate code points\n this.text = text.normalize ? text.normalize() : 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.js';\nimport Collator from './types/collator.js';\nimport Formatted from './types/formatted.js';\nimport ResolvedImage from './types/resolved_image.js';\nimport {NullType, NumberType, StringType, BooleanType, ColorType, ObjectType, ValueType, CollatorType, FormattedType, ResolvedImageType, array} from './types.js';\n\nimport type {Type} from './types.js';\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): string {\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.js';\nimport Formatted from '../types/formatted.js';\n\nimport type {Type} from '../types.js';\nimport type {Value} from '../values.js';\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\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): void | Literal {\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(): Value {\n return this.value;\n }\n\n eachChild() {}\n\n outputDefined(): boolean {\n return true;\n }\n\n serialize(): SerializedExpression {\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(): string {\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.js';\nimport RuntimeError from '../runtime_error.js';\nimport {typeOf} from '../values.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\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): any | null {\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(): SerializedExpression {\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.js';\nimport Formatted, {FormattedSection} from '../types/formatted.js';\nimport {toString, typeOf} from '../values.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type {Type} from '../types.js';\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): Formatted {\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(): boolean {\n // Technically the combinatoric set of all children\n // Usually, this.text will be undefined anyway\n return false;\n }\n\n serialize(): SerializedExpression {\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.js';\nimport ResolvedImage from '../types/resolved_image.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type {Type} from '../types.js';\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): null | ResolvedImage {\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(): boolean {\n // The output of image is determined by the list of available images in the evaluation context\n return false;\n }\n\n serialize(): SerializedExpression {\n return [\"image\", this.input.serialize()];\n }\n}\n","// @flow\n\nimport assert from 'assert';\n\nimport {BooleanType, ColorType, NumberType, StringType, ValueType} from '../types.js';\nimport {Color, toString as valueToString, validateRGBA} from '../values.js';\nimport RuntimeError from '../runtime_error.js';\nimport Formatted from '../types/formatted.js';\nimport FormatExpression from '../definitions/format.js';\nimport ImageExpression from '../definitions/image.js';\nimport ResolvedImage from '../types/resolved_image.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\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): null | boolean | number | string | Color | Formatted | ResolvedImage {\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(): SerializedExpression {\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.js';\n\nimport type Point from '@mapbox/point-geometry';\nimport type {FormattedSection} from './types/formatted.js';\nimport type {GlobalProperties, Feature, FeatureState} from './index.js';\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type {FeatureDistanceData} from '../feature_filter/index.js';\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: null | CanonicalTileID;\n featureTileCoord: ?Point;\n featureDistanceData: ?FeatureDistanceData;\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 this.featureTileCoord = null;\n this.featureDistanceData = null;\n }\n\n id(): number | null {\n return this.feature && this.feature.id !== undefined ? this.feature.id : null;\n }\n\n geometryType(): null | string {\n return this.feature ? typeof this.feature.type === 'number' ? geometryTypes[this.feature.type] : this.feature.type : null;\n }\n\n geometry(): ?Array> {\n return this.feature && 'geometry' in this.feature ? this.feature.geometry : null;\n }\n\n canonicalID(): null | CanonicalTileID {\n return this.canonical;\n }\n\n properties(): {[string]: any} {\n return (this.feature && this.feature.properties) || {};\n }\n\n distanceFromCenter(): number {\n if (this.featureTileCoord && this.featureDistanceData) {\n\n const c = this.featureDistanceData.center;\n const scale = this.featureDistanceData.scale;\n const {x, y} = this.featureTileCoord;\n\n // Calculate the distance vector `d` (left handed)\n const dX = x * scale - c[0];\n const dY = y * scale - c[1];\n\n // The bearing vector `b` (left handed)\n const bX = this.featureDistanceData.bearing[0];\n const bY = this.featureDistanceData.bearing[1];\n\n // Distance is calculated as `dot(d, v)`\n const dist = (bX * dX + bY * dY);\n return dist;\n }\n\n return 0;\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.js';\n\nimport ParsingContext from './parsing_context.js';\nimport EvaluationContext from './evaluation_context.js';\nimport assert from 'assert';\n\nimport type {Expression, ExpressionRegistry} from './expression.js';\nimport type {Type} from './types.js';\nimport type {Value} from './values.js';\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): Value {\n return this._evaluate(ctx, this.args);\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\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.js';\nimport Collator from '../types/collator.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type {Type} from '../types.js';\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): Collator {\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(): boolean {\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(): SerializedExpression {\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.js';\nimport type {Type} from '../types.js';\nimport {BooleanType} from '../types.js';\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {GeoJSON, GeoJSONPolygon, GeoJSONMultiPolygon} from '@mapbox/geojson-types';\nimport type {CanonicalTileID} from '../../../source/tile_id.js';\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: [number, number]) {\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: BBox, canonical: CanonicalTileID) {\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: CanonicalTileID) {\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: CanonicalTileID) {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n const tilePoints = [];\n if (!geometry) return 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: CanonicalTileID) {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n const tileLines = [];\n if (!geometry) return 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 if (!canonical) {\n return false;\n }\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 if (!canonical) {\n return false;\n }\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): ?Within {\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): boolean {\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(): SerializedExpression {\n return [\"within\", this.geojson];\n }\n\n}\n\nexport default Within;\n","// @flow\n\nimport CompoundExpression from './compound_expression.js';\nimport Within from './definitions/within.js';\nimport type {Expression} from './expression.js';\n\nfunction isFeatureConstant(e: Expression): boolean {\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): boolean {\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): boolean {\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.js';\nimport type {Expression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\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): void | Var {\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): any {\n return this.boundExpression.evaluate(ctx);\n }\n\n eachChild() {}\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): Array {\n return [\"var\", this.name];\n }\n}\n\nexport default Var;\n","// @flow\n\nimport Scope from './scope.js';\nimport {checkSubtype} from './types.js';\nimport ParsingError from './parsing_error.js';\nimport Literal from './definitions/literal.js';\nimport Assertion from './definitions/assertion.js';\nimport Coercion from './definitions/coercion.js';\nimport EvaluationContext from './evaluation_context.js';\nimport CompoundExpression from './compound_expression.js';\nimport CollatorExpression from './definitions/collator.js';\nimport Within from './definitions/within.js';\nimport {isGlobalPropertyConstant, isFeatureConstant} from './is_constant.js';\nimport Var from './definitions/var.js';\n\nimport type {Expression, ExpressionRegistry} from './expression.js';\nimport type {Type} from './types.js';\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]>): ParsingContext {\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', 'sky-radial-progress', 'accumulated', 'is-supported-script', 'pitch', 'distance-from-center']);\n}\n","// @flow\n\nimport RuntimeError from './runtime_error.js';\n\nimport type {Expression} from './expression.js';\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): 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.js';\n\nimport {findStopLessThanOrEqualTo} from '../stops.js';\n\nimport type {Stops} from '../stops.js';\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\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): ?Step {\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): any {\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(): SerializedExpression {\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","'use strict';\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 = p1y;\n this.p2x = p2x;\n this.p2y = p2y;\n}\n\nUnitBezier.prototype = {\n 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\n sampleCurveY: function (t) {\n return ((this.ay * t + this.by) * t + this.cy) * t;\n },\n\n sampleCurveDerivativeX: function (t) {\n return (3.0 * this.ax * t + 2.0 * this.bx) * t + this.cx;\n },\n\n solveCurveX: function (x, epsilon) {\n if (epsilon === undefined) epsilon = 1e-6;\n\n if (x < 0.0) return 0.0;\n if (x > 1.0) return 1.0;\n\n var t = x;\n\n // First try a few iterations of Newton's method - normally very fast.\n for (var i = 0; i < 8; i++) {\n var x2 = this.sampleCurveX(t) - x;\n if (Math.abs(x2) < epsilon) return t;\n\n var d2 = this.sampleCurveDerivativeX(t);\n if (Math.abs(d2) < 1e-6) break;\n\n t = t - x2 / d2;\n }\n\n // Fall back to the bisection method for reliability.\n var t0 = 0.0;\n var t1 = 1.0;\n t = x;\n\n for (i = 0; i < 20; i++) {\n x2 = this.sampleCurveX(t);\n if (Math.abs(x2 - x) < epsilon) break;\n\n if (x > x2) {\n t0 = t;\n } else {\n t1 = t;\n }\n\n t = (t1 - t0) * 0.5 + t0;\n }\n\n return t;\n },\n\n solve: function (x, epsilon) {\n return this.sampleCurveY(this.solveCurveX(x, epsilon));\n }\n};\n","// @flow\n\nimport Color from './color.js';\n\nexport function number(a: number, b: number, t: number): number {\n return (a * (1 - t)) + (b * t);\n}\n\nexport function color(from: Color, to: Color, t: number): Color {\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.js';\n\nimport {number as interpolateNumber} from './interpolate.js';\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): LABColor {\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): HCLColor {\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.js';\nimport {toString, NumberType, ColorType} from '../types.js';\nimport {findStopLessThanOrEqualTo} from '../stops.js';\nimport {hcl, lab} from '../../util/color_spaces.js';\nimport Color from '../../util/color.js';\n\nimport type {Stops} from '../stops.js';\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\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): 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): ?Interpolate {\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): Color {\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(): SerializedExpression {\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.js';\nimport ResolvedImage from '../types/resolved_image.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\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): ?Coalesce {\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): any | null {\n let result = null;\n let argCount = 0;\n let firstImage;\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 so styleimagemissing can fire\n if (result && result instanceof ResolvedImage && !result.available) {\n // set to first image\n if (!firstImage) {\n firstImage = result;\n }\n result = null;\n // if we reach the end, return the first image\n if (argCount === this.args.length) {\n return firstImage;\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(): SerializedExpression {\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.js';\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\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): any {\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): ?Let {\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(): boolean {\n return this.result.outputDefined();\n }\n\n serialize(): SerializedExpression {\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.js';\n\nimport RuntimeError from '../runtime_error.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type, ArrayType} from '../types.js';\nimport type {Value} from '../values.js';\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): ?At {\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): Value {\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(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\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.js';\nimport RuntimeError from '../runtime_error.js';\nimport {typeOf} from '../values.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\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): ?In {\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): boolean {\n const needle = (this.needle.evaluate(ctx): any);\n const haystack = (this.haystack.evaluate(ctx): any);\n\n if (haystack == null) 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(): boolean {\n return true;\n }\n\n serialize(): SerializedExpression {\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.js';\nimport RuntimeError from '../runtime_error.js';\nimport {typeOf} from '../values.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\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): ?IndexOf {\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): any {\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(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\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.js';\nimport {ValueType, type Type} from '../types.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\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): ?Match {\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): any {\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(): SerializedExpression {\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.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\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): ?Case {\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): any {\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(): SerializedExpression {\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.js';\nimport RuntimeError from '../runtime_error.js';\nimport {typeOf} from '../values.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\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): ?Slice {\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): any {\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(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\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.js';\nimport Assertion from './assertion.js';\nimport {typeOf} from '../values.js';\nimport RuntimeError from '../runtime_error.js';\n\nimport type {Expression, SerializedExpression, ExpressionRegistration} from '../expression.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type {Type} from '../types.js';\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: EvaluationContext, a: any, b: any): boolean { return a === b; }\nfunction neq(ctx: EvaluationContext, a: any, b: any): boolean { return a !== b; }\nfunction lt(ctx: EvaluationContext, a: any, b: any): boolean { return a < b; }\nfunction gt(ctx: EvaluationContext, a: any, b: any): boolean { return a > b; }\nfunction lteq(ctx: EvaluationContext, a: any, b: any): boolean { return a <= b; }\nfunction gteq(ctx: EvaluationContext, a: any, b: any): boolean { return a >= b; }\n\nfunction eqCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) === 0; }\nfunction neqCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return !eqCollate(ctx, a, b, c); }\nfunction ltCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) < 0; }\nfunction gtCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) > 0; }\nfunction lteqCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) <= 0; }\nfunction gteqCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { 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: (EvaluationContext, any, any) => boolean, compareWithCollator: (EvaluationContext, any, any, any) => boolean): ExpressionRegistration {\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): boolean {\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(): SerializedExpression {\n const serialized = [op];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n };\n}\n\nexport const Equals: $Call = makeComparison('==', eq, eqCollate);\nexport const NotEquals: $Call = makeComparison('<', lt, ltCollate);\nexport const GreaterThan: $Call', typeof gt, typeof gtCollate> = makeComparison('>', gt, gtCollate);\nexport const LessThanOrEqual: $Call=', typeof gteq, typeof gteqCollate> = makeComparison('>=', gteq, gteqCollate);\n","// @flow\n\nimport {StringType, NumberType} from '../types.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type {Type} from '../types.js';\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' | 'unit';\n currency?: null | string;\n unit?: 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 unit: Expression | null; // Simple units sanctioned for use in ECMAScript, required if style=unit. https://tc39.es/proposal-unified-intl-numberformat/section6/locales-currencies-tz_proposed_out.html#sec-issanctionedsimpleunitidentifier\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 unit: 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.unit = unit;\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 unit = null;\n if (options['unit']) {\n unit = context.parse(options['unit'], 1, StringType);\n if (!unit) 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, unit, minFractionDigits, maxFractionDigits);\n }\n\n evaluate(ctx: EvaluationContext): string {\n return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [],\n {\n style:\n (this.currency && \"currency\") ||\n (this.unit && \"unit\") ||\n \"decimal\",\n currency: this.currency ? this.currency.evaluate(ctx) : undefined,\n unit: this.unit ? this.unit.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.unit) {\n fn(this.unit);\n }\n if (this.minFractionDigits) {\n fn(this.minFractionDigits);\n }\n if (this.maxFractionDigits) {\n fn(this.maxFractionDigits);\n }\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\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.unit) {\n options['unit'] = this.unit.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.js';\n\nimport {typeOf} from '../values.js';\nimport RuntimeError from '../runtime_error.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\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): ?Length {\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): any | number {\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(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\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.js';\n\nimport {typeOf, Color, validateRGBA, toString as valueToString} from '../values.js';\nimport CompoundExpression from '../compound_expression.js';\nimport RuntimeError from '../runtime_error.js';\nimport Let from './let.js';\nimport Var from './var.js';\nimport Literal from './literal.js';\nimport Assertion from './assertion.js';\nimport Coercion from './coercion.js';\nimport At from './at.js';\nimport In from './in.js';\nimport IndexOf from './index_of.js';\nimport Match from './match.js';\nimport Case from './case.js';\nimport Slice from './slice.js';\nimport Step from './step.js';\nimport Interpolate from './interpolate.js';\nimport Coalesce from './coalesce.js';\nimport {\n Equals,\n NotEquals,\n LessThan,\n GreaterThan,\n LessThanOrEqual,\n GreaterThanOrEqual\n} from './comparison.js';\nimport CollatorExpression from './collator.js';\nimport NumberFormat from './number_format.js';\nimport FormatExpression from './format.js';\nimport ImageExpression from './image.js';\nimport Length from './length.js';\nimport Within from './within.js';\n\nimport type {Varargs} from '../compound_expression.js';\nimport type {ExpressionRegistry} from '../expression.js';\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 'pitch': [\n NumberType,\n [],\n (ctx) => ctx.globals.pitch || 0\n ],\n 'distance-from-center': [\n NumberType,\n [],\n (ctx) => ctx.distanceFromCenter()\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 'sky-radial-progress': [\n NumberType,\n [],\n (ctx) => ctx.globals.skyRadialProgress || 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.js';\n\nexport function supportsPropertyExpression(spec: StylePropertySpecification): boolean {\n return spec['property-type'] === '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.js';\nimport Color from '../util/color.js';\nimport extend from '../util/extend.js';\nimport getType from '../util/get_type.js';\nimport * as interpolate from '../util/interpolate.js';\nimport Interpolate from '../expression/definitions/interpolate.js';\nimport Formatted from '../expression/types/formatted.js';\nimport ResolvedImage from '../expression/types/resolved_image.js';\nimport {supportsInterpolation} from '../util/properties.js';\nimport {findStopLessThanOrEqualTo} from '../expression/stops.js';\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.js';\nimport ParsingError from './parsing_error.js';\nimport ParsingContext from './parsing_context.js';\nimport EvaluationContext from './evaluation_context.js';\nimport CompoundExpression from './compound_expression.js';\nimport Step from './definitions/step.js';\nimport Interpolate from './definitions/interpolate.js';\nimport Coalesce from './definitions/coalesce.js';\nimport Let from './definitions/let.js';\nimport definitions from './definitions/index.js';\nimport * as isConstant from './is_constant.js';\nimport RuntimeError from './runtime_error.js';\nimport {success, error} from '../util/result.js';\nimport {supportsPropertyExpression, supportsZoomExpression, supportsInterpolation} from '../util/properties.js';\n\nimport type {Type, EvaluationKind} from './types.js';\nimport type {Value} from './values.js';\nimport type {Expression} from './expression.js';\nimport type {StylePropertySpecification} from '../style-spec.js';\nimport type {Result} from '../util/result.js';\nimport type {InterpolationType} from './definitions/interpolate.js';\nimport type {PropertyValueSpecification} from '../types.js';\nimport type {FormattedSection} from './types/formatted.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type {FeatureDistanceData} from '../feature_filter/index.js';\n\nexport type Feature = {\n +type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'LineString' | 'Polygon',\n +id?: number | null,\n +properties: {[_: string]: any},\n +patterns?: {[_: string]: string},\n +geometry?: Array>\n};\n\nexport type FeatureState = {[_: string]: any};\n\nexport type GlobalProperties = $ReadOnly<{\n zoom: number,\n pitch?: number,\n heatmapDensity?: number,\n lineProgress?: number,\n skyRadialProgress?: 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, featureTileCoord?: Point, featureDistanceData?: FeatureDistanceData): any {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature;\n this._evaluator.featureState = featureState;\n this._evaluator.canonical = canonical || null;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection;\n this._evaluator.featureTileCoord = featureTileCoord || null;\n this._evaluator.featureDistanceData = featureDistanceData || null;\n\n return this.expression.evaluate(this._evaluator);\n }\n\n evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection, featureTileCoord?: Point, featureDistanceData?: FeatureDistanceData): any {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature || null;\n this._evaluator.featureState = featureState || null;\n this._evaluator.canonical = canonical || null;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection || null;\n this._evaluator.featureTileCoord = featureTileCoord || null;\n this._evaluator.featureDistanceData = featureDistanceData || 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): boolean {\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', 'pitch', 'distance-from-center']);\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/index.js';\nimport {Color} from './values.js';\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}): StylePropertyFunction {\n return new StylePropertyFunction(serialized._parameters, serialized._specification);\n }\n\n static serialize(input: StylePropertyFunction): {_parameters: PropertyValueSpecification, _specification: StylePropertySpecification} {\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.js';\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) || Array.isArray(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';\n\nimport type {StylePropertySpecification} from '../style-spec.js';\nimport type {ExpressionSpecification} from '../types.js';\n\nfunction convertLiteral(value) {\n return typeof value === 'object' ? ['literal', value] : value;\n}\n\nexport default function convertFunction(parameters: any, propertySpec: StylePropertySpecification): ExpressionSpecification {\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): string | ExpressionSpecification {\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\n// Turn jsonlint-lines-primitives objects into primitive objects\nexport function unbundle(value: mixed): 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","// @flow\n\nimport {createExpression} from '../expression/index.js';\nimport {isFeatureConstant} from '../expression/is_constant.js';\nimport {deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport latest from '../reference/latest.js';\nimport type {GlobalProperties, Feature} from '../expression/index.js';\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type Point from '@mapbox/point-geometry';\n\nexport type FeatureDistanceData = {bearing: [number, number], center: [number, number], scale: number};\nexport type FilterExpression = (globalProperties: GlobalProperties, feature: Feature, canonical?: CanonicalTileID, featureTileCoord?: Point, featureDistanceData?: FeatureDistanceData) => boolean;\nexport type FeatureFilter = {filter: FilterExpression, dynamicFilter?: FilterExpression, needGeometry: boolean, needFeature: boolean};\n\nexport default createFilter;\nexport {isExpressionFilter, isDynamicFilter, extractStaticFilter};\n\nfunction isExpressionFilter(filter: any): boolean {\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\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 * @param {string} layerType the type of the layer this filter will be applied to.\n * @returns {Function} filter-evaluating function\n */\nfunction createFilter(filter: any, layerType?: string = 'fill'): FeatureFilter {\n if (filter === null || filter === undefined) {\n return {filter: () => true, needGeometry: false, needFeature: false};\n }\n\n if (!isExpressionFilter(filter)) {\n filter = convertFilter(filter);\n }\n const filterExp = ((filter: any): string[] | string | boolean);\n\n let staticFilter = true;\n try {\n staticFilter = extractStaticFilter(filterExp);\n } catch (e) {\n console.warn(\n`Failed to extract static filter. Filter will continue working, but at higher memory usage and slower framerate.\nThis is most likely a bug, please report this via https://github.com/mapbox/mapbox-gl-js/issues/new?assignees=&labels=&template=Bug_report.md\nand paste the contents of this message in the report.\nThank you!\nFilter Expression:\n${JSON.stringify(filterExp, null, 2)}\n `);\n }\n\n // Compile the static component of the filter\n const filterSpec = latest[`filter_${layerType}`];\n const compiledStaticFilter = createExpression(staticFilter, filterSpec);\n\n let filterFunc = null;\n if (compiledStaticFilter.result === 'error') {\n throw new Error(compiledStaticFilter.value.map(err => `${err.key}: ${err.message}`).join(', '));\n } else {\n filterFunc = (globalProperties: GlobalProperties, feature: Feature, canonical?: CanonicalTileID) => compiledStaticFilter.value.evaluate(globalProperties, feature, {}, canonical);\n }\n\n // If the static component is not equal to the entire filter then we have a dynamic component\n // Compile the dynamic component separately\n let dynamicFilterFunc = null;\n let needFeature = null;\n if (staticFilter !== filterExp) {\n const compiledDynamicFilter = createExpression(filterExp, filterSpec);\n\n if (compiledDynamicFilter.result === 'error') {\n throw new Error(compiledDynamicFilter.value.map(err => `${err.key}: ${err.message}`).join(', '));\n } else {\n dynamicFilterFunc = (globalProperties: GlobalProperties, feature: Feature, canonical?: CanonicalTileID, featureTileCoord?: Point, featureDistanceData?: FeatureDistanceData) => compiledDynamicFilter.value.evaluate(globalProperties, feature, {}, canonical, undefined, undefined, featureTileCoord, featureDistanceData);\n needFeature = !isFeatureConstant(compiledDynamicFilter.value.expression);\n }\n }\n\n filterFunc = ((filterFunc: any): FilterExpression);\n const needGeometry = geometryNeeded(staticFilter);\n\n return {\n filter: filterFunc,\n dynamicFilter: dynamicFilterFunc ? dynamicFilterFunc : undefined,\n needGeometry,\n needFeature: !!needFeature\n };\n}\n\nfunction extractStaticFilter(filter: any): any {\n if (!isDynamicFilter(filter)) {\n return filter;\n }\n\n // Shallow copy so we can replace expressions in-place\n let result = deepUnbundle(filter);\n\n // 1. Union branches\n unionDynamicBranches(result);\n\n // 2. Collapse dynamic conditions to `true`\n result = collapseDynamicBooleanExpressions(result);\n\n return result;\n}\n\nfunction collapseDynamicBooleanExpressions(expression: any): any {\n if (!Array.isArray(expression)) {\n return expression;\n }\n\n const collapsed = collapsedExpression(expression);\n if (collapsed === true) {\n return collapsed;\n } else {\n return collapsed.map((subExpression) => collapseDynamicBooleanExpressions(subExpression));\n }\n}\n\n/**\n * Traverses the expression and replaces all instances of branching on a\n * `dynamic` conditional (such as `['pitch']` or `['distance-from-center']`)\n * into an `any` expression.\n * This ensures that all possible outcomes of a `dynamic` branch are considered\n * when evaluating the expression upfront during filtering.\n *\n * @param {Array} filter the filter expression mutated in-place.\n */\nfunction unionDynamicBranches(filter: any) {\n let isBranchingDynamically = false;\n const branches = [];\n\n if (filter[0] === 'case') {\n for (let i = 1; i < filter.length - 1; i += 2) {\n isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[i]);\n branches.push(filter[i + 1]);\n }\n\n branches.push(filter[filter.length - 1]);\n } else if (filter[0] === 'match') {\n isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[1]);\n\n for (let i = 2; i < filter.length - 1; i += 2) {\n branches.push(filter[i + 1]);\n }\n branches.push(filter[filter.length - 1]);\n } else if (filter[0] === 'step') {\n isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[1]);\n\n for (let i = 1; i < filter.length - 1; i += 2) {\n branches.push(filter[i + 1]);\n }\n }\n\n if (isBranchingDynamically) {\n filter.length = 0;\n filter.push('any', ...branches);\n }\n\n // traverse and recurse into children\n for (let i = 1; i < filter.length; i++) {\n unionDynamicBranches(filter[i]);\n }\n}\n\nfunction isDynamicFilter(filter: any): boolean {\n // Base Cases\n if (!Array.isArray(filter)) {\n return false;\n }\n if (isRootExpressionDynamic(filter[0])) {\n return true;\n }\n\n for (let i = 1; i < filter.length; i++) {\n const child = filter[i];\n if (isDynamicFilter(child)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isRootExpressionDynamic(expression: string): boolean {\n return expression === 'pitch' ||\n expression === 'distance-from-center';\n}\n\nconst dynamicConditionExpressions = new Set([\n 'in',\n '==',\n '!=',\n '>',\n '>=',\n '<',\n '<=',\n 'to-boolean'\n]);\n\nfunction collapsedExpression(expression: any): any {\n if (dynamicConditionExpressions.has(expression[0])) {\n\n for (let i = 1; i < expression.length; i++) {\n const param = expression[i];\n if (isDynamicFilter(param)) {\n return true;\n }\n }\n }\n return expression;\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.js';\n\nimport type {FilterSpecification} from '../types.js';\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: any).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.js';\nimport {isExpression} from '../expression/index.js';\nimport convertFunction, {convertTokenString} from '../function/convert.js';\nimport convertFilter from '../feature_filter/convert.js';\n\nimport type {StyleSpecification} from '../types.js';\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): 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.js';\nimport migrateToExpressions from './migrate/expressions.js';\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","// @flow\nexport default ['type', 'source', 'source-layer', 'minzoom', 'maxzoom', 'filter', 'layout'];\n","// @flow\n\nimport refProperties from './util/ref_properties.js';\n\nimport type {LayerSpecification} from './types.js';\n\nfunction deref(layer: LayerSpecification, parent: LayerSpecification): LayerSpecification {\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: any)[k];\n }\n });\n\n return ((result: any): LayerSpecification);\n}\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 */\nexport default function derefLayers(layers: Array): Array {\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]: any).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","// @flow\n\nimport isEqual from './util/deep_equal.js';\n\nimport type {StyleSpecification} from './types.js';\n\ntype Command = {\n command: string;\n args: Array;\n};\n\nexport const operations: {[_: string]: string} = {\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 * { command: 'setTerrain', args: [terrainProperties] }\n */\n setTerrain: 'setTerrain',\n\n /*\n * { command: 'setFog', args: [fogProperties] }\n */\n setFog: 'setFog',\n\n /*\n * { command: 'setProjection', args: [projectionProperties] }\n */\n setProjection: 'setProjection'\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 */\nexport default function diffStyles(before: StyleSpecification, after: StyleSpecification): Array {\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 if (!isEqual(before.fog, after.fog)) {\n commands.push({command: operations.setFog, args: [after.fog]});\n }\n if (!isEqual(before.projection, after.projection)) {\n commands.push({command: operations.setProjection, args: [after.projection]});\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 (layer.source && sourcesRemoved[layer.source]) {\n commands.push({command: operations.removeLayer, args: [layer.id]});\n } else {\n beforeLayers.push(layer);\n }\n });\n }\n\n // Remove the terrain if the source for that terrain is being removed\n let beforeTerrain = before.terrain;\n if (beforeTerrain) {\n if (sourcesRemoved[beforeTerrain.source]) {\n commands.push({command: operations.setTerrain, args: [undefined]});\n beforeTerrain = undefined;\n }\n }\n\n commands = commands.concat(removeOrAddSourceCommands);\n\n // Even though terrain is a top-level property\n // Its like a layer in the sense that it depends on a source being present.\n if (!isEqual(beforeTerrain, after.terrain)) {\n commands.push({command: operations.setTerrain, args: [after.terrain]});\n }\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","// @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","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport validateSpec from './validate.js';\n\nimport type {ValidationOptions} from './validate.js';\n\ntype Options = ValidationOptions & {\n objectElementValidators?: Function;\n};\n\nexport default function validateObject(options: Options): Array {\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 }\n\n if (!validateElement) {\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 // $FlowFixMe[extra-arg]\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","// @flow\n\nimport getType from '../util/get_type.js';\nimport validate from './validate.js';\nimport ValidationError from '../error/validation_error.js';\n\nimport type {ValidationOptions} from './validate.js';\n\ntype Options = ValidationOptions & {\n arrayElementValidator: Function;\n};\n\nexport default function validateArray(options: Options): Array {\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 \"minimum\": arraySpec.minimum,\n \"maximum\": arraySpec.maximum,\n function: undefined\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","// @flow\n\nimport getType from '../util/get_type.js';\nimport ValidationError from '../error/validation_error.js';\n\nimport type {ValidationOptions} from './validate.js';\n\ntype Options = ValidationOptions & {\n arrayIndex: number;\n}\n\nexport default function validateNumber(options: Options): Array {\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) {\n let specMin = valueSpec.minimum;\n if (getType(valueSpec.minimum) === 'array') {\n const i = options.arrayIndex;\n specMin = valueSpec.minimum[i];\n }\n if (value < specMin) {\n return [new ValidationError(key, value, `${value} is less than the minimum value ${specMin}`)];\n }\n }\n\n if ('maximum' in valueSpec) {\n let specMax = valueSpec.maximum;\n if (getType(valueSpec.maximum) === 'array') {\n const i = options.arrayIndex;\n specMax = valueSpec.maximum[i];\n }\n if (value > specMax) {\n return [new ValidationError(key, value, `${value} is greater than the maximum value ${specMax}`)];\n }\n }\n\n return [];\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport validate from './validate.js';\nimport validateObject from './validate_object.js';\nimport validateArray from './validate_array.js';\nimport validateNumber from './validate_number.js';\nimport {isExpression} from '../expression/index.js';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport {\n supportsPropertyExpression,\n supportsZoomExpression,\n supportsInterpolation\n} from '../util/properties.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateFunction(options: ValidationOptions): any {\n const functionValueSpec = options.valueSpec;\n const functionType = unbundle(options.value.type);\n let stopKeyType;\n let stopDomainValues: {[string | number]: boolean} = {};\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: ValidationOptions) {\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: ValidationOptions) {\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\n const nextStopDomainZoom = unbundle(value[0].zoom);\n if (typeof nextStopDomainZoom !== 'number') {\n return [new ValidationError(key, value[0].zoom, 'stop zoom values must be numbers')];\n }\n\n if (previousStopDomainZoom && previousStopDomainZoom > nextStopDomainZoom) {\n return [new ValidationError(key, value[0].zoom, 'stop zoom values must appear in ascending order')];\n }\n if (nextStopDomainZoom !== previousStopDomainZoom) {\n previousStopDomainZoom = nextStopDomainZoom;\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: ValidationOptions, 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' && typeof value !== 'number' && typeof value !== 'string' && typeof value !== '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' && (typeof value !== 'number' || !isFinite(value) || Math.floor(value) !== value)) {\n return [new ValidationError(options.key, reportValue, `integer expected, found ${String(value)}`)];\n }\n\n if (functionType !== 'categorical' && type === 'number' && typeof value === 'number' && typeof previousStopDomainValue === '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: any) in stopDomainValues) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must be unique')];\n } else {\n stopDomainValues[(value: any)] = true;\n }\n\n return [];\n }\n\n function validateFunctionDefault(options: ValidationOptions) {\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.js';\n\nimport {createExpression, createPropertyExpression} from '../expression/index.js';\nimport {deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport {isStateConstant, isGlobalPropertyConstant, isFeatureConstant} from '../expression/is_constant.js';\nimport CompoundExpression from '../expression/compound_expression.js';\n\nimport type {Expression} from '../expression/expression.js';\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') {\n return disallowedFilterParameters(expressionObj, options);\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\nexport function disallowedFilterParameters(e: Expression, options: any): Array {\n const disallowedParameters = new Set([\n 'zoom',\n 'feature-state',\n 'pitch',\n 'distance-from-center'\n ]);\n\n if (options.valueSpec && options.valueSpec.expression) {\n for (const param of options.valueSpec.expression.parameters) {\n disallowedParameters.delete(param);\n }\n }\n\n if (disallowedParameters.size === 0) {\n return [];\n }\n const errors = [];\n\n if (e instanceof CompoundExpression) {\n if (disallowedParameters.has(e.name)) {\n return [new ValidationError(options.key, options.value, `[\"${e.name}\"] expression is not supported in a filter for a ${options.object.type} layer with id: ${options.object.id}`)];\n }\n }\n e.eachChild((arg) => {\n errors.push(...disallowedFilterParameters(arg, options));\n });\n\n return errors;\n}\n","// @flow\n\nimport getType from '../util/get_type.js';\nimport ValidationError from '../error/validation_error.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateBoolean(options: ValidationOptions): Array {\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","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport {parseCSSColor} from 'csscolorparser';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateColor(options: ValidationOptions): Array {\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","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport {unbundle} from '../util/unbundle_jsonlint.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateEnum(options: ValidationOptions): Array {\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","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport validateExpression from './validate_expression.js';\nimport validateEnum from './validate_enum.js';\nimport getType from '../util/get_type.js';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport extend from '../util/extend.js';\nimport {isExpressionFilter} from '../feature_filter/index.js';\n\nimport type {ValidationOptions} from './validate.js';\n\ntype Options = ValidationOptions & {\n layerType: string;\n}\n\nexport default function validateFilter(options: Options): Array {\n if (isExpressionFilter(deepUnbundle(options.value))) {\n // We default to a layerType of `fill` because that points to a non-dynamic filter definition within the style-spec.\n const layerType = options.layerType || 'fill';\n\n return validateExpression(extend({}, options, {\n expressionContext: 'filter',\n valueSpec: options.styleSpec[`filter_${layerType}`]\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","// @flow\n\nimport validate from './validate.js';\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport {isFunction} from '../function/index.js';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport {supportsPropertyExpression} from '../util/properties.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport type PropertyValidationOptions = ValidationOptions & {\n objectKey: string;\n layerType: string;\n}\n\nexport default function validateProperty(options: PropertyValidationOptions, propertyType: string): Array {\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","// @flow\n\nimport validateProperty from './validate_property.js';\n\nimport type ValidationError from '../error/validation_error.js';\nimport type {PropertyValidationOptions} from './validate_property.js';\n\nexport default function validatePaintProperty(options: PropertyValidationOptions): Array {\n return validateProperty(options, 'paint');\n}\n","// @flow\n\nimport validateProperty from './validate_property.js';\n\nimport type ValidationError from '../error/validation_error.js';\nimport type {PropertyValidationOptions} from './validate_property.js';\n\nexport default function validateLayoutProperty(options: PropertyValidationOptions): Array {\n return validateProperty(options, 'layout');\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport {unbundle} from '../util/unbundle_jsonlint.js';\nimport validateObject from './validate_object.js';\nimport validateFilter from './validate_filter.js';\nimport validatePaintProperty from './validate_paint_property.js';\nimport validateLayoutProperty from './validate_layout_property.js';\nimport validateSpec from './validate.js';\nimport extend from '../util/extend.js';\n\nimport type {ValidationOptions} from './validate.js';\nimport type {LayerSpecification} from '../types.js';\n\ntype Options = ValidationOptions & {\n value: LayerSpecification;\n arrayIndex: number;\n}\n\nexport default function validateLayer(options: Options): Array {\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 // $FlowFixMe[prop-missing] - id.__line__ is added dynamically during the readStyle step\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 if (typeof ref === 'string')\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' || type === 'sky')) {\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'] || layer.paint['line-trim-offset']) &&\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(options) {\n return validateFilter(extend({layerType: type}, options));\n },\n layout(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n valueSpec: {},\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 valueSpec: {},\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","// @flow\n\nimport getType from '../util/get_type.js';\nimport ValidationError from '../error/validation_error.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateString(options: $Shape): Array {\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","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport {unbundle} from '../util/unbundle_jsonlint.js';\nimport validateObject from './validate_object.js';\nimport validateEnum from './validate_enum.js';\nimport validateExpression from './validate_expression.js';\nimport validateString from './validate_string.js';\nimport getType from '../util/get_type.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nconst objectElementValidators = {\n promoteId: validatePromoteId\n};\n\nexport default function validateSource(options: ValidationOptions): Array {\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: getSourceTypeValues(styleSpec)},\n style,\n styleSpec\n });\n }\n}\n\nfunction getSourceTypeValues(styleSpec) {\n return styleSpec.source.reduce((memo, source) => {\n const sourceType = styleSpec[source];\n if (sourceType.type.type === 'enum') {\n memo = memo.concat(Object.keys(sourceType.type.values));\n }\n return memo;\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","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport validate from './validate.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateLight(options: ValidationOptions): Array {\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\n\nimport ValidationError from '../error/validation_error.js';\nimport validate from './validate.js';\nimport getType from '../util/get_type.js';\nimport {unbundle} from '../util/unbundle_jsonlint.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateTerrain(options: ValidationOptions): Array {\n const terrain = options.value;\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const terrainSpec = styleSpec.terrain;\n let errors = [];\n\n const rootType = getType(terrain);\n if (terrain === undefined) {\n return errors;\n } else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('terrain', terrain, `object expected, ${rootType} found`)]);\n return errors;\n }\n\n for (const key in terrain) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n\n if (transitionMatch && terrainSpec[transitionMatch[1]] && terrainSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: terrain[key],\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n } else if (terrainSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: terrain[key],\n valueSpec: terrainSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, terrain[key], `unknown property \"${key}\"`)]);\n }\n }\n\n if (!terrain.source) {\n errors.push(new ValidationError(key, terrain, `terrain is missing required property \"source\"`));\n } else {\n const source = style.sources && style.sources[terrain.source];\n const sourceType = source && unbundle(source.type);\n if (!source) {\n errors.push(new ValidationError(key, terrain.source, `source \"${terrain.source}\" not found`));\n } else if (sourceType !== 'raster-dem') {\n errors.push(new ValidationError(key, terrain.source, `terrain cannot be used with a source of type ${String(sourceType)}, it only be used with a \"raster-dem\" source type`));\n }\n }\n\n return errors;\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport validate from './validate.js';\nimport getType from '../util/get_type.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateFog(options: ValidationOptions): Array {\n const fog = options.value;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const fogSpec = styleSpec.fog;\n let errors = [];\n\n const rootType = getType(fog);\n if (fog === undefined) {\n return errors;\n } else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('fog', fog, `object expected, ${rootType} found`)]);\n return errors;\n }\n\n for (const key in fog) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n\n if (transitionMatch && fogSpec[transitionMatch[1]] && fogSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: fog[key],\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n } else if (fogSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: fog[key],\n valueSpec: fogSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, fog[key], `unknown property \"${key}\"`)]);\n }\n }\n\n return errors;\n}\n","// @flow\n\nimport validateExpression from './validate_expression.js';\nimport validateString from './validate_string.js';\n\nimport type {ValidationOptions} from './validate.js';\nimport type ValidationError from '../error/validation_error.js';\n\nexport default function validateFormatted(options: ValidationOptions): Array {\n if (validateString(options).length === 0) {\n return [];\n }\n\n return validateExpression(options);\n}\n","// @flow\n\nimport validateExpression from './validate_expression.js';\nimport validateString from './validate_string.js';\n\nimport type {ValidationOptions} from './validate.js';\nimport type ValidationError from '../error/validation_error.js';\n\nexport default function validateImage(options: ValidationOptions): Array {\n if (validateString(options).length === 0) {\n return [];\n }\n\n return validateExpression(options);\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport validate from './validate.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateProjection(options: ValidationOptions): Array {\n const projection = options.value;\n const styleSpec = options.styleSpec;\n const projectionSpec = styleSpec.projection;\n const style = options.style;\n\n let errors = [];\n\n const rootType = getType(projection);\n\n if (rootType === 'object') {\n for (const key in projection) {\n errors = errors.concat(validate({\n key,\n value: projection[key],\n valueSpec: projectionSpec[key],\n style,\n styleSpec\n }));\n }\n } else if (rootType !== 'string') {\n errors = errors.concat([new ValidationError('projection', projection, `object or string expected, ${rootType} found`)]);\n }\n\n return errors;\n}\n","// @flow\n\nimport extend from '../util/extend.js';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport {isExpression} from '../expression/index.js';\nimport {isFunction} from '../function/index.js';\n\nimport validateFunction from './validate_function.js';\nimport validateExpression from './validate_expression.js';\nimport validateObject from './validate_object.js';\nimport validateArray from './validate_array.js';\nimport validateBoolean from './validate_boolean.js';\nimport validateNumber from './validate_number.js';\nimport validateColor from './validate_color.js';\nimport validateEnum from './validate_enum.js';\nimport validateFilter from './validate_filter.js';\nimport validateLayer from './validate_layer.js';\nimport validateSource from './validate_source.js';\nimport validateLight from './validate_light.js';\nimport validateTerrain from './validate_terrain.js';\nimport validateFog from './validate_fog.js';\nimport validateString from './validate_string.js';\nimport validateFormatted from './validate_formatted.js';\nimport validateImage from './validate_image.js';\nimport validateProjection from './validate_projection.js';\n\nimport type {StyleReference} from '../reference/latest.js';\nimport type {StyleSpecification} from '../types.js';\nimport type ValidationError from '../error/validation_error.js';\n\nconst VALIDATORS = {\n '*'() {\n return [];\n },\n 'array': validateArray,\n 'boolean': validateBoolean,\n 'number': validateNumber,\n 'color': validateColor,\n 'enum': validateEnum,\n 'filter': validateFilter,\n 'function': validateFunction,\n 'layer': validateLayer,\n 'object': validateObject,\n 'source': validateSource,\n 'light': validateLight,\n 'terrain': validateTerrain,\n 'fog': validateFog,\n 'string': validateString,\n 'formatted': validateFormatted,\n 'resolvedImage': validateImage,\n 'projection': validateProjection\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.\nexport type ValidationOptions = {\n key: string;\n value: Object;\n valueSpec: Object;\n style: $Shape;\n styleSpec: StyleReference;\n}\n\nexport default function validate(options: ValidationOptions): Array {\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","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport validateString from './validate_string.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function(options: ValidationOptions): Array {\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","// @flow\nimport validate from './validate/validate.js';\nimport latestStyleSpec from './reference/latest.js';\nimport validateGlyphsURL from './validate/validate_glyphs_url.js';\n\nimport _validateSource from './validate/validate_source.js';\nimport _validateLight from './validate/validate_light.js';\nimport _validateTerrain from './validate/validate_terrain.js';\nimport _validateFog from './validate/validate_fog.js';\nimport _validateLayer from './validate/validate_layer.js';\nimport _validateFilter from './validate/validate_filter.js';\nimport _validatePaintProperty from './validate/validate_paint_property.js';\nimport _validateLayoutProperty from './validate/validate_layout_property.js';\n\nimport type {StyleSpecification} from './types.js';\n\nexport type ValidationError = {\n message: string;\n identifier?: ?string;\n line?: ?number;\n};\nexport type ValidationErrors = $ReadOnlyArray;\nexport type Validator = (Object) => ValidationErrors;\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 */\nexport function validateStyle(style: StyleSpecification, styleSpec: Object = latestStyleSpec): ValidationErrors {\n\n const errors = validate({\n key: '',\n value: style,\n valueSpec: styleSpec.$root,\n styleSpec,\n style,\n objectElementValidators: {\n glyphs: validateGlyphsURL,\n '*': () => []\n }\n });\n return sortErrors(errors);\n}\n\nexport const validateSource: Validator = opts => sortErrors(_validateSource(opts));\nexport const validateLight: Validator = opts => sortErrors(_validateLight(opts));\nexport const validateTerrain: Validator = opts => sortErrors(_validateTerrain(opts));\nexport const validateFog: Validator = opts => sortErrors(_validateFog(opts));\nexport const validateLayer: Validator = opts => sortErrors(_validateLayer(opts));\nexport const validateFilter: Validator = opts => sortErrors(_validateFilter(opts));\nexport const validatePaintProperty: Validator = opts => sortErrors(_validatePaintProperty(opts));\nexport const validateLayoutProperty: Validator = opts => sortErrors(_validateLayoutProperty(opts));\n\nfunction sortErrors(errors) {\n return errors.slice().sort((a, b) => a.line && b.line ? a.line - b.line : 0);\n}\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.js';\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","// @flow\nimport {validateStyle as validateStyleMin} from './validate_style.min.js';\nimport {v8} from './style-spec.js';\nimport readStyle from './read_style.js';\n\nimport type {ValidationErrors} from './validate_style.min.js';\nimport type {StyleSpecification} from './types.js';\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: StyleSpecification | string | Buffer, styleSpec: Object = v8): ValidationErrors {\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 {\n validateSource as source,\n validateLight as light,\n validateLayer as layer,\n validateFilter as filter,\n validatePaintProperty as paintProperty,\n validateLayoutProperty as layoutProperty\n} from './validate_style.min.js';\n","// @flow\n\nimport {validateStyle} from './validate_style.min.js';\nimport {v8} from './style-spec.js';\nimport readStyle from './read_style.js';\nimport ValidationError from './error/validation_error.js';\nimport getType from './util/get_type.js';\n\nimport type {ValidationErrors} from './validate_style.min.js';\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\nconst acceptedSourceTypes = new Set([\"vector\", \"raster\", \"raster-dem\"]);\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 * \"type\" is required and must be one of \"vector\", \"raster\", \"raster-dem\"\n */\n if (!acceptedSourceTypes.has(String(source.type))) {\n errors.push(new ValidationError(`sources[${i}].type`, source.type, `Expected one of [${Array.from(acceptedSourceTypes).join(\", \")}]`));\n }\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 (!source.url || !isValid(source.url, sourceUrlPattern)) {\n errors.push(new ValidationError(`sources[${i}].url`, source.url, 'Expected 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\", \"protected\"\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 'protected'\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 if (style.protected !== undefined && getType(style.protected) !== 'boolean') {\n errors.push(new ValidationError('protected', style.protected, 'Style protection must be true or false'));\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, styleSpec: Object = v8): ValidationErrors {\n let s = style;\n try {\n s = readStyle(s);\n } catch (e) {\n return [e];\n }\n\n let errors = validateStyle(s, styleSpec)\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\n","// @flow\n\ntype ExpressionType = 'data-driven' | 'color-ramp' | 'data-constant' | 'constant';\ntype ExpressionParameters = Array<'zoom' | 'feature' | 'feature-state' | 'heatmap-density' | 'line-progress' | 'sky-radial-progress' | 'pitch' | 'distance-from-center'>;\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 type: 'resolvedImage',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n transition: boolean,\n default?: string\n};\n\nimport v8 from './reference/v8.json';\nimport latest from './reference/latest.js';\nimport format from './format.js';\nimport migrate from './migrate.js';\nimport composite from './composite.js';\nimport derefLayers from './deref.js';\nimport diff from './diff.js';\nimport ValidationError from './error/validation_error.js';\nimport ParsingError from './error/parsing_error.js';\nimport {StyleExpression, isExpression, createExpression, createPropertyExpression, normalizePropertyExpression, ZoomConstantExpression, ZoomDependentExpression, StylePropertyFunction} from './expression/index.js';\nimport featureFilter, {isExpressionFilter} from './feature_filter/index.js';\n\nimport convertFilter from './feature_filter/convert.js';\nimport Color from './util/color.js';\nimport {createFunction, isFunction} from './function/index.js';\nimport convertFunction from './function/convert.js';\nimport {eachSource, eachLayer, eachProperty} from './visit.js';\n\nimport validate from './validate_style.js';\nimport validateMapboxApiSupported from './validate_mapbox_api_supported.js';\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"],"names":["stringOrChar","stringify","passedObj","options","indent","JSON","undefined","slice","maxLength","Infinity","replacer","_stringify","obj","currentIndent","reserved","toJSON","string","length","prettified","replace","match","stringLiteral","parse","nextIndent","items","index","start","end","Array","isArray","push","keys","Object","key","keyPart","value","join","sortKeysBy","reference","result","format","style","space","$root","layers","map","layer","stringifyPretty","root","freeExports","exports","nodeType","freeModule","module","freeGlobal","global","window","self","punycode","maxInt","base","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","floor","Math","stringFromCharCode","String","fromCharCode","error","type","RangeError","array","fn","mapDomain","parts","split","labels","encoded","ucs2decode","output","counter","extra","charCodeAt","ucs2encode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","k","decode","input","inputLength","out","i","n","bias","basic","j","oldi","w","t","baseMinusT","lastIndexOf","splice","encode","handledCPCount","basicLength","m","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","test","toLowerCase","toASCII","hasOwnProperty","this","isString","arg","isObject","isNull","isNullOrUndefined","prop","prototype","call","qs","sep","eq","regexp","maxKeys","len","x","idx","indexOf","kstr","vstr","v","substr","decodeURIComponent","stringifyPrimitive","isFinite","name","ks","encodeURIComponent","require","querystring","util","urlParse","urlResolve","urlResolveObject","urlFormat","Url","protocol","slashes","auth","host","port","hostname","hash","search","query","pathname","path","href","protocolPattern","portPattern","simplePathPattern","delims","unwise","concat","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","url","parseQueryString","slashesDenoteHost","u","TypeError","queryIndex","splitter","uSplit","slashRegex","rest","trim","simplePath","exec","proto","lowerProto","hostEnd","hec","atSign","parseHost","ipv6Hostname","hostparts","l","part","newpart","validParts","notHost","bit","unshift","p","h","ae","esc","escape","qm","s","charAt","source","relative","resolve","resolveObject","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","pop","authInHost","last","hasTrailingSlash","up","isAbsolute","getPropertyReference","propertyName","Reference","layout","paint","eachSource","callback","sources","eachLayer","eachProperty","inner","propertyType","properties","forEach","id","set","eachLayout","eachPaint","resolveConstant","constants","isFunction","stops","renameProperty","from","to","version","coordinates","coord","reverse","property","stop","migrateFontstackURL","inputParsed","URL","inputPathnameParts","assert","decodeURI","predicate","Error","glyphs","migrateFontStack","font","splitAndTrim","firstSymbolLayer","symbolLayers","inputs","ParsingError","constructor","message","Scope","parent","bindings","expression","get","has","NullType","kind","NumberType","StringType","BooleanType","ColorType","ObjectType","ValueType","ErrorType","CollatorType","FormattedType","ResolvedImageType","itemType","N","toString","valueMemberTypes","checkSubtype","expected","memberType","isValidType","provided","allowedTypes","some","isValidNativeType","kCSSColorTable","clamp_css_byte","round","clamp_css_float","f","parse_css_int","str","parseFloat","parseInt","parse_css_float","css_hue_to_rgb","m1","m2","parseCSSColor","css_str","iv","op","ep","fname","params","alpha","e","Color","r","g","b","a","rgba","toArray","toArray01","toArray01PremultipliedAlpha","black","white","transparent","red","blue","Collator","caseSensitive","diacriticSensitive","locale","sensitivity","collator","Intl","usage","compare","lhs","rhs","resolvedLocale","resolvedOptions","FormattedSection","text","image","scale","fontStack","textColor","normalize","Formatted","sections","fromString","unformatted","isEmpty","section","factory","serialize","serialized","ResolvedImage","available","validateRGBA","isValue","mixed","item","typeOf","Literal","args","context","expectedType","evaluate","eachChild","outputDefined","RuntimeError","types","number","boolean","object","Assertion","parsed","ctx","every","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","featureTileCoord","featureDistanceData","geometryType","geometry","canonicalID","distanceFromCenter","center","y","dX","dY","bX","bearing","bY","dist","cached","CompoundExpression","_evaluate","definition","definitions","availableOverloads","overloads","filter","signature","signatureContext","ParsingContext","registry","scope","parsedArgs","argParseFailed","signatures","stringifySignature","actualTypes","register","CollatorExpression","EXTENT","updateBBox","bbox","min","max","mercatorXfromLng","lng","mercatorYfromLat","lat","PI","log","tan","boxWithinBox","bbox1","bbox2","getTileCoordinates","tilesAtZoom","pow","z","onBoundary","p1","p2","x1","y1","x2","y2","rayIntersect","pointWithinPolygon","point","rings","inside","ring","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","resetBBox","getTilePoints","pointBBox","shifts","tilePoints","points","getTileLines","lineBBox","tileLines","tileLine","pointsWithinPolygons","polygonGeometry","tilePolygon","tilePolygons","linesWithinPolygons","Within","geojson","geometries","features","isFeatureConstant","isStateConstant","isGlobalPropertyConstant","Var","boundExpression","expr","_parse","annotate","typeAnnotation","Expr","actual","isConstant","ec","isTypeAnnotation","childrenConstant","findStopLessThanOrEqualTo","lastIndex","lowerIndex","upperIndex","currentIndex","nextValue","Step","outputs","label","outputType","labelKey","valueKey","stopCount","UnitBezier","p1x","p1y","p2x","p2y","cx","bx","ax","cy","by","ay","sampleCurveX","sampleCurveY","sampleCurveDerivativeX","solveCurveX","epsilon","abs","d2","t0","t1","solve","color","Xn","Yn","Zn","t2","t3","deg2rad","rad2deg","xyz2lab","lab2xyz","xyz2rgb","rgb2xyz","rgbToLab","rgbColor","labToRgb","labColor","interpolateLab","interpolateNumber","rgbToHcl","atan2","sqrt","hclToRgb","hclColor","cos","sin","interpolateHue","interpolateHcl","lab","forward","interpolate","hcl","Interpolate","operator","interpolation","interpolationFactor","lower","upper","exponentialInterpolation","controlPoints","ub","outputLower","outputUpper","lowerValue","upperValue","difference","progress","Coalesce","needsAnnotation","argCount","firstImage","Let","binding","At","In","needle","haystack","IndexOf","fromIndex","Match","inputType","cases","otherwise","labelContext","MAX_SAFE_INTEGER","sortedLabels","sort","groupedByOutput","outputLookup","outputIndex","coerceLabel","Case","branches","_","Slice","beginIndex","endIndex","isComparableType","neq","lt","gt","lteq","gteq","eqCollate","neqCollate","ltCollate","gtCollate","lteqCollate","gteqCollate","makeComparison","compareBasic","compareWithCollator","isOrderComparison","Comparison","hasUntypedArgument","rt","Equals","NotEquals","LessThan","GreaterThan","LessThanOrEqual","GreaterThanOrEqual","NumberFormat","currency","unit","minFractionDigits","maxFractionDigits","minimumFractionDigits","maximumFractionDigits","Length","expressions","binarySearch","varargs","typeToString","zoom","pitch","heatmapDensity","lineProgress","skyRadialProgress","accumulated","LN2","E","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","literal","unbundle","valueOf","deepUnbundle","unbundledValue","isExpressionFilter","createFilter","layerType","needGeometry","needFeature","convertFilter","filterExp","staticFilter","extractStaticFilter","filterSpec","latest","compiledStaticFilter","filterFunc","globalProperties","dynamicFilterFunc","compiledDynamicFilter","geometryNeeded","dynamicFilter","isDynamicFilter","unionDynamicBranches","collapseDynamicBooleanExpressions","collapsed","collapsedExpression","subExpression","isBranchingDynamically","isRootExpressionDynamic","dynamicConditionExpressions","Set","param","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","setTerrain","setFog","setProjection","sourceId","after","commands","command","sourcesRemoved","updateSource","canUpdateGeoJSON","before","isEqual","diffSources","data","diffLayerPropertyChanges","layerId","klass","pluckId","indexById","group","diffLayers","beforeOrder","afterOrder","beforeIndex","reduce","afterIndex","tracker","clean","beforeLayer","afterLayer","insertBeforeLayerId","minzoom","maxzoom","diffStyles","sprite","transition","light","fog","projection","removeOrAddSourceCommands","beforeLayers","beforeTerrain","terrain","ValidationError","identifier","__line__","validateObject","elementSpecs","valueSpec","elementValidators","objectElementValidators","styleSpec","objectKey","elementSpecKey","elementSpec","validateElement","validateSpec","required","validateArray","arraySpec","validateArrayElement","arrayElementValidator","validate","arrayElementSpec","minimum","maximum","function","$version","arrayIndex","validateNumber","specMin","specMax","validateFunction","functionValueSpec","stopKeyType","stopDomainValues","previousStopDomainValue","previousStopDomainZoom","isZoomFunction","isPropertyFunction","isZoomAndPropertyFunction","validateFunctionStops","validateFunctionDefault","validateFunctionStop","nextStopDomainZoom","validateStopDomainValue","reportValue","validateExpression","expressionContext","expressionObj","propertyKey","disallowedFilterParameters","disallowedParameters","delete","size","validateBoolean","validateColor","validateEnum","validateFilter","validateNonExpressionFilter","filter_operator","geometry_type","validateProperty","layerSpec","transitionMatch","tokenMatch","validatePaintProperty","validateLayoutProperty","validateLayer","otherLayer","sourceType","lineMetrics","validateString","promoteId","validatePromoteId","validateSource","source_geojson","cluster","clusterProperties","mapExpr","reduceExpr","source_video","source_image","getSourceTypeValues","memo","validateLight","lightSpec","rootType","validateTerrain","terrainSpec","validateFog","fogSpec","validateFormatted","validateImage","validateProjection","projectionSpec","VALIDATORS","valid","validateStyle","latestStyleSpec","validateGlyphsURL","sortErrors","o","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","trace","yy","symbols_","terminals_","productions_","performAction","anonymous","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","first_line","defineProperty","enumerable","table","defaultActions","parseError","recoverable","stack","tstack","vstack","lstack","recovering","TERROR","EOF","arguments","lexer","sharedState","setInput","yylloc","yyloc","ranges","getPrototypeOf","lex","token","symbol","state","action","yyval","newState","errStr","showPosition","loc","last_line","first_column","last_column","range","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","lines","unput","oldLines","more","reject","backtrack_lexer","less","pastInput","past","upcomingInput","next","pre","test_match","indexed_rule","backup","matches","tempMatch","rules","_currentRules","flex","begin","condition","popState","topState","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","Parser","readStyle","Buffer","jsonlint","v8","validateStyleMin","SUPPORTED_SPEC_VERSION","MAX_SOURCES_IN_STYLE","isValid","regex","getSourceCount","getAllowedKeyErrors","allowed","acceptedSourceTypes","getSourceErrors","sourceKeys","sourceUrlPattern","getSourcesErrors","count","sourceErrors","getRootErrors","specKeys","optionalRootProperties","allowedKeyErrors","glyphUrlPattern","spriteUrlPattern","visibilityPattern","visibility","protected","validateMapboxApiSupported","styleFunction","visit"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;AAAA;AAAA;AAAA;AAAA,MAAMA,YAAA,GAAe,2BAArB,CAJA;AAMe,SAASC,SAAT,CAAmBC,SAAnB,EAA8BC,OAAA,GAAU,EAAxC,EAA4C;AAAA,IACzD,MAAMC,MAAA,GAASC,IAAA,CAAKJ,SAAL,CACb,CAAC,CAAD,CADa,EAEbK,SAFa,EAGbH,OAAA,CAAQC,MAAR,KAAmBE,SAAnB,GAA+B,CAA/B,GAAmCH,OAAA,CAAQC,MAH9B,CAAA,CAIbG,KAJa,CAIP,CAJO,EAIJ,CAAC,CAJG,CAAf,CADyD;AAAA,IAOzD,MAAMC,SAAA,GACJJ,MAAA,KAAW,EAAX,GACIK,QADJ,GAEIN,OAAA,CAAQK,SAAR,KAAsBF,SAAtB,GACA,EADA,GAEAH,OAAA,CAAQK,SALd,CAPyD;AAAA,IAczD,IAAI,CAAEE,QAAF,CAAA,GAAeP,OAAnB,CAdyD;AAAA,IAgBzD,OAAQ,SAASQ,UAAT,CAAoBC,GAApB,EAAyBC,aAAzB,EAAwCC,QAAxC,EAAkD;AAAA,QACxD,IAAIF,GAAA,IAAO,OAAOA,GAAA,CAAIG,MAAX,KAAsB,UAAjC,EAA6C;AAAA,YAC3CH,GAAA,GAAMA,GAAA,CAAIG,MAAJ,EAAN,CAD2C;AAAA,SADW;AAAA,QAKxD,MAAMC,MAAA,GAASX,IAAA,CAAKJ,SAAL,CAAeW,GAAf,EAAoBF,QAApB,CAAf,CALwD;AAAA,QAOxD,IAAIM,MAAA,KAAWV,SAAf,EAA0B;AAAA,YACxB,OAAOU,MAAP,CADwB;AAAA,SAP8B;AAAA,QAWxD,MAAMC,MAAA,GAAST,SAAA,GAAYK,aAAA,CAAcI,MAA1B,GAAmCH,QAAlD,CAXwD;AAAA,QAaxD,IAAIE,MAAA,CAAOC,MAAP,IAAiBA,MAArB,EAA6B;AAAA,YAC3B,MAAMC,UAAA,GAAaF,MAAA,CAAOG,OAAP,CACjBnB,YADiB,EAEjB,CAACoB,KAAD,EAAQC,aAAR,KAA0B;AAAA,gBACxB,OAAOA,aAAA,IAAiB,CAAA,GAAGD,KAAH,EAAS,CAAT,CAAxB,CADwB;AAAA,aAFT,CAAnB,CAD2B;AAAA,YAO3B,IAAIF,UAAA,CAAWD,MAAX,IAAqBA,MAAzB,EAAiC;AAAA,gBAC/B,OAAOC,UAAP,CAD+B;AAAA,aAPN;AAAA,SAb2B;AAAA,QAyBxD,IAAIR,QAAA,IAAY,IAAhB,EAAsB;AAAA,YACpBE,GAAA,GAAMP,IAAA,CAAKiB,KAAL,CAAWN,MAAX,CAAN,CADoB;AAAA,YAEpBN,QAAA,GAAWJ,SAAX,CAFoB;AAAA,SAzBkC;AAAA,QA8BxD,IAAI,OAAOM,GAAP,KAAe,QAAf,IAA2BA,GAAA,KAAQ,IAAvC,EAA6C;AAAA,YAC3C,MAAMW,UAAA,GAAaV,aAAA,GAAgBT,MAAnC,CAD2C;AAAA,YAE3C,MAAMoB,KAAA,GAAQ,EAAd,CAF2C;AAAA,YAG3C,IAAIC,KAAA,GAAQ,CAAZ,CAH2C;AAAA,YAI3C,IAAIC,KAAJ,CAJ2C;AAAA,YAK3C,IAAIC,GAAJ,CAL2C;AAAA,YAO3C,IAAIC,KAAA,CAAMC,OAAN,CAAcjB,GAAd,CAAJ,EAAwB;AAAA,gBACtBc,KAAA,GAAQ,GAAR,CADsB;AAAA,gBAEtBC,GAAA,GAAM,GAAN,CAFsB;AAAA,gBAGtB,MAAM,CAAEV,MAAF,CAAA,GAAaL,GAAnB,CAHsB;AAAA,gBAItB,OAAOa,KAAA,GAAQR,MAAf,EAAuBQ,KAAA,EAAvB,EAAgC;AAAA,oBAC9BD,KAAA,CAAMM,IAAN,CACEnB,UAAA,CAAWC,GAAA,CAAIa,KAAJ,CAAX,EAAuBF,UAAvB,EAAmCE,KAAA,KAAUR,MAAA,GAAS,CAAnB,GAAuB,CAAvB,GAA2B,CAA9D,CACE,IAAA,MAFJ,CAD8B,CAAA;AAAA,iBAJV;AAAA,aAAxB,MAUO;AAAA,gBACLS,KAAA,GAAQ,GAAR,CADK;AAAA,gBAELC,GAAA,GAAM,GAAN,CAFK;AAAA,gBAGL,MAAMI,IAAA,GAAOC,MAAA,CAAOD,IAAP,CAAYnB,GAAZ,CAAb,CAHK;AAAA,gBAIL,MAAM,CAAEK,MAAF,CAAA,GAAac,IAAnB,CAJK;AAAA,gBAKL,OAAON,KAAA,GAAQR,MAAf,EAAuBQ,KAAA,EAAvB,EAAgC;AAAA,oBAC9B,MAAMQ,GAAA,GAAMF,IAAA,CAAKN,KAAL,CAAZ,CAD8B;AAAA,oBAE9B,MAAMS,OAAA,GAAU,CAAA,GAAG7B,IAAA,CAAKJ,SAAL,CAAegC,GAAf,CAAH,EAAuB,EAAvB,CAAhB,CAF8B;AAAA,oBAG9B,MAAME,KAAA,GAAQxB,UAAA,CACZC,GAAA,CAAIqB,GAAJ,CADY,EAEZV,UAFY,EAGZW,OAAA,CAAQjB,MAAR,IAAkBQ,KAAA,KAAUR,MAAA,GAAS,CAAnB,GAAuB,CAAvB,GAA2B,CAA3B,CAHN,CAAd,CAH8B;AAAA,oBAQ9B,IAAIkB,KAAA,KAAU7B,SAAd,EAAyB;AAAA,wBACvBkB,KAAA,CAAMM,IAAN,CAAWI,OAAA,GAAUC,KAArB,CADuB,CAAA;AAAA,qBARK;AAAA,iBAL3B;AAAA,aAjBoC;AAAA,YAoC3C,IAAIX,KAAA,CAAMP,MAAN,GAAe,CAAnB,EAAsB;AAAA,gBACpB,OAAO;AAAA,oBAACS,KAAD;AAAA,oBAAQtB,MAAA,GAASoB,KAAA,CAAMY,IAAN,CAAW,CAAC,GAAD,GAAMb,UAAN,EAAA,CAAX,CAAjB;AAAA,oBAAiDI,GAAjD;AAAA,iBAAsDS,CAAAA,IAAtD,CACL,CAAC,EAAD,GAAKvB,aAAL,EAAA,CADK,CAAP,CADoB;AAAA,aApCqB;AAAA,SA9BW;AAAA,QAyExD,OAAOG,MAAP,CAzEwD;AAAA,KAAnD,CA0EJd,SA1EI,EA0EO,EA1EP,EA0EW,CA1EX,CAAP,CAhByD;AAAA;;ACF3D,SAASmC,UAAT,CAAoBzB,GAApB,EAAyB0B,SAAzB,EAAoC;AAAA,IAChC,MAAMC,MAAA,GAAS,EAAf,CADgC;AAAA,IAEhC,KAAWN,MAAAA,GAAX,IAAkBK,SAAlB,EAA6B;AAAA,QACzB,IAAI1B,GAAA,CAAIqB,GAAJ,CAAA,KAAa3B,SAAjB,EAA4B;AAAA,YACxBiC,MAAA,CAAON,GAAP,CAAA,GAAcrB,GAAA,CAAIqB,GAAJ,CAAd,CADwB;AAAA,SADH;AAAA,KAFG;AAAA,IAOhC,KAAWA,MAAAA,GAAX,IAAkBrB,GAAlB,EAAuB;AAAA,QACnB,IAAI2B,MAAA,CAAON,GAAP,CAAA,KAAgB3B,SAApB,EAA+B;AAAA,YAC3BiC,MAAA,CAAON,GAAP,CAAA,GAAcrB,GAAA,CAAIqB,GAAJ,CAAd,CAD2B;AAAA,SADZ;AAAA,KAPS;AAAA,IAYhC,OAAOM,MAAP,CAZgC;AAAA,CAJpC;AAwCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAASC,MAAT,CAAgBC,KAAhB,EAAuBC,KAAA,GAAQ,CAA/B,EAAkC;AAAA,IAC9BD,KAAA,GAAQJ,UAAA,CAAWI,KAAX,EAAkBH,EAAA,CAAUK,KAA5B,CAAR,CAD8B;AAAA,IAG9B,IAAIF,KAAA,CAAMG,MAAV,EAAkB;AAAA,QACdH,KAAA,CAAMG,MAAN,GAAeH,KAAA,CAAMG,MAAN,CAAaC,GAAb,CAAkBC,KAAD,IAAWT,UAAA,CAAWS,KAAX,EAAkBR,EAAA,CAAUQ,KAA5B,CAA5B,CAAf,CADc;AAAA,KAHY;AAAA,IAO9B,OAAOC,SAAA,CAAgBN,KAAhB,EAAuB,EAACrC,MAAA,EAAQsC,KAAT,EAAvB,CAAP,CAP8B;AAAA;;;;;;;;;;;CCvCjC,CAAC,UAASM,IAAT,EAAe;AAAA;AAGhB,KAAA,IAAIC,WAAA,GAA4CC,OAA9B,IACjB,CAACA,OAAA,CAAQC,QADQ,IACID,OADtB,CAHgB;AAAA,KAKhB,IAAIE,UAAA,GAA0CC,MAA7B,IAChB,CAACA,MAAA,CAAOF,QADQ,IACIE,MADrB,CALgB;KAOhB,IAAIC,UAAA,GAAa,OAAOC,cAAP,IAAiB,QAAjB,IAA6BA,cAA9C,CAPgB;AAAA,KAQhB,IACCD,UAAA,CAAWC,MAAX,KAAsBD,UAAtB,IACAA,UAAA,CAAWE,MAAX,KAAsBF,UADtB,IAEAA,UAAA,CAAWG,IAAX,KAAoBH,UAHrB,EAIE;SACDN,IAAA,GAAOM,UAAP,CADC;MAZc;AAAA;AAqBhB;AAAA;AAAA;AAAA;AAAA,KAAA,IAAII,QAAJ;AAAA;SAGAC,MAAA,GAAS,UAHT;AAAA;AAMA;SAAAC,IAAA,GAAO,EANP,EAOAC,IAAA,GAAO,CAPP,EAQAC,IAAA,GAAO,EARP,EASAC,IAAA,GAAO,EATP,EAUAC,IAAA,GAAO,GAVP,EAWAC,WAAA,GAAc,EAXd,EAYAC,QAAA,GAAW,GAZX;AAAA;SAaAC,SAAA,GAAY,GAbZ;AAAA;AAgBA;AAAA,SAAAC,aAAA,GAAgB,OAhBhB,EAiBAC,aAAA,GAAgB,cAjBhB;AAAA;SAkBAC,eAAA,GAAkB,2BAlBlB;AAAA;AAqBA;AAAA,SAAAC,MAAA,GAAS;aACR,YAAY,iDADJ;aAER,aAAa,gDAFL;aAGR,iBAAiB,eAHT;UArBT;AAAA;AA4BA,SAAAC,aAAA,GAAgBZ,IAAA,GAAOC,IA5BvB,EA6BAY,KAAA,GAAQC,IAAA,CAAKD,KA7Bb,EA8BAE,kBAAA,GAAqBC,MAAA,CAAOC,YA9B5B;AAAA;AAiCA,SAAA5C,GAjCA,CArBgB;AAAA;AAgEhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAS6C,SAAAA,KAAT,CAAeC,IAAf,EAAqB;SACpB,MAAMC,UAAA,CAAWT,MAAA,CAAOQ,IAAP,CAAX,CAAN,CADoB;MAhEL;AAAA;AA4EhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAA,SAASlC,GAAT,CAAaoC,KAAb,EAAoBC,EAApB,EAAwB;AAAA,SACvB,IAAIjE,MAAA,GAASgE,KAAA,CAAMhE,MAAnB,CADuB;AAAA,SAEvB,IAAIsB,MAAA,GAAS,EAAb,CAFuB;SAGvB,OAAOtB,MAAA,EAAP,EAAiB;AAAA,aAChBsB,MAAA,CAAOtB,MAAP,CAAiBiE,GAAAA,EAAA,CAAGD,KAAA,CAAMhE,MAAN,CAAH,CAAjB,CADgB;UAHM;SAMvB,OAAOsB,MAAP,CANuB;MA5ER;AAAA;AA+FhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAA,SAAS4C,SAAT,CAAmBnE,MAAnB,EAA2BkE,EAA3B,EAA+B;SAC9B,IAAIE,KAAA,GAAQpE,MAAA,CAAOqE,KAAP,CAAa,GAAb,CAAZ,CAD8B;AAAA,SAE9B,IAAI9C,MAAA,GAAS,EAAb,CAF8B;AAAA,SAG9B,IAAI6C,KAAA,CAAMnE,MAAN,GAAe,CAAnB,EAAsB;AAAA;AAGrB;aAAAsB,MAAA,GAAS6C,KAAA,CAAM,CAAN,CAAA,GAAW,GAApB,CAHqB;AAAA,aAIrBpE,MAAA,GAASoE,KAAA,CAAM,CAAN,CAAT,CAJqB;UAHQ;AAAA;SAU9BpE,MAAA,GAASA,MAAA,CAAOG,OAAP,CAAemD,eAAf,EAAgC,GAAhC,CAAT,CAV8B;SAW9B,IAAIgB,MAAA,GAAStE,MAAA,CAAOqE,KAAP,CAAa,GAAb,CAAb,CAX8B;AAAA,SAY9B,IAAIE,OAAA,GAAU1C,GAAA,CAAIyC,MAAJ,EAAYJ,EAAZ,CAAgB9C,CAAAA,IAAhB,CAAqB,GAArB,CAAd,CAZ8B;AAAA,SAa9B,OAAOG,MAAA,GAASgD,OAAhB,CAb8B;MA/Ff;AAAA;AA4HhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAASC,SAAAA,UAAT,CAAoBxE,MAApB,EAA4B;AAAA,SAC3B,IAAIyE,MAAA,GAAS,EAAb,EACIC,OAAA,GAAU,CADd,EAEIzE,MAAA,GAASD,MAAA,CAAOC,MAFpB,EAGIkB,KAHJ,EAIIwD,KAJJ,CAD2B;AAAA,SAM3B,OAAOD,OAAA,GAAUzE,MAAjB,EAAyB;aACxBkB,KAAA,GAAQnB,MAAA,CAAO4E,UAAP,CAAkBF,OAAA,EAAlB,CAAR,CADwB;AAAA,aAExB,IAAIvD,KAAA,IAAS,KAAT,IAAmBA,KAAA,IAAS,KAA5B,IAAsCuD,OAAA,GAAUzE,MAApD,EAA4D;AAAA;iBAE3D0E,KAAA,GAAQ3E,MAAA,CAAO4E,UAAP,CAAkBF,OAAA,EAAlB,CAAR,CAF2D;AAAA,iBAG3D,IAAK,CAAAC,KAAA,GAAQ,KAAR,KAAmB,KAAxB,EAAgC;AAAA;AAC/B,qBAAAF,MAAA,CAAO3D,IAAP,CAAa,CAAC,CAAAK,KAAA,GAAQ,IAAR,KAAkB,EAAnB,KAA0BwD,KAAA,GAAQ,IAAR,CAA3B,GAA4C,KAAxD,CAD+B,CAAA;AAAA,kBAAhC,MAEO;AAAA;AAGN;AAAA,qBAAAF,MAAA,CAAO3D,IAAP,CAAYK,KAAZ,CAHM,CAAA;qBAINuD,OAAA,EAJM,CAAA;kBALoD;AAAA,cAA5D,MAWO;AAAA,iBACND,MAAA,CAAO3D,IAAP,CAAYK,KAAZ,CADM,CAAA;cAbiB;UANE;SAuB3B,OAAOsD,MAAP,CAvB2B;MA5HZ;AAAA;AA8JhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAASI,SAAAA,UAAT,CAAoBZ,KAApB,EAA2B;AAAA,SAC1B,OAAOpC,GAAA,CAAIoC,KAAJ,EAAW,UAAS9C,KAAT,EAAgB;AAAA,aACjC,IAAIsD,MAAA,GAAS,EAAb,CADiC;AAAA,aAEjC,IAAItD,KAAA,GAAQ,KAAZ,EAAoB;iBACnBA,KAAA,IAAS,KAAT,CADmB;AAAA,iBAEnBsD,MAAA,IAAUd,kBAAA,CAAmBxC,KAAA,KAAU,EAAV,GAAe,IAAf,GAAuB,KAA1C,CAAV,CAFmB;AAAA,iBAGnBA,KAAA,GAAQ,KAAA,GAASA,KAAA,GAAQ,IAAzB,CAHmB;cAFa;AAAA,aAOjCsD,MAAA,IAAUd,kBAAA,CAAmBxC,KAAnB,CAAV,CAPiC;aAQjC,OAAOsD,MAAP,CARiC;AAAA,UAA3B,CASJrD,CAAAA,IATI,CASC,EATD,CAAP,CAD0B;MA9JX;AAAA;AAoLhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAS0D,SAAAA,YAAT,CAAsBC,SAAtB,EAAiC;AAAA,SAChC,IAAIA,SAAA,GAAY,EAAZ,GAAiB,EAArB,EAAyB;AAAA,aACxB,OAAOA,SAAA,GAAY,EAAnB,CADwB;UADO;AAAA,SAIhC,IAAIA,SAAA,GAAY,EAAZ,GAAiB,EAArB,EAAyB;AAAA,aACxB,OAAOA,SAAA,GAAY,EAAnB,CADwB;UAJO;AAAA,SAOhC,IAAIA,SAAA,GAAY,EAAZ,GAAiB,EAArB,EAAyB;AAAA,aACxB,OAAOA,SAAA,GAAY,EAAnB,CADwB;UAPO;SAUhC,OAAOnC,IAAP,CAVgC;MApLjB;AAAA;AA4MhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAA,SAASoC,YAAT,CAAsBC,KAAtB,EAA6BC,IAA7B,EAAmC;AAAA;AAGlC;AAAA,SAAOD,OAAAA,KAAA,GAAQ,EAAR,GAAa,MAAMA,KAAA,GAAQ,EAAR,CAAnB,IAAmC,CAAAC,IAAA,IAAQ,CAAR,KAAc,CAAf,CAAzC,CAHkC;MA5MnB;AAAA;AAuNhB;AAAA;AAAA;AAAA;KAAA,SAASC,KAAT,CAAeC,KAAf,EAAsBC,SAAtB,EAAiCC,SAAjC,EAA4C;AAAA,SAC3C,IAAIC,CAAA,GAAI,CAAR,CAD2C;AAAA,SAE3CH,KAAA,GAAQE,SAAA,GAAY7B,KAAA,CAAM2B,KAAA,GAAQpC,IAAd,CAAZ,GAAkCoC,KAAA,IAAS,CAAnD,CAF2C;SAG3CA,KAAA,IAAS3B,KAAA,CAAM2B,KAAA,GAAQC,SAAd,CAAT,CAH2C;AAAA,SAI3C,OAA8BD,KAAA,GAAQ5B,aAAA,GAAgBV,IAAhB,IAAwB,CAA9D,EAAiEyC,CAAA,IAAK3C,IAAtE,EAA4E;aAC3EwC,KAAA,GAAQ3B,KAAA,CAAM2B,KAAA,GAAQ5B,aAAd,CAAR,CAD2E;UAJjC;AAAA,SAO3C,OAAOC,KAAA,CAAM8B,CAAA,GAAK,CAAA/B,aAAA,GAAgB,CAAhB,IAAqB4B,KAAtB,IAA+BA,KAAA,GAAQrC,IAAR,CAAzC,CAAP,CAP2C;MAvN5B;AAAA;AAwOhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAASyC,SAAAA,MAAT,CAAgBC,KAAhB,EAAuB;AAAA;AAEtB,SAAA,IAAIhB,MAAA,GAAS,EAAb,EACIiB,WAAA,GAAcD,KAAA,CAAMxF,MADxB,EAEI0F,GAFJ,EAGIC,CAAA,GAAI,CAHR,EAIIC,CAAA,GAAI3C,QAJR,EAKI4C,IAAA,GAAO7C,WALX,EAMI8C,KANJ,EAOIC,CAPJ,EAQIvF,KARJ,EASIwF,IATJ,EAUIC,CAVJ,EAWIX,CAXJ,EAYIN,KAZJ,EAaIkB,CAbJ;AAAA;AAeI,aAAAC,UAfJ,CAFsB;AAAA;AAuBtB;AAAA;SAAAL,KAAA,GAAQN,KAAA,CAAMY,WAAN,CAAkBlD,SAAlB,CAAR,CAvBsB;AAAA,SAwBtB,IAAI4C,KAAA,GAAQ,CAAZ,EAAe;aACdA,KAAA,GAAQ,CAAR,CADc;UAxBO;SA4BtB,KAAKC,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAID,KAAhB,EAAuB,EAAEC,CAAzB,EAA4B;AAAA;aAE3B,IAAIP,KAAA,CAAMb,UAAN,CAAiBoB,CAAjB,CAAA,IAAuB,GAA3B,EAAiC;AAAA,iBAChClC,KAAA,CAAM,WAAN,CADgC,CAAA;cAFN;aAK3BW,MAAA,CAAO3D,IAAP,CAAY2E,KAAA,CAAMb,UAAN,CAAiBoB,CAAjB,CAAZ,CAL2B,CAAA;UA5BN;AAAA;AAuCtB;AAAA,SAAA,KAAKvF,KAAA,GAAQsF,KAAA,GAAQ,CAAR,GAAYA,KAAA,GAAQ,CAApB,GAAwB,CAArC,EAAwCtF,KAAA,GAAQiF,WAAhD,GAAwF;AAAA;AAOvF;AAAA;AAAA;AAAA;AAAA,aAAA,KAAKO,IAAA,GAAOL,CAAP,EAAUM,CAAA,GAAI,CAAd,EAAiBX,CAAA,GAAI3C,IAA1B,GAAoD2C,CAAA,IAAK3C,IAAzD,EAA+D;AAAA,iBAE9D,IAAInC,KAAA,IAASiF,WAAb,EAA0B;AAAA,qBACzB5B,KAAA,CAAM,eAAN,CADyB,CAAA;kBAFoC;AAAA,iBAM9DmB,KAAA,GAAQH,YAAA,CAAaW,KAAA,CAAMb,UAAN,CAAiBnE,KAAA,EAAjB,CAAb,CAAR,CAN8D;AAAA,iBAQ9D,IAAIwE,KAAA,IAASrC,IAAT,IAAiBqC,KAAA,GAAQxB,KAAA,CAAO,CAAAd,MAAA,GAASiD,CAAT,IAAcM,CAArB,CAA7B,EAAsD;AAAA,qBACrDpC,KAAA,CAAM,UAAN,CADqD,CAAA;kBARQ;AAAA,iBAY9D8B,CAAA,IAAKX,KAAA,GAAQiB,CAAb,CAZ8D;AAAA,iBAa9DC,CAAA,GAAIZ,CAAA,IAAKO,IAAL,GAAYjD,IAAZ,GAAoB0C,CAAA,IAAKO,IAAA,GAAOhD,IAAZ,GAAmBA,IAAnB,GAA0ByC,CAAA,GAAIO,IAAtD,CAb8D;AAAA,iBAe9D,IAAIb,KAAA,GAAQkB,CAAZ,EAAe;AAAA,qBACd,MADc;kBAf+C;AAAA,iBAmB9DC,UAAA,GAAaxD,IAAA,GAAOuD,CAApB,CAnB8D;iBAoB9D,IAAID,CAAA,GAAIzC,KAAA,CAAMd,MAAA,GAASyD,UAAf,CAAR,EAAoC;AAAA,qBACnCtC,KAAA,CAAM,UAAN,CADmC,CAAA;kBApB0B;iBAwB9DoC,CAAA,IAAKE,UAAL,CAxB8D;cAPwB;AAAA,aAmCvFT,GAAA,GAAMlB,MAAA,CAAOxE,MAAP,GAAgB,CAAtB,CAnCuF;AAAA,aAoCvF6F,IAAA,GAAOX,KAAA,CAAMS,CAAA,GAAIK,IAAV,EAAgBN,GAAhB,EAAqBM,IAAA,IAAQ,CAA7B,CAAP,CApCuF;AAAA;AAwCvF;aAAIxC,IAAAA,KAAA,CAAMmC,CAAA,GAAID,GAAV,CAAiBhD,GAAAA,MAAA,GAASkD,CAA9B,EAAiC;AAAA,iBAChC/B,KAAA,CAAM,UAAN,CADgC,CAAA;cAxCsD;aA4CvF+B,CAAA,IAAKpC,KAAA,CAAMmC,CAAA,GAAID,GAAV,CAAL,CA5CuF;aA6CvFC,CAAA,IAAKD,GAAL,CA7CuF;AAAA;aAgDvFlB,MAAA,CAAO6B,MAAP,CAAcV,CAAA,EAAd,EAAmB,CAAnB,EAAsBC,CAAtB,CAhDuF,CAAA;UAvClE;AAAA,SA2FtB,OAAOhB,UAAA,CAAWJ,MAAX,CAAP,CA3FsB;MAxOP;AAAA;AA6UhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAS8B,SAAAA,MAAT,CAAgBd,KAAhB,EAAuB;SACtB,IAAII,CAAJ,EACIT,KADJ,EAEIoB,cAFJ,EAGIC,WAHJ,EAIIX,IAJJ,EAKIE,CALJ,EAMIU,CANJ,EAOIC,CAPJ,EAQIpB,CARJ,EASIY,CATJ,EAUIS,YAVJ,EAWInC,MAAA,GAAS,EAXb;AAAA;AAaI,aAAAiB,WAbJ;AAAA;AAeI,aAAAmB,qBAfJ,EAgBIT,UAhBJ,EAiBIU,OAjBJ,CADsB;AAAA;AAqBtB,SAAArB,KAAA,GAAQjB,UAAA,CAAWiB,KAAX,CAAR,CArBsB;AAAA;AAwBtB,SAAAC,WAAA,GAAcD,KAAA,CAAMxF,MAApB,CAxBsB;AAAA;SA2BtB4F,CAAA,GAAI3C,QAAJ,CA3BsB;SA4BtBkC,KAAA,GAAQ,CAAR,CA5BsB;SA6BtBU,IAAA,GAAO7C,WAAP,CA7BsB;AAAA;SAgCjB+C,KAAAA,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIN,WAAhB,EAA6B,EAAEM,CAA/B,EAAkC;AAAA,aACjCY,YAAA,GAAenB,KAAA,CAAMO,CAAN,CAAf,CADiC;AAAA,aAEjC,IAAIY,YAAA,GAAe,GAAnB,EAAyB;iBACxBnC,MAAA,CAAO3D,IAAP,CAAY6C,kBAAA,CAAmBiD,YAAnB,CAAZ,CADwB,CAAA;cAFQ;UAhCZ;AAAA,SAuCtBJ,cAAA,GAAiBC,WAAA,GAAchC,MAAA,CAAOxE,MAAtC,CAvCsB;AAAA;AA6CtB;AAAA;SAAA,IAAIwG,WAAJ,EAAiB;AAAA,aAChBhC,MAAA,CAAO3D,IAAP,CAAYqC,SAAZ,CADgB,CAAA;UA7CK;AAAA;AAkDtB,SAAOqD,OAAAA,cAAA,GAAiBd,WAAxB,EAAqC;AAAA;AAIpC;AAAA,aAAA,KAAKgB,CAAA,GAAI/D,MAAJ,EAAYqD,CAAA,GAAI,CAArB,EAAwBA,CAAA,GAAIN,WAA5B,EAAyC,EAAEM,CAA3C,EAA8C;AAAA,iBAC7CY,YAAA,GAAenB,KAAA,CAAMO,CAAN,CAAf,CAD6C;iBAE7C,IAAIY,YAAA,IAAgBf,CAAhB,IAAqBe,YAAA,GAAeF,CAAxC,EAA2C;qBAC1CA,CAAA,GAAIE,YAAJ,CAD0C;kBAFE;cAJV;AAAA;AAapC;AAAA,aAAAC,qBAAA,GAAwBL,cAAA,GAAiB,CAAzC,CAboC;AAAA,aAcpC,IAAIE,CAAA,GAAIb,CAAJ,GAAQpC,KAAA,CAAO,CAAAd,MAAA,GAASyC,KAAT,IAAkByB,qBAAzB,CAAZ,EAA6D;AAAA,iBAC5D/C,KAAA,CAAM,UAAN,CAD4D,CAAA;cAdzB;aAkBpCsB,KAAA,IAAU,CAAAsB,CAAA,GAAIb,CAAJ,IAASgB,qBAAnB,CAlBoC;aAmBpChB,CAAA,GAAIa,CAAJ,CAnBoC;aAqBpC,KAAKV,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIN,WAAhB,EAA6B,EAAEM,CAA/B,EAAkC;AAAA,iBACjCY,YAAA,GAAenB,KAAA,CAAMO,CAAN,CAAf,CADiC;iBAGjC,IAAIY,YAAA,GAAef,CAAf,IAAoB,EAAET,KAAF,GAAUzC,MAAlC,EAA0C;AAAA,qBACzCmB,KAAA,CAAM,UAAN,CADyC,CAAA;kBAHT;AAAA,iBAOjC,IAAI8C,YAAA,IAAgBf,CAApB,EAAuB;AAAA;AAEtB,qBAAKc,KAAAA,CAAA,GAAIvB,KAAJ,EAAWG,CAAA,GAAI3C,IAApB,GAA8C2C,CAAA,IAAK3C,IAAnD,EAAyD;AAAA,yBACxDuD,CAAA,GAAIZ,CAAA,IAAKO,IAAL,GAAYjD,IAAZ,GAAoB0C,CAAA,IAAKO,IAAA,GAAOhD,IAAZ,GAAmBA,IAAnB,GAA0ByC,CAAA,GAAIO,IAAtD,CADwD;AAAA,yBAExD,IAAIa,CAAA,GAAIR,CAAR,EAAW;AAAA,6BACV,MADU;0BAF6C;AAAA,yBAKxDW,OAAA,GAAUH,CAAA,GAAIR,CAAd,CALwD;AAAA,yBAMxDC,UAAA,GAAaxD,IAAA,GAAOuD,CAApB,CANwD;AAAA,yBAOxD1B,MAAA,CAAO3D,IAAP,CACC6C,kBAAA,CAAmBqB,YAAA,CAAamB,CAAA,GAAIW,OAAA,GAAUV,UAA3B,EAAuC,CAAvC,CAAnB,CADD,CAPwD,CAAA;yBAUxDO,CAAA,GAAIlD,KAAA,CAAMqD,OAAA,GAAUV,UAAhB,CAAJ,CAVwD;sBAFnC;AAAA,qBAetB3B,MAAA,CAAO3D,IAAP,CAAY6C,kBAAA,CAAmBqB,YAAA,CAAa2B,CAAb,EAAgB,CAAhB,CAAnB,CAAZ,CAfsB,CAAA;AAAA,qBAgBtBb,IAAA,GAAOX,KAAA,CAAMC,KAAN,EAAayB,qBAAb,EAAoCL,cAAA,IAAkBC,WAAtD,CAAP,CAhBsB;qBAiBtBrB,KAAA,GAAQ,CAAR,CAjBsB;qBAkBtB,EAAEoB,cAAF,CAlBsB;kBAPU;cArBE;aAkDpC,EAAEpB,KAAF,CAlDoC;aAmDpC,EAAES,CAAF,CAnDoC;UAlDf;AAAA,SAwGtB,OAAOpB,MAAA,CAAOrD,IAAP,CAAY,EAAZ,CAAP,CAxGsB;MA7UP;AAAA;AAmchB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAS2F,SAAAA,SAAT,CAAmBtB,KAAnB,EAA0B;AAAA,SACzB,OAAOtB,SAAA,CAAUsB,KAAV,EAAiB,UAASzF,MAAT,EAAiB;aACxC,OAAOoD,aAAA,CAAc4D,IAAd,CAAmBhH,MAAnB,CAAA,GACJwF,MAAA,CAAOxF,MAAA,CAAOT,KAAP,CAAa,CAAb,CAAgB0H,CAAAA,WAAhB,EAAP,CADI,GAEJjH,MAFH,CADwC;AAAA,UAAlC,CAAP,CADyB;MAncV;AAAA;AAsdhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAASkH,SAAAA,OAAT,CAAiBzB,KAAjB,EAAwB;AAAA,SACvB,OAAOtB,SAAA,CAAUsB,KAAV,EAAiB,UAASzF,MAAT,EAAiB;AAAA,aACxC,OAAOqD,aAAA,CAAc2D,IAAd,CAAmBhH,MAAnB,CAAA,GACJ,MAASuG,GAAAA,MAAA,CAAOvG,MAAP,CADL,GAEJA,MAFH,CADwC;AAAA,UAAlC,CAAP,CADuB;MAtdR;AAAA;AAiehB;AAAA,KAAA0C,QAAA,GAAW;AAAA;AAMV;AAAA;AAAA;AAAA;SAAA,SAAA,EAAW,OAND;AAAA;AAcV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAQ,MAAA,EAAA;aACP,UAAU8B,UADH;aAEP,UAAUK,UAFH;UAdE;SAkBV,UAAUW,MAlBA;SAmBV,UAAUe,MAnBA;SAoBV,WAAWW,OApBD;SAqBV,aAAaH,SArBH;AAAA,MAAX,CAjegB;AAAA;AA4fhB;AAAA;AAAA,KAQO,IAAI9E,WAAA,IAAeG,UAAnB,EAA+B;AAAA,SACrC,IAAIC,MAAA,CAAOH,OAAP,IAAkBD,WAAtB,EAAmC;AAAA;AAClC,aAAAG,UAAA,CAAWF,OAAX,GAAqBQ,QAArB,CADkC;AAAA,UAAnC,MAEO;AAAA;AACN,aAAKzB,KAAAA,GAAL,IAAYyB,QAAZ,EAAsB;AAAA,iBACrBA,QAAA,CAASyE,cAAT,CAAwBlG,GAAxB,MAAiCgB,WAAA,CAAYhB,GAAZ,IAAmByB,QAAA,CAASzB,GAAT,CAAnB,CAAjC,CADqB;cADhB;UAH8B;AAAA,MAA/B,MAQA;AAAA;AACN,SAAAe,IAAA,CAAKU,QAAL,GAAgBA,QAAhB,CADM;MA5gBS;EAAf,CAghBA0E,cAhhBA,CAAD,EAAA;;;ACCD/E,IAAAA,MAAA,GAAiB;AAAA,IACfgF,QAAA,EAAU,UAASC,GAAT,EAAc;AAAA,QACtB,OAAO,OAAOA,GAAP,KAAgB,QAAvB,CADsB;AAAA,KADT;AAAA,IAIfC,QAAA,EAAU,UAASD,GAAT,EAAc;AAAA,QACtB,OAAO,OAAOA,GAAP,KAAgB,QAAhB,IAA4BA,GAAA,KAAQ,IAA3C,CADsB;AAAA,KAJT;AAAA,IAOfE,MAAA,EAAQ,UAASF,GAAT,EAAc;AAAA,QACpB,OAAOA,GAAA,KAAQ,IAAf,CADoB;AAAA,KAPP;AAAA,IAUfG,iBAAA,EAAmB,UAASH,GAAT,EAAc;AAAA,QAC/B,OAAOA,GAAA,IAAO,IAAd,CAD+B;AAAA,KAVlB;AAAA,CAAjB;;;;ACwBA;AAAA;AAAA;AAAA,SAASH,cAAT,CAAwBvH,GAAxB,EAA6B8H,IAA7B,EAAmC;AAAA,IACjC,OAAO1G,MAAA,CAAO2G,SAAP,CAAiBR,cAAjB,CAAgCS,IAAhC,CAAqChI,GAArC,EAA0C8H,IAA1C,CAAP,CADiC;AAAA,CA1BnC;IA8BArF,MAAA,GAAiB,UAASwF,EAAT,EAAaC,GAAb,EAAkBC,EAAlB,EAAsB5I,OAAtB,EAA+B;AAAA,IAC9C2I,GAAA,GAAMA,GAAA,IAAO,GAAb,CAD8C;AAAA,IAE9CC,EAAA,GAAKA,EAAA,IAAM,GAAX,CAF8C;AAAA,IAG9C,IAAInI,GAAA,GAAM,EAAV,CAH8C;AAAA,IAK9C,IAAI,OAAOiI,EAAP,KAAc,QAAd,IAA0BA,EAAA,CAAG5H,MAAH,KAAc,CAA5C,EAA+C;AAAA,QAC7C,OAAOL,GAAP,CAD6C;AAAA,KALD;AAAA,IAS9C,IAAIoI,MAAA,GAAS,KAAb,CAT8C;AAAA,IAU9CH,EAAA,GAAKA,EAAA,CAAGxD,KAAH,CAASyD,GAAT,CAAL,CAV8C;AAAA,IAY9C,IAAIG,OAAA,GAAU,IAAd,CAZ8C;AAAA,IAa9C,IAAI9I,OAAA,IAAW,OAAOA,OAAA,CAAQ8I,OAAf,KAA2B,QAA1C,EAAoD;AAAA,QAClDA,OAAA,GAAU9I,OAAA,CAAQ8I,OAAlB,CADkD;AAAA,KAbN;AAAA,IAiB9C,IAAIC,GAAA,GAAML,EAAA,CAAG5H,MAAb,CAjB8C;AAAA;AAmB9C,IAAA,IAAIgI,OAAA,GAAU,CAAV,IAAeC,GAAA,GAAMD,OAAzB,EAAkC;AAAA,QAChCC,GAAA,GAAMD,OAAN,CADgC;AAAA,KAnBY;AAAA,IAuB9C,KAAK,IAAIrC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIsC,GAApB,EAAyB,EAAEtC,CAA3B,EAA8B;AAAA,QAC5B,IAAIuC,CAAA,GAAIN,EAAA,CAAGjC,CAAH,CAAMzF,CAAAA,OAAN,CAAc6H,MAAd,EAAsB,KAAtB,CAAR,EACII,GAAA,GAAMD,CAAA,CAAEE,OAAF,CAAUN,EAAV,CADV,EAEIO,IAFJ,EAEUC,IAFV,EAEgBhD,CAFhB,EAEmBiD,CAFnB,CAD4B;AAAA,QAK5B,IAAIJ,GAAA,IAAO,CAAX,EAAc;AAAA,YACZE,IAAA,GAAOH,CAAA,CAAEM,MAAF,CAAS,CAAT,EAAYL,GAAZ,CAAP,CADY;AAAA,YAEZG,IAAA,GAAOJ,CAAA,CAAEM,MAAF,CAASL,GAAA,GAAM,CAAf,CAAP,CAFY;AAAA,SAAd,MAGO;AAAA,YACLE,IAAA,GAAOH,CAAP,CADK;AAAA,YAELI,IAAA,GAAO,EAAP,CAFK;AAAA,SARqB;AAAA,QAa5BhD,CAAA,GAAImD,kBAAA,CAAmBJ,IAAnB,CAAJ,CAb4B;AAAA,QAc5BE,CAAA,GAAIE,kBAAA,CAAmBH,IAAnB,CAAJ,CAd4B;AAAA,QAgB5B,IAAI,CAACpB,cAAA,CAAevH,GAAf,EAAoB2F,CAApB,CAAL,EAA6B;AAAA,YAC3B3F,GAAA,CAAI2F,CAAJ,CAAA,GAASiD,CAAT,CAD2B;AAAA,SAA7B,MAEO,IAAI5H,KAAA,CAAMC,OAAN,CAAcjB,GAAA,CAAI2F,CAAJ,CAAd,CAAJ,EAA2B;AAAA,YAChC3F,GAAA,CAAI2F,CAAJ,EAAOzE,IAAP,CAAY0H,CAAZ,CADgC,CAAA;AAAA,SAA3B,MAEA;AAAA,YACL5I,GAAA,CAAI2F,CAAJ,CAAS,GAAA;AAAA,gBAAC3F,GAAA,CAAI2F,CAAJ,CAAD;AAAA,gBAASiD,CAAT;AAAA,aAAT,CADK;AAAA,SApBqB;AAAA,KAvBgB;AAAA,IAgD9C,OAAO5I,GAAP,CAhD8C;AAAA,CAAhD;;ACPA,IAAI+I,kBAAA,GAAqB,UAASH,CAAT,EAAY;AAAA,IACnC,QAAQ,OAAOA,CAAf;AAAA,IACE,KAAK,QAAL;AAAA,QACE,OAAOA,CAAP,CAFJ;AAAA,IAIE,KAAK,SAAL;AAAA,QACE,OAAOA,CAAA,GAAI,MAAJ,GAAa,OAApB,CALJ;AAAA,IAOE,KAAK,QAAL;AAAA,QACE,OAAOI,QAAA,CAASJ,CAAT,IAAcA,CAAd,GAAkB,EAAzB,CARJ;AAAA,IAUE;AAAA,QACE,OAAO,EAAP,CAXJ;AAAA,KADmC;AAAA,CAArC,CAvBA;IAuCAnG,MAAA,GAAiB,UAASzC,GAAT,EAAckI,GAAd,EAAmBC,EAAnB,EAAuBc,IAAvB,EAA6B;AAAA,IAC5Cf,GAAA,GAAMA,GAAA,IAAO,GAAb,CAD4C;AAAA,IAE5CC,EAAA,GAAKA,EAAA,IAAM,GAAX,CAF4C;AAAA,IAG5C,IAAInI,GAAA,KAAQ,IAAZ,EAAkB;AAAA,QAChBA,GAAA,GAAMN,SAAN,CADgB;AAAA,KAH0B;AAAA,IAO5C,IAAI,OAAOM,GAAP,KAAe,QAAnB,EAA6B;AAAA,QAC3B,OAAOoB,MAAA,CAAOD,IAAP,CAAYnB,GAAZ,CAAA,CAAiBiC,GAAjB,CAAqB,UAAS0D,CAAT,EAAY;AAAA,YACtC,IAAIuD,EAAA,GAAKC,kBAAA,CAAmBJ,kBAAA,CAAmBpD,CAAnB,CAAnB,CAA4CwC,GAAAA,EAArD,CADsC;AAAA,YAEtC,IAAInH,KAAA,CAAMC,OAAN,CAAcjB,GAAA,CAAI2F,CAAJ,CAAd,CAAJ,EAA2B;AAAA,gBACzB,OAAO3F,GAAA,CAAI2F,CAAJ,EAAO1D,GAAP,CAAW,UAAS2G,CAAT,EAAY;AAAA,oBAC5B,OAAOM,EAAA,GAAKC,kBAAA,CAAmBJ,kBAAA,CAAmBH,CAAnB,CAAnB,CAAZ,CAD4B;AAAA,iBAAvB,CAEJpH,CAAAA,IAFI,CAEC0G,GAFD,CAAP,CADyB;AAAA,aAA3B,MAIO;AAAA,gBACL,OAAOgB,EAAA,GAAKC,kBAAA,CAAmBJ,kBAAA,CAAmB/I,GAAA,CAAI2F,CAAJ,CAAnB,CAAnB,CAAZ,CADK;AAAA,aAN+B;AAAA,SAAjC,CASJnE,CAAAA,IATI,CASC0G,GATD,CAAP,CAD2B;AAAA,KAPe;AAAA,IAqB5C,IAAI,CAACe,IAAL;AAAA,QAAW,OAAO,EAAP,CArBiC;AAAA,IAsB5C,OAAOE,kBAAA,CAAmBJ,kBAAA,CAAmBE,IAAnB,CAAnB,CAAA,GAA+Cd,EAA/C,GACAgB,kBAAA,CAAmBJ,kBAAA,CAAmB/I,GAAnB,CAAnB,CADP,CAtB4C;AAAA,CAA9C;;ACrCAsC,aAAAA,CAAAA,MAAA,GAAiBA,aAAAA,CAAAA,KAAA,GAAgB8G,OAFjC;AAGAC,aAAA,CAAA,MAAA,GAAiBA,aAAA,CAAA,SAAA,GAAoBD;;ACoBrC,IAAItG,QAAA,GAAWsG,kBAAf,CAvBA;AAwBA,IAAIE,IAAA,GAAOF,MAAX,CAxBA;AA0BA,GAAA,CAAA,KAAA,GAAgBG,SA1BhB;AA2BA,GAAA,CAAA,OAAA,GAAkBC,WA3BlB;AA4BA,GAAA,CAAA,aAAA,GAAwBC,iBA5BxB;AA6BA,GAAA,CAAA,MAAA,GAAiBC,UA7BjB;AA+BA,GAAA,CAAA,GAAA,GAAcC,IA/Bd;AAiCA,SAASA,GAAT,GAAe;AAAA,IACb,IAAKC,CAAAA,QAAL,GAAgB,IAAhB,CADa;AAAA,IAEb,IAAKC,CAAAA,OAAL,GAAe,IAAf,CAFa;AAAA,IAGb,IAAKC,CAAAA,IAAL,GAAY,IAAZ,CAHa;AAAA,IAIb,IAAKC,CAAAA,IAAL,GAAY,IAAZ,CAJa;AAAA,IAKb,IAAKC,CAAAA,IAAL,GAAY,IAAZ,CALa;AAAA,IAMb,IAAKC,CAAAA,QAAL,GAAgB,IAAhB,CANa;AAAA,IAOb,IAAKC,CAAAA,IAAL,GAAY,IAAZ,CAPa;AAAA,IAQb,IAAKC,CAAAA,MAAL,GAAc,IAAd,CARa;AAAA,IASb,IAAKC,CAAAA,KAAL,GAAa,IAAb,CATa;AAAA,IAUb,IAAKC,CAAAA,QAAL,GAAgB,IAAhB,CAVa;AAAA,IAWb,IAAKC,CAAAA,IAAL,GAAY,IAAZ,CAXa;AAAA,IAYb,IAAKC,CAAAA,IAAL,GAAY,IAAZ,CAZa;AAAA,CAjCf;AAoDA;AAAA;AAAA;AAAA,IAAIC,eAAA,GAAkB,mBAAtB,EACIC,WAAA,GAAc,UADlB;AAAA;AAII,IAAAC,iBAAA,GAAoB,oCAJxB;AAAA;AAQI;AAAA,IAAAC,MAAA,GAAS;AAAA,QAAC,GAAD;AAAA,QAAM,GAAN;AAAA,QAAW,GAAX;AAAA,QAAgB,GAAhB;AAAA,QAAqB,GAArB;AAAA,QAA0B,IAA1B;AAAA,QAAgC,IAAhC;AAAA,QAAsC,IAAtC;AAAA,KARb;AAAA;AAWI,IAAAC,MAAA,GAAS;AAAA,QAAC,GAAD;AAAA,QAAM,GAAN;AAAA,QAAW,GAAX;AAAA,QAAgB,IAAhB;AAAA,QAAsB,GAAtB;AAAA,QAA2B,GAA3B;AAAA,KAAgCC,CAAAA,MAAhC,CAAuCF,MAAvC,CAXb;AAAA;AAcI,IAAAG,UAAA,GAAa,CAAC,IAAD,EAAOD,MAAP,CAAcD,MAAd,CAdjB;AAAA;AAmBI;AAAA;AAAA;AAAA,IAAAG,YAAA,GAAe;AAAA,QAAC,GAAD;AAAA,QAAM,GAAN;AAAA,QAAW,GAAX;AAAA,QAAgB,GAAhB;AAAA,QAAqB,GAArB;AAAA,KAAA,CAA0BF,MAA1B,CAAiCC,UAAjC,CAnBnB,EAoBIE,eAAA,GAAkB;AAAA,QAAC,GAAD;AAAA,QAAM,GAAN;AAAA,QAAW,GAAX;AAAA,KApBtB,EAqBIC,cAAA,GAAiB,GArBrB,EAsBIC,mBAAA,GAAsB,wBAtB1B,EAuBIC,iBAAA,GAAoB,8BAvBxB;AAAA;AAyBI,IAAAC,cAAA,GAAiB;AAAA,QACf,cAAc,IADC;AAAA,QAEf,eAAe,IAFA;AAAA,KAzBrB;AAAA;AA8BI,IAAAC,gBAAA,GAAmB;AAAA,QACjB,cAAc,IADG;AAAA,QAEjB,eAAe,IAFE;AAAA,KA9BvB;AAAA;AAmCI,IAAAC,eAAA,GAAkB;AAAA,QAChB,QAAQ,IADQ;AAAA,QAEhB,SAAS,IAFO;AAAA,QAGhB,OAAO,IAHS;AAAA,QAIhB,UAAU,IAJM;AAAA,QAKhB,QAAQ,IALQ;AAAA,QAMhB,SAAS,IANO;AAAA,QAOhB,UAAU,IAPM;AAAA,QAQhB,QAAQ,IARQ;AAAA,QAShB,WAAW,IATK;AAAA,QAUhB,SAAS,IAVO;AAAA,KAnCtB,EA+CIjC,WAAA,GAAcD,aA/ClB,CApDA;AAqGA,SAASG,QAAT,CAAkBgC,GAAlB,EAAuBC,gBAAvB,EAAyCC,iBAAzC,EAA4D;AAAA,IAC1D,IAAIF,GAAA,IAAOjC,IAAA,CAAK3B,QAAL,CAAc4D,GAAd,CAAP,IAA6BA,GAAA,YAAe5B,GAAhD;AAAA,QAAqD,OAAO4B,GAAP,CADK;AAAA,IAG1D,IAAIG,CAAA,GAAI,IAAI/B,GAAJ,EAAR,CAH0D;AAAA,IAI1D+B,CAAA,CAAEhL,KAAF,CAAQ6K,GAAR,EAAaC,gBAAb,EAA+BC,iBAA/B,CAJ0D,CAAA;AAAA,IAK1D,OAAOC,CAAP,CAL0D;AAAA,CArG5D;AA6GA/B,GAAA,CAAI5B,SAAJ,CAAcrH,KAAd,GAAsB,UAAS6K,GAAT,EAAcC,gBAAd,EAAgCC,iBAAhC,EAAmD;AAAA,IACvE,IAAI,CAACnC,IAAA,CAAK7B,QAAL,CAAc8D,GAAd,CAAL,EAAyB;AAAA,QACvB,MAAM,IAAII,SAAJ,CAAc,6CAA2C,OAAOJ,GAAhE,CAAN,CADuB;AAAA,KAD8C;AAAA;AAQvE;AAAA;AAAA,IAAA,IAAIK,UAAA,GAAaL,GAAA,CAAI9C,OAAJ,CAAY,GAAZ,CAAjB,EACIoD,QAAA,GACKD,UAAA,KAAe,CAAC,CAAhB,IAAqBA,UAAA,GAAaL,GAAA,CAAI9C,OAAJ,CAAY,GAAZ,CAAnC,GAAuD,GAAvD,GAA6D,GAFrE,EAGIqD,MAAA,GAASP,GAAA,CAAI9G,KAAJ,CAAUoH,QAAV,CAHb,EAIIE,UAAA,GAAa,KAJjB,CARuE;AAAA,IAavED,MAAA,CAAO,CAAP,CAAA,GAAYA,MAAA,CAAO,CAAP,CAAUvL,CAAAA,OAAV,CAAkBwL,UAAlB,EAA8B,GAA9B,CAAZ,CAbuE;AAAA,IAcvER,GAAA,GAAMO,MAAA,CAAOtK,IAAP,CAAYqK,QAAZ,CAAN,CAduE;AAAA,IAgBvE,IAAIG,IAAA,GAAOT,GAAX,CAhBuE;AAAA;AAoBvE;AAAA,IAAAS,IAAA,GAAOA,IAAA,CAAKC,IAAL,EAAP,CApBuE;AAAA,IAsBvE,IAAI,CAACR,iBAAD,IAAsBF,GAAA,CAAI9G,KAAJ,CAAU,GAAV,CAAA,CAAepE,MAAf,KAA0B,CAApD,EAAuD;AAAA;AAErD,QAAI6L,IAAAA,UAAA,GAAaxB,iBAAA,CAAkByB,IAAlB,CAAuBH,IAAvB,CAAjB,CAFqD;AAAA,QAGrD,IAAIE,UAAJ,EAAgB;AAAA,YACd,IAAK5B,CAAAA,IAAL,GAAY0B,IAAZ,CADc;AAAA,YAEd,IAAKzB,CAAAA,IAAL,GAAYyB,IAAZ,CAFc;AAAA,YAGd,KAAK3B,QAAL,GAAgB6B,UAAA,CAAW,CAAX,CAAhB,CAHc;AAAA,YAId,IAAIA,UAAA,CAAW,CAAX,CAAJ,EAAmB;AAAA,gBACjB,KAAK/B,MAAL,GAAc+B,UAAA,CAAW,CAAX,CAAd,CADiB;AAAA,gBAEjB,IAAIV,gBAAJ,EAAsB;AAAA,oBACpB,IAAKpB,CAAAA,KAAL,GAAaf,WAAA,CAAY3I,KAAZ,CAAkB,IAAKyJ,CAAAA,MAAL,CAAYtB,MAAZ,CAAmB,CAAnB,CAAlB,CAAb,CADoB;AAAA,iBAAtB,MAEO;AAAA,oBACL,IAAA,CAAKuB,KAAL,GAAa,IAAKD,CAAAA,MAAL,CAAYtB,MAAZ,CAAmB,CAAnB,CAAb,CADK;AAAA,iBAJU;AAAA,aAAnB,MAOO,IAAI2C,gBAAJ,EAAsB;AAAA,gBAC3B,IAAKrB,CAAAA,MAAL,GAAc,EAAd,CAD2B;AAAA,gBAE3B,IAAKC,CAAAA,KAAL,GAAa,EAAb,CAF2B;AAAA,aAXf;AAAA,YAed,OAAO,IAAP,CAfc;AAAA,SAHqC;AAAA,KAtBgB;AAAA,IA4CvE,IAAIgC,KAAA,GAAQ5B,eAAA,CAAgB2B,IAAhB,CAAqBH,IAArB,CAAZ,CA5CuE;AAAA,IA6CvE,IAAII,KAAJ,EAAW;AAAA,QACTA,KAAA,GAAQA,KAAA,CAAM,CAAN,CAAR,CADS;AAAA,QAET,IAAIC,UAAA,GAAaD,KAAA,CAAM/E,WAAN,EAAjB,CAFS;AAAA,QAGT,IAAKuC,CAAAA,QAAL,GAAgByC,UAAhB,CAHS;AAAA,QAITL,IAAA,GAAOA,IAAA,CAAKnD,MAAL,CAAYuD,KAAA,CAAM/L,MAAlB,CAAP,CAJS;AAAA,KA7C4D;AAAA;AAwDvE;AAAA;AAAA;AAAA,IAAIoL,IAAAA,iBAAA,IAAqBW,KAArB,IAA8BJ,IAAA,CAAKxL,KAAL,CAAW,sBAAX,CAAlC,EAAsE;AAAA,QACpE,IAAIqJ,OAAA,GAAUmC,IAAA,CAAKnD,MAAL,CAAY,CAAZ,EAAe,CAAf,CAAsB,KAAA,IAApC,CADoE;AAAA,QAEpE,IAAIgB,OAAA,IAAW,EAAEuC,KAAA,IAASf,gBAAA,CAAiBe,KAAjB,CAAT,CAAjB,EAAoD;AAAA,YAClDJ,IAAA,GAAOA,IAAA,CAAKnD,MAAL,CAAY,CAAZ,CAAP,CADkD;AAAA,YAElD,IAAKgB,CAAAA,OAAL,GAAe,IAAf,CAFkD;AAAA,SAFgB;AAAA,KAxDC;AAAA,IAgEvE,IAAI,CAACwB,gBAAA,CAAiBe,KAAjB,CAAD,KACCvC,OAAA,IAAYuC,KAAA,IAAS,CAACd,eAAA,CAAgBc,KAAhB,CAAtB,CADL,EACqD;AAAA;AAkBnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,IAAIE,OAAA,GAAU,CAAC,CAAf,CAlBmD;AAAA,QAmBnD,KAAK,IAAItG,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIgF,eAAA,CAAgB3K,MAApC,EAA4C2F,CAAA,EAA5C,EAAiD;AAAA,YAC/C,IAAIuG,GAAA,GAAMP,IAAA,CAAKvD,OAAL,CAAauC,eAAA,CAAgBhF,CAAhB,CAAb,CAAV,CAD+C;AAAA,YAE/C,IAAIuG,GAAA,KAAQ,CAAC,CAAT,KAAeD,OAAA,KAAY,CAAC,CAAb,IAAkBC,GAAA,GAAMD,OAAxB,CAAnB;AAAA,gBACEA,OAAA,GAAUC,GAAV,CAH6C;AAAA,SAnBE;AAAA;AA2BnD;AAAA,QAAIzC,IAAAA,IAAJ,EAAU0C,MAAV,CA3BmD;AAAA,QA4BnD,IAAIF,OAAA,KAAY,CAAC,CAAjB,EAAoB;AAAA;AAElB,YAAAE,MAAA,GAASR,IAAA,CAAKvF,WAAL,CAAiB,GAAjB,CAAT,CAFkB;AAAA,SAApB,MAGO;AAAA;AAGL;AAAA,YAAA+F,MAAA,GAASR,IAAA,CAAKvF,WAAL,CAAiB,GAAjB,EAAsB6F,OAAtB,CAAT,CAHK;AAAA,SA/B4C;AAAA;AAuCnD;AAAA,QAAA,IAAIE,MAAA,KAAW,CAAC,CAAhB,EAAmB;AAAA,YACjB1C,IAAA,GAAOkC,IAAA,CAAKrM,KAAL,CAAW,CAAX,EAAc6M,MAAd,CAAP,CADiB;AAAA,YAEjBR,IAAA,GAAOA,IAAA,CAAKrM,KAAL,CAAW6M,MAAA,GAAS,CAApB,CAAP,CAFiB;AAAA,YAGjB,KAAK1C,IAAL,GAAYhB,kBAAA,CAAmBgB,IAAnB,CAAZ,CAHiB;AAAA,SAvCgC;AAAA;AA8CnD,QAAAwC,OAAA,GAAU,CAAC,CAAX,CA9CmD;AAAA,QA+CnD,KAAK,IAAItG,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI+E,YAAA,CAAa1K,MAAjC,EAAyC2F,CAAA,EAAzC,EAA8C;AAAA,YAC5C,IAAIuG,GAAA,GAAMP,IAAA,CAAKvD,OAAL,CAAasC,YAAA,CAAa/E,CAAb,CAAb,CAAV,CAD4C;AAAA,YAE5C,IAAIuG,GAAA,KAAQ,CAAC,CAAT,KAAeD,OAAA,KAAY,CAAC,CAAb,IAAkBC,GAAA,GAAMD,OAAxB,CAAnB;AAAA,gBACEA,OAAA,GAAUC,GAAV,CAH0C;AAAA,SA/CK;AAAA;AAqDnD,QAAID,IAAAA,OAAA,KAAY,CAAC,CAAjB;AAAA,YACEA,OAAA,GAAUN,IAAA,CAAK3L,MAAf,CAtDiD;AAAA,QAwDnD,IAAA,CAAK0J,IAAL,GAAYiC,IAAA,CAAKrM,KAAL,CAAW,CAAX,EAAc2M,OAAd,CAAZ,CAxDmD;AAAA,QAyDnDN,IAAA,GAAOA,IAAA,CAAKrM,KAAL,CAAW2M,OAAX,CAAP,CAzDmD;AAAA;AA4DnD,QAAA,IAAA,CAAKG,SAAL,EA5DmD,CAAA;AAAA;AAgEnD;AAAA,QAAA,IAAA,CAAKxC,QAAL,GAAgB,IAAA,CAAKA,QAAL,IAAiB,EAAjC,CAhEmD;AAAA;AAoEnD;AAAA,QAAIyC,IAAAA,YAAA,GAAe,IAAKzC,CAAAA,QAAL,CAAc,CAAd,CAAA,KAAqB,GAArB,IACf,IAAA,CAAKA,QAAL,CAAc,IAAA,CAAKA,QAAL,CAAc5J,MAAd,GAAuB,CAArC,CAAA,KAA4C,GADhD,CApEmD;AAAA;AAwEnD,QAAI,IAAA,CAACqM,YAAL,EAAmB;AAAA,YACjB,IAAIC,SAAA,GAAY,IAAK1C,CAAAA,QAAL,CAAcxF,KAAd,CAAoB,IAApB,CAAhB,CADiB;AAAA,YAEjB,KAAK,IAAIuB,CAAA,GAAI,CAAR,EAAW4G,CAAA,GAAID,SAAA,CAAUtM,MAAzB,EAAiC2F,CAAA,GAAI4G,CAA1C,EAA6C5G,CAAA,EAA7C,EAAkD;AAAA,gBAChD,IAAI6G,IAAA,GAAOF,SAAA,CAAU3G,CAAV,CAAX,CADgD;AAAA,gBAEhD,IAAI,CAAC6G,IAAL;AAAA,oBAAW,SAFqC;AAAA,gBAGhD,IAAI,CAACA,IAAA,CAAKrM,KAAL,CAAW0K,mBAAX,CAAL,EAAsC;AAAA,oBACpC,IAAI4B,OAAA,GAAU,EAAd,CADoC;AAAA,oBAEpC,KAAK,IAAI1G,CAAA,GAAI,CAAR,EAAWT,CAAA,GAAIkH,IAAA,CAAKxM,MAApB,EAA4B+F,CAAA,GAAIT,CAArC,EAAwCS,CAAA,EAAxC,EAA6C;AAAA,wBAC3C,IAAIyG,IAAA,CAAK7H,UAAL,CAAgBoB,CAAhB,CAAA,GAAqB,GAAzB,EAA8B;AAAA;AAI5B;AAAA;AAAA,4BAAA0G,OAAA,IAAW,GAAX,CAJ4B;AAAA,yBAA9B,MAKO;AAAA,4BACLA,OAAA,IAAWD,IAAA,CAAKzG,CAAL,CAAX,CADK;AAAA,yBANoC;AAAA,qBAFT;AAAA;AAapC,oBAAA,IAAI,CAAC0G,OAAA,CAAQtM,KAAR,CAAc0K,mBAAd,CAAL,EAAyC;AAAA,wBACvC,IAAI6B,UAAA,GAAaJ,SAAA,CAAUhN,KAAV,CAAgB,CAAhB,EAAmBqG,CAAnB,CAAjB,CADuC;AAAA,wBAEvC,IAAIgH,OAAA,GAAUL,SAAA,CAAUhN,KAAV,CAAgBqG,CAAA,GAAI,CAApB,CAAd,CAFuC;AAAA,wBAGvC,IAAIiH,GAAA,GAAMJ,IAAA,CAAKrM,KAAL,CAAW2K,iBAAX,CAAV,CAHuC;AAAA,wBAIvC,IAAI8B,GAAJ,EAAS;AAAA,4BACPF,UAAA,CAAW7L,IAAX,CAAgB+L,GAAA,CAAI,CAAJ,CAAhB,CADO,CAAA;AAAA,4BAEPD,OAAA,CAAQE,OAAR,CAAgBD,GAAA,CAAI,CAAJ,CAAhB,CAFO,CAAA;AAAA,yBAJ8B;AAAA,wBAQvC,IAAID,OAAA,CAAQ3M,MAAZ,EAAoB;AAAA,4BAClB2L,IAAA,GAAO,GAAA,GAAMgB,OAAA,CAAQxL,IAAR,CAAa,GAAb,CAAN,GAA0BwK,IAAjC,CADkB;AAAA,yBARmB;AAAA,wBAWvC,IAAA,CAAK/B,QAAL,GAAgB8C,UAAA,CAAWvL,IAAX,CAAgB,GAAhB,CAAhB,CAXuC;AAAA,wBAYvC,MAZuC;AAAA,qBAbL;AAAA,iBAHU;AAAA,aAFjC;AAAA,SAxEgC;AAAA,QA4GnD,IAAI,IAAKyI,CAAAA,QAAL,CAAc5J,MAAd,GAAuB4K,cAA3B,EAA2C;AAAA,YACzC,IAAKhB,CAAAA,QAAL,GAAgB,EAAhB,CADyC;AAAA,SAA3C,MAEO;AAAA;AAEL,YAAA,IAAA,CAAKA,QAAL,GAAgB,IAAA,CAAKA,QAAL,CAAc5C,WAAd,EAAhB,CAFK;AAAA,SA9G4C;AAAA,QAmHnD,IAAI,CAACqF,YAAL,EAAmB;AAAA;AAKjB;AAAA;AAAA;AAAA,YAAKzC,IAAAA,CAAAA,QAAL,GAAgBnH,QAAA,CAASwE,OAAT,CAAiB,IAAA,CAAK2C,QAAtB,CAAhB,CALiB;AAAA,SAnHgC;AAAA,QA2HnD,IAAIkD,CAAA,GAAI,IAAKnD,CAAAA,IAAL,GAAY,GAAA,GAAM,IAAKA,CAAAA,IAAvB,GAA8B,EAAtC,CA3HmD;AAAA,QA4HnD,IAAIoD,CAAA,GAAI,KAAKnD,QAAL,IAAiB,EAAzB,CA5HmD;AAAA,QA6HnD,KAAKF,IAAL,GAAYqD,CAAA,GAAID,CAAhB,CA7HmD;AAAA,QA8HnD,IAAK5C,CAAAA,IAAL,IAAa,IAAA,CAAKR,IAAlB,CA9HmD;AAAA;AAkInD;AAAA,QAAA,IAAI2C,YAAJ,EAAkB;AAAA,YAChB,KAAKzC,QAAL,GAAgB,IAAKA,CAAAA,QAAL,CAAcpB,MAAd,CAAqB,CAArB,EAAwB,KAAKoB,QAAL,CAAc5J,MAAd,GAAuB,CAA/C,CAAhB,CADgB;AAAA,YAEhB,IAAI2L,IAAA,CAAK,CAAL,CAAA,KAAY,GAAhB,EAAqB;AAAA,gBACnBA,IAAA,GAAO,GAAMA,GAAAA,IAAb,CADmB;AAAA,aAFL;AAAA,SAlIiC;AAAA,KAjEkB;AAAA;AA6MvE;AAAA,IAAA,IAAI,CAACZ,cAAA,CAAeiB,UAAf,CAAL,EAAiC;AAAA;AAK/B;AAAA;AAAA,QAAA,KAAK,IAAIrG,CAAA,GAAI,CAAR,EAAW4G,CAAA,GAAI9B,UAAA,CAAWzK,MAA1B,EAAkC2F,CAAA,GAAI4G,CAA3C,EAA8C5G,CAAA,EAA9C,EAAmD;AAAA,YACjD,IAAIqH,EAAA,GAAKvC,UAAA,CAAW9E,CAAX,CAAT,CADiD;AAAA,YAEjD,IAAIgG,IAAA,CAAKvD,OAAL,CAAa4E,EAAb,CAAA,KAAqB,CAAC,CAA1B;AAAA,gBACE,SAH+C;AAAA,YAIjD,IAAIC,GAAA,GAAMnE,kBAAA,CAAmBkE,EAAnB,CAAV,CAJiD;AAAA,YAKjD,IAAIC,GAAA,KAAQD,EAAZ,EAAgB;AAAA,gBACdC,GAAA,GAAMC,MAAA,CAAOF,EAAP,CAAN,CADc;AAAA,aALiC;AAAA,YAQjDrB,IAAA,GAAOA,IAAA,CAAKvH,KAAL,CAAW4I,EAAX,CAAA,CAAe7L,IAAf,CAAoB8L,GAApB,CAAP,CARiD;AAAA,SALpB;AAAA,KA7MsC;AAAA;AAgOvE,IAAIpD,IAAAA,IAAA,GAAO8B,IAAA,CAAKvD,OAAL,CAAa,GAAb,CAAX,CAhOuE;AAAA,IAiOvE,IAAIyB,IAAA,KAAS,CAAC,CAAd,EAAiB;AAAA;AAEf,QAAKA,IAAAA,CAAAA,IAAL,GAAY8B,IAAA,CAAKnD,MAAL,CAAYqB,IAAZ,CAAZ,CAFe;AAAA,QAGf8B,IAAA,GAAOA,IAAA,CAAKrM,KAAL,CAAW,CAAX,EAAcuK,IAAd,CAAP,CAHe;AAAA,KAjOsD;AAAA,IAsOvE,IAAIsD,EAAA,GAAKxB,IAAA,CAAKvD,OAAL,CAAa,GAAb,CAAT,CAtOuE;AAAA,IAuOvE,IAAI+E,EAAA,KAAO,CAAC,CAAZ,EAAe;AAAA,QACb,IAAA,CAAKrD,MAAL,GAAc6B,IAAA,CAAKnD,MAAL,CAAY2E,EAAZ,CAAd,CADa;AAAA,QAEb,IAAA,CAAKpD,KAAL,GAAa4B,IAAA,CAAKnD,MAAL,CAAY2E,EAAA,GAAK,CAAjB,CAAb,CAFa;AAAA,QAGb,IAAIhC,gBAAJ,EAAsB;AAAA,YACpB,IAAA,CAAKpB,KAAL,GAAaf,WAAA,CAAY3I,KAAZ,CAAkB,IAAA,CAAK0J,KAAvB,CAAb,CADoB;AAAA,SAHT;AAAA,QAMb4B,IAAA,GAAOA,IAAA,CAAKrM,KAAL,CAAW,CAAX,EAAc6N,EAAd,CAAP,CANa;AAAA,KAAf,MAOO,IAAIhC,gBAAJ,EAAsB;AAAA;AAE3B,QAAKrB,IAAAA,CAAAA,MAAL,GAAc,EAAd,CAF2B;AAAA,QAG3B,IAAKC,CAAAA,KAAL,GAAa,EAAb,CAH2B;AAAA,KA9O0C;AAAA,IAmPvE,IAAI4B,IAAJ;AAAA,QAAU,IAAK3B,CAAAA,QAAL,GAAgB2B,IAAhB,CAnP6D;AAAA,IAoPvE,IAAIV,eAAA,CAAgBe,UAAhB,CAAA,IACA,IAAKpC,CAAAA,QADL,IACiB,CAAC,IAAKI,CAAAA,QAD3B,EACqC;AAAA,QACnC,IAAKA,CAAAA,QAAL,GAAgB,GAAhB,CADmC;AAAA,KArPkC;AAAA;AA0PvE,IAAA,IAAI,IAAKA,CAAAA,QAAL,IAAiB,IAAA,CAAKF,MAA1B,EAAkC;AAAA,QAChC,IAAIgD,CAAA,GAAI,KAAK9C,QAAL,IAAiB,EAAzB,CADgC;AAAA,QAEhC,IAAIoD,CAAA,GAAI,KAAKtD,MAAL,IAAe,EAAvB,CAFgC;AAAA,QAGhC,KAAKG,IAAL,GAAY6C,CAAA,GAAIM,CAAhB,CAHgC;AAAA,KA1PqC;AAAA;AAiQvE,IAAA,IAAA,CAAKlD,IAAL,GAAY,IAAK3I,CAAAA,MAAL,EAAZ,CAjQuE;AAAA,IAkQvE,OAAO,IAAP,CAlQuE;AAAA,CAAzE,CA7GA;AAmXA;AAAA,SAAS8H,SAAT,CAAmB1J,GAAnB,EAAwB;AAAA;AAKtB;AAAA;AAAA;AAAA,IAAA,IAAIsJ,IAAA,CAAK7B,QAAL,CAAczH,GAAd,CAAJ;AAAA,QAAwBA,GAAA,GAAMuJ,QAAA,CAASvJ,GAAT,CAAN,CALF;AAAA,IAMtB,IAAI,EAAEA,GAAA,YAAe2J,GAAf,CAAN;AAAA,QAA2B,OAAOA,GAAA,CAAI5B,SAAJ,CAAcnG,MAAd,CAAqBoG,IAArB,CAA0BhI,GAA1B,CAAP,CANL;AAAA,IAOtB,OAAOA,GAAA,CAAI4B,MAAJ,EAAP,CAPsB;AAAA,CAnXxB;AA6XA+H,GAAA,CAAI5B,SAAJ,CAAcnG,MAAd,GAAuB,YAAW;AAAA,IAChC,IAAIkI,IAAA,GAAO,KAAKA,IAAL,IAAa,EAAxB,CADgC;AAAA,IAEhC,IAAIA,IAAJ,EAAU;AAAA,QACRA,IAAA,GAAOX,kBAAA,CAAmBW,IAAnB,CAAP,CADQ;AAAA,QAERA,IAAA,GAAOA,IAAA,CAAKvJ,OAAL,CAAa,MAAb,EAAqB,GAArB,CAAP,CAFQ;AAAA,QAGRuJ,IAAA,IAAQ,GAAR,CAHQ;AAAA,KAFsB;AAAA,IAQhC,IAAIF,QAAA,GAAW,IAAA,CAAKA,QAAL,IAAiB,EAAhC,EACIS,QAAA,GAAW,IAAKA,CAAAA,QAAL,IAAiB,EADhC,EAEIH,IAAA,GAAO,IAAA,CAAKA,IAAL,IAAa,EAFxB,EAGIH,IAAA,GAAO,KAHX,EAIIK,KAAA,GAAQ,EAJZ,CARgC;AAAA,IAchC,IAAI,IAAKL,CAAAA,IAAT,EAAe;AAAA,QACbA,IAAA,GAAOD,IAAA,GAAO,IAAA,CAAKC,IAAnB,CADa;AAAA,KAAf,MAEO,IAAI,IAAKE,CAAAA,QAAT,EAAmB;AAAA,QACxBF,IAAA,GAAOD,IAAA,SAAaG,QAAL,CAAcxB,OAAd,CAAsB,GAAtB,CAAA,KAA+B,CAAC,CAAhC,GACX,IAAKwB,CAAAA,QADM,GAEX,GAAA,GAAM,KAAKA,QAAX,GAAsB,GAFX,CAAf,CADwB;AAAA,QAIxB,IAAI,IAAKD,CAAAA,IAAT,EAAe;AAAA,YACbD,IAAA,IAAQ,GAAM,GAAA,IAAA,CAAKC,IAAnB,CADa;AAAA,SAJS;AAAA,KAhBM;AAAA,IAyBhC,IAAI,KAAKI,KAAL,IACAd,IAAA,CAAK3B,QAAL,CAAc,IAAKyC,CAAAA,KAAnB,CADA,IAEAhJ,MAAA,CAAOD,IAAP,CAAY,KAAKiJ,KAAjB,CAAA,CAAwB/J,MAF5B,EAEoC;AAAA,QAClC+J,KAAA,GAAQf,WAAA,CAAYhK,SAAZ,CAAsB,IAAA,CAAK+K,KAA3B,CAAR,CADkC;AAAA,KA3BJ;AAAA,IA+BhC,IAAID,MAAA,GAAS,IAAA,CAAKA,MAAL,IAAgBC,KAAA,IAAU,GAAMA,GAAAA,KAAhC,IAA2C,EAAxD,CA/BgC;AAAA,IAiChC,IAAIR,QAAA,IAAYA,QAAA,CAASf,MAAT,CAAgB,CAAC,CAAjB,CAAA,KAAwB,GAAxC;AAAA,QAA6Ce,QAAA,IAAY,GAAZ,CAjCb;AAAA;AAqChC;AAAA,IAAA,IAAI,IAAKC,CAAAA,OAAL,IACC,CAAA,CAACD,QAAD,IAAa0B,eAAA,CAAgB1B,QAAhB,CAAb,KAA2CG,IAAA,KAAS,KADzD,EACgE;AAAA,QAC9DA,IAAA,GAAO,IAAQ,IAAAA,IAAA,IAAQ,EAAR,CAAf,CAD8D;AAAA,QAE9D,IAAIM,QAAA,IAAYA,QAAA,CAASqD,MAAT,CAAgB,CAAhB,CAAA,KAAuB,GAAvC;AAAA,YAA4CrD,QAAA,GAAW,GAAMA,GAAAA,QAAjB,CAFkB;AAAA,KADhE,MAIO,IAAI,CAACN,IAAL,EAAW;AAAA,QAChBA,IAAA,GAAO,EAAP,CADgB;AAAA,KAzCc;AAAA,IA6ChC,IAAIG,IAAA,IAAQA,IAAA,CAAKwD,MAAL,CAAY,CAAZ,CAAA,KAAmB,GAA/B;AAAA,QAAoCxD,IAAA,GAAO,GAAMA,GAAAA,IAAb,CA7CJ;AAAA,IA8ChC,IAAIC,MAAA,IAAUA,MAAA,CAAOuD,MAAP,CAAc,CAAd,CAAA,KAAqB,GAAnC;AAAA,QAAwCvD,MAAA,GAAS,GAAMA,GAAAA,MAAf,CA9CR;AAAA,IAgDhCE,QAAA,GAAWA,QAAA,CAAS9J,OAAT,CAAiB,OAAjB,EAA0B,UAASC,KAAT,EAAgB;AAAA,QACnD,OAAO2I,kBAAA,CAAmB3I,KAAnB,CAAP,CADmD;AAAA,KAA1C,CAAX,CAhDgC;AAAA,IAmDhC2J,MAAA,GAASA,MAAA,CAAO5J,OAAP,CAAe,GAAf,EAAoB,KAApB,CAAT,CAnDgC;AAAA,IAqDhC,OAAOqJ,QAAA,GAAWG,IAAX,GAAkBM,QAAlB,GAA6BF,MAA7B,GAAsCD,IAA7C,CArDgC;AAAA,CAAlC,CA7XA;AAqbA,SAASV,UAAT,CAAoBmE,MAApB,EAA4BC,QAA5B,EAAsC;AAAA,IACpC,OAAOrE,QAAA,CAASoE,MAAT,EAAiB,KAAjB,EAAwB,IAAxB,CAA8BE,CAAAA,OAA9B,CAAsCD,QAAtC,CAAP,CADoC;AAAA,CArbtC;AAybAjE,GAAA,CAAI5B,SAAJ,CAAc8F,OAAd,GAAwB,UAASD,QAAT,EAAmB;AAAA,IACzC,OAAO,IAAA,CAAKE,aAAL,CAAmBvE,QAAA,CAASqE,QAAT,EAAmB,KAAnB,EAA0B,IAA1B,CAAnB,CAAoDhM,CAAAA,MAApD,EAAP,CADyC;AAAA,CAA3C,CAzbA;AA6bA,SAAS6H,gBAAT,CAA0BkE,MAA1B,EAAkCC,QAAlC,EAA4C;AAAA,IAC1C,IAAI,CAACD,MAAL;AAAA,QAAa,OAAOC,QAAP,CAD6B;AAAA,IAE1C,OAAOrE,QAAA,CAASoE,MAAT,EAAiB,KAAjB,EAAwB,IAAxB,CAA8BG,CAAAA,aAA9B,CAA4CF,QAA5C,CAAP,CAF0C;AAAA,CA7b5C;AAkcAjE,GAAA,CAAI5B,SAAJ,CAAc+F,aAAd,GAA8B,UAASF,QAAT,EAAmB;AAAA,IAC/C,IAAItE,IAAA,CAAK7B,QAAL,CAAcmG,QAAd,CAAJ,EAA6B;AAAA,QAC3B,IAAIG,GAAA,GAAM,IAAIpE,GAAJ,EAAV,CAD2B;AAAA,QAE3BoE,GAAA,CAAIrN,KAAJ,CAAUkN,QAAV,EAAoB,KAApB,EAA2B,IAA3B,CAF2B,CAAA;AAAA,QAG3BA,QAAA,GAAWG,GAAX,CAH2B;AAAA,KADkB;AAAA,IAO/C,IAAIpM,MAAA,GAAS,IAAIgI,GAAJ,EAAb,CAP+C;AAAA,IAQ/C,IAAIqE,KAAA,GAAQ5M,MAAA,CAAOD,IAAP,CAAY,IAAZ,CAAZ,CAR+C;AAAA,IAS/C,KAAK,IAAI8M,EAAA,GAAK,CAAT,EAAYA,EAAA,GAAKD,KAAA,CAAM3N,MAA5B,EAAoC4N,EAAA,EAApC,EAA0C;AAAA,QACxC,IAAIC,IAAA,GAAOF,KAAA,CAAMC,EAAN,CAAX,CADwC;AAAA,QAExCtM,MAAA,CAAOuM,IAAP,IAAe,IAAKA,CAAAA,IAAL,CAAf,CAFwC;AAAA,KATK;AAAA;AAgB/C;AAAA,IAAAvM,MAAA,CAAOuI,IAAP,GAAc0D,QAAA,CAAS1D,IAAvB,CAhB+C;AAAA;AAmB/C,IAAA,IAAI0D,QAAA,CAASrD,IAAT,KAAkB,EAAtB,EAA0B;AAAA,QACxB5I,MAAA,CAAO4I,IAAP,GAAc5I,MAAA,CAAOC,MAAP,EAAd,CADwB;AAAA,QAExB,OAAOD,MAAP,CAFwB;AAAA,KAnBqB;AAAA;AAyB/C,IAAIiM,IAAAA,QAAA,CAAS/D,OAAT,IAAoB,CAAC+D,QAAA,CAAShE,QAAlC,EAA4C;AAAA;AAE1C,QAAIuE,IAAAA,KAAA,GAAQ/M,MAAA,CAAOD,IAAP,CAAYyM,QAAZ,CAAZ,CAF0C;AAAA,QAG1C,KAAK,IAAIQ,EAAA,GAAK,CAAT,EAAYA,EAAA,GAAKD,KAAA,CAAM9N,MAA5B,EAAoC+N,EAAA,EAApC,EAA0C;AAAA,YACxC,IAAIC,IAAA,GAAOF,KAAA,CAAMC,EAAN,CAAX,CADwC;AAAA,YAExC,IAAIC,IAAA,KAAS,UAAb;AAAA,gBACE1M,MAAA,CAAO0M,IAAP,CAAA,GAAeT,QAAA,CAASS,IAAT,CAAf,CAHsC;AAAA,SAHA;AAAA;AAU1C,QAAA,IAAI/C,eAAA,CAAgB3J,MAAA,CAAOiI,QAAvB,CACAjI,IAAAA,MAAA,CAAOsI,QADP,IACmB,CAACtI,MAAA,CAAO0I,QAD/B,EACyC;AAAA,YACvC1I,MAAA,CAAO2I,IAAP,GAAc3I,MAAA,CAAO0I,QAAP,GAAkB,GAAhC,CADuC;AAAA,SAXC;AAAA,QAe1C1I,MAAA,CAAO4I,IAAP,GAAc5I,MAAA,CAAOC,MAAP,EAAd,CAf0C;AAAA,QAgB1C,OAAOD,MAAP,CAhB0C;AAAA,KAzBG;AAAA,IA4C/C,IAAIiM,QAAA,CAAShE,QAAT,IAAqBgE,QAAA,CAAShE,QAAT,KAAsBjI,MAAA,CAAOiI,QAAtD,EAAgE;AAAA;AAS9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,IAAI,CAAC0B,eAAA,CAAgBsC,QAAA,CAAShE,QAAzB,CAAL,EAAyC;AAAA,YACvC,IAAIzI,IAAA,GAAOC,MAAA,CAAOD,IAAP,CAAYyM,QAAZ,CAAX,CADuC;AAAA,YAEvC,KAAK,IAAIhF,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIzH,IAAA,CAAKd,MAAzB,EAAiCuI,CAAA,EAAjC,EAAsC;AAAA,gBACpC,IAAIjD,CAAA,GAAIxE,IAAA,CAAKyH,CAAL,CAAR,CADoC;AAAA,gBAEpCjH,MAAA,CAAOgE,CAAP,CAAA,GAAYiI,QAAA,CAASjI,CAAT,CAAZ,CAFoC;AAAA,aAFC;AAAA,YAMvChE,MAAA,CAAO4I,IAAP,GAAc5I,MAAA,CAAOC,MAAP,EAAd,CANuC;AAAA,YAOvC,OAAOD,MAAP,CAPuC;AAAA,SATqB;AAAA,QAmB9DA,MAAA,CAAOiI,QAAP,GAAkBgE,QAAA,CAAShE,QAA3B,CAnB8D;AAAA,QAoB9D,IAAI,CAACgE,QAAA,CAAS7D,IAAV,IAAkB,CAACsB,gBAAA,CAAiBuC,QAAA,CAAShE,QAA1B,CAAvB,EAA4D;AAAA,YAC1D,IAAI0E,OAAA,GAAW,CAAAV,QAAA,CAASvD,QAAT,IAAqB,EAArB,EAAyB5F,KAA1B,CAAgC,GAAhC,CAAd,CAD0D;AAAA,YAE1D,OAAO6J,OAAA,CAAQjO,MAAR,IAAkB,EAAEuN,QAAA,CAAS7D,IAAT,GAAgBuE,OAAA,CAAQC,KAAR,EAAhB,CAA3B,CAF0D,CAAA;AAAA,YAG1D,IAAI,CAACX,QAAA,CAAS7D,IAAd;AAAA,gBAAoB6D,QAAA,CAAS7D,IAAT,GAAgB,EAAhB,CAHsC;AAAA,YAI1D,IAAI,CAAC6D,QAAA,CAAS3D,QAAd;AAAA,gBAAwB2D,QAAA,CAAS3D,QAAT,GAAoB,EAApB,CAJkC;AAAA,YAK1D,IAAIqE,OAAA,CAAQ,CAAR,MAAe,EAAnB;AAAA,gBAAuBA,OAAA,CAAQpB,OAAR,CAAgB,EAAhB,CALmC,CAAA;AAAA,YAM1D,IAAIoB,OAAA,CAAQjO,MAAR,GAAiB,CAArB;AAAA,gBAAwBiO,OAAA,CAAQpB,OAAR,CAAgB,EAAhB,CANkC,CAAA;AAAA,YAO1DvL,MAAA,CAAO0I,QAAP,GAAkBiE,OAAA,CAAQ9M,IAAR,CAAa,GAAb,CAAlB,CAP0D;AAAA,SAA5D,MAQO;AAAA,YACLG,MAAA,CAAO0I,QAAP,GAAkBuD,QAAA,CAASvD,QAA3B,CADK;AAAA,SA5BuD;AAAA,QA+B9D1I,MAAA,CAAOwI,MAAP,GAAgByD,QAAA,CAASzD,MAAzB,CA/B8D;AAAA,QAgC9DxI,MAAA,CAAOyI,KAAP,GAAewD,QAAA,CAASxD,KAAxB,CAhC8D;AAAA,QAiC9DzI,MAAA,CAAOoI,IAAP,GAAc6D,QAAA,CAAS7D,IAAT,IAAiB,EAA/B,CAjC8D;AAAA,QAkC9DpI,MAAA,CAAOmI,IAAP,GAAc8D,QAAA,CAAS9D,IAAvB,CAlC8D;AAAA,QAmC9DnI,MAAA,CAAOsI,QAAP,GAAkB2D,QAAA,CAAS3D,QAAT,IAAqB2D,QAAA,CAAS7D,IAAhD,CAnC8D;AAAA,QAoC9DpI,MAAA,CAAOqI,IAAP,GAAc4D,QAAA,CAAS5D,IAAvB,CApC8D;AAAA;AAsC9D,QAAA,IAAIrI,MAAA,CAAO0I,QAAP,IAAmB1I,MAAA,CAAOwI,MAA9B,EAAsC;AAAA,YACpC,IAAIgD,CAAA,GAAIxL,MAAA,CAAO0I,QAAP,IAAmB,EAA3B,CADoC;AAAA,YAEpC,IAAIoD,CAAA,GAAI9L,MAAA,CAAOwI,MAAP,IAAiB,EAAzB,CAFoC;AAAA,YAGpCxI,MAAA,CAAO2I,IAAP,GAAc6C,CAAA,GAAIM,CAAlB,CAHoC;AAAA,SAtCwB;AAAA,QA2C9D9L,MAAA,CAAOkI,OAAP,GAAiBlI,MAAA,CAAOkI,OAAP,IAAkB+D,QAAA,CAAS/D,OAA5C,CA3C8D;AAAA,QA4C9DlI,MAAA,CAAO4I,IAAP,GAAc5I,MAAA,CAAOC,MAAP,EAAd,CA5C8D;AAAA,QA6C9D,OAAOD,MAAP,CA7C8D;AAAA,KA5CjB;AAAA,IA4F/C,IAAI6M,WAAA,GAAe7M,MAAA,CAAO0I,QAAP,IAAmB1I,MAAA,CAAO0I,QAAP,CAAgBqD,MAAhB,CAAuB,CAAvB,MAA8B,GAApE,EACIe,QAAA,GACIb,QAAA,CAAS7D,IAAT,IACA6D,QAAA,CAASvD,QAAT,IAAqBuD,QAAA,CAASvD,QAAT,CAAkBqD,MAAlB,CAAyB,CAAzB,CAAA,KAAgC,GAH7D,EAKIgB,UAAA,GAAcD,QAAA,IAAYD,WAAZ,IACC7M,MAAA,CAAOoI,IAAP,IAAe6D,QAAA,CAASvD,QAN3C,EAOIsE,aAAA,GAAgBD,UAPpB,EAQIE,OAAA,GAAUjN,MAAA,CAAO0I,QAAP,IAAmB1I,MAAA,CAAO0I,QAAP,CAAgB5F,KAAhB,CAAsB,GAAtB,CAAnB,IAAiD,EAR/D,EASI6J,OAAA,GAAUV,QAAA,CAASvD,QAAT,IAAqBuD,QAAA,CAASvD,QAAT,CAAkB5F,KAAlB,CAAwB,GAAxB,CAArB,IAAqD,EATnE,EAUIoK,SAAA,GAAYlN,MAAA,CAAOiI,QAAP,IAAmB,CAAC0B,eAAA,CAAgB3J,MAAA,CAAOiI,QAAvB,CAVpC,CA5F+C;AAAA;AA6G/C;AAAA;AAAA;AAAA;AAAA,IAAA,IAAIiF,SAAJ,EAAe;AAAA,QACblN,MAAA,CAAOsI,QAAP,GAAkB,EAAlB,CADa;AAAA,QAEbtI,MAAA,CAAOqI,IAAP,GAAc,IAAd,CAFa;AAAA,QAGb,IAAIrI,MAAA,CAAOoI,IAAX,EAAiB;AAAA,YACf,IAAI6E,OAAA,CAAQ,CAAR,MAAe,EAAnB;AAAA,gBAAuBA,OAAA,CAAQ,CAAR,IAAajN,MAAA,CAAOoI,IAApB,CAAvB;AAAA;AAAA,gBACK6E,OAAA,CAAQ1B,OAAR,CAAgBvL,MAAA,CAAOoI,IAAvB,CAFU,CAAA;AAAA,SAHJ;AAAA,QAObpI,MAAA,CAAOoI,IAAP,GAAc,EAAd,CAPa;AAAA,QAQb,IAAI6D,QAAA,CAAShE,QAAb,EAAuB;AAAA,YACrBgE,QAAA,CAAS3D,QAAT,GAAoB,IAApB,CADqB;AAAA,YAErB2D,QAAA,CAAS5D,IAAT,GAAgB,IAAhB,CAFqB;AAAA,YAGrB,IAAI4D,QAAA,CAAS7D,IAAb,EAAmB;AAAA,gBACjB,IAAIuE,OAAA,CAAQ,CAAR,MAAe,EAAnB;AAAA,oBAAuBA,OAAA,CAAQ,CAAR,IAAaV,QAAA,CAAS7D,IAAtB,CAAvB;AAAA;AAAA,oBACKuE,OAAA,CAAQpB,OAAR,CAAgBU,QAAA,CAAS7D,IAAzB,CAFY,CAAA;AAAA,aAHE;AAAA,YAOrB6D,QAAA,CAAS7D,IAAT,GAAgB,IAAhB,CAPqB;AAAA,SARV;AAAA,QAiBb2E,UAAA,GAAaA,UAAA,KAAeJ,OAAA,CAAQ,CAAR,CAAe,KAAA,EAAf,IAAqBM,OAAA,CAAQ,CAAR,CAAe,KAAA,EAApC,CAA5B,CAjBa;AAAA,KA7GgC;AAAA,IAiI/C,IAAIH,QAAJ,EAAc;AAAA;AAEZ,QAAA9M,MAAA,CAAOoI,IAAP,GAAe6D,QAAA,CAAS7D,IAAT,IAAiB6D,QAAA,CAAS7D,IAAT,KAAkB,EAApC,GACA6D,QAAA,CAAS7D,IADT,GACgBpI,MAAA,CAAOoI,IADrC,CAFY;AAAA,QAIZpI,MAAA,CAAOsI,QAAP,GAAmB2D,QAAA,CAAS3D,QAAT,IAAqB2D,QAAA,CAAS3D,QAAT,KAAsB,EAA5C,GACA2D,QAAA,CAAS3D,QADT,GACoBtI,MAAA,CAAOsI,QAD7C,CAJY;AAAA,QAMZtI,MAAA,CAAOwI,MAAP,GAAgByD,QAAA,CAASzD,MAAzB,CANY;AAAA,QAOZxI,MAAA,CAAOyI,KAAP,GAAewD,QAAA,CAASxD,KAAxB,CAPY;AAAA,QAQZwE,OAAA,GAAUN,OAAV,CAAA;AARY,KAAd,MAUO,IAAIA,OAAA,CAAQjO,MAAZ,EAAoB;AAAA;AAGzB;AAAA,QAAA,IAAI,CAACuO,OAAL;AAAA,YAAcA,OAAA,GAAU,EAAV,CAHW;AAAA,QAIzBA,OAAA,CAAQE,GAAR,EAJyB,CAAA;AAAA,QAKzBF,OAAA,GAAUA,OAAA,CAAQ/D,MAAR,CAAeyD,OAAf,CAAV,CALyB;AAAA,QAMzB3M,MAAA,CAAOwI,MAAP,GAAgByD,QAAA,CAASzD,MAAzB,CANyB;AAAA,QAOzBxI,MAAA,CAAOyI,KAAP,GAAewD,QAAA,CAASxD,KAAxB,CAPyB;AAAA,KAApB,MAQA,IAAI,CAACd,IAAA,CAAKzB,iBAAL,CAAuB+F,QAAA,CAASzD,MAAhC,CAAL,EAA8C;AAAA;AAInD;AAAA;AAAA,QAAA,IAAI0E,SAAJ,EAAe;AAAA,YACblN,MAAA,CAAOsI,QAAP,GAAkBtI,MAAA,CAAOoI,IAAP,GAAc6E,OAAA,CAAQL,KAAR,EAAhC,CADa;AAAA;AAKb;AAAA;AAAA,YAAIQ,IAAAA,UAAA,GAAapN,MAAA,CAAOoI,IAAP,IAAepI,MAAA,CAAOoI,IAAP,CAAYtB,OAAZ,CAAoB,GAApB,IAA2B,CAA1C,GACA9G,MAAA,CAAOoI,IAAP,CAAYtF,KAAZ,CAAkB,GAAlB,CADA,GACyB,KAD1C,CALa;AAAA,YAOb,IAAIsK,UAAJ,EAAgB;AAAA,gBACdpN,MAAA,CAAOmI,IAAP,GAAciF,UAAA,CAAWR,KAAX,EAAd,CADc;AAAA,gBAEd5M,MAAA,CAAOoI,IAAP,GAAcpI,MAAA,CAAOsI,QAAP,GAAkB8E,UAAA,CAAWR,KAAX,EAAhC,CAFc;AAAA,aAPH;AAAA,SAJoC;AAAA,QAgBnD5M,MAAA,CAAOwI,MAAP,GAAgByD,QAAA,CAASzD,MAAzB,CAhBmD;AAAA,QAiBnDxI,MAAA,CAAOyI,KAAP,GAAewD,QAAA,CAASxD,KAAxB,CAjBmD;AAAA;AAmBnD,QAAA,IAAI,CAACd,IAAA,CAAK1B,MAAL,CAAYjG,MAAA,CAAO0I,QAAnB,CAAD,IAAiC,CAACf,IAAA,CAAK1B,MAAL,CAAYjG,MAAA,CAAOwI,MAAnB,CAAtC,EAAkE;AAAA,YAChExI,MAAA,CAAO2I,IAAP,GAAe,CAAA3I,MAAA,CAAO0I,QAAP,GAAkB1I,MAAA,CAAO0I,QAAzB,GAAoC,EAApC,KACA1I,MAAA,CAAOwI,MAAP,GAAgBxI,MAAA,CAAOwI,MAAvB,GAAgC,EAAhC,CADf,CADgE;AAAA,SAnBf;AAAA,QAuBnDxI,MAAA,CAAO4I,IAAP,GAAc5I,MAAA,CAAOC,MAAP,EAAd,CAvBmD;AAAA,QAwBnD,OAAOD,MAAP,CAxBmD;AAAA,KAnJN;AAAA,IA8K/C,IAAI,CAACiN,OAAA,CAAQvO,MAAb,EAAqB;AAAA;AAGnB;AAAA,QAAAsB,MAAA,CAAO0I,QAAP,GAAkB,IAAlB,CAHmB;AAAA;AAKnB,QAAI1I,IAAAA,MAAA,CAAOwI,MAAX,EAAmB;AAAA,YACjBxI,MAAA,CAAO2I,IAAP,GAAc,MAAM3I,MAAA,CAAOwI,MAA3B,CADiB;AAAA,SAAnB,MAEO;AAAA,YACLxI,MAAA,CAAO2I,IAAP,GAAc,IAAd,CADK;AAAA,SAPY;AAAA,QAUnB3I,MAAA,CAAO4I,IAAP,GAAc5I,MAAA,CAAOC,MAAP,EAAd,CAVmB;AAAA,QAWnB,OAAOD,MAAP,CAXmB;AAAA,KA9K0B;AAAA;AA+L/C;AAAA;AAAA,IAAIqN,IAAAA,IAAA,GAAOJ,OAAA,CAAQjP,KAAR,CAAc,CAAC,CAAf,CAAA,CAAkB,CAAlB,CAAX,CA/L+C;AAAA,IAgM/C,IAAIsP,gBAAA,GACC,CAAAtN,MAAA,CAAOoI,IAAP,IAAe6D,QAAA,CAAS7D,IAAxB,IAAgC6E,OAAA,CAAQvO,MAAR,GAAiB,CAAjD,MACA2O,IAAA,KAAS,GAAT,IAAgBA,IAAA,KAAS,IAAzB,CADD,IACmCA,IAAA,KAAS,EAFhD,CAhM+C;AAAA;AAsM/C;AAAA,IAAIE,IAAAA,EAAA,GAAK,CAAT,CAtM+C;AAAA,IAuM/C,KAAK,IAAIlJ,CAAA,GAAI4I,OAAA,CAAQvO,MAAhB,EAAwB2F,CAAA,IAAK,CAAlC,EAAqCA,CAAA,EAArC,EAA0C;AAAA,QACxCgJ,IAAA,GAAOJ,OAAA,CAAQ5I,CAAR,CAAP,CADwC;AAAA,QAExC,IAAIgJ,IAAA,KAAS,GAAb,EAAkB;AAAA,YAChBJ,OAAA,CAAQlI,MAAR,CAAeV,CAAf,EAAkB,CAAlB,CADgB,CAAA;AAAA,SAAlB,MAEO,IAAIgJ,IAAA,KAAS,IAAb,EAAmB;AAAA,YACxBJ,OAAA,CAAQlI,MAAR,CAAeV,CAAf,EAAkB,CAAlB,CADwB,CAAA;AAAA,YAExBkJ,EAAA,EAFwB,CAAA;AAAA,SAAnB,MAGA,IAAIA,EAAJ,EAAQ;AAAA,YACbN,OAAA,CAAQlI,MAAR,CAAeV,CAAf,EAAkB,CAAlB,CADa,CAAA;AAAA,YAEbkJ,EAAA,EAFa,CAAA;AAAA,SAPyB;AAAA,KAvMK;AAAA;AAqN/C,IAAA,IAAI,CAACR,UAAD,IAAe,CAACC,aAApB,EAAmC;AAAA,QACjC,OAAOO,EAAA,EAAP,EAAaA,EAAb,EAAiB;AAAA,YACfN,OAAA,CAAQ1B,OAAR,CAAgB,IAAhB,CADe,CAAA;AAAA,SADgB;AAAA,KArNY;AAAA,IA2N/C,IAAIwB,UAAA,IAAcE,OAAA,CAAQ,CAAR,CAAe,KAAA,EAA7B,KACC,CAACA,OAAA,CAAQ,CAAR,CAAD,IAAeA,OAAA,CAAQ,CAAR,CAAA,CAAWlB,MAAX,CAAkB,CAAlB,CAAA,KAAyB,GAAxC,CADL,EACmD;AAAA,QACjDkB,OAAA,CAAQ1B,OAAR,CAAgB,EAAhB,CADiD,CAAA;AAAA,KA5NJ;AAAA,IAgO/C,IAAI+B,gBAAA,IAAqBL,OAAA,CAAQpN,IAAR,CAAa,GAAb,CAAA,CAAkBqH,MAAlB,CAAyB,CAAC,CAA1B,CAAA,KAAiC,GAA1D,EAAgE;AAAA,QAC9D+F,OAAA,CAAQ1N,IAAR,CAAa,EAAb,CAD8D,CAAA;AAAA,KAhOjB;AAAA,IAoO/C,IAAIiO,UAAA,GAAaP,OAAA,CAAQ,CAAR,CAAA,KAAe,EAAf,IACZA,OAAA,CAAQ,CAAR,CAAcA,IAAAA,OAAA,CAAQ,CAAR,CAAA,CAAWlB,MAAX,CAAkB,CAAlB,CAAyB,KAAA,GAD5C,CApO+C;AAAA;AAwO/C,IAAA,IAAImB,SAAJ,EAAe;AAAA,QACblN,MAAA,CAAOsI,QAAP,GAAkBtI,MAAA,CAAOoI,IAAP,GAAcoF,UAAA,GAAa,EAAb,GACAP,OAAA,CAAQvO,MAAR,GAAiBuO,OAAA,CAAQL,KAAR,EAAjB,GAAmC,EADnE,CADa;AAAA;AAMb;AAAA;AAAA,QAAIQ,IAAAA,UAAA,GAAapN,MAAA,CAAOoI,IAAP,IAAepI,MAAA,CAAOoI,IAAP,CAAYtB,OAAZ,CAAoB,GAApB,IAA2B,CAA1C,GACA9G,MAAA,CAAOoI,IAAP,CAAYtF,KAAZ,CAAkB,GAAlB,CADA,GACyB,KAD1C,CANa;AAAA,QAQb,IAAIsK,UAAJ,EAAgB;AAAA,YACdpN,MAAA,CAAOmI,IAAP,GAAciF,UAAA,CAAWR,KAAX,EAAd,CADc;AAAA,YAEd5M,MAAA,CAAOoI,IAAP,GAAcpI,MAAA,CAAOsI,QAAP,GAAkB8E,UAAA,CAAWR,KAAX,EAAhC,CAFc;AAAA,SARH;AAAA,KAxOgC;AAAA,IAsP/CG,UAAA,GAAaA,UAAA,IAAe/M,MAAA,CAAOoI,IAAP,IAAe6E,OAAA,CAAQvO,MAAnD,CAtP+C;AAAA,IAwP/C,IAAIqO,UAAA,IAAc,CAACS,UAAnB,EAA+B;AAAA,QAC7BP,OAAA,CAAQ1B,OAAR,CAAgB,EAAhB,CAD6B,CAAA;AAAA,KAxPgB;AAAA,IA4P/C,IAAI,CAAC0B,OAAA,CAAQvO,MAAb,EAAqB;AAAA,QACnBsB,MAAA,CAAO0I,QAAP,GAAkB,IAAlB,CADmB;AAAA,QAEnB1I,MAAA,CAAO2I,IAAP,GAAc,IAAd,CAFmB;AAAA,KAArB,MAGO;AAAA,QACL3I,MAAA,CAAO0I,QAAP,GAAkBuE,OAAA,CAAQpN,IAAR,CAAa,GAAb,CAAlB,CADK;AAAA,KA/PwC;AAAA;AAoQ/C,IAAA,IAAI,CAAC8H,IAAA,CAAK1B,MAAL,CAAYjG,MAAA,CAAO0I,QAAnB,CAAD,IAAiC,CAACf,IAAA,CAAK1B,MAAL,CAAYjG,MAAA,CAAOwI,MAAnB,CAAtC,EAAkE;AAAA,QAChExI,MAAA,CAAO2I,IAAP,GAAe,CAAA3I,MAAA,CAAO0I,QAAP,GAAkB1I,MAAA,CAAO0I,QAAzB,GAAoC,EAApC,KACA1I,MAAA,CAAOwI,MAAP,GAAgBxI,MAAA,CAAOwI,MAAvB,GAAgC,EAAhC,CADf,CADgE;AAAA,KApQnB;AAAA,IAwQ/CxI,MAAA,CAAOmI,IAAP,GAAc8D,QAAA,CAAS9D,IAAT,IAAiBnI,MAAA,CAAOmI,IAAtC,CAxQ+C;AAAA,IAyQ/CnI,MAAA,CAAOkI,OAAP,GAAiBlI,MAAA,CAAOkI,OAAP,IAAkB+D,QAAA,CAAS/D,OAA5C,CAzQ+C;AAAA,IA0Q/ClI,MAAA,CAAO4I,IAAP,GAAc5I,MAAA,CAAOC,MAAP,EAAd,CA1Q+C;AAAA,IA2Q/C,OAAOD,MAAP,CA3Q+C;AAAA,CAAjD,CAlcA;AAgtBAgI,GAAA,CAAI5B,SAAJ,CAAc0E,SAAd,GAA0B,YAAW;AAAA,IACnC,IAAI1C,IAAA,GAAO,IAAA,CAAKA,IAAhB,CADmC;AAAA,IAEnC,IAAIC,IAAA,GAAOS,WAAA,CAAY0B,IAAZ,CAAiBpC,IAAjB,CAAX,CAFmC;AAAA,IAGnC,IAAIC,IAAJ,EAAU;AAAA,QACRA,IAAA,GAAOA,IAAA,CAAK,CAAL,CAAP,CADQ;AAAA,QAER,IAAIA,IAAA,KAAS,GAAb,EAAkB;AAAA,YAChB,IAAA,CAAKA,IAAL,GAAYA,IAAA,CAAKnB,MAAL,CAAY,CAAZ,CAAZ,CADgB;AAAA,SAFV;AAAA,QAKRkB,IAAA,GAAOA,IAAA,CAAKlB,MAAL,CAAY,CAAZ,EAAekB,IAAA,CAAK1J,MAAL,GAAc2J,IAAA,CAAK3J,MAAlC,CAAP,CALQ;AAAA,KAHyB;AAAA,IAUnC,IAAI0J,IAAJ;AAAA,QAAU,IAAKE,CAAAA,QAAL,GAAgBF,IAAhB,CAVyB;AAAA,CAArC;;AC9sBA;AAUA,SAASqF,oBAAT,CAA8BC,YAA9B,EAAwE;AAAA,IACpE,KAAK,IAAIrJ,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIsJ,EAAA,CAAUC,MAAV,CAAiBlP,MAArC,EAA6C2F,CAAA,EAA7C,EAAkD;AAAA,QAC9C,KAAW3E,MAAAA,GAAX,IAAkBiO,EAAA,CAAUA,EAAA,CAAUC,MAAV,CAAiBvJ,CAAjB,CAAV,CAAlB,EAAkD;AAAA,YAC9C,IAAI3E,GAAA,KAAQgO,YAAZ;AAAA,gBAA0B,OAAQC,EAAA,CAAUA,EAAA,CAAUC,MAAV,CAAiBvJ,CAAjB,CAAV,CAAA,CAA+B3E,GAA/B,CAAR,CADoB;AAAA,SADJ;AAAA,KADkB;AAAA,IAMpE,KAAK,IAAI2E,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIsJ,EAAA,CAAUE,KAAV,CAAgBnP,MAApC,EAA4C2F,CAAA,EAA5C,EAAiD;AAAA,QAC7C,KAAW3E,MAAAA,GAAX,IAAkBiO,EAAA,CAAUA,EAAA,CAAUE,KAAV,CAAgBxJ,CAAhB,CAAV,CAAlB,EAAiD;AAAA,YAC7C,IAAI3E,GAAA,KAAQgO,YAAZ;AAAA,gBAA0B,OAAQC,EAAA,CAAUA,EAAA,CAAUE,KAAV,CAAgBxJ,CAAhB,CAAV,CAAA,CAA8B3E,GAA9B,CAAR,CADmB;AAAA,SADJ;AAAA,KANmB;AAAA,IAYpE,OAAQ,IAAR,CAZoE;AAAA,CAZxE;AA2BO,SAASoO,UAAT,CAAoB5N,KAApB,EAA+C6N,QAA/C,EAA2F;AAAA,IAC9F,WAAW/J,CAAX,IAAgB9D,KAAA,CAAM8N,OAAtB,EAA+B;AAAA,QAC3BD,QAAA,CAAS7N,KAAA,CAAM8N,OAAN,CAAchK,CAAd,CAAT,CAD2B,CAAA;AAAA,KAD+D;AAAA,CA3BlG;AAiCO,SAASiK,SAAT,CAAmB/N,KAAnB,EAA8C6N,QAA9C,EAAyF;AAAA,IAC5F,WAAWxN,KAAX,IAAoBL,KAAA,CAAMG,MAA1B,EAAkC;AAAA,QAC9B0N,QAAA,CAASxN,KAAT,CAD8B,CAAA;AAAA,KAD0D;AAAA,CAjChG;AA+CO,SAAS2N,YAAT,CACHhO,KADG,EAEHtC,OAFG,EAGHmQ,QAHG,EAIL;AAAA,IACE,SAASI,KAAT,CAAe5N,KAAf,EAAsB6N,YAAtB,EAAwD;AAAA,QACpD,MAAMC,UAAA,GAAc9N,KAAA,CAAM6N,YAAN,CAApB,CADoD;AAAA,QAEpD,IAAI,CAACC,UAAL;AAAA,YAAiB,OAFmC;AAAA,QAGpD5O,MAAA,CAAOD,IAAP,CAAY6O,UAAZ,CAAwBC,CAAAA,OAAxB,CAAiC5O,GAAD,IAAS;AAAA,YACrCqO,QAAA,CAAS;AAAA,gBACLpF,IAAA,EAAM;AAAA,oBAACpI,KAAA,CAAMgO,EAAP;AAAA,oBAAWH,YAAX;AAAA,oBAAyB1O,GAAzB;AAAA,iBADD;AAAA,gBAELA,GAFK;AAAA,gBAGLE,KAAA,EAAOyO,UAAA,CAAW3O,GAAX,CAHF;AAAA,gBAILK,SAAA,EAAW0N,oBAAA,CAAqB/N,GAArB,CAJN;AAAA,gBAKL8O,GAAA,CAAI5H,CAAJ,EAAO;AAAA,oBACHyH,UAAA,CAAW3O,GAAX,CAAA,GAAkBkH,CAAlB,CADG;AAAA,iBALF;AAAA,aAAT,CADqC,CAAA;AAAA,SAAzC,CAHoD,CAAA;AAAA,KAD1D;AAAA,IAiBEqH,SAAA,CAAU/N,KAAV,EAAkBK,KAAD,IAAW;AAAA,QACxB,IAAI3C,OAAA,CAAQiQ,KAAZ,EAAmB;AAAA,YACfM,KAAA,CAAM5N,KAAN,EAAa,OAAb,CADe,CAAA;AAAA,SADK;AAAA,QAIxB,IAAI3C,OAAA,CAAQgQ,MAAZ,EAAoB;AAAA,YAChBO,KAAA,CAAM5N,KAAN,EAAa,QAAb,CADgB,CAAA;AAAA,SAJI;AAAA,KAA5B,CAjBF,CAAA;AAAA;;AC/CF,SAASkO,UAAT,CAAoBlO,KAApB,EAA2BwN,QAA3B,EAAqC;AAAA,IACjC,KAAW/J,MAAAA,CAAX,IAAgBzD,KAAhB,EAAuB;AAAA,QACnB,IAAIyD,CAAA,CAAE8C,OAAF,CAAU,QAAV,CAAA,KAAwB,CAA5B,EAA+B;AAAA,YAC3BiH,QAAA,CAASxN,KAAA,CAAMyD,CAAN,CAAT,EAAmBA,CAAnB,CAD2B,CAAA;AAAA,SADZ;AAAA,KADU;AAAA,CAJrC;AAYA,SAAS0K,SAAT,CAAmBnO,KAAnB,EAA0BwN,QAA1B,EAAoC;AAAA,IAChC,KAAW/J,MAAAA,CAAX,IAAgBzD,KAAhB,EAAuB;AAAA,QACnB,IAAIyD,CAAA,CAAE8C,OAAF,CAAU,OAAV,CAAA,KAAuB,CAA3B,EAA8B;AAAA,YAC1BiH,QAAA,CAASxN,KAAA,CAAMyD,CAAN,CAAT,EAAmBA,CAAnB,CAD0B,CAAA;AAAA,SADX;AAAA,KADS;AAAA,CAZpC;AAoBA,SAAS2K,eAAT,CAAyBzO,KAAzB,EAAgCN,KAAhC,EAAuC;AAAA,IACnC,IAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAA,CAAM,CAAN,CAAa,KAAA,GAA9C,EAAmD;AAAA,QAC/C,OAAO+O,eAAA,CAAgBzO,KAAhB,EAAuBA,KAAA,CAAM0O,SAAN,CAAgBhP,KAAhB,CAAvB,CAAP,CAD+C;AAAA,KAAnD,MAEO;AAAA,QACH,OAAOA,KAAP,CADG;AAAA,KAH4B;AAAA,CApBvC;AA4BA,SAASiP,YAAT,CAAoBjP,KAApB,EAA2B;AAAA,IACvB,OAAOP,KAAA,CAAMC,OAAN,CAAcM,KAAA,CAAMkP,KAApB,CAAP,CADuB;AAAA,CA5B3B;AAgCA,SAASC,cAAT,CAAwB1Q,GAAxB,EAA6B2Q,IAA7B,EAAmCC,EAAnC,EAAuC;AAAA,IACnC5Q,GAAA,CAAI4Q,EAAJ,CAAA,GAAU5Q,GAAA,CAAI2Q,IAAJ,CAAV,CADmC;AAAA,IACd,OAAO3Q,GAAA,CAAI2Q,IAAJ,CAAP,CADc;AAAA,CAhCvC;AAoCe,oBAAA,EAAS9O,KAAT,EAAgB;AAAA,IAC3BA,KAAA,CAAMgP,OAAN,GAAgB,CAAhB,CAD2B;AAAA;AAI3B,IAAApB,UAAA,CAAW5N,KAAX,EAAmB8L,MAAD,IAAY;AAAA,QAC1B,IAAIA,MAAA,CAAOxJ,IAAP,KAAgB,OAAhB,IAA2BwJ,MAAA,CAAOpC,GAAP,KAAe7L,SAA9C,EAAyD;AAAA,YACrDgR,cAAA,CAAe/C,MAAf,EAAuB,KAAvB,EAA8B,MAA9B,CADqD,CAAA;AAAA,SAD/B;AAAA,QAI1B,IAAIA,MAAA,CAAOxJ,IAAP,KAAgB,OAApB,EAA6B;AAAA,YACzBwJ,MAAA,CAAOmD,WAAP,CAAmBb,OAAnB,CAA4Bc,KAAD,IAAW;AAAA,gBAClC,OAAOA,KAAA,CAAMC,OAAN,EAAP,CADkC;AAAA,aAAtC,CADyB,CAAA;AAAA,SAJH;AAAA,KAA9B,CAJ2B,CAAA;AAAA,IAe3BpB,SAAA,CAAU/N,KAAV,EAAkBK,KAAD,IAAW;AAAA,QACxBkO,UAAA,CAAWlO,KAAX,EAAmBqN,MAAD,IAAY;AAAA,YAC1B,IAAIA,MAAA,CAAO,qBAAP,CAAA,KAAkC7P,SAAtC,EAAiD;AAAA,gBAC7CgR,cAAA,CAAenB,MAAf,EAAuB,qBAAvB,EAA8C,gBAA9C,CAD6C,CAAA;AAAA,aADvB;AAAA,SAA9B,CADwB,CAAA;AAAA,QAOxBc,SAAA,CAAUnO,KAAV,EAAkBsN,KAAD,IAAW;AAAA,YACxB,IAAIA,KAAA,CAAM,kBAAN,CAAA,KAA8B9P,SAAlC,EAA6C;AAAA,gBACzCgR,cAAA,CAAelB,KAAf,EAAsB,kBAAtB,EAA0C,oBAA1C,CADyC,CAAA;AAAA,aADrB;AAAA,YAIxB,IAAIA,KAAA,CAAM,YAAN,CAAA,KAAwB9P,SAA5B,EAAuC;AAAA,gBACnCgR,cAAA,CAAelB,KAAf,EAAsB,YAAtB,EAAoC,cAApC,CADmC,CAAA;AAAA,aAJf;AAAA,YAOxB,IAAIA,KAAA,CAAM,YAAN,CAAA,KAAwB9P,SAA5B,EAAuC;AAAA,gBACnCgR,cAAA,CAAelB,KAAf,EAAsB,YAAtB,EAAoC,cAApC,CADmC,CAAA;AAAA,aAPf;AAAA,SAA5B,CAPwB,CAAA;AAAA,KAA5B,CAf2B,CAAA;AAAA;AAoC3B,IAAAK,YAAA,CAAahO,KAAb,EAAoB;AAAA,QAAC2N,KAAA,EAAO,IAAR;AAAA,QAAcD,MAAA,EAAQ,IAAtB;AAAA,KAApB,EAAkD0B,QAAD,IAAc;AAAA,QAC3D,MAAM1P,KAAA,GAAQ+O,eAAA,CAAgBzO,KAAhB,EAAuBoP,QAAA,CAAS1P,KAAhC,CAAd,CAD2D;AAAA,QAG3D,IAAIiP,YAAA,CAAWjP,KAAX,CAAJ,EAAuB;AAAA,YACnBA,KAAA,CAAMkP,KAAN,CAAYR,OAAZ,CAAqBiB,IAAD,IAAU;AAAA,gBAC1BA,IAAA,CAAK,CAAL,CAAA,GAAUZ,eAAA,CAAgBzO,KAAhB,EAAuBqP,IAAA,CAAK,CAAL,CAAvB,CAAV,CAD0B;AAAA,aAA9B,CADmB,CAAA;AAAA,SAHoC;AAAA,QAS3DD,QAAA,CAASd,GAAT,CAAa5O,KAAb,CAT2D,CAAA;AAAA,KAA/D,CApC2B,CAAA;AAAA,IA+C3B,OAAOM,KAAA,CAAM0O,SAAb,CA/C2B;AAAA,IAiD3BX,SAAA,CAAU/N,KAAV,EAAkBK,KAAD,IAAW;AAAA;AAKxB;AAAA;AAAA,QAAAkO,UAAA,CAAWlO,KAAX,EAAmBqN,MAAD,IAAY;AAAA,YAC1B,OAAOA,MAAA,CAAO,eAAP,CAAP,CAD0B;AAAA,YAE1B,OAAOA,MAAA,CAAO,eAAP,CAAP,CAF0B;AAAA,SAA9B,CALwB,CAAA;AAAA,QAUxBc,SAAA,CAAUnO,KAAV,EAAkBsN,KAAD,IAAW;AAAA,YACxB,IAAIA,KAAA,CAAM,WAAN,CAAJ,EAAwB;AAAA,gBACpB,IAAI,CAACtN,KAAA,CAAMqN,MAAX;AAAA,oBAAmBrN,KAAA,CAAMqN,MAAN,GAAe,EAAf,CADC;AAAA,gBAEpBrN,KAAA,CAAMqN,MAAN,CAAa,WAAb,IAA4BC,KAAA,CAAM,WAAN,CAA5B,CAFoB;AAAA,gBAGpB,OAAOA,KAAA,CAAM,WAAN,CAAP,CAHoB;AAAA,aADA;AAAA,YAOxB,IAAIA,KAAA,CAAM,WAAN,CAAJ,EAAwB;AAAA,gBACpB,IAAI,CAACtN,KAAA,CAAMqN,MAAX;AAAA,oBAAmBrN,KAAA,CAAMqN,MAAN,GAAe,EAAf,CADC;AAAA,gBAEpBrN,KAAA,CAAMqN,MAAN,CAAa,WAAb,IAA4BC,KAAA,CAAM,WAAN,CAA5B,CAFoB;AAAA,gBAGpB,OAAOA,KAAA,CAAM,WAAN,CAAP,CAHoB;AAAA,aAPA;AAAA,SAA5B,CAVwB,CAAA;AAAA,KAA5B,CAjD2B,CAAA;AAAA,IA0E3B,SAAS2B,mBAAT,CAA6BtL,KAA7B,EAAoC;AAAA,QAChC,MAAMuL,WAAA,GAAcC,GAAA,CAAI3Q,KAAJ,CAAUmF,KAAV,CAApB,CADgC;AAAA,QAEhC,MAAMyL,kBAAA,GAAqBF,WAAA,CAAY/G,QAAZ,CAAqB5F,KAArB,CAA2B,GAA3B,CAA3B,CAFgC;AAAA,QAIhC,IAAI2M,WAAA,CAAYxH,QAAZ,KAAyB,SAA7B,EAAwC;AAAA,YACpC,OAAO/D,KAAP,CADoC;AAAA,SAAxC,MAGO,IAAIuL,WAAA,CAAYnH,QAAZ,KAAyB,WAA7B,EAA0C;AAAA,YAC7CsH,MAAA,CAAOC,SAAA,CAAUJ,WAAA,CAAY/G,QAAtB,CAAoC,KAAA,0BAA3C,CAD6C,CAAA;AAAA,YAE7C,OAAO,+CAAP,CAF6C;AAAA,SAA1C,MAIA,IAAI+G,WAAA,CAAYnH,QAAZ,KAAyB,OAA7B,EAAsC;AAAA,YACzCsH,MAAA,CAAOD,kBAAA,CAAmB,CAAnB,CAAA,KAA0B,IAAjC,CADyC,CAAA;AAAA,YAEzCC,MAAA,CAAOC,SAAA,CAAUF,kBAAA,CAAmB,CAAnB,CAAV,CAAqC,KAAA,aAA5C,CAFyC,CAAA;AAAA,YAGzCC,MAAA,CAAOC,SAAA,CAAUF,kBAAA,CAAmB,CAAnB,CAAV,CAAqC,KAAA,aAA5C,CAHyC,CAAA;AAAA,YAIzC,OAAO,CAAC,eAAD,GAAkBA,kBAAA,CAAmB,CAAnB,CAAlB,EAAwC,wBAAxC,CAAP,CAJyC;AAAA,SAAtC,MAMA;AAAA,YACHC,MAAA,CAAO,KAAP,CADG,CAAA;AAAA,SAjByB;AAAA,QAqBhC,SAASA,MAAT,CAAgBE,SAAhB,EAA2B;AAAA,YACvB,IAAI,CAACA,SAAL,EAAgB;AAAA,gBACZ,MAAM,IAAIC,KAAJ,CAAU,CAAC,mBAAD,GAAsB7L,KAAtB,EAA4B,CAA5B,CAAV,CAAN,CADY;AAAA,aADO;AAAA,SArBK;AAAA,KA1ET;AAAA,IAsG3B,IAAIhE,KAAA,CAAM8P,MAAV,EAAkB;AAAA,QACd9P,KAAA,CAAM8P,MAAN,GAAeR,mBAAA,CAAoBtP,KAAA,CAAM8P,MAA1B,CAAf,CADc;AAAA,KAtGS;AAAA,IA0G3B,SAASC,gBAAT,CAA0BC,IAA1B,EAAgC;AAAA,QAC5B,SAASC,YAAT,CAAsB1R,MAAtB,EAA8B;AAAA,YAC1B,OAAOA,MAAA,CAAOqE,KAAP,CAAa,GAAb,CAAkBxC,CAAAA,GAAlB,CAAuBwL,CAAD,IAAO;AAAA,gBAChC,OAAOA,CAAA,CAAExB,IAAF,EAAP,CADgC;AAAA,aAA7B,CAAP,CAD0B;AAAA,SADF;AAAA,QAO5B,IAAIjL,KAAA,CAAMC,OAAN,CAAc4Q,IAAd,CAAJ,EAAyB;AAAA;AAErB,YAAA,OAAOA,IAAP,CAFqB;AAAA,SAAzB,MAIO,IAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAAA,YACjC,OAAOC,YAAA,CAAaD,IAAb,CAAP,CADiC;AAAA,SAA9B,MAGA,IAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAAA,YACjCA,IAAA,CAAKpB,KAAL,CAAWR,OAAX,CAAoBiB,IAAD,IAAU;AAAA,gBACzBA,IAAA,CAAK,CAAL,CAAUY,GAAAA,YAAA,CAAaZ,IAAA,CAAK,CAAL,CAAb,CAAV,CADyB;AAAA,aAA7B,CADiC,CAAA;AAAA,YAIjC,OAAOW,IAAP,CAJiC;AAAA,SAA9B,MAMA;AAAA,YACH,MAAM,IAAIH,KAAJ,CAAU,uBAAV,CAAN,CADG;AAAA,SApBqB;AAAA,KA1GL;AAAA,IAmI3B9B,SAAA,CAAU/N,KAAV,EAAkBK,KAAD,IAAW;AAAA,QACxBkO,UAAA,CAAWlO,KAAX,EAAmBqN,MAAD,IAAY;AAAA,YAC1B,IAAIA,MAAA,CAAO,WAAP,CAAJ,EAAyB;AAAA,gBACrBA,MAAA,CAAO,WAAP,CAAsBqC,GAAAA,gBAAA,CAAiBrC,MAAA,CAAO,WAAP,CAAjB,CAAtB,CADqB;AAAA,aADC;AAAA,SAA9B,CADwB,CAAA;AAAA,KAA5B,CAnI2B,CAAA;AAAA;AAwJ3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAIwC,IAAAA,gBAAA,GAAmB,CAAvB,CAxJ2B;AAAA,IAyJ3B,KAAK,IAAI/L,CAAA,GAAInE,KAAA,CAAMG,MAAN,CAAa3B,MAAb,GAAsB,CAA9B,EAAiC2F,CAAA,IAAK,CAA3C,EAA8CA,CAAA,EAA9C,EAAmD;AAAA,QAC/C,MAAM9D,KAAA,GAAQL,KAAA,CAAMG,MAAN,CAAagE,CAAb,CAAd,CAD+C;AAAA,QAE/C,IAAI9D,KAAA,CAAMiC,IAAN,KAAe,QAAnB,EAA6B;AAAA,YACzB4N,gBAAA,GAAmB/L,CAAA,GAAI,CAAvB,CADyB;AAAA,YAEzB,MAFyB;AAAA,SAFkB;AAAA,KAzJxB;AAAA,IAiK3B,MAAMgM,YAAA,GAAenQ,KAAA,CAAMG,MAAN,CAAa0E,MAAb,CAAoBqL,gBAApB,CAArB,CAjK2B;AAAA,IAkK3BC,YAAA,CAAahB,OAAb,EAlK2B,CAAA;AAAA,IAmK3BnP,KAAA,CAAMG,MAAN,GAAeH,KAAA,CAAMG,MAAN,CAAa6I,MAAb,CAAoBmH,YAApB,CAAf,CAnK2B;AAAA,IAqK3B,OAAOnQ,KAAP,CArK2B;AAAA;;AClC/B;AAAe,eAAUgD,EAAAA,MAAV,EAAuB,GAAA,MAAvB,EAAmD;AAAA,IAC9D,KAAWgB,MAAAA,KAAX,IAAoBoM,MAApB,EAA4B;AAAA,QACxB,KAAWtM,MAAAA,CAAX,IAAgBE,KAAhB,EAAuB;AAAA,YACnBhB,MAAA,CAAOc,CAAP,CAAA,GAAYE,KAAA,CAAMF,CAAN,CAAZ,CADmB;AAAA,SADC;AAAA,KADkC;AAAA,IAM9D,OAAOd,MAAP,CAN8D;AAAA;;ACAlE;AAAA,MAAMqN,cAAN,SAA2BR,KAA3B,CAAiC;AAAA,IAG7BS,WAAA,CAAY9Q,GAAZ,EAAyB+Q,OAAzB,EAA0C;AAAA,QACtC,KAAA,CAAMA,OAAN,CADsC,CAAA;AAAA,QAEtC,IAAKA,CAAAA,OAAL,GAAeA,OAAf,CAFsC;AAAA,QAGtC,IAAK/Q,CAAAA,GAAL,GAAWA,GAAX,CAHsC;AAAA,KAHb;AAAA,CAFjC;AAYA,qBAAA6Q,cAAA;;ACJA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAMG,KAAN,CAAY;AAAA,IAGRF,WAAA,CAAYG,MAAZ,EAA4BC,QAAA,GAAwC,EAApE,EAAwE;AAAA,QACpE,IAAKD,CAAAA,MAAL,GAAcA,MAAd,CADoE;AAAA,QAEpE,IAAKC,CAAAA,QAAL,GAAgB,EAAhB,CAFoE;AAAA,QAGpE,KAAA,MAAW,CAACtJ,IAAD,EAAOuJ,UAAP,CAAX,IAAiCD,QAAjC,EAA2C;AAAA,YACvC,KAAKA,QAAL,CAActJ,IAAd,CAAA,GAAsBuJ,UAAtB,CADuC;AAAA,SAHyB;AAAA,KAHhE;AAAA,IAWR3H,MAAA,CAAO0H,QAAP,EAAqD;AAAA,QACjD,OAAO,IAAIF,KAAJ,CAAU,IAAV,EAAgBE,QAAhB,CAAP,CADiD;AAAA,KAX7C;AAAA,IAeRE,GAAA,CAAIxJ,IAAJ,EAA8B;AAAA,QAC1B,IAAI,IAAKsJ,CAAAA,QAAL,CAActJ,IAAd,CAAJ,EAAyB;AAAA,YAAE,OAAO,IAAKsJ,CAAAA,QAAL,CAActJ,IAAd,CAAP,CAAF;AAAA,SADC;AAAA,QAE1B,IAAI,IAAKqJ,CAAAA,MAAT,EAAiB;AAAA,YAAE,OAAO,KAAKA,MAAL,CAAYG,GAAZ,CAAgBxJ,IAAhB,CAAP,CAAF;AAAA,SAFS;AAAA,QAG1B,MAAM,IAAIyI,KAAJ,CAAU,CAAA,GAAGzI,IAAH,EAAQ,oBAAR,CAAV,CAAN,CAH0B;AAAA,KAftB;AAAA,IAqBRyJ,GAAA,CAAIzJ,IAAJ,EAA2B;AAAA,QACvB,IAAI,IAAA,CAAKsJ,QAAL,CAActJ,IAAd,CAAJ;AAAA,YAAyB,OAAO,IAAP,CADF;AAAA,QAEvB,OAAO,IAAA,CAAKqJ,MAAL,GAAc,IAAKA,CAAAA,MAAL,CAAYI,GAAZ,CAAgBzJ,IAAhB,CAAd,GAAsC,KAA7C,CAFuB;AAAA,KArBnB;AAAA,CARZ;AAmCA,cAAA,KAAA;;ACGA;AAAO,MAAM0J,QAAA,GAAW,EAACC,IAAA,EAAM,MAAP,EAAjB,CAtCP;AAuCO,MAAMC,UAAA,GAAa,EAACD,IAAA,EAAM,QAAP,EAAnB,CAvCP;AAwCO,MAAME,UAAA,GAAa,EAACF,IAAA,EAAM,QAAP,EAAnB,CAxCP;AAyCO,MAAMG,WAAA,GAAc,EAACH,IAAA,EAAM,SAAP,EAApB,CAzCP;AA0CO,MAAMI,SAAA,GAAY,EAACJ,IAAA,EAAM,OAAP,EAAlB,CA1CP;AA2CO,MAAMK,UAAA,GAAa,EAACL,IAAA,EAAM,QAAP,EAAnB,CA3CP;AA4CO,MAAMM,SAAA,GAAY,EAACN,IAAA,EAAM,OAAP,EAAlB,CA5CP;AA6CO,MAAMO,SAAA,GAAY,EAACP,IAAA,EAAM,OAAP,EAAlB,CA7CP;AA8CO,MAAMQ,YAAA,GAAe,EAACR,IAAA,EAAM,UAAP,EAArB,CA9CP;AA+CO,MAAMS,aAAA,GAAgB,EAACT,IAAA,EAAM,WAAP,EAAtB,CA/CP;AAgDO,MAAMU,iBAAA,GAAoB,EAACV,IAAA,EAAM,eAAP,EAA1B,CAhDP;AAkDO,SAASvO,OAAT,CAAekP,QAAf,EAA+BC,CAA/B,EAAsD;AAAA,IACzD,OAAO;AAAA,QACHZ,IAAA,EAAM,OADH;AAAA,QAEHW,QAFG;AAAA,QAGHC,CAHG;AAAA,KAAP,CADyD;AAAA,CAlD7D;AA0DO,SAASC,UAAT,CAAkBtP,IAAlB,EAAsC;AAAA,IACzC,IAAIA,IAAA,CAAKyO,IAAL,KAAc,OAAlB,EAA2B;AAAA,QACvB,MAAMW,QAAA,GAAWE,UAAA,CAAStP,IAAA,CAAKoP,QAAd,CAAjB,CADuB;AAAA,QAEvB,OAAO,OAAOpP,IAAA,CAAKqP,CAAZ,KAAkB,QAAlB,GACH,CAAC,MAAD,GAASD,QAAT,EAAkB,EAAlB,GAAsBpP,IAAA,CAAKqP,CAA3B,EAA6B,CAA7B,CADG,GAEHrP,IAAA,CAAKoP,QAAL,CAAcX,IAAd,KAAuB,OAAvB,GAAiC,OAAjC,GAA2C,CAAC,MAAD,GAASW,QAAT,EAAkB,CAAlB,CAF/C,CAFuB;AAAA,KAA3B,MAKO;AAAA,QACH,OAAOpP,IAAA,CAAKyO,IAAZ,CADG;AAAA,KANkC;AAAA,CA1D7C;AAqEA,MAAMc,gBAAA,GAAmB;AAAA,IACrBf,QADqB;AAAA,IAErBE,UAFqB;AAAA,IAGrBC,UAHqB;AAAA,IAIrBC,WAJqB;AAAA,IAKrBC,SALqB;AAAA,IAMrBK,aANqB;AAAA,IAOrBJ,UAPqB;AAAA,IAQrB5O,OAAA,CAAM6O,SAAN,CARqB;AAAA,IASrBI,iBATqB;AAAA,CAAzB,CArEA;AAsFA;AAAA;AAAA;AAAA;AAAA;AAAO,SAASK,YAAT,CAAsBC,QAAtB,EAAsCrN,CAAtC,EAAwD;AAAA,IAC3D,IAAIA,CAAA,CAAEqM,IAAF,KAAW,OAAf,EAAwB;AAAA;AAEpB,QAAA,OAAO,IAAP,CAFoB;AAAA,KAAxB,MAGO,IAAIgB,QAAA,CAAShB,IAAT,KAAkB,OAAtB,EAA+B;AAAA,QAClC,IAAIrM,CAAA,CAAEqM,IAAF,KAAW,OAAX,KACErM,CAAA,CAAEiN,CAAF,KAAQ,CAAR,IAAajN,CAAA,CAAEgN,QAAF,CAAWX,IAAX,KAAoB,OAAlC,IAA8C,CAACe,YAAA,CAAaC,QAAA,CAASL,QAAtB,EAAgChN,CAAA,CAAEgN,QAAlC,CAA/C,CADD,KAEC,OAAOK,QAAA,CAASJ,CAAhB,KAAsB,QAAtB,IAAkCI,QAAA,CAASJ,CAAT,KAAejN,CAAA,CAAEiN,CAAnD,CAFL,EAE4D;AAAA,YACxD,OAAO,IAAP,CADwD;AAAA,SAH1B;AAAA,KAA/B,MAMA,IAAII,QAAA,CAAShB,IAAT,KAAkBrM,CAAA,CAAEqM,IAAxB,EAA8B;AAAA,QACjC,OAAO,IAAP,CADiC;AAAA,KAA9B,MAEA,IAAIgB,QAAA,CAAShB,IAAT,KAAkB,OAAtB,EAA+B;AAAA,QAClC,KAAWiB,MAAAA,UAAX,IAAyBH,gBAAzB,EAA2C;AAAA,YACvC,IAAI,CAACC,YAAA,CAAaE,UAAb,EAAyBtN,CAAzB,CAAL,EAAkC;AAAA,gBAC9B,OAAO,IAAP,CAD8B;AAAA,aADK;AAAA,SADT;AAAA,KAZqB;AAAA,IAoB3D,OAAO,CAAC,SAAD,GAAYkN,UAAA,CAASG,QAAT,CAAZ,EAA+B,WAA/B,GAA4CH,UAAA,CAASlN,CAAT,CAA5C,EAAwD,SAAxD,CAAP,CApB2D;AAAA,CAtF/D;AA6GO,SAASuN,WAAT,CAAqBC,QAArB,EAAqCC,YAArC,EAAyE;AAAA,IAC5E,OAAOA,YAAA,CAAaC,IAAb,CAAkB1N,CAAA,IAAKA,CAAA,CAAEqM,IAAF,KAAWmB,QAAA,CAASnB,IAA3C,CAAP,CAD4E;AAAA,CA7GhF;AAiHO,SAASsB,iBAAT,CAA2BH,QAA3B,EAA0CC,YAA1C,EAAoF;AAAA,IACvF,OAAOA,YAAA,CAAaC,IAAb,CAAkB1N,CAAA,IAAK;AAAA,QAC1B,IAAIA,CAAA,KAAM,MAAV,EAAkB;AAAA,YACd,OAAOwN,QAAA,KAAa,IAApB,CADc;AAAA,SAAlB,MAEO,IAAIxN,CAAA,KAAM,OAAV,EAAmB;AAAA,YACtB,OAAOvF,KAAA,CAAMC,OAAN,CAAc8S,QAAd,CAAP,CADsB;AAAA,SAAnB,MAEA,IAAIxN,CAAA,KAAM,QAAV,EAAoB;AAAA,YACvB,OAAOwN,QAAA,IAAY,CAAC/S,KAAA,CAAMC,OAAN,CAAc8S,QAAd,CAAb,IAAwC,OAAOA,QAAP,KAAoB,QAAnE,CADuB;AAAA,SAApB,MAEA;AAAA,YACH,OAAOxN,CAAA,KAAM,OAAOwN,QAApB,CADG;AAAA,SAPmB;AAAA,KAAvB,CAAP,CADuF;AAAA;;;;;AC1F3F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAII,cAAA,GAAiB;AAAA,IACnB,aAAe,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,CAAH;AAAA,QAAK,CAAL;AAAA,QAAO,CAAP;AAAA,KADI;AAAA,IACO,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KADpB;AAAA,IAEnB,cAAgB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAFG;AAAA,IAEc,MAAQ,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,GAAH;AAAA,QAAO,GAAP;AAAA,QAAW,CAAX;AAAA,KAFtB;AAAA,IAGnB,YAAc,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAHK;AAAA,IAGY,OAAS,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAHrB;AAAA,IAInB,OAAS,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAJU;AAAA,IAIO,QAAU,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAJjB;AAAA,IAKnB,OAAS,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,CAAH;AAAA,QAAK,CAAL;AAAA,QAAO,CAAP;AAAA,KALU;AAAA,IAKC,gBAAkB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KALnB;AAAA,IAMnB,MAAQ,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,CAAH;AAAA,QAAK,GAAL;AAAA,QAAS,CAAT;AAAA,KANW;AAAA,IAME,YAAc,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,EAAL;AAAA,QAAQ,GAAR;AAAA,QAAY,CAAZ;AAAA,KANhB;AAAA,IAOnB,OAAS,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,EAAL;AAAA,QAAQ,EAAR;AAAA,QAAW,CAAX;AAAA,KAPU;AAAA,IAOK,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAPlB;AAAA,IAQnB,WAAa,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,GAAJ;AAAA,QAAQ,GAAR;AAAA,QAAY,CAAZ;AAAA,KARM;AAAA,IAQU,YAAc,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,CAAT;AAAA,QAAW,CAAX;AAAA,KARxB;AAAA,IASnB,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,EAAT;AAAA,QAAY,CAAZ;AAAA,KATM;AAAA,IASU,OAAS,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,EAAT;AAAA,QAAY,CAAZ;AAAA,KATnB;AAAA,IAUnB,gBAAkB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAVC;AAAA,IAUgB,UAAY,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAV5B;AAAA,IAWnB,SAAW,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,EAAL;AAAA,QAAQ,EAAR;AAAA,QAAW,CAAX;AAAA,KAXQ;AAAA,IAWO,MAAQ,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,GAAH;AAAA,QAAO,GAAP;AAAA,QAAW,CAAX;AAAA,KAXf;AAAA,IAYnB,UAAY,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,CAAH;AAAA,QAAK,GAAL;AAAA,QAAS,CAAT;AAAA,KAZO;AAAA,IAYM,UAAY,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,GAAH;AAAA,QAAO,GAAP;AAAA,QAAW,CAAX;AAAA,KAZlB;AAAA,IAanB,eAAiB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,EAAT;AAAA,QAAY,CAAZ;AAAA,KAbE;AAAA,IAac,UAAY,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAb1B;AAAA,IAcnB,WAAa,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,GAAH;AAAA,QAAO,CAAP;AAAA,QAAS,CAAT;AAAA,KAdM;AAAA,IAcO,UAAY,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAdnB;AAAA,IAenB,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAfM;AAAA,IAeW,aAAe,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,CAAL;AAAA,QAAO,GAAP;AAAA,QAAW,CAAX;AAAA,KAf1B;AAAA,IAgBnB,gBAAkB,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,GAAJ;AAAA,QAAQ,EAAR;AAAA,QAAW,CAAX;AAAA,KAhBC;AAAA,IAgBc,YAAc,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,CAAT;AAAA,QAAW,CAAX;AAAA,KAhB5B;AAAA,IAiBnB,YAAc,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,EAAL;AAAA,QAAQ,GAAR;AAAA,QAAY,CAAZ;AAAA,KAjBK;AAAA,IAiBW,SAAW,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,CAAL;AAAA,QAAO,CAAP;AAAA,QAAS,CAAT;AAAA,KAjBtB;AAAA,IAkBnB,YAAc,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAlBK;AAAA,IAkBY,cAAgB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAlB5B;AAAA,IAmBnB,eAAiB,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,EAAJ;AAAA,QAAO,GAAP;AAAA,QAAW,CAAX;AAAA,KAnBE;AAAA,IAmBa,eAAiB,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,EAAJ;AAAA,QAAO,EAAP;AAAA,QAAU,CAAV;AAAA,KAnB9B;AAAA,IAoBnB,eAAiB,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,EAAJ;AAAA,QAAO,EAAP;AAAA,QAAU,CAAV;AAAA,KApBE;AAAA,IAoBY,eAAiB,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,GAAH;AAAA,QAAO,GAAP;AAAA,QAAW,CAAX;AAAA,KApB7B;AAAA,IAqBnB,YAAc,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,CAAL;AAAA,QAAO,GAAP;AAAA,QAAW,CAAX;AAAA,KArBK;AAAA,IAqBU,UAAY,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,EAAL;AAAA,QAAQ,GAAR;AAAA,QAAY,CAAZ;AAAA,KArBtB;AAAA,IAsBnB,aAAe,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,GAAH;AAAA,QAAO,GAAP;AAAA,QAAW,CAAX;AAAA,KAtBI;AAAA,IAsBW,SAAW,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAtBtB;AAAA,IAuBnB,SAAW,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAvBQ;AAAA,IAuBS,YAAc,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,GAAJ;AAAA,QAAQ,GAAR;AAAA,QAAY,CAAZ;AAAA,KAvBvB;AAAA,IAwBnB,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,EAAL;AAAA,QAAQ,EAAR;AAAA,QAAW,CAAX;AAAA,KAxBM;AAAA,IAwBS,aAAe,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAxBxB;AAAA,IAyBnB,aAAe,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,GAAJ;AAAA,QAAQ,EAAR;AAAA,QAAW,CAAX;AAAA,KAzBI;AAAA,IAyBW,SAAW,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,CAAL;AAAA,QAAO,GAAP;AAAA,QAAW,CAAX;AAAA,KAzBtB;AAAA,IA0BnB,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA1BM;AAAA,IA0BW,YAAc,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA1BzB;AAAA,IA2BnB,MAAQ,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,CAAT;AAAA,QAAW,CAAX;AAAA,KA3BW;AAAA,IA2BI,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,EAAT;AAAA,QAAY,CAAZ;AAAA,KA3BjB;AAAA,IA4BnB,MAAQ,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA5BW;AAAA,IA4BM,OAAS,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,GAAH;AAAA,QAAO,CAAP;AAAA,QAAS,CAAT;AAAA,KA5Bf;AAAA,IA6BnB,aAAe,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,EAAT;AAAA,QAAY,CAAZ;AAAA,KA7BI;AAAA,IA6BY,MAAQ,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA7BpB;AAAA,IA8BnB,UAAY,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA9BO;AAAA,IA8BU,SAAW,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA9BrB;AAAA,IA+BnB,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,EAAL;AAAA,QAAQ,EAAR;AAAA,QAAW,CAAX;AAAA,KA/BM;AAAA,IA+BS,QAAU,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,CAAJ;AAAA,QAAM,GAAN;AAAA,QAAU,CAAV;AAAA,KA/BnB;AAAA,IAgCnB,OAAS,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAhCU;AAAA,IAgCO,OAAS,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAhChB;AAAA,IAiCnB,UAAY,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAjCO;AAAA,IAiCU,eAAiB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAjC3B;AAAA,IAkCnB,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,CAAT;AAAA,QAAW,CAAX;AAAA,KAlCM;AAAA,IAkCS,cAAgB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAlCzB;AAAA,IAmCnB,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAnCM;AAAA,IAmCW,YAAc,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAnCzB;AAAA,IAoCnB,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KApCM;AAAA,IAoCW,sBAAwB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KApCnC;AAAA,IAqCnB,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KArCM;AAAA,IAqCW,YAAc,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KArCzB;AAAA,IAsCnB,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAtCM;AAAA,IAsCW,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAtCxB;AAAA,IAuCnB,aAAe,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAvCI;AAAA,IAuCa,eAAiB,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,GAAJ;AAAA,QAAQ,GAAR;AAAA,QAAY,CAAZ;AAAA,KAvC9B;AAAA,IAwCnB,cAAgB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAxCG;AAAA,IAwCc,gBAAkB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAxChC;AAAA,IAyCnB,gBAAkB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAzCC;AAAA,IAyCgB,gBAAkB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAzClC;AAAA,IA0CnB,aAAe,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA1CI;AAAA,IA0Ca,MAAQ,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,GAAH;AAAA,QAAO,CAAP;AAAA,QAAS,CAAT;AAAA,KA1CrB;AAAA,IA2CnB,WAAa,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,GAAJ;AAAA,QAAQ,EAAR;AAAA,QAAW,CAAX;AAAA,KA3CM;AAAA,IA2CS,OAAS,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA3ClB;AAAA,IA4CnB,SAAW,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,CAAL;AAAA,QAAO,GAAP;AAAA,QAAW,CAAX;AAAA,KA5CQ;AAAA,IA4CO,QAAU,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,CAAL;AAAA,QAAO,CAAP;AAAA,QAAS,CAAT;AAAA,KA5CjB;AAAA,IA6CnB,kBAAoB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA7CD;AAAA,IA6CkB,YAAc,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,CAAH;AAAA,QAAK,GAAL;AAAA,QAAS,CAAT;AAAA,KA7ChC;AAAA,IA8CnB,cAAgB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,EAAL;AAAA,QAAQ,GAAR;AAAA,QAAY,CAAZ;AAAA,KA9CG;AAAA,IA8Ca,cAAgB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA9C7B;AAAA,IA+CnB,gBAAkB,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,GAAJ;AAAA,QAAQ,GAAR;AAAA,QAAY,CAAZ;AAAA,KA/CC;AAAA,IA+Ce,iBAAmB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA/ClC;AAAA,IAgDnB,mBAAqB,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,GAAH;AAAA,QAAO,GAAP;AAAA,QAAW,CAAX;AAAA,KAhDF;AAAA,IAgDiB,iBAAmB,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,GAAJ;AAAA,QAAQ,GAAR;AAAA,QAAY,CAAZ;AAAA,KAhDpC;AAAA,IAiDnB,iBAAmB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,EAAL;AAAA,QAAQ,GAAR;AAAA,QAAY,CAAZ;AAAA,KAjDA;AAAA,IAiDgB,cAAgB,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,EAAJ;AAAA,QAAO,GAAP;AAAA,QAAW,CAAX;AAAA,KAjDhC;AAAA,IAkDnB,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAlDM;AAAA,IAkDW,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAlDxB;AAAA,IAmDnB,UAAY,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAnDO;AAAA,IAmDU,aAAe,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAnDzB;AAAA,IAoDnB,MAAQ,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,CAAH;AAAA,QAAK,GAAL;AAAA,QAAS,CAAT;AAAA,KApDW;AAAA,IAoDE,SAAW,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KApDb;AAAA,IAqDnB,OAAS,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,CAAT;AAAA,QAAW,CAAX;AAAA,KArDU;AAAA,IAqDK,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,EAAT;AAAA,QAAY,CAAZ;AAAA,KArDlB;AAAA,IAsDnB,QAAU,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,CAAT;AAAA,QAAW,CAAX;AAAA,KAtDS;AAAA,IAsDM,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,EAAL;AAAA,QAAQ,CAAR;AAAA,QAAU,CAAV;AAAA,KAtDnB;AAAA,IAuDnB,QAAU,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAvDS;AAAA,IAuDQ,eAAiB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAvDzB;AAAA,IAwDnB,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAxDM;AAAA,IAwDW,eAAiB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAxD5B;AAAA,IAyDnB,eAAiB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAzDE;AAAA,IAyDe,YAAc,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAzD7B;AAAA,IA0DnB,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA1DM;AAAA,IA0DW,MAAQ,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,EAAT;AAAA,QAAY,CAAZ;AAAA,KA1DnB;AAAA,IA2DnB,MAAQ,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA3DW;AAAA,IA2DM,MAAQ,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA3Dd;AAAA,IA4DnB,YAAc,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA5DK;AAAA,IA4DY,QAAU,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,CAAL;AAAA,QAAO,GAAP;AAAA,QAAW,CAAX;AAAA,KA5DtB;AAAA,IA6DnB,eAAiB,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,EAAL;AAAA,QAAQ,GAAR;AAAA,QAAY,CAAZ;AAAA,KA7DE;AAAA,IA8DnB,KAAO,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,CAAL;AAAA,QAAO,CAAP;AAAA,QAAS,CAAT;AAAA,KA9DY;AAAA,IA8DC,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA9Dd;AAAA,IA+DnB,WAAa,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,GAAJ;AAAA,QAAQ,GAAR;AAAA,QAAY,CAAZ;AAAA,KA/DM;AAAA,IA+DU,aAAe,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,EAAL;AAAA,QAAQ,EAAR;AAAA,QAAW,CAAX;AAAA,KA/DzB;AAAA,IAgEnB,QAAU,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAhES;AAAA,IAgEQ,YAAc,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,EAAT;AAAA,QAAY,CAAZ;AAAA,KAhEtB;AAAA,IAiEnB,UAAY,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,GAAJ;AAAA,QAAQ,EAAR;AAAA,QAAW,CAAX;AAAA,KAjEO;AAAA,IAiEQ,UAAY,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAjEpB;AAAA,IAkEnB,QAAU,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,EAAL;AAAA,QAAQ,EAAR;AAAA,QAAW,CAAX;AAAA,KAlES;AAAA,IAkEM,QAAU,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAlEhB;AAAA,IAmEnB,SAAW,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAnEQ;AAAA,IAmES,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,EAAL;AAAA,QAAQ,GAAR;AAAA,QAAY,CAAZ;AAAA,KAnEtB;AAAA,IAoEnB,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KApEM;AAAA,IAoEW,WAAa,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KApExB;AAAA,IAqEnB,MAAQ,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KArEW;AAAA,IAqEM,aAAe,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,GAAH;AAAA,QAAO,GAAP;AAAA,QAAW,CAAX;AAAA,KArErB;AAAA,IAsEnB,WAAa,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,GAAJ;AAAA,QAAQ,GAAR;AAAA,QAAY,CAAZ;AAAA,KAtEM;AAAA,IAsEU,KAAO,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAtEjB;AAAA,IAuEnB,MAAQ,EAAA;AAAA,QAAC,CAAD;AAAA,QAAG,GAAH;AAAA,QAAO,GAAP;AAAA,QAAW,CAAX;AAAA,KAvEW;AAAA,IAuEI,SAAW,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAvEf;AAAA,IAwEnB,QAAU,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,EAAL;AAAA,QAAQ,EAAR;AAAA,QAAW,CAAX;AAAA,KAxES;AAAA,IAwEM,WAAa,EAAA;AAAA,QAAC,EAAD;AAAA,QAAI,GAAJ;AAAA,QAAQ,GAAR;AAAA,QAAY,CAAZ;AAAA,KAxEnB;AAAA,IAyEnB,QAAU,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAzES;AAAA,IAyEQ,OAAS,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KAzEjB;AAAA,IA0EnB,OAAS,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA1EU;AAAA,IA0EO,YAAc,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,GAAT;AAAA,QAAa,CAAb;AAAA,KA1ErB;AAAA,IA2EnB,QAAU,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,CAAT;AAAA,QAAW,CAAX;AAAA,KA3ES;AAAA,IA2EM,aAAe,EAAA;AAAA,QAAC,GAAD;AAAA,QAAK,GAAL;AAAA,QAAS,EAAT;AAAA,QAAY,CAAZ;AAAA,KA3ErB;AAAA,CAArB,CAvBA;AAoGA,SAASC,cAAT,CAAwBpO,CAAxB,EAA2B;AAAA;AACzB,IAAAA,CAAA,GAAIlC,IAAA,CAAKuQ,KAAL,CAAWrO,CAAX,CAAJ,CADyB;AAAA;AAEzB,IAAA,OAAOA,CAAA,GAAI,CAAJ,GAAQ,CAAR,GAAYA,CAAA,GAAI,GAAJ,GAAU,GAAV,GAAgBA,CAAnC,CAFyB;AAAA,CApG3B;AAyGA,SAASsO,eAAT,CAAyBC,CAAzB,EAA4B;AAAA;AAC1B,IAAA,OAAOA,CAAA,GAAI,CAAJ,GAAQ,CAAR,GAAYA,CAAA,GAAI,CAAJ,GAAQ,CAAR,GAAYA,CAA/B,CAD0B;AAAA,CAzG5B;AA6GA,SAASC,aAAT,CAAuBC,GAAvB,EAA4B;AAAA;AAC1B,IAAIA,IAAAA,GAAA,CAAIA,GAAA,CAAIpU,MAAJ,GAAa,CAAjB,MAAwB,GAA5B;AAAA,QACE,OAAO+T,cAAA,CAAeM,UAAA,CAAWD,GAAX,CAAA,GAAkB,GAAlB,GAAwB,GAAvC,CAAP,CAFwB;AAAA,IAG1B,OAAOL,cAAA,CAAeO,QAAA,CAASF,GAAT,CAAf,CAAP,CAH0B;AAAA,CA7G5B;AAmHA,SAASG,eAAT,CAAyBH,GAAzB,EAA8B;AAAA;AAC5B,IAAIA,IAAAA,GAAA,CAAIA,GAAA,CAAIpU,MAAJ,GAAa,CAAjB,MAAwB,GAA5B;AAAA,QACE,OAAOiU,eAAA,CAAgBI,UAAA,CAAWD,GAAX,CAAA,GAAkB,GAAlC,CAAP,CAF0B;AAAA,IAG5B,OAAOH,eAAA,CAAgBI,UAAA,CAAWD,GAAX,CAAhB,CAAP,CAH4B;AAAA,CAnH9B;AAyHA,SAASI,cAAT,CAAwBC,EAAxB,EAA4BC,EAA5B,EAAgC3H,CAAhC,EAAmC;AAAA,IACjC,IAAIA,CAAA,GAAI,CAAR;AAAA,QAAWA,CAAA,IAAK,CAAL,CAAX;AAAA,SACK,IAAIA,CAAA,GAAI,CAAR;AAAA,QAAWA,CAAA,IAAK,CAAL,CAFiB;AAAA,IAIjC,IAAIA,CAAA,GAAI,CAAJ,GAAQ,CAAZ;AAAA,QAAe,OAAO0H,EAAA,GAAM,CAAAC,EAAA,GAAKD,EAAL,IAAW1H,CAAZ,GAAgB,CAA5B,CAJkB;AAAA,IAKjC,IAAIA,CAAA,GAAI,CAAJ,GAAQ,CAAZ;AAAA,QAAe,OAAO2H,EAAP,CALkB;AAAA,IAMjC,IAAI3H,CAAA,GAAI,CAAJ,GAAQ,CAAZ;AAAA,QAAe,OAAO0H,EAAA,GAAM,CAAAC,EAAA,GAAKD,EAAL,KAAY,CAAA,GAAE,CAAF,GAAM1H,CAAN,CAAb,GAAwB,CAApC,CANkB;AAAA,IAOjC,OAAO0H,EAAP,CAPiC;AAAA,CAzHnC;AAmIA,SAASE,aAAT,CAAuBC,OAAvB,EAAgC;AAAA;AAE9B,IAAA,IAAIR,GAAA,GAAMQ,OAAA,CAAQ1U,OAAR,CAAgB,IAAhB,EAAsB,EAAtB,CAAA,CAA0B8G,WAA1B,EAAV,CAF8B;AAAA;AAK9B,IAAIoN,IAAAA,GAAA,IAAON,cAAX;AAAA,QAA2B,OAAOA,cAAA,CAAeM,GAAf,CAAoB9U,CAAAA,KAApB,EAAP,CALG;AAAA;AAQ9B;AAAA,IAAA,IAAI8U,GAAA,CAAI,CAAJ,CAAA,KAAW,GAAf,EAAoB;AAAA,QAClB,IAAIA,GAAA,CAAIpU,MAAJ,KAAe,CAAnB,EAAsB;AAAA,YACpB,IAAI6U,EAAA,GAAKP,QAAA,CAASF,GAAA,CAAI5L,MAAJ,CAAW,CAAX,CAAT,EAAwB,EAAxB,CAAT,CADoB;AAAA;AAEpB,YAAI,IAAA,EAAEqM,EAAA,IAAM,CAAN,IAAWA,EAAA,IAAM,IAAjB,CAAN;AAAA,gBAA+B,OAAO,IAAP,CAFX;AAAA;AAGpB,YAAO,OAAA;AAAA,gBAAG,CAAAA,EAAA,GAAK,IAAL,KAAe,CAAjB,GAAwB,CAAAA,EAAA,GAAK,IAAL,KAAe,CAAxC;AAAA,gBACEA,EAAA,GAAK,GAAN,GAAgB,CAAAA,EAAA,GAAK,GAAL,KAAc,CAD/B;AAAA,gBAEEA,EAAA,GAAK,EAAN,GAAe,CAAAA,EAAA,GAAK,EAAL,KAAa,CAF7B;AAAA,gBAGC,CAHD;AAAA,aAAP,CAHoB;AAAA,SAAtB,MAOO,IAAIT,GAAA,CAAIpU,MAAJ,KAAe,CAAnB,EAAsB;AAAA,YAC3B,IAAI6U,EAAA,GAAKP,QAAA,CAASF,GAAA,CAAI5L,MAAJ,CAAW,CAAX,CAAT,EAAwB,EAAxB,CAAT,CAD2B;AAAA;AAE3B,YAAI,IAAA,EAAEqM,EAAA,IAAM,CAAN,IAAWA,EAAA,IAAM,QAAjB,CAAN;AAAA,gBAAkC,OAAO,IAAP,CAFP;AAAA;AAG3B,YAAO,OAAA;AAAA,gBAAE,CAAAA,EAAA,GAAK,QAAL,KAAkB,EAApB;AAAA,gBACE,CAAAA,EAAA,GAAK,KAAL,KAAgB,CADlB;AAAA,gBAECA,EAAA,GAAK,GAFN;AAAA,gBAGC,CAHD;AAAA,aAAP,CAH2B;AAAA,SARX;AAAA,QAiBlB,OAAO,IAAP,CAjBkB;AAAA,KARU;AAAA,IA4B9B,IAAIC,EAAA,GAAKV,GAAA,CAAIhM,OAAJ,CAAY,GAAZ,CAAT,EAA2B2M,EAAA,GAAKX,GAAA,CAAIhM,OAAJ,CAAY,GAAZ,CAAhC,CA5B8B;AAAA,IA6B9B,IAAI0M,EAAA,KAAO,CAAC,CAAR,IAAaC,EAAA,GAAK,CAAL,KAAWX,GAAA,CAAIpU,MAAhC,EAAwC;AAAA,QACtC,IAAIgV,KAAA,GAAQZ,GAAA,CAAI5L,MAAJ,CAAW,CAAX,EAAcsM,EAAd,CAAZ,CADsC;AAAA,QAEtC,IAAIG,MAAA,GAASb,GAAA,CAAI5L,MAAJ,CAAWsM,EAAA,GAAG,CAAd,EAAiBC,EAAA,IAAID,EAAA,GAAG,CAAH,CAArB,EAA4B1Q,KAA5B,CAAkC,GAAlC,CAAb,CAFsC;AAAA,QAGtC,IAAI8Q,KAAA,GAAQ,CAAZ,CAHsC;AAAA;AAItC,QAAA,QAAQF,KAAR;AAAA,QACE,KAAK,MAAL;AAAA,YACE,IAAIC,MAAA,CAAOjV,MAAP,KAAkB,CAAtB;AAAA,gBAAyB,OAAO,IAAP,CAD3B;AAAA,YAEEkV,KAAA,GAAQX,eAAA,CAAgBU,MAAA,CAAOxG,GAAP,EAAhB,CAAR,CAHJ;AAAA;AAKE,QAAA,KAAK,KAAL;AAAA,YACE,IAAIwG,MAAA,CAAOjV,MAAP,KAAkB,CAAtB;AAAA,gBAAyB,OAAO,IAAP,CAD3B;AAAA,YAEE,OAAO;AAAA,gBAACmU,aAAA,CAAcc,MAAA,CAAO,CAAP,CAAd,CAAD;AAAA,gBACCd,aAAA,CAAcc,MAAA,CAAO,CAAP,CAAd,CADD;AAAA,gBAECd,aAAA,CAAcc,MAAA,CAAO,CAAP,CAAd,CAFD;AAAA,gBAGCC,KAHD;AAAA,aAAP,CAPJ;AAAA,QAWE,KAAK,MAAL;AAAA,YACE,IAAID,MAAA,CAAOjV,MAAP,KAAkB,CAAtB;AAAA,gBAAyB,OAAO,IAAP,CAD3B;AAAA,YAEEkV,KAAA,GAAQX,eAAA,CAAgBU,MAAA,CAAOxG,GAAP,EAAhB,CAAR,CAbJ;AAAA;AAeE,QAAA,KAAK,KAAL;AAAA,YACE,IAAIwG,MAAA,CAAOjV,MAAP,KAAkB,CAAtB;AAAA,gBAAyB,OAAO,IAAP,CAD3B;AAAA,YAEE,IAAI+M,CAAA,GAAM,CAACsH,UAAA,CAAWY,MAAA,CAAO,CAAP,CAAX,CAAwB,GAAA,GAAzB,GAAgC,GAAhC,IAAuC,GAAzC,GAAgD,GAAxD,CAFF;AAAA;AAKE;AAAA;AAAA,YAAI7H,IAAAA,CAAA,GAAImH,eAAA,CAAgBU,MAAA,CAAO,CAAP,CAAhB,CAAR,CALF;AAAA,YAME,IAAI1I,CAAA,GAAIgI,eAAA,CAAgBU,MAAA,CAAO,CAAP,CAAhB,CAAR,CANF;AAAA,YAOE,IAAIP,EAAA,GAAKnI,CAAA,IAAK,GAAL,GAAWA,CAAA,IAAKa,CAAA,GAAI,CAAJ,CAAhB,GAAyBb,CAAA,GAAIa,CAAJ,GAAQb,CAAA,GAAIa,CAA9C,CAPF;AAAA,YAQE,IAAIqH,EAAA,GAAKlI,CAAA,GAAI,CAAJ,GAAQmI,EAAjB,CARF;AAAA,YASE,OAAO;AAAA,gBAACX,cAAA,CAAeS,cAAA,CAAeC,EAAf,EAAmBC,EAAnB,EAAuB3H,CAAA,GAAE,CAAA,GAAE,CAA3B,CAAA,GAAgC,GAA/C,CAAD;AAAA,gBACCgH,cAAA,CAAeS,cAAA,CAAeC,EAAf,EAAmBC,EAAnB,EAAuB3H,CAAvB,CAA4B,GAAA,GAA3C,CADD;AAAA,gBAECgH,cAAA,CAAeS,cAAA,CAAeC,EAAf,EAAmBC,EAAnB,EAAuB3H,CAAA,GAAE,CAAA,GAAE,CAA3B,CAAA,GAAgC,GAA/C,CAFD;AAAA,gBAGCmI,KAHD;AAAA,aAAP,CAxBJ;AAAA,QA4BE;AAAA,YACE,OAAO,IAAP,CA7BJ;AAAA,SAJsC;AAAA,KA7BV;AAAA,IAkE9B,OAAO,IAAP,CAlE8B;AAAA,CAnIhC;AAwMA,IAAI;AAAA,IAAEjT,eAAAA,GAAAA,cAAAA,CAAAA,aAAA,GAAwB0S,aAAxB,CAAF;AAAA,CAAJ,CAA8C,OAAMQ,CAAN,EAAS;AAAA;;ACtMvD;AAaA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAMC,KAAN,CAAY;AAAA,IAMRtD,WAAA,CAAYuD,CAAZ,EAAuBC,CAAvB,EAAkCC,CAAlC,EAA6CC,CAAA,GAAY,CAAzD,EAA4D;AAAA,QACxD,IAAKH,CAAAA,CAAL,GAASA,CAAT,CADwD;AAAA,QAExD,IAAKC,CAAAA,CAAL,GAASA,CAAT,CAFwD;AAAA,QAGxD,IAAKC,CAAAA,CAAL,GAASA,CAAT,CAHwD;AAAA,QAIxD,IAAKC,CAAAA,CAAL,GAASA,CAAT,CAJwD;AAAA,KANpD;AAAA;AAuBR;AAAA;AAAA;AAAA,IAAOnV,OAAAA,KAAP,CAAamF,KAAb,EAA0D;AAAA,QACtD,IAAI,CAACA,KAAL,EAAY;AAAA,YACR,OAAOnG,SAAP,CADQ;AAAA,SAD0C;AAAA,QAKtD,IAAImG,KAAA,YAAiB4P,KAArB,EAA4B;AAAA,YACxB,OAAO5P,KAAP,CADwB;AAAA,SAL0B;AAAA,QAStD,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAAA,YAC3B,OAAOnG,SAAP,CAD2B;AAAA,SATuB;AAAA,QAatD,MAAMoW,IAAA,GAAOd,eAAA,CAAcnP,KAAd,CAAb,CAbsD;AAAA,QActD,IAAI,CAACiQ,IAAL,EAAW;AAAA,YACP,OAAOpW,SAAP,CADO;AAAA,SAd2C;AAAA,QAkBtD,OAAO,IAAI+V,KAAJ,CACHK,IAAA,CAAK,CAAL,CAAU,GAAA,GAAV,GAAgBA,IAAA,CAAK,CAAL,CADb,EAEHA,IAAA,CAAK,CAAL,IAAU,GAAV,GAAgBA,IAAA,CAAK,CAAL,CAFb,EAGHA,IAAA,CAAK,CAAL,IAAU,GAAV,GAAgBA,IAAA,CAAK,CAAL,CAHb,EAIHA,IAAA,CAAK,CAAL,CAJG,CAAP,CAlBsD;AAAA,KAvBlD;AAAA;AA2DR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAArC,QAAA,GAAmB;AAAA,QACf,MAAM,CAACiC,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAUC,CAAV,CAAA,GAAe,IAAKE,CAAAA,OAAL,EAArB,CADe;AAAA,QAEf,OAAO,CAAC,KAAD,GAAQjS,IAAA,CAAKuQ,KAAL,CAAWqB,CAAX,CAAR,EAAsB,CAAtB,GAAyB5R,IAAA,CAAKuQ,KAAL,CAAWsB,CAAX,CAAzB,EAAuC,CAAvC,GAA0C7R,IAAA,CAAKuQ,KAAL,CAAWuB,CAAX,CAA1C,EAAwD,CAAxD,GAA2DC,CAA3D,EAA6D,CAA7D,CAAP,CAFe;AAAA,KA3DX;AAAA;AAqER;AAAA;AAAA;AAAA;AAAA,IAAAE,OAAA,GAA4C;AAAA,QACxC,MAAM,CAACL,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAUC,CAAV,CAAe,GAAA,IAArB,CADwC;AAAA,QAExC,OAAOA,CAAA,KAAM,CAAN,GAAU;AAAA,YAAC,CAAD;AAAA,YAAI,CAAJ;AAAA,YAAO,CAAP;AAAA,YAAU,CAAV;AAAA,SAAV,GAAyB;AAAA,YAC5BH,CAAA,GAAI,GAAJ,GAAUG,CADkB;AAAA,YAE5BF,CAAA,GAAI,GAAJ,GAAUE,CAFkB;AAAA,YAG5BD,CAAA,GAAI,GAAJ,GAAUC,CAHkB;AAAA,YAI5BA,CAJ4B;AAAA,SAAhC,CAFwC;AAAA,KArEpC;AAAA;AAoFR;AAAA;AAAA;AAAA;AAAA,IAAAG,SAAA,GAA8C;AAAA,QAC1C,MAAM,CAACN,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAUC,CAAV,CAAe,GAAA,IAArB,CAD0C;AAAA,QAE1C,OAAOA,CAAA,KAAM,CAAN,GAAU;AAAA,YAAC,CAAD;AAAA,YAAI,CAAJ;AAAA,YAAO,CAAP;AAAA,YAAU,CAAV;AAAA,SAAV,GAAyB;AAAA,YAC5BH,CAAA,GAAIG,CADwB;AAAA,YAE5BF,CAAA,GAAIE,CAFwB;AAAA,YAG5BD,CAAA,GAAIC,CAHwB;AAAA,YAI5BA,CAJ4B;AAAA,SAAhC,CAF0C;AAAA,KApFtC;AAAA;AAmGR;AAAA;AAAA;AAAA;AAAA,IAAAI,2BAAA,GAAgE;AAAA,QAC5D,MAAM,CAACP,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAUC,CAAV,CAAe,GAAA,IAArB,CAD4D;AAAA,QAE5D,OAAO;AAAA,YACHH,CADG;AAAA,YAEHC,CAFG;AAAA,YAGHC,CAHG;AAAA,YAIHC,CAJG;AAAA,SAAP,CAF4D;AAAA,KAnGxD;AAAA,CAfZ;AA6HAJ,KAAA,CAAMS,KAAN,GAAc,IAAIT,KAAJ,CAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAd,CA7HA;AA8HAA,KAAA,CAAMU,KAAN,GAAc,IAAIV,KAAJ,CAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAd,CA9HA;AA+HAA,KAAA,CAAMW,WAAN,GAAoB,IAAIX,KAAJ,CAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAApB,CA/HA;AAgIAA,KAAA,CAAMY,GAAN,GAAY,IAAIZ,KAAJ,CAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAZ,CAhIA;AAiIAA,KAAA,CAAMa,IAAN,GAAa,IAAIb,KAAJ,CAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAb,CAjIA;AAmIA,cAAA,KAAA;;ACjGA;AAAA;AAAA;AAAe,MAAMc,QAAN,CAAe;AAAA,IAK1BpE,WAAA,CAAYqE,aAAZ,EAAoCC,kBAApC,EAAiEC,MAAjE,EAAwF;AAAA,QACpF,IAAIF,aAAJ;AAAA,YACI,IAAA,CAAKG,WAAL,GAAmBF,kBAAA,GAAqB,SAArB,GAAiC,MAApD,CADJ;AAAA;AAAA,YAGI,IAAA,CAAKE,WAAL,GAAmBF,kBAAA,GAAqB,QAArB,GAAgC,MAAnD,CAJgF;AAAA,QAMpF,IAAKC,CAAAA,MAAL,GAAcA,MAAd,CANoF;AAAA,QAOpF,IAAKE,CAAAA,QAAL,GAAgB,IAAIC,IAAA,CAAKN,QAAT,CAAkB,IAAA,CAAKG,MAAL,GAAc,IAAA,CAAKA,MAAnB,GAA4B,EAA9C,EACZ;AAAA,YAACC,WAAA,EAAa,IAAA,CAAKA,WAAnB;AAAA,YAAgCG,KAAA,EAAO,QAAvC;AAAA,SADY,CAAhB,CAPoF;AAAA,KAL9D;AAAA,IAgB1BC,OAAA,CAAQC,GAAR,EAAqBC,GAArB,EAA0C;AAAA,QACtC,OAAO,IAAKL,CAAAA,QAAL,CAAcG,OAAd,CAAsBC,GAAtB,EAA2BC,GAA3B,CAAP,CADsC;AAAA,KAhBhB;AAAA,IAoB1BC,cAAA,GAAyB;AAAA;AAGrB;AAAA,QAAA,OAAO,IAAIL,IAAA,CAAKN,QAAT,CAAkB,KAAKG,MAAL,GAAc,IAAKA,CAAAA,MAAnB,GAA4B,EAA9C,CAAA,CACFS,eADE,EAAA,CACgBT,MADvB,CAHqB;AAAA,KApBC;AAAA;;AC9B9B;AAAO,MAAMU,gBAAN,CAAuB;AAAA,IAO1BjF,WAAA,CAAYkF,IAAZ,EAA0BC,KAA1B,EAAuDC,KAAvD,EAA6EC,SAA7E,EAAuGC,SAAvG,EAAgI;AAAA;AAE5H,QAAA,IAAA,CAAKJ,IAAL,GAAYA,IAAA,CAAKK,SAAL,GAAiBL,IAAA,CAAKK,SAAL,EAAjB,GAAoCL,IAAhD,CAF4H;AAAA,QAG5H,IAAKC,CAAAA,KAAL,GAAaA,KAAb,CAH4H;AAAA,QAI5H,IAAKC,CAAAA,KAAL,GAAaA,KAAb,CAJ4H;AAAA,QAK5H,IAAKC,CAAAA,SAAL,GAAiBA,SAAjB,CAL4H;AAAA,QAM5H,IAAKC,CAAAA,SAAL,GAAiBA,SAAjB,CAN4H;AAAA,KAPtG;AAAA,CAJ9B;AAqBe,MAAME,SAAN,CAAgB;AAAA,IAG3BxF,WAAA,CAAYyF,QAAZ,EAA+C;AAAA,QAC3C,IAAKA,CAAAA,QAAL,GAAgBA,QAAhB,CAD2C;AAAA,KAHpB;AAAA,IAO3B,OAAOC,UAAP,CAAkBC,WAAlB,EAAkD;AAAA,QAC9C,OAAO,IAAIH,SAAJ,CAAc,CAAC,IAAIP,gBAAJ,CAAqBU,WAArB,EAAkC,IAAlC,EAAwC,IAAxC,EAA8C,IAA9C,EAAoD,IAApD,CAAD,CAAd,CAAP,CAD8C;AAAA,KAPvB;AAAA,IAW3BC,OAAA,GAAmB;AAAA,QACf,IAAI,IAAKH,CAAAA,QAAL,CAAcvX,MAAd,KAAyB,CAA7B;AAAA,YAAgC,OAAO,IAAP,CADjB;AAAA,QAEf,OAAO,CAAC,IAAKuX,CAAAA,QAAL,CAAc3D,IAAd,CAAmB+D,OAAA,IAAWA,OAAA,CAAQX,IAAR,CAAahX,MAAb,KAAwB,CAAxB,IACA2X,OAAA,CAAQV,KAAR,IAAiBU,OAAA,CAAQV,KAAR,CAAcrO,IAAd,CAAmB5I,MAAnB,KAA8B,CAD7E,CAAR,CAFe;AAAA,KAXQ;AAAA,IAiB3B,OAAO4X,OAAP,CAAeZ,IAAf,EAAoD;AAAA,QAChD,IAAIA,IAAA,YAAgBM,SAApB,EAA+B;AAAA,YAC3B,OAAON,IAAP,CAD2B;AAAA,SAA/B,MAEO;AAAA,YACH,OAAOM,SAAA,CAAUE,UAAV,CAAqBR,IAArB,CAAP,CADG;AAAA,SAHyC;AAAA,KAjBzB;AAAA,IAyB3B5D,QAAA,GAAmB;AAAA,QACf,IAAI,IAAKmE,CAAAA,QAAL,CAAcvX,MAAd,KAAyB,CAA7B;AAAA,YAAgC,OAAO,EAAP,CADjB;AAAA,QAEf,OAAO,IAAKuX,CAAAA,QAAL,CAAc3V,GAAd,CAAkB+V,OAAA,IAAWA,OAAA,CAAQX,IAArC,CAA2C7V,CAAAA,IAA3C,CAAgD,EAAhD,CAAP,CAFe;AAAA,KAzBQ;AAAA,IA8B3B0W,SAAA,GAA0B;AAAA,QACtB,MAAMC,UAAA,GAA2B,CAAC,QAAD,CAAjC,CADsB;AAAA,QAEtB,KAAWH,MAAAA,OAAX,IAAsB,IAAA,CAAKJ,QAA3B,EAAqC;AAAA,YACjC,IAAII,OAAA,CAAQV,KAAZ,EAAmB;AAAA,gBACfa,UAAA,CAAWjX,IAAX,CAAgB;AAAA,oBAAC,OAAD;AAAA,oBAAU8W,OAAA,CAAQV,KAAR,CAAcrO,IAAxB;AAAA,iBAAhB,CADe,CAAA;AAAA,gBAEf,SAFe;AAAA,aADc;AAAA,YAKjCkP,UAAA,CAAWjX,IAAX,CAAgB8W,OAAA,CAAQX,IAAxB,CALiC,CAAA;AAAA,YAMjC,MAAM9X,OAAA,GAAoC,EAA1C,CANiC;AAAA,YAOjC,IAAIyY,OAAA,CAAQR,SAAZ,EAAuB;AAAA,gBACnBjY,OAAA,CAAQ,WAAR,CAAuB,GAAA;AAAA,oBAAC,SAAD;AAAA,oBAAYyY,OAAA,CAAQR,SAAR,CAAkB/S,KAAlB,CAAwB,GAAxB,CAAZ;AAAA,iBAAvB,CADmB;AAAA,aAPU;AAAA,YAUjC,IAAIuT,OAAA,CAAQT,KAAZ,EAAmB;AAAA,gBACfhY,OAAA,CAAQ,YAAR,IAAwByY,OAAA,CAAQT,KAAhC,CADe;AAAA,aAVc;AAAA,YAajC,IAAIS,OAAA,CAAQP,SAAZ,EAAuB;AAAA,gBACnBlY,OAAA,CAAQ,YAAR,CAAyB,GAAA,CAAC,MAAD,CAAD,CAAyBsL,MAAzB,CAAgCmN,OAAA,CAAQP,SAAR,CAAkB1B,OAAlB,EAAhC,CAAxB,CADmB;AAAA,aAbU;AAAA,YAgBjCoC,UAAA,CAAWjX,IAAX,CAAgB3B,OAAhB,CAhBiC,CAAA;AAAA,SAFf;AAAA,QAoBtB,OAAO4Y,UAAP,CApBsB;AAAA,KA9BC;AAAA;;ACd/B;AAAe,MAAMC,aAAN,CAAoB;AAAA,IAI/BjG,WAAA,CAAY5S,OAAZ,EAA2C;AAAA,QACvC,KAAK0J,IAAL,GAAY1J,OAAA,CAAQ0J,IAApB,CADuC;AAAA,QAEvC,KAAKoP,SAAL,GAAiB9Y,OAAA,CAAQ8Y,SAAzB,CAFuC;AAAA,KAJZ;AAAA,IAS/B5E,QAAA,GAAmB;AAAA,QACf,OAAO,IAAKxK,CAAAA,IAAZ,CADe;AAAA,KATY;AAAA,IAa/B,OAAO4O,UAAP,CAAkB5O,IAAlB,EAAsD;AAAA,QAClD,IAAI,CAACA,IAAL;AAAA,YAAW,OAAO,IAAP,CADuC;AAAA;AAElD,QAAO,OAAA,IAAImP,aAAJ,CAAkB;AAAA,YAACnP,IAAD;AAAA,YAAOoP,SAAA,EAAW,KAAlB;AAAA,SAAlB,CAAP,CAFkD;AAAA,KAbvB;AAAA,IAkB/BH,SAAA,GAA2B;AAAA,QACvB,OAAO;AAAA,YAAC,OAAD;AAAA,YAAU,KAAKjP,IAAf;AAAA,SAAP,CADuB;AAAA,KAlBI;AAAA;;ACK5B,SAASqP,YAAT,CAAsB5C,CAAtB,EAAgCC,CAAhC,EAA0CC,CAA1C,EAAoDC,CAApD,EAA8E;AAAA,IACjF,IAAI,EACA,OAAOH,CAAP,KAAa,QAAb,IAAyBA,CAAA,IAAK,CAA9B,IAAmCA,CAAA,IAAK,GAAxC,IACA,OAAOC,CAAP,KAAa,QADb,IACyBA,CAAA,IAAK,CAD9B,IACmCA,CAAA,IAAK,GADxC,IAEA,OAAOC,CAAP,KAAa,QAFb,IAEyBA,CAAA,IAAK,CAF9B,IAEmCA,CAAA,IAAK,GAFxC,CADJ,EAIG;AAAA,QACC,MAAMrU,KAAA,GAAQ,OAAOsU,CAAP,KAAa,QAAb,GAAwB;AAAA,YAACH,CAAD;AAAA,YAAIC,CAAJ;AAAA,YAAOC,CAAP;AAAA,YAAUC,CAAV;AAAA,SAAxB,GAAuC;AAAA,YAACH,CAAD;AAAA,YAAIC,CAAJ;AAAA,YAAOC,CAAP;AAAA,SAArD,CADD;AAAA,QAEC,OAAO,CAAC,oBAAD,GAAuBrU,KAAA,CAAMC,IAAN,CAAW,IAAX,CAAvB,EAAwC,+CAAxC,CAAP,CAFD;AAAA,KAL8E;AAAA,IAUjF,IAAI,EACOqU,OAAAA,CAAP,KAAa,WAAb,IAA6B,OAAOA,CAAP,KAAa,QAAb,IAAyBA,CAAA,IAAK,CAA9B,IAAmCA,CAAA,IAAK,CAArE,CADJ,EAEG;AAAA,QACC,OAAO,CAAC,oBAAD,GAAuB;AAAA,YAACH,CAAD;AAAA,YAAIC,CAAJ;AAAA,YAAOC,CAAP;AAAA,YAAUC,CAAV;AAAA,SAAA,CAAarU,IAAb,CAAkB,IAAlB,CAAvB,EAA+C,+BAA/C,CAAP,CADD;AAAA,KAZ8E;AAAA,IAgBjF,OAAO,IAAP,CAhBiF;AAAA,CAZrF;AAiCO,SAAS+W,OAAT,CAAiBC,KAAjB,EAAwC;AAAA,IAC3C,IAAIA,KAAA,KAAU,IAAd,EAAoB;AAAA,QAChB,OAAO,IAAP,CADgB;AAAA,KAApB,MAEO,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAAA,QAClC,OAAO,IAAP,CADkC;AAAA,KAA/B,MAEA,IAAI,OAAOA,KAAP,KAAiB,SAArB,EAAgC;AAAA,QACnC,OAAO,IAAP,CADmC;AAAA,KAAhC,MAEA,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAAA,QAClC,OAAO,IAAP,CADkC;AAAA,KAA/B,MAEA,IAAIA,KAAA,YAAiB/C,OAArB,EAA4B;AAAA,QAC/B,OAAO,IAAP,CAD+B;AAAA,KAA5B,MAEA,IAAI+C,KAAA,YAAiBjC,QAArB,EAA+B;AAAA,QAClC,OAAO,IAAP,CADkC;AAAA,KAA/B,MAEA,IAAIiC,KAAA,YAAiBb,SAArB,EAAgC;AAAA,QACnC,OAAO,IAAP,CADmC;AAAA,KAAhC,MAEA,IAAIa,KAAA,YAAiBJ,aAArB,EAAoC;AAAA,QACvC,OAAO,IAAP,CADuC;AAAA,KAApC,MAEA,IAAIpX,KAAA,CAAMC,OAAN,CAAcuX,KAAd,CAAJ,EAA0B;AAAA,QAC7B,KAAWC,MAAAA,IAAX,IAAmBD,KAAnB,EAA0B;AAAA,YACtB,IAAI,CAACD,OAAA,CAAQE,IAAR,CAAL,EAAoB;AAAA,gBAChB,OAAO,KAAP,CADgB;AAAA,aADE;AAAA,SADG;AAAA,QAM7B,OAAO,IAAP,CAN6B;AAAA,KAA1B,MAOA,IAAI,OAAOD,KAAP,KAAiB,QAArB,EAA+B;AAAA,QAClC,KAAWnX,MAAAA,GAAX,IAAkBmX,KAAlB,EAAyB;AAAA,YACrB,IAAI,CAACD,OAAA,CAAQC,KAAA,CAAMnX,GAAN,CAAR,CAAL,EAA0B;AAAA,gBACtB,OAAO,KAAP,CADsB;AAAA,aADL;AAAA,SADS;AAAA,QAMlC,OAAO,IAAP,CANkC;AAAA,KAA/B,MAOA;AAAA,QACH,OAAO,KAAP,CADG;AAAA,KA/BoC;AAAA,CAjC/C;AAqEO,SAASqX,MAAT,CAAgBnX,KAAhB,EAAoC;AAAA,IACvC,IAAIA,KAAA,KAAU,IAAd,EAAoB;AAAA,QAChB,OAAOoR,QAAP,CADgB;AAAA,KAApB,MAEO,IAAI,OAAOpR,KAAP,KAAiB,QAArB,EAA+B;AAAA,QAClC,OAAOuR,UAAP,CADkC;AAAA,KAA/B,MAEA,IAAI,OAAOvR,KAAP,KAAiB,SAArB,EAAgC;AAAA,QACnC,OAAOwR,WAAP,CADmC;AAAA,KAAhC,MAEA,IAAI,OAAOxR,KAAP,KAAiB,QAArB,EAA+B;AAAA,QAClC,OAAOsR,UAAP,CADkC;AAAA,KAA/B,MAEA,IAAItR,KAAA,YAAiBkU,OAArB,EAA4B;AAAA,QAC/B,OAAOzC,SAAP,CAD+B;AAAA,KAA5B,MAEA,IAAIzR,KAAA,YAAiBgV,QAArB,EAA+B;AAAA,QAClC,OAAOnD,YAAP,CADkC;AAAA,KAA/B,MAEA,IAAI7R,KAAA,YAAiBoW,SAArB,EAAgC;AAAA,QACnC,OAAOtE,aAAP,CADmC;AAAA,KAAhC,MAEA,IAAI9R,KAAA,YAAiB6W,aAArB,EAAoC;AAAA,QACvC,OAAO9E,iBAAP,CADuC;AAAA,KAApC,MAEA,IAAItS,KAAA,CAAMC,OAAN,CAAcM,KAAd,CAAJ,EAA0B;AAAA,QAC7B,MAAMlB,MAAA,GAASkB,KAAA,CAAMlB,MAArB,CAD6B;AAAA,QAE7B,IAAIkT,QAAJ,CAF6B;AAAA,QAI7B,KAAWkF,MAAAA,IAAX,IAAmBlX,KAAnB,EAA0B;AAAA,YACtB,MAAMgF,CAAA,GAAImS,MAAA,CAAOD,IAAP,CAAV,CADsB;AAAA,YAEtB,IAAI,CAAClF,QAAL,EAAe;AAAA,gBACXA,QAAA,GAAWhN,CAAX,CADW;AAAA,aAAf,MAEO,IAAIgN,QAAA,KAAahN,CAAjB,EAAoB;AAAA,gBACvB,SADuB;AAAA,aAApB,MAEA;AAAA,gBACHgN,QAAA,GAAWL,SAAX,CADG;AAAA,gBAEH,MAFG;AAAA,aANe;AAAA,SAJG;AAAA,QAgB7B,OAAO7O,OAAA,CAAMkP,QAAA,IAAYL,SAAlB,EAA6B7S,MAA7B,CAAP,CAhB6B;AAAA,KAA1B,MAiBA;AAAA,QAEH,OAAO4S,UAAP,CAFG;AAAA,KAlCgC;AAAA,CArE3C;AA6GO,SAASQ,QAAT,CAAkBlS,KAAlB,EAAwC;AAAA,IAC3C,MAAM4C,IAAA,GAAO,OAAO5C,KAApB,CAD2C;AAAA,IAE3C,IAAIA,KAAA,KAAU,IAAd,EAAoB;AAAA,QAChB,OAAO,EAAP,CADgB;AAAA,KAApB,MAEO,IAAI4C,IAAA,KAAS,QAAT,IAAqBA,IAAA,KAAS,QAA9B,IAA0CA,IAAA,KAAS,SAAvD,EAAkE;AAAA,QACrE,OAAOH,MAAA,CAAOzC,KAAP,CAAP,CADqE;AAAA,KAAlE,MAEA,IAAIA,KAAA,YAAiBkU,OAAjB,IAA0BlU,KAAA,YAAiBoW,SAA3C,IAAwDpW,KAAA,YAAiB6W,aAA7E,EAA4F;AAAA,QAC/F,OAAO7W,KAAA,CAAMkS,QAAN,EAAP,CAD+F;AAAA,KAA5F,MAEA;AAAA,QACH,OAAOhU,IAAA,CAAKJ,SAAL,CAAekC,KAAf,CAAP,CADG;AAAA,KARoC;AAAA;;AClG/C,MAAMoX,OAAN,CAAoC;AAAA,IAIhCxG,WAAA,CAAYhO,IAAZ,EAAwB5C,KAAxB,EAAsC;AAAA,QAClC,IAAK4C,CAAAA,IAAL,GAAYA,IAAZ,CADkC;AAAA,QAElC,IAAK5C,CAAAA,KAAL,GAAaA,KAAb,CAFkC;AAAA,KAJN;AAAA,IAShC,OAAOb,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAAmF;AAAA,QAC/E,IAAID,IAAA,CAAKvY,MAAL,KAAgB,CAApB;AAAA,YACI,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,8DAAD,GAAiE0U,IAAA,CAAKvY,MAAL,GAAc,CAA/E,EAAiF,SAAjF,CAAd,CAAP,CAF2E;AAAA,QAI/E,IAAI,CAACkY,OAAA,CAAQK,IAAA,CAAK,CAAL,CAAR,CAAL;AAAA,YACI,OAAOC,OAAA,CAAQ3U,KAAR,CAAc,CAAC,aAAD,CAAd,CAAP,CAL2E;AAAA,QAO/E,MAAM3C,KAAA,GAASqX,IAAA,CAAK,CAAL,CAAf,CAP+E;AAAA,QAQ/E,IAAIzU,IAAA,GAAOuU,MAAA,CAAOnX,KAAP,CAAX,CAR+E;AAAA;AAW/E,QAAA,MAAMqS,QAAA,GAAWiF,OAAA,CAAQC,YAAzB,CAX+E;AAAA,QAY/E,IACI3U,IAAA,CAAKyO,IAAL,KAAc,OAAd,IACAzO,IAAA,CAAKqP,CAAL,KAAW,CADX,IAEAI,QAFA,IAGAA,QAAA,CAAShB,IAAT,KAAkB,OAHlB,KAIQgB,OAAAA,QAAA,CAASJ,CAAhB,KAAsB,QAAtB,IAAkCI,QAAA,CAASJ,CAAT,KAAe,CAAjD,CALL,EAME;AAAA,YACErP,IAAA,GAAOyP,QAAP,CADF;AAAA,SAlB6E;AAAA,QAsB/E,OAAO,IAAI+E,OAAJ,CAAYxU,IAAZ,EAAkB5C,KAAlB,CAAP,CAtB+E;AAAA,KATnD;AAAA,IAkChCwX,QAAA,GAAkB;AAAA,QACd,OAAO,IAAKxX,CAAAA,KAAZ,CADc;AAAA,KAlCc;AAAA,IAsChCyX,SAAA,GAAY;AAAA,KAtCoB;AAAA,IAwChCC,aAAA,GAAyB;AAAA,QACrB,OAAO,IAAP,CADqB;AAAA,KAxCO;AAAA,IA4ChCf,SAAA,GAAkC;AAAA,QAC9B,IAAI,IAAA,CAAK/T,IAAL,CAAUyO,IAAV,KAAmB,OAAnB,IAA8B,IAAA,CAAKzO,IAAL,CAAUyO,IAAV,KAAmB,QAArD,EAA+D;AAAA,YAC3D,OAAO;AAAA,gBAAC,SAAD;AAAA,gBAAY,KAAKrR,KAAjB;AAAA,aAAP,CAD2D;AAAA,SAA/D,MAEO,IAAI,IAAA,CAAKA,KAAL,YAAsBkU,OAA1B,EAAiC;AAAA;AAIpC;AAAA;AAAA,YAAO,OAAA,CAAC,MAAD,CAAA,CAAS5K,MAAT,CAAgB,IAAKtJ,CAAAA,KAAL,CAAWwU,OAAX,EAAhB,CAAP,CAJoC;AAAA,SAAjC,MAKA,IAAI,IAAA,CAAKxU,KAAL,YAAsBoW,SAA1B,EAAqC;AAAA;AAExC,YAAA,OAAO,IAAKpW,CAAAA,KAAL,CAAW2W,SAAX,EAAP,CAFwC;AAAA,SAArC,MAGA;AAAA,YAKH,OAAQ,IAAK3W,CAAAA,KAAb,CALG;AAAA,SAXuB;AAAA,KA5CF;AAAA,CAXpC;AA4EA,gBAAA,OAAA;;AC1EA;AAAA,MAAM2X,YAAN,CAAmB;AAAA,IAIf/G,WAAA,CAAYC,OAAZ,EAA6B;AAAA,QACzB,IAAKnJ,CAAAA,IAAL,GAAY,2BAAZ,CADyB;AAAA,QAEzB,IAAKmJ,CAAAA,OAAL,GAAeA,OAAf,CAFyB;AAAA,KAJd;AAAA,IASfjS,MAAA,GAAiB;AAAA,QACb,OAAO,IAAKiS,CAAAA,OAAZ,CADa;AAAA,KATF;AAAA,CAFnB;AAgBA,qBAAA,YAAA;;ACMA,MAAM+G,OAAA,GAAQ;AAAA,IACV/Y,MAAA,EAAQ0S,UADE;AAAA,IAEVsG,MAAA,EAAQvG,UAFE;AAAA,IAGVwG,OAAA,EAAStG,WAHC;AAAA,IAIVuG,MAAA,EAAQrG,UAJE;AAAA,CAAd,CAtBA;AA6BA,MAAMsG,SAAN,CAAsC;AAAA,IAIlCpH,WAAA,CAAYhO,IAAZ,EAAwByU,IAAxB,EAAiD;AAAA,QAC7C,IAAKzU,CAAAA,IAAL,GAAYA,IAAZ,CAD6C;AAAA,QAE7C,IAAKyU,CAAAA,IAAL,GAAYA,IAAZ,CAF6C;AAAA,KAJf;AAAA,IASlC,OAAOlY,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAAgF;AAAA,QAC5E,IAAID,IAAA,CAAKvY,MAAL,GAAc,CAAlB;AAAA,YACI,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,+BAAD,CAAd,CAAP,CAFwE;AAAA,QAI5E,IAAI8B,CAAA,GAAI,CAAR,CAJ4E;AAAA,QAK5E,IAAI7B,IAAJ,CAL4E;AAAA,QAO5E,MAAM8E,IAAA,GAAgB2P,IAAA,CAAK,CAAL,CAAtB,CAP4E;AAAA,QAQ5E,IAAI3P,IAAA,KAAS,OAAb,EAAsB;AAAA,YAClB,IAAIsK,QAAJ,CADkB;AAAA,YAElB,IAAIqF,IAAA,CAAKvY,MAAL,GAAc,CAAlB,EAAqB;AAAA,gBACjB,MAAM8D,IAAA,GAAOyU,IAAA,CAAK,CAAL,CAAb,CADiB;AAAA,gBAEjB,IAAI,OAAOzU,IAAP,KAAgB,QAAhB,IAA4B,EAAEA,IAAA,IAAQgV,OAAR,CAA9B,IAAgDhV,IAAA,KAAS,QAA7D;AAAA,oBACI,OAAO0U,OAAA,CAAQ3U,KAAR,CAAc,0EAAd,EAA0F,CAA1F,CAAP,CAHa;AAAA,gBAIjBqP,QAAA,GAAW4F,OAAA,CAAMhV,IAAN,CAAX,CAJiB;AAAA,gBAKjB6B,CAAA,EALiB,CAAA;AAAA,aAArB,MAMO;AAAA,gBACHuN,QAAA,GAAWL,SAAX,CADG;AAAA,aARW;AAAA,YAYlB,IAAIM,CAAJ,CAZkB;AAAA,YAalB,IAAIoF,IAAA,CAAKvY,MAAL,GAAc,CAAlB,EAAqB;AAAA,gBACjB,IAAIuY,IAAA,CAAK,CAAL,MAAY,IAAZ,KACQA,OAAAA,IAAA,CAAK,CAAL,CAAP,KAAmB,QAAnB,IACGA,IAAA,CAAK,CAAL,CAAA,GAAU,CADb,IAEGA,IAAA,CAAK,CAAL,MAAY9U,IAAA,CAAKD,KAAL,CAAW+U,IAAA,CAAK,CAAL,CAAX,CAFf,CADL,EAIE;AAAA,oBACE,OAAOC,OAAA,CAAQ3U,KAAR,CAAc,mEAAd,EAAmF,CAAnF,CAAP,CADF;AAAA,iBALe;AAAA,gBAQjBsP,CAAA,GAAIoF,IAAA,CAAK,CAAL,CAAJ,CARiB;AAAA,gBASjB5S,CAAA,EATiB,CAAA;AAAA,aAbH;AAAA,YAyBlB7B,IAAA,GAAOE,OAAA,CAAMkP,QAAN,EAAgBC,CAAhB,CAAP,CAzBkB;AAAA,SAAtB,MA0BO;AAAA,YAEHrP,IAAA,GAAOgV,OAAA,CAAMlQ,IAAN,CAAP,CAFG;AAAA,SAlCqE;AAAA,QAuC5E,MAAMuQ,MAAA,GAAS,EAAf,CAvC4E;AAAA,QAwC5E,OAAOxT,CAAA,GAAI4S,IAAA,CAAKvY,MAAhB,EAAwB2F,CAAA,EAAxB,EAA6B;AAAA,YACzB,MAAMH,KAAA,GAAQgT,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK5S,CAAL,CAAd,EAAuBA,CAAvB,EAA0BkN,SAA1B,CAAd,CADyB;AAAA,YAEzB,IAAI,CAACrN,KAAL;AAAA,gBAAY,OAAO,IAAP,CAFa;AAAA,YAGzB2T,MAAA,CAAOtY,IAAP,CAAY2E,KAAZ,CAHyB,CAAA;AAAA,SAxC+C;AAAA,QA8C5E,OAAO,IAAI0T,SAAJ,CAAcpV,IAAd,EAAoBqV,MAApB,CAAP,CA9C4E;AAAA,KAT9C;AAAA,IA0DlCT,QAAA,CAASU,GAAT,EAA6C;AAAA,QACzC,KAAK,IAAIzT,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,IAAA,CAAK4S,IAAL,CAAUvY,MAA9B,EAAsC2F,CAAA,EAAtC,EAA2C;AAAA,YACvC,MAAMzE,KAAA,GAAQ,IAAA,CAAKqX,IAAL,CAAU5S,CAAV,CAAA,CAAa+S,QAAb,CAAsBU,GAAtB,CAAd,CADuC;AAAA,YAEvC,MAAMvV,KAAA,GAAQyP,YAAA,CAAa,IAAA,CAAKxP,IAAlB,EAAwBuU,MAAA,CAAOnX,KAAP,CAAxB,CAAd,CAFuC;AAAA,YAGvC,IAAI,CAAC2C,KAAL,EAAY;AAAA,gBACR,OAAO3C,KAAP,CADQ;AAAA,aAAZ,MAEO,IAAIyE,CAAA,KAAM,IAAA,CAAK4S,IAAL,CAAUvY,MAAV,GAAmB,CAA7B,EAAgC;AAAA,gBACnC,MAAM,IAAI6Y,cAAJ,CAAiB,CAAC,6BAAD,GAAgCzF,UAAA,CAAS,IAAKtP,CAAAA,IAAd,CAAhC,EAAoD,YAApD,GAAkEsP,UAAA,CAASiF,MAAA,CAAOnX,KAAP,CAAT,CAAlE,EAA0F,SAA1F,CAAjB,CAAN,CADmC;AAAA,aALA;AAAA,SADF;AAAA,QAYzC,OAAO,IAAP,CAZyC;AAAA,KA1DX;AAAA,IAyElCyX,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnC,KAAKsU,IAAL,CAAU3I,OAAV,CAAkB3L,EAAlB,CADmC,CAAA;AAAA,KAzEL;AAAA,IA6ElC2U,aAAA,GAAyB;AAAA,QACrB,OAAO,IAAA,CAAKL,IAAL,CAAUc,KAAV,CAAgBhS,GAAA,IAAOA,GAAA,CAAIuR,aAAJ,EAAvB,CAAP,CADqB;AAAA,KA7ES;AAAA,IAiFlCf,SAAA,GAAkC;AAAA,QAC9B,MAAM/T,IAAA,GAAO,IAAA,CAAKA,IAAlB,CAD8B;AAAA,QAE9B,MAAMgU,UAAA,GAAa,CAAChU,IAAA,CAAKyO,IAAN,CAAnB,CAF8B;AAAA,QAG9B,IAAIzO,IAAA,CAAKyO,IAAL,KAAc,OAAlB,EAA2B;AAAA,YACvB,MAAMW,QAAA,GAAWpP,IAAA,CAAKoP,QAAtB,CADuB;AAAA,YAEvB,IAAIA,QAAA,CAASX,IAAT,KAAkB,QAAlB,IACAW,QAAA,CAASX,IAAT,KAAkB,QADlB,IAEAW,QAAA,CAASX,IAAT,KAAkB,SAFtB,EAEiC;AAAA,gBAC7BuF,UAAA,CAAWjX,IAAX,CAAgBqS,QAAA,CAASX,IAAzB,CAD6B,CAAA;AAAA,gBAE7B,MAAMY,CAAA,GAAIrP,IAAA,CAAKqP,CAAf,CAF6B;AAAA,gBAG7B,IAAI,OAAOA,CAAP,KAAa,QAAb,IAAyB,IAAKoF,CAAAA,IAAL,CAAUvY,MAAV,GAAmB,CAAhD,EAAmD;AAAA,oBAC/C8X,UAAA,CAAWjX,IAAX,CAAgBsS,CAAhB,CAD+C,CAAA;AAAA,iBAHtB;AAAA,aAJV;AAAA,SAHG;AAAA,QAe9B,OAAO2E,UAAA,CAAWtN,MAAX,CAAkB,IAAA,CAAK+N,IAAL,CAAU3W,GAAV,CAAcyF,GAAA,IAAOA,GAAA,CAAIwQ,SAAJ,EAArB,CAAlB,CAAP,CAf8B;AAAA,KAjFA;AAAA,CA7BtC;AAiIA,kBAAA,SAAA;;AC/HA;AAkBe,MAAMyB,gBAAN,CAA6C;AAAA,IAIxDxH,WAAA,CAAYyF,QAAZ,EAAyD;AAAA,QACrD,IAAKzT,CAAAA,IAAL,GAAYkP,aAAZ,CADqD;AAAA,QAErD,IAAKuE,CAAAA,QAAL,GAAgBA,QAAhB,CAFqD;AAAA,KAJD;AAAA,IASxD,OAAOlX,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAAgF;AAAA,QAC5E,IAAID,IAAA,CAAKvY,MAAL,GAAc,CAAlB,EAAqB;AAAA,YACjB,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,+BAAD,CAAd,CAAP,CADiB;AAAA,SADuD;AAAA,QAK5E,MAAM0V,QAAA,GAAWhB,IAAA,CAAK,CAAL,CAAjB,CAL4E;AAAA,QAM5E,IAAI,CAAC5X,KAAA,CAAMC,OAAN,CAAc2Y,QAAd,CAAD,IAA4B,OAAOA,QAAP,KAAoB,QAApD,EAA+D;AAAA,YAC3D,OAAOf,OAAA,CAAQ3U,KAAR,CAAc,CAAC,gDAAD,CAAd,CAAP,CAD2D;AAAA,SANa;AAAA,QAU5E,MAAM0T,QAAA,GAA8C,EAApD,CAV4E;AAAA,QAW5E,IAAIiC,oBAAA,GAAuB,KAA3B,CAX4E;AAAA,QAY5E,KAAK,IAAI7T,CAAA,GAAI,CAAR,EAAWA,CAAA,IAAK4S,IAAA,CAAKvY,MAAL,GAAc,CAAnC,EAAsC,EAAE2F,CAAxC,EAA2C;AAAA,YACvC,MAAM0B,GAAA,GAAOkR,IAAA,CAAK5S,CAAL,CAAb,CADuC;AAAA,YAGvC,IAAI6T,oBAAA,IAAwB,OAAOnS,GAAP,KAAe,QAAvC,IAAmD,CAAC1G,KAAA,CAAMC,OAAN,CAAcyG,GAAd,CAAxD,EAA4E;AAAA,gBACxEmS,oBAAA,GAAuB,KAAvB,CADwE;AAAA,gBAGxE,IAAItC,KAAA,GAAQ,IAAZ,CAHwE;AAAA,gBAIxE,IAAI7P,GAAA,CAAI,YAAJ,CAAJ,EAAuB;AAAA,oBACnB6P,KAAA,GAAQsB,OAAA,CAAQnY,KAAR,CAAcgH,GAAA,CAAI,YAAJ,CAAd,EAAiC,CAAjC,EAAoCmL,UAApC,CAAR,CADmB;AAAA,oBAEnB,IAAI,CAAC0E,KAAL;AAAA,wBAAY,OAAO,IAAP,CAFO;AAAA,iBAJiD;AAAA,gBASxE,IAAI1F,IAAA,GAAO,IAAX,CATwE;AAAA,gBAUxE,IAAInK,GAAA,CAAI,WAAJ,CAAJ,EAAsB;AAAA,oBAClBmK,IAAA,GAAOgH,OAAA,CAAQnY,KAAR,CAAcgH,GAAA,CAAI,WAAJ,CAAd,EAAgC,CAAhC,EAAmCrD,OAAA,CAAMyO,UAAN,CAAnC,CAAP,CADkB;AAAA,oBAElB,IAAI,CAACjB,IAAL;AAAA,wBAAW,OAAO,IAAP,CAFO;AAAA,iBAVkD;AAAA,gBAexE,IAAI4F,SAAA,GAAY,IAAhB,CAfwE;AAAA,gBAgBxE,IAAI/P,GAAA,CAAI,YAAJ,CAAJ,EAAuB;AAAA,oBACnB+P,SAAA,GAAYoB,OAAA,CAAQnY,KAAR,CAAcgH,GAAA,CAAI,YAAJ,CAAd,EAAiC,CAAjC,EAAoCsL,SAApC,CAAZ,CADmB;AAAA,oBAEnB,IAAI,CAACyE,SAAL;AAAA,wBAAgB,OAAO,IAAP,CAFG;AAAA,iBAhBiD;AAAA,gBAqBxE,MAAMqC,cAAA,GAAiBlC,QAAA,CAASA,QAAA,CAASvX,MAAT,GAAkB,CAA3B,CAAvB,CArBwE;AAAA,gBAsBxEyZ,cAAA,CAAevC,KAAf,GAAuBA,KAAvB,CAtBwE;AAAA,gBAuBxEuC,cAAA,CAAejI,IAAf,GAAsBA,IAAtB,CAvBwE;AAAA,gBAwBxEiI,cAAA,CAAerC,SAAf,GAA2BA,SAA3B,CAxBwE;AAAA,aAA5E,MAyBO;AAAA,gBACH,MAAMsC,OAAA,GAAUlB,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK5S,CAAL,CAAd,EAAuB,CAAvB,EAA0BkN,SAA1B,CAAhB,CADG;AAAA,gBAEH,IAAI,CAAC6G,OAAL;AAAA,oBAAc,OAAO,IAAP,CAFX;AAAA,gBAIH,MAAMnH,IAAA,GAAOmH,OAAA,CAAQ5V,IAAR,CAAayO,IAA1B,CAJG;AAAA,gBAKH,IAAIA,IAAA,KAAS,QAAT,IAAqBA,IAAA,KAAS,OAA9B,IAAyCA,IAAA,KAAS,MAAlD,IAA4DA,IAAA,KAAS,eAAzE;AAAA,oBACI,OAAOiG,OAAA,CAAQ3U,KAAR,CAAc,CAAC,iEAAD,CAAd,CAAP,CAND;AAAA,gBAQH2V,oBAAA,GAAuB,IAAvB,CARG;AAAA,gBASHjC,QAAA,CAAS1W,IAAT,CAAc;AAAA,oBAAC6Y,OAAD;AAAA,oBAAUxC,KAAA,EAAO,IAAjB;AAAA,oBAAuB1F,IAAA,EAAM,IAA7B;AAAA,oBAAmC4F,SAAA,EAAW,IAA9C;AAAA,iBAAd,CATG,CAAA;AAAA,aA5BgC;AAAA,SAZiC;AAAA,QAqD5E,OAAO,IAAIkC,gBAAJ,CAAqB/B,QAArB,CAAP,CArD4E;AAAA,KATxB;AAAA,IAiExDmB,QAAA,CAASU,GAAT,EAA4C;AAAA,QACxC,MAAMO,eAAA,GAAkBhC,OAAA,IAAW;AAAA,YAC/B,MAAMiC,gBAAA,GAAmBjC,OAAA,CAAQ+B,OAAR,CAAgBhB,QAAhB,CAAyBU,GAAzB,CAAzB,CAD+B;AAAA,YAE/B,IAAIf,MAAA,CAAOuB,gBAAP,CAAA,KAA6B3G,iBAAjC,EAAoD;AAAA,gBAChD,OAAO,IAAI8D,gBAAJ,CAAqB,EAArB,EAAyB6C,gBAAzB,EAA2C,IAA3C,EAAiD,IAAjD,EAAuD,IAAvD,CAAP,CADgD;AAAA,aAFrB;AAAA,YAM/B,OAAO,IAAI7C,gBAAJ,CACC3D,QAAA,CAASwG,gBAAT,CADD,EAEC,IAFD,EAGCjC,OAAA,CAAQT,KAAR,GAAgBS,OAAA,CAAQT,KAAR,CAAcwB,QAAd,CAAuBU,GAAvB,CAAhB,GAA8C,IAH/C,EAICzB,OAAA,CAAQnG,IAAR,GAAemG,OAAA,CAAQnG,IAAR,CAAakH,QAAb,CAAsBU,GAAtB,CAAA,CAA2BjY,IAA3B,CAAgC,GAAhC,CAAf,GAAsD,IAJvD,EAKCwW,OAAA,CAAQP,SAAR,GAAoBO,OAAA,CAAQP,SAAR,CAAkBsB,QAAlB,CAA2BU,GAA3B,CAApB,GAAsD,IALvD,CAAP,CAN+B;AAAA,SAAnC,CADwC;AAAA,QAgBxC,OAAO,IAAI9B,SAAJ,CAAc,IAAKC,CAAAA,QAAL,CAAc3V,GAAd,CAAkB+X,eAAlB,CAAd,CAAP,CAhBwC;AAAA,KAjEY;AAAA,IAoFxDhB,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnC,KAAW0T,MAAAA,OAAX,IAAsB,IAAA,CAAKJ,QAA3B,EAAqC;AAAA,YACjCtT,EAAA,CAAG0T,OAAA,CAAQ+B,OAAX,CADiC,CAAA;AAAA,YAEjC,IAAI/B,OAAA,CAAQT,KAAZ,EAAmB;AAAA,gBACfjT,EAAA,CAAG0T,OAAA,CAAQT,KAAX,CADe,CAAA;AAAA,aAFc;AAAA,YAKjC,IAAIS,OAAA,CAAQnG,IAAZ,EAAkB;AAAA,gBACdvN,EAAA,CAAG0T,OAAA,CAAQnG,IAAX,CADc,CAAA;AAAA,aALe;AAAA,YAQjC,IAAImG,OAAA,CAAQP,SAAZ,EAAuB;AAAA,gBACnBnT,EAAA,CAAG0T,OAAA,CAAQP,SAAX,CADmB,CAAA;AAAA,aARU;AAAA,SADF;AAAA,KApFiB;AAAA,IAmGxDwB,aAAA,GAAyB;AAAA;AAGrB;AAAA,QAAA,OAAO,KAAP,CAHqB;AAAA,KAnG+B;AAAA,IAyGxDf,SAAA,GAAkC;AAAA,QAC9B,MAAMC,UAAA,GAAa,CAAC,QAAD,CAAnB,CAD8B;AAAA,QAE9B,KAAWH,MAAAA,OAAX,IAAsB,IAAA,CAAKJ,QAA3B,EAAqC;AAAA,YACjCO,UAAA,CAAWjX,IAAX,CAAgB8W,OAAA,CAAQ+B,OAAR,CAAgB7B,SAAhB,EAAhB,CADiC,CAAA;AAAA,YAEjC,MAAM3Y,OAAA,GAAU,EAAhB,CAFiC;AAAA,YAGjC,IAAIyY,OAAA,CAAQT,KAAZ,EAAmB;AAAA,gBACfhY,OAAA,CAAQ,YAAR,CAAwByY,GAAAA,OAAA,CAAQT,KAAR,CAAcW,SAAd,EAAxB,CADe;AAAA,aAHc;AAAA,YAMjC,IAAIF,OAAA,CAAQnG,IAAZ,EAAkB;AAAA,gBACdtS,OAAA,CAAQ,WAAR,CAAuByY,GAAAA,OAAA,CAAQnG,IAAR,CAAaqG,SAAb,EAAvB,CADc;AAAA,aANe;AAAA,YASjC,IAAIF,OAAA,CAAQP,SAAZ,EAAuB;AAAA,gBACnBlY,OAAA,CAAQ,YAAR,CAAwByY,GAAAA,OAAA,CAAQP,SAAR,CAAkBS,SAAlB,EAAxB,CADmB;AAAA,aATU;AAAA,YAYjCC,UAAA,CAAWjX,IAAX,CAAgB3B,OAAhB,CAZiC,CAAA;AAAA,SAFP;AAAA,QAgB9B,OAAO4Y,UAAP,CAhB8B;AAAA,KAzGsB;AAAA;;AClB5D;AAQe,MAAM+B,eAAN,CAA4C;AAAA,IAIvD/H,WAAA,CAAYtM,KAAZ,EAA+B;AAAA,QAC3B,IAAK1B,CAAAA,IAAL,GAAYmP,iBAAZ,CAD2B;AAAA,QAE3B,IAAKzN,CAAAA,KAAL,GAAaA,KAAb,CAF2B;AAAA,KAJwB;AAAA,IASvD,OAAOnF,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAAgF;AAAA,QAC5E,IAAID,IAAA,CAAKvY,MAAL,KAAgB,CAApB,EAAuB;AAAA,YACnB,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,uBAAD,CAAd,CAAP,CADmB;AAAA,SADqD;AAAA,QAK5E,MAAM+E,IAAA,GAAO4P,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0B9F,UAA1B,CAAb,CAL4E;AAAA,QAM5E,IAAI,CAAC7J,IAAL;AAAA,YAAW,OAAO4P,OAAA,CAAQ3U,KAAR,CAAc,CAAC,uBAAD,CAAd,CAAP,CANiE;AAAA,QAQ5E,OAAO,IAAIgW,eAAJ,CAAoBjR,IAApB,CAAP,CAR4E;AAAA,KATzB;AAAA,IAoBvD8P,QAAA,CAASU,GAAT,EAAuD;AAAA,QACnD,MAAMU,kBAAA,GAAqB,IAAKtU,CAAAA,KAAL,CAAWkT,QAAX,CAAoBU,GAApB,CAA3B,CADmD;AAAA,QAGnD,MAAMlY,KAAA,GAAQ6W,aAAA,CAAcP,UAAd,CAAyBsC,kBAAzB,CAAd,CAHmD;AAAA,QAInD,IAAI5Y,KAAA,IAASkY,GAAA,CAAIW,eAAjB;AAAA,YAAkC7Y,KAAA,CAAM8W,SAAN,GAAkBoB,GAAA,CAAIW,eAAJ,CAAoB3R,OAApB,CAA4B0R,kBAA5B,CAAkD,GAAA,CAAC,CAArE,CAJiB;AAAA,QAMnD,OAAO5Y,KAAP,CANmD;AAAA,KApBA;AAAA,IA6BvDyX,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnCA,EAAA,CAAG,IAAKuB,CAAAA,KAAR,CADmC,CAAA;AAAA,KA7BgB;AAAA,IAiCvDoT,aAAA,GAAyB;AAAA;AAErB,QAAA,OAAO,KAAP,CAFqB;AAAA,KAjC8B;AAAA,IAsCvDf,SAAA,GAAkC;AAAA,QAC9B,OAAO;AAAA,YAAC,OAAD;AAAA,YAAU,IAAKrS,CAAAA,KAAL,CAAWqS,SAAX,EAAV;AAAA,SAAP,CAD8B;AAAA,KAtCqB;AAAA;;ACO3D,MAAMiB,KAAA,GAAQ;AAAA,IACV,cAAcpG,WADJ;AAAA,IAEV,YAAYC,SAFF;AAAA,IAGV,aAAaH,UAHH;AAAA,IAIV,aAAaC,UAJH;AAAA,CAAd,CAjBA;AA+BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAMuH,QAAN,CAAqC;AAAA,IAIjClI,WAAA,CAAYhO,IAAZ,EAAwByU,IAAxB,EAAiD;AAAA,QAC7C,IAAKzU,CAAAA,IAAL,GAAYA,IAAZ,CAD6C;AAAA,QAE7C,IAAKyU,CAAAA,IAAL,GAAYA,IAAZ,CAF6C;AAAA,KAJhB;AAAA,IASjC,OAAOlY,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAAgF;AAAA,QAC5E,IAAID,IAAA,CAAKvY,MAAL,GAAc,CAAlB;AAAA,YACI,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,+BAAD,CAAd,CAAP,CAFwE;AAAA,QAI5E,MAAM+E,IAAA,GAAgB2P,IAAA,CAAK,CAAL,CAAtB,CAJ4E;AAAA,QAO5E,IAAK,CAAA3P,IAAA,KAAS,YAAT,IAAyBA,IAAA,KAAS,WAAlC,KAAkD2P,IAAA,CAAKvY,MAAL,KAAgB,CAAvE;AAAA,YACI,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,sBAAD,CAAd,CAAP,CARwE;AAAA,QAU5E,MAAMC,IAAA,GAAOgV,KAAA,CAAMlQ,IAAN,CAAb,CAV4E;AAAA,QAY5E,MAAMuQ,MAAA,GAAS,EAAf,CAZ4E;AAAA,QAa5E,KAAK,IAAIxT,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI4S,IAAA,CAAKvY,MAAzB,EAAiC2F,CAAA,EAAjC,EAAsC;AAAA,YAClC,MAAMH,KAAA,GAAQgT,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK5S,CAAL,CAAd,EAAuBA,CAAvB,EAA0BkN,SAA1B,CAAd,CADkC;AAAA,YAElC,IAAI,CAACrN,KAAL;AAAA,gBAAY,OAAO,IAAP,CAFsB;AAAA,YAGlC2T,MAAA,CAAOtY,IAAP,CAAY2E,KAAZ,CAHkC,CAAA;AAAA,SAbsC;AAAA,QAmB5E,OAAO,IAAIwU,QAAJ,CAAalW,IAAb,EAAmBqV,MAAnB,CAAP,CAnB4E;AAAA,KAT/C;AAAA,IA+BjCT,QAAA,CAASU,GAAT,EAAuG;AAAA,QACnG,IAAI,IAAKtV,CAAAA,IAAL,CAAUyO,IAAV,KAAmB,SAAvB,EAAkC;AAAA,YAC9B,OAAO0H,OAAA,CAAQ,IAAA,CAAK1B,IAAL,CAAU,CAAV,CAAA,CAAaG,QAAb,CAAsBU,GAAtB,CAAR,CAAP,CAD8B;AAAA,SAAlC,MAEO,IAAI,IAAKtV,CAAAA,IAAL,CAAUyO,IAAV,KAAmB,OAAvB,EAAgC;AAAA,YACnC,IAAI/M,KAAJ,CADmC;AAAA,YAEnC,IAAI3B,KAAJ,CAFmC;AAAA,YAGnC,KAAWwD,MAAAA,GAAX,IAAkB,IAAA,CAAKkR,IAAvB,EAA6B;AAAA,gBACzB/S,KAAA,GAAQ6B,GAAA,CAAIqR,QAAJ,CAAaU,GAAb,CAAR,CADyB;AAAA,gBAEzBvV,KAAA,GAAQ,IAAR,CAFyB;AAAA,gBAGzB,IAAI2B,KAAA,YAAiB4P,OAArB,EAA4B;AAAA,oBACxB,OAAO5P,KAAP,CADwB;AAAA,iBAA5B,MAEO,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAAA,oBAClC,MAAM0U,CAAA,GAAId,GAAA,CAAIe,UAAJ,CAAe3U,KAAf,CAAV,CADkC;AAAA,oBAElC,IAAI0U,CAAJ;AAAA,wBAAO,OAAOA,CAAP,CAF2B;AAAA,iBAA/B,MAGA,IAAIvZ,KAAA,CAAMC,OAAN,CAAc4E,KAAd,CAAJ,EAA0B;AAAA,oBAC7B,IAAIA,KAAA,CAAMxF,MAAN,GAAe,CAAf,IAAoBwF,KAAA,CAAMxF,MAAN,GAAe,CAAvC,EAA0C;AAAA,wBACtC6D,KAAA,GAAQ,CAAC,mBAAD,GAAsBzE,IAAA,CAAKJ,SAAL,CAAewG,KAAf,CAAtB,EAA4C,mEAA5C,CAAR,CADsC;AAAA,qBAA1C,MAEO;AAAA,wBACH3B,KAAA,GAAQoU,YAAA,CAAazS,KAAA,CAAM,CAAN,CAAb,EAAuBA,KAAA,CAAM,CAAN,CAAvB,EAAiCA,KAAA,CAAM,CAAN,CAAjC,EAA2CA,KAAA,CAAM,CAAN,CAA3C,CAAR,CADG;AAAA,qBAHsB;AAAA,oBAM7B,IAAI,CAAC3B,KAAL,EAAY;AAAA,wBACR,OAAO,IAAIuR,OAAJ,CAAW5P,KAAA,CAAM,CAAN,CAAD,GAAkB,GAA5B,EAAkCA,KAAA,CAAM,CAAN,CAAD,GAAkB,GAAnD,EAAyDA,KAAA,CAAM,CAAN,CAAD,GAAkB,GAA1E,EAAgFA,KAAA,CAAM,CAAN,CAAhF,CAAP,CADQ;AAAA,qBANiB;AAAA,iBARR;AAAA,aAHM;AAAA,YAsBnC,MAAM,IAAIqT,cAAJ,CAAiBhV,KAAA,IAAS,CAAC,kCAAD,GAAqC,OAAO2B,KAAP,KAAiB,QAAjB,GAA4BA,KAA5B,GAAoC7B,MAAA,CAAOvE,IAAA,CAAKJ,SAAL,CAAewG,KAAf,CAAP,CAAzE,EAAuG,CAAvG,CAA1B,CAAN,CAtBmC;AAAA,SAAhC,MAuBA,IAAI,IAAK1B,CAAAA,IAAL,CAAUyO,IAAV,KAAmB,QAAvB,EAAiC;AAAA,YACpC,IAAIrR,KAAA,GAAQ,IAAZ,CADoC;AAAA,YAEpC,KAAWmG,MAAAA,GAAX,IAAkB,IAAA,CAAKkR,IAAvB,EAA6B;AAAA,gBACzBrX,KAAA,GAAQmG,GAAA,CAAIqR,QAAJ,CAAaU,GAAb,CAAR,CADyB;AAAA,gBAEzB,IAAIlY,KAAA,KAAU,IAAd;AAAA,oBAAoB,OAAO,CAAP,CAFK;AAAA,gBAGzB,MAAMkZ,GAAA,GAAMC,MAAA,CAAOnZ,KAAP,CAAZ,CAHyB;AAAA,gBAIzB,IAAIoZ,KAAA,CAAMF,GAAN,CAAJ;AAAA,oBAAgB,SAJS;AAAA,gBAKzB,OAAOA,GAAP,CALyB;AAAA,aAFO;AAAA,YASpC,MAAM,IAAIvB,cAAJ,CAAiB,CAAC,kBAAD,GAAqBzZ,IAAA,CAAKJ,SAAL,CAAekC,KAAf,CAArB,EAA2C,WAA3C,CAAjB,CAAN,CAToC;AAAA,SAAjC,MAUA,IAAI,IAAK4C,CAAAA,IAAL,CAAUyO,IAAV,KAAmB,WAAvB,EAAoC;AAAA;AAGvC;AAAA,YAAA,OAAO+E,SAAA,CAAUE,UAAV,CAAqB+C,QAAA,CAAc,IAAKhC,CAAAA,IAAL,CAAU,CAAV,EAAaG,QAAb,CAAsBU,GAAtB,CAAd,CAArB,CAAP,CAHuC;AAAA,SAApC,MAIA,IAAI,IAAKtV,CAAAA,IAAL,CAAUyO,IAAV,KAAmB,eAAvB,EAAwC;AAAA,YAC3C,OAAOwF,aAAA,CAAcP,UAAd,CAAyB+C,QAAA,CAAc,IAAKhC,CAAAA,IAAL,CAAU,CAAV,EAAaG,QAAb,CAAsBU,GAAtB,CAAd,CAAzB,CAAP,CAD2C;AAAA,SAAxC,MAEA;AAAA,YACH,OAAOmB,QAAA,CAAc,IAAA,CAAKhC,IAAL,CAAU,CAAV,CAAA,CAAaG,QAAb,CAAsBU,GAAtB,CAAd,CAAP,CADG;AAAA,SA1C4F;AAAA,KA/BtE;AAAA,IA8EjCT,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnC,KAAKsU,IAAL,CAAU3I,OAAV,CAAkB3L,EAAlB,CADmC,CAAA;AAAA,KA9EN;AAAA,IAkFjC2U,aAAA,GAAyB;AAAA,QACrB,OAAO,IAAA,CAAKL,IAAL,CAAUc,KAAV,CAAgBhS,GAAA,IAAOA,GAAA,CAAIuR,aAAJ,EAAvB,CAAP,CADqB;AAAA,KAlFQ;AAAA,IAsFjCf,SAAA,GAAkC;AAAA,QAC9B,IAAI,IAAK/T,CAAAA,IAAL,CAAUyO,IAAV,KAAmB,WAAvB,EAAoC;AAAA,YAChC,OAAO,IAAI+G,gBAAJ,CAAqB,CAAC;AAAA,oBAACI,OAAA,EAAS,IAAA,CAAKnB,IAAL,CAAU,CAAV,CAAV;AAAA,oBAAwBrB,KAAA,EAAO,IAA/B;AAAA,oBAAqC1F,IAAA,EAAM,IAA3C;AAAA,oBAAiD4F,SAAA,EAAW,IAA5D;AAAA,iBAAD,CAArB,CAAA,CAA0FS,SAA1F,EAAP,CADgC;AAAA,SADN;AAAA,QAK9B,IAAI,IAAK/T,CAAAA,IAAL,CAAUyO,IAAV,KAAmB,eAAvB,EAAwC;AAAA,YACpC,OAAO,IAAIsH,eAAJ,CAAoB,IAAKtB,CAAAA,IAAL,CAAU,CAAV,CAApB,CAAA,CAAkCV,SAAlC,EAAP,CADoC;AAAA,SALV;AAAA,QAS9B,MAAMC,UAAA,GAAa,CAAC,CAAC,GAAD,GAAM,IAAA,CAAKhU,IAAL,CAAUyO,IAAhB,EAAA,CAAD,CAAnB,CAT8B;AAAA,QAU9B,IAAKoG,CAAAA,SAAL,CAAe6B,KAAA,IAAS;AAAA,YAAE1C,UAAA,CAAWjX,IAAX,CAAgB2Z,KAAA,CAAM3C,SAAN,EAAhB,CAAF,CAAA;AAAA,SAAxB,CAV8B,CAAA;AAAA,QAW9B,OAAOC,UAAP,CAX8B;AAAA,KAtFD;AAAA,CA/BrC;AAoIA,iBAAA,QAAA;;AClIA;AAQA,MAAM2C,aAAA,GAAgB;AAAA,IAAC,SAAD;AAAA,IAAY,OAAZ;AAAA,IAAqB,YAArB;AAAA,IAAmC,SAAnC;AAAA,CAAtB,CAVA;AAYA,MAAMC,iBAAN,CAAwB;AAAA,IAYpB5I,WAAA,GAAc;AAAA,QACV,IAAK6I,CAAAA,OAAL,GAAgB,IAAhB,CADU;AAAA,QAEV,IAAKC,CAAAA,OAAL,GAAe,IAAf,CAFU;AAAA,QAGV,IAAKC,CAAAA,YAAL,GAAoB,IAApB,CAHU;AAAA,QAIV,IAAKC,CAAAA,gBAAL,GAAwB,IAAxB,CAJU;AAAA,QAKV,IAAKC,CAAAA,gBAAL,GAAwB,EAAxB,CALU;AAAA,QAMV,IAAKhB,CAAAA,eAAL,GAAuB,IAAvB,CANU;AAAA,QAOV,IAAKiB,CAAAA,SAAL,GAAiB,IAAjB,CAPU;AAAA,QAQV,IAAKC,CAAAA,gBAAL,GAAwB,IAAxB,CARU;AAAA,QASV,IAAKC,CAAAA,mBAAL,GAA2B,IAA3B,CATU;AAAA,KAZM;AAAA,IAwBpBrL,EAAA,GAAoB;AAAA,QAChB,OAAO,IAAK+K,CAAAA,OAAL,IAAgB,IAAA,CAAKA,OAAL,CAAa/K,EAAb,KAAoBxQ,SAApC,GAAgD,IAAKub,CAAAA,OAAL,CAAa/K,EAA7D,GAAkE,IAAzE,CADgB;AAAA,KAxBA;AAAA,IA4BpBsL,YAAA,GAA8B;AAAA,QAC1B,OAAO,IAAKP,CAAAA,OAAL,GAAe,OAAO,IAAKA,CAAAA,OAAL,CAAa9W,IAApB,KAA6B,QAA7B,GAAwC2W,aAAA,CAAc,IAAKG,CAAAA,OAAL,CAAa9W,IAA3B,CAAxC,GAA2E,IAAK8W,CAAAA,OAAL,CAAa9W,IAAvG,GAA8G,IAArH,CAD0B;AAAA,KA5BV;AAAA,IAgCpBsX,QAAA,GAAiC;AAAA,QAC7B,OAAO,IAAA,CAAKR,OAAL,IAAgB,cAAc,IAAKA,CAAAA,OAAnC,GAA6C,IAAA,CAAKA,OAAL,CAAaQ,QAA1D,GAAqE,IAA5E,CAD6B;AAAA,KAhCb;AAAA,IAoCpBC,WAAA,GAAsC;AAAA,QAClC,OAAO,IAAKL,CAAAA,SAAZ,CADkC;AAAA,KApClB;AAAA,IAwCpBrL,UAAA,GAA8B;AAAA,QAC1B,OAAQ,IAAKiL,CAAAA,OAAL,IAAgB,IAAA,CAAKA,OAAL,CAAajL,UAA9B,IAA6C,EAApD,CAD0B;AAAA,KAxCV;AAAA,IA4CpB2L,kBAAA,GAA6B;AAAA,QACzB,IAAI,IAAKL,CAAAA,gBAAL,IAAyB,IAAA,CAAKC,mBAAlC,EAAuD;AAAA,YAEnD,MAAMhB,CAAA,GAAI,KAAKgB,mBAAL,CAAyBK,MAAnC,CAFmD;AAAA,YAGnD,MAAMrE,KAAA,GAAQ,KAAKgE,mBAAL,CAAyBhE,KAAvC,CAHmD;AAAA,YAInD,MAAM,CAAChP,CAAD,EAAIsT,CAAJ,CAAS,GAAA,IAAA,CAAKP,gBAApB,CAJmD;AAAA;AAOnD,YAAMQ,MAAAA,EAAA,GAAKvT,CAAA,GAAIgP,KAAJ,GAAYgD,CAAA,CAAE,CAAF,CAAvB,CAPmD;AAAA,YAQnD,MAAMwB,EAAA,GAAKF,CAAA,GAAItE,KAAJ,GAAYgD,CAAA,CAAE,CAAF,CAAvB,CARmD;AAAA;AAWnD,YAAMyB,MAAAA,EAAA,GAAK,IAAKT,CAAAA,mBAAL,CAAyBU,OAAzB,CAAiC,CAAjC,CAAX,CAXmD;AAAA,YAYnD,MAAMC,EAAA,GAAK,IAAKX,CAAAA,mBAAL,CAAyBU,OAAzB,CAAiC,CAAjC,CAAX,CAZmD;AAAA;AAenD,YAAME,MAAAA,IAAA,GAAQH,EAAA,GAAKF,EAAL,GAAUI,EAAA,GAAKH,EAA7B,CAfmD;AAAA,YAgBnD,OAAOI,IAAP,CAhBmD;AAAA,SAD9B;AAAA,QAoBzB,OAAO,CAAP,CApByB;AAAA,KA5CT;AAAA,IAmEpB3B,UAAA,CAAW3U,KAAX,EAAkC;AAAA,QAC9B,IAAIuW,MAAA,GAAS,IAAA,CAAKhB,gBAAL,CAAsBvV,KAAtB,CAAb,CAD8B;AAAA,QAE9B,IAAI,CAACuW,MAAL,EAAa;AAAA,YACTA,MAAA,GAAS,IAAKhB,CAAAA,gBAAL,CAAsBvV,KAAtB,CAA+B4P,GAAAA,OAAA,CAAM/U,KAAN,CAAYmF,KAAZ,CAAxC,CADS;AAAA,SAFiB;AAAA,QAK9B,OAAOuW,MAAP,CAL8B;AAAA,KAnEd;AAAA,CAZxB;AAwFA,0BAAA,iBAAA;;ACtFA;AAgBA,MAAMC,kBAAN,CAA+C;AAAA,IAQ3ClK,WAAA,CAAYlJ,IAAZ,EAA0B9E,IAA1B,EAAsC4U,QAAtC,EAA0DH,IAA1D,EAAmF;AAAA,QAC/E,IAAK3P,CAAAA,IAAL,GAAYA,IAAZ,CAD+E;AAAA,QAE/E,IAAK9E,CAAAA,IAAL,GAAYA,IAAZ,CAF+E;AAAA,QAG/E,IAAKmY,CAAAA,SAAL,GAAiBvD,QAAjB,CAH+E;AAAA,QAI/E,IAAKH,CAAAA,IAAL,GAAYA,IAAZ,CAJ+E;AAAA,KARxC;AAAA,IAe3CG,QAAA,CAASU,GAAT,EAAwC;AAAA,QACpC,OAAO,KAAK6C,SAAL,CAAe7C,GAAf,EAAoB,IAAA,CAAKb,IAAzB,CAAP,CADoC;AAAA,KAfG;AAAA,IAmB3CI,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnC,KAAKsU,IAAL,CAAU3I,OAAV,CAAkB3L,EAAlB,CADmC,CAAA;AAAA,KAnBI;AAAA,IAuB3C2U,aAAA,GAAyB;AAAA,QACrB,OAAO,KAAP,CADqB;AAAA,KAvBkB;AAAA,IA2B3Cf,SAAA,GAA0B;AAAA,QACtB,OAAO,CAAC,IAAKjP,CAAAA,IAAN,EAAY4B,MAAZ,CAAmB,KAAK+N,IAAL,CAAU3W,GAAV,CAAcyF,GAAA,IAAOA,GAAA,CAAIwQ,SAAJ,EAArB,CAAnB,CAAP,CADsB;AAAA,KA3BiB;AAAA,IA+B3C,OAAOxX,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAAgF;AAAA,QAC5E,MAAM1D,EAAA,GAAcyD,IAAA,CAAK,CAAL,CAApB,CAD4E;AAAA,QAE5E,MAAM2D,UAAA,GAAaF,kBAAA,CAAmBG,WAAnB,CAA+BrH,EAA/B,CAAnB,CAF4E;AAAA,QAG5E,IAAI,CAACoH,UAAL,EAAiB;AAAA,YACb,OAAO1D,OAAA,CAAQ3U,KAAR,CAAc,CAAC,oBAAD,GAAuBiR,EAAvB,EAA0B,yDAA1B,CAAd,EAAoG,CAApG,CAAP,CADa;AAAA,SAH2D;AAAA;AAQ5E,QAAA,MAAMhR,IAAA,GAAOnD,KAAA,CAAMC,OAAN,CAAcsb,UAAd,CAAA,GACTA,UAAA,CAAW,CAAX,CADS,GACOA,UAAA,CAAWpY,IAD/B,CAR4E;AAAA,QAW5E,MAAMsY,kBAAA,GAAqBzb,KAAA,CAAMC,OAAN,CAAcsb,UAAd,CAAA,GACvB,CAAC;AAAA,gBAACA,UAAA,CAAW,CAAX,CAAD;AAAA,gBAAgBA,UAAA,CAAW,CAAX,CAAhB;AAAA,aAAD,CADuB,GAEvBA,UAAA,CAAWG,SAFf,CAX4E;AAAA,QAe5E,MAAMA,SAAA,GAAYD,kBAAA,CAAmBE,MAAnB,CAA0B,CAAC,CAACC,SAAD,CAAD,KACxC,CAAC5b,KAAA,CAAMC,OAAN,CAAc2b,SAAd,CAAD;AACA,QAAAA,SAAA,CAAUvc,MAAV,KAAqBuY,IAAA,CAAKvY,MAAL,GAAc,CAAA;AAFrB,CAAlB,CAf4E;AAAA,QAoB5E,IAAIwc,gBAAA,GAAoC,IAAxC,CApB4E;AAAA,QAsB5E,KAAA,MAAW,CAACvH,MAAD,EAASyD,QAAT,CAAX,IAAiC2D,SAAjC,EAA4C;AAAA;AAGxC;AAAA,YAAAG,gBAAA,GAAmB,IAAIC,gBAAJ,CAAmBjE,OAAA,CAAQkE,QAA3B,EAAqClE,OAAA,CAAQvO,IAA7C,EAAmD,IAAnD,EAAyDuO,OAAA,CAAQmE,KAAjE,CAAnB,CAHwC;AAAA;AAOxC;AAAA,YAAMC,MAAAA,UAAA,GAAgC,EAAtC,CAPwC;AAAA,YAQxC,IAAIC,cAAA,GAAiB,KAArB,CARwC;AAAA,YASxC,KAAK,IAAIlX,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI4S,IAAA,CAAKvY,MAAzB,EAAiC2F,CAAA,EAAjC,EAAsC;AAAA,gBAClC,MAAM0B,GAAA,GAAMkR,IAAA,CAAK5S,CAAL,CAAZ,CADkC;AAAA,gBAElC,MAAM8S,YAAA,GAAe9X,KAAA,CAAMC,OAAN,CAAcqU,MAAd,CAAA,GACjBA,MAAA,CAAOtP,CAAA,GAAI,CAAX,CADiB,GAEjBsP,MAAA,CAAOnR,IAFX,CAFkC;AAAA,gBAMlC,MAAMqV,MAAA,GAASqD,gBAAA,CAAiBnc,KAAjB,CAAuBgH,GAAvB,EAA4B,CAAA,GAAIuV,UAAA,CAAW5c,MAA3C,EAAmDyY,YAAnD,CAAf,CANkC;AAAA,gBAOlC,IAAI,CAACU,MAAL,EAAa;AAAA,oBACT0D,cAAA,GAAiB,IAAjB,CADS;AAAA,oBAET,MAFS;AAAA,iBAPqB;AAAA,gBAWlCD,UAAA,CAAW/b,IAAX,CAAgBsY,MAAhB,CAXkC,CAAA;AAAA,aATE;AAAA,YAsBxC,IAAI0D,cAAJ,EAAoB;AAAA;AAGhB;AAAA,gBAHgB,SAAA;AAAA,aAtBoB;AAAA,YA4BxC,IAAIlc,KAAA,CAAMC,OAAN,CAAcqU,MAAd,CAAJ,EAA2B;AAAA,gBACvB,IAAIA,MAAA,CAAOjV,MAAP,KAAkB4c,UAAA,CAAW5c,MAAjC,EAAyC;AAAA,oBACrCwc,gBAAA,CAAiB3Y,KAAjB,CAAuB,CAAC,SAAD,GAAYoR,MAAA,CAAOjV,MAAnB,EAA0B,sBAA1B,GAAkD4c,UAAA,CAAW5c,MAA7D,EAAoE,SAApE,CAAvB,CADqC,CAAA;AAAA,oBAErC,SAFqC;AAAA,iBADlB;AAAA,aA5Ba;AAAA,YAmCxC,KAAK,IAAI2F,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIiX,UAAA,CAAW5c,MAA/B,EAAuC2F,CAAA,EAAvC,EAA4C;AAAA,gBACxC,MAAM4N,QAAA,GAAW5S,KAAA,CAAMC,OAAN,CAAcqU,MAAd,CAAwBA,GAAAA,MAAA,CAAOtP,CAAP,CAAxB,GAAoCsP,MAAA,CAAOnR,IAA5D,CADwC;AAAA,gBAExC,MAAMuD,GAAA,GAAMuV,UAAA,CAAWjX,CAAX,CAAZ,CAFwC;AAAA,gBAGxC6W,gBAAA,CAAiBhS,MAAjB,CAAwB7E,CAAA,GAAI,CAA5B,CAA+B2N,CAAAA,YAA/B,CAA4CC,QAA5C,EAAsDlM,GAAA,CAAIvD,IAA1D,CAHwC,CAAA;AAAA,aAnCJ;AAAA,YAyCxC,IAAI0Y,gBAAA,CAAiBlZ,MAAjB,CAAwBtD,MAAxB,KAAmC,CAAvC,EAA0C;AAAA,gBACtC,OAAO,IAAIgc,kBAAJ,CAAuBlH,EAAvB,EAA2BhR,IAA3B,EAAiC4U,QAAjC,EAA2CkE,UAA3C,CAAP,CADsC;AAAA,aAzCF;AAAA,SAtBgC;AAAA,QAsE5E,IAAIP,SAAA,CAAUrc,MAAV,KAAqB,CAAzB,EAA4B;AAAA,YACxBwY,OAAA,CAAQlV,MAAR,CAAezC,IAAf,CAAoB,GAAG2b,gBAAA,CAAiBlZ,MAAxC,CADwB,CAAA;AAAA,SAA5B,MAEO;AAAA,YACH,MAAMiQ,QAAA,GAAW8I,SAAA,CAAUrc,MAAV,GAAmBqc,SAAnB,GAA+BD,kBAAhD,CADG;AAAA,YAEH,MAAMU,UAAA,GAAavJ,QAAA,CACd3R,GADc,CACV,CAAC,CAACqT,MAAD,CAAD,KAAc8H,kBAAA,CAAmB9H,MAAnB,CADJ,EAEd9T,IAFc,CAET,KAFS,CAAnB,CAFG;AAAA,YAMH,MAAM6b,WAAA,GAAc,EAApB,CANG;AAAA;AASH;AAAA,YAAA,KAAK,IAAIrX,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI4S,IAAA,CAAKvY,MAAzB,EAAiC2F,CAAA,EAAjC,EAAsC;AAAA,gBAClC,MAAMwT,MAAA,GAASX,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK5S,CAAL,CAAd,EAAuB,CAAA,GAAIqX,WAAA,CAAYhd,MAAvC,CAAf,CADkC;AAAA,gBAElC,IAAI,CAACmZ,MAAL;AAAA,oBAAa,OAAO,IAAP,CAFqB;AAAA,gBAGlC6D,WAAA,CAAYnc,IAAZ,CAAiBuS,UAAA,CAAS+F,MAAA,CAAOrV,IAAhB,CAAjB,CAHkC,CAAA;AAAA,aATnC;AAAA,YAcH0U,OAAA,CAAQ3U,KAAR,CAAc,CAAC,2BAAD,GAA8BiZ,UAA9B,EAAyC,aAAzC,GAAwDE,WAAA,CAAY7b,IAAZ,CAAiB,IAAjB,CAAxD,EAA+E,UAA/E,CAAd,CAdG,CAAA;AAAA,SAxEqE;AAAA,QAyF5E,OAAO,IAAP,CAzF4E;AAAA,KA/BrC;AAAA,IA2H3C,OAAO8b,QAAP,CACIP,QADJ,EAEIP,WAFJ,EAGE;AAAA,QAEEH,kBAAA,CAAmBG,WAAnB,GAAiCA,WAAjC,CAFF;AAAA,QAGE,KAAWvT,MAAAA,IAAX,IAAmBuT,WAAnB,EAAgC;AAAA,YAC5BO,QAAA,CAAS9T,IAAT,CAAA,GAAiBoT,kBAAjB,CAD4B;AAAA,SAHlC;AAAA,KA9HyC;AAAA,CAlB/C;AAyJA,SAASe,kBAAT,CAA4BR,SAA5B,EAA0D;AAAA,IACtD,IAAI5b,KAAA,CAAMC,OAAN,CAAc2b,SAAd,CAAJ,EAA8B;AAAA,QAC1B,OAAO,CAAC,CAAD,GAAIA,SAAA,CAAU3a,GAAV,CAAcwR,UAAd,CAAA,CAAwBjS,IAAxB,CAA6B,IAA7B,CAAJ,EAAuC,CAAvC,CAAP,CAD0B;AAAA,KAA9B,MAEO;AAAA,QACH,OAAO,CAAC,CAAD,GAAIiS,UAAA,CAASmJ,SAAA,CAAUzY,IAAnB,CAAJ,EAA6B,IAA7B,CAAP,CADG;AAAA,KAH+C;AAAA,CAzJ1D;AAiKA,2BAAA,kBAAA;;AC/JA;AAQe,MAAMoZ,kBAAN,CAA+C;AAAA,IAM1DpL,WAAA,CAAYqE,aAAZ,EAAuCC,kBAAvC,EAAuEC,MAAvE,EAAkG;AAAA,QAC9F,IAAKvS,CAAAA,IAAL,GAAYiP,YAAZ,CAD8F;AAAA,QAE9F,IAAKsD,CAAAA,MAAL,GAAcA,MAAd,CAF8F;AAAA,QAG9F,IAAKF,CAAAA,aAAL,GAAqBA,aAArB,CAH8F;AAAA,QAI9F,IAAKC,CAAAA,kBAAL,GAA0BA,kBAA1B,CAJ8F;AAAA,KANxC;AAAA,IAa1D,OAAO/V,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAAgF;AAAA,QAC5E,IAAID,IAAA,CAAKvY,MAAL,KAAgB,CAApB;AAAA,YACI,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,sBAAD,CAAd,CAAP,CAFwE;AAAA,QAI5E,MAAM3E,OAAA,GAAWqZ,IAAA,CAAK,CAAL,CAAjB,CAJ4E;AAAA,QAK5E,IAAI,OAAOrZ,OAAP,KAAmB,QAAnB,IAA+ByB,KAAA,CAAMC,OAAN,CAAc1B,OAAd,CAAnC;AAAA,YACI,OAAOsZ,OAAA,CAAQ3U,KAAR,CAAc,CAAC,4CAAD,CAAd,CAAP,CANwE;AAAA,QAQ5E,MAAMsS,aAAA,GAAgBqC,OAAA,CAAQnY,KAAR,CAClBnB,OAAA,CAAQ,gBAAR,CAA8BG,KAAAA,SAA9B,GAA0C,KAA1C,GAAkDH,OAAA,CAAQ,gBAAR,CADhC,EAC2D,CAD3D,EAC8DwT,WAD9D,CAAtB,CAR4E;AAAA,QAU5E,IAAI,CAACyD,aAAL;AAAA,YAAoB,OAAO,IAAP,CAVwD;AAAA,QAY5E,MAAMC,kBAAA,GAAqBoC,OAAA,CAAQnY,KAAR,CACvBnB,OAAA,CAAQ,qBAAR,CAAmCG,KAAAA,SAAnC,GAA+C,KAA/C,GAAuDH,OAAA,CAAQ,qBAAR,CADhC,EACgE,CADhE,EACmEwT,WADnE,CAA3B,CAZ4E;AAAA,QAc5E,IAAI,CAAC0D,kBAAL;AAAA,YAAyB,OAAO,IAAP,CAdmD;AAAA,QAgB5E,IAAIC,MAAA,GAAS,IAAb,CAhB4E;AAAA,QAiB5E,IAAInX,OAAA,CAAQ,QAAR,CAAJ,EAAuB;AAAA,YACnBmX,MAAA,GAASmC,OAAA,CAAQnY,KAAR,CAAcnB,OAAA,CAAQ,QAAR,CAAd,EAAiC,CAAjC,EAAoCuT,UAApC,CAAT,CADmB;AAAA,YAEnB,IAAI,CAAC4D,MAAL;AAAA,gBAAa,OAAO,IAAP,CAFM;AAAA,SAjBqD;AAAA,QAsB5E,OAAO,IAAI6G,kBAAJ,CAAuB/G,aAAvB,EAAsCC,kBAAtC,EAA0DC,MAA1D,CAAP,CAtB4E;AAAA,KAbtB;AAAA,IAsC1DqC,QAAA,CAASU,GAAT,EAA2C;AAAA,QACvC,OAAO,IAAIlD,QAAJ,CAAa,KAAKC,aAAL,CAAmBuC,QAAnB,CAA4BU,GAA5B,CAAb,EAA+C,IAAA,CAAKhD,kBAAL,CAAwBsC,QAAxB,CAAiCU,GAAjC,CAA/C,EAAsF,IAAK/C,CAAAA,MAAL,GAAc,IAAKA,CAAAA,MAAL,CAAYqC,QAAZ,CAAqBU,GAArB,CAAd,GAA0C,IAAhI,CAAP,CADuC;AAAA,KAtCe;AAAA,IA0C1DT,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnCA,EAAA,CAAG,IAAKkS,CAAAA,aAAR,CADmC,CAAA;AAAA,QAEnClS,EAAA,CAAG,IAAKmS,CAAAA,kBAAR,CAFmC,CAAA;AAAA,QAGnC,IAAI,IAAKC,CAAAA,MAAT,EAAiB;AAAA,YACbpS,EAAA,CAAG,IAAKoS,CAAAA,MAAR,CADa,CAAA;AAAA,SAHkB;AAAA,KA1CmB;AAAA,IAkD1DuC,aAAA,GAAyB;AAAA;AAKrB;AAAA;AAAA;AAAA,QAAA,OAAO,KAAP,CALqB;AAAA,KAlDiC;AAAA,IA0D1Df,SAAA,GAAkC;AAAA,QAC9B,MAAM3Y,OAAA,GAAU,EAAhB,CAD8B;AAAA,QAE9BA,OAAA,CAAQ,gBAAR,CAAA,GAA4B,KAAKiX,aAAL,CAAmB0B,SAAnB,EAA5B,CAF8B;AAAA,QAG9B3Y,OAAA,CAAQ,qBAAR,CAAA,GAAiC,KAAKkX,kBAAL,CAAwByB,SAAxB,EAAjC,CAH8B;AAAA,QAI9B,IAAI,IAAKxB,CAAAA,MAAT,EAAiB;AAAA,YACbnX,OAAA,CAAQ,QAAR,CAAA,GAAoB,KAAKmX,MAAL,CAAYwB,SAAZ,EAApB,CADa;AAAA,SAJa;AAAA,QAO9B,OAAO;AAAA,YAAC,UAAD;AAAA,YAAa3Y,OAAb;AAAA,SAAP,CAP8B;AAAA,KA1DwB;AAAA;;ACR9D;AAaA;AAAA,MAAMie,MAAA,GAAS,IAAf,CAfA;AAiBA,SAASC,UAAT,CAAoBC,IAApB,EAAgC3M,KAAhC,EAAyD;AAAA,IACrD2M,IAAA,CAAK,CAAL,IAAU5Z,IAAA,CAAK6Z,GAAL,CAASD,IAAA,CAAK,CAAL,CAAT,EAAkB3M,KAAA,CAAM,CAAN,CAAlB,CAAV,CADqD;AAAA,IAErD2M,IAAA,CAAK,CAAL,IAAU5Z,IAAA,CAAK6Z,GAAL,CAASD,IAAA,CAAK,CAAL,CAAT,EAAkB3M,KAAA,CAAM,CAAN,CAAlB,CAAV,CAFqD;AAAA,IAGrD2M,IAAA,CAAK,CAAL,IAAU5Z,IAAA,CAAK8Z,GAAL,CAASF,IAAA,CAAK,CAAL,CAAT,EAAkB3M,KAAA,CAAM,CAAN,CAAlB,CAAV,CAHqD;AAAA,IAIrD2M,IAAA,CAAK,CAAL,IAAU5Z,IAAA,CAAK8Z,GAAL,CAASF,IAAA,CAAK,CAAL,CAAT,EAAkB3M,KAAA,CAAM,CAAN,CAAlB,CAAV,CAJqD;AAAA,CAjBzD;AAwBA,SAAS8M,gBAAT,CAA0BC,GAA1B,EAAuC;AAAA,IACnC,OAAQ,CAAMA,GAAAA,GAAAA,GAAN,IAAa,GAArB,CADmC;AAAA,CAxBvC;AA4BA,SAASC,gBAAT,CAA0BC,GAA1B,EAAuC;AAAA,IACnC,OAAQ,CAAA,GAAA,GAAO,GAAMla,GAAAA,IAAA,CAAKma,EAAX,GAAgBna,IAAA,CAAKoa,GAAL,CAASpa,IAAA,CAAKqa,GAAL,CAASra,IAAA,CAAKma,EAAL,GAAU,CAAV,GAAcD,GAAA,GAAMla,IAAA,CAAKma,EAAX,GAAgB,GAAvC,CAAT,CAAvB,IAAiF,GAAzF,CADmC;AAAA,CA5BvC;AAgCA,SAASG,YAAT,CAAsBC,KAAtB,EAAmCC,KAAnC,EAAgD;AAAA,IAC5C,IAAID,KAAA,CAAM,CAAN,KAAYC,KAAA,CAAM,CAAN,CAAhB;AAAA,QAA0B,OAAO,KAAP,CADkB;AAAA,IAE5C,IAAID,KAAA,CAAM,CAAN,KAAYC,KAAA,CAAM,CAAN,CAAhB;AAAA,QAA0B,OAAO,KAAP,CAFkB;AAAA,IAG5C,IAAID,KAAA,CAAM,CAAN,KAAYC,KAAA,CAAM,CAAN,CAAhB;AAAA,QAA0B,OAAO,KAAP,CAHkB;AAAA,IAI5C,IAAID,KAAA,CAAM,CAAN,KAAYC,KAAA,CAAM,CAAN,CAAhB;AAAA,QAA0B,OAAO,KAAP,CAJkB;AAAA,IAK5C,OAAO,IAAP,CAL4C;AAAA,CAhChD;AAwCA,SAASC,kBAAT,CAA4BpR,CAA5B,EAA+BkO,SAA/B,EAA2D;AAAA,IACvD,MAAM9S,CAAA,GAAIsV,gBAAA,CAAiB1Q,CAAA,CAAE,CAAF,CAAjB,CAAV,CADuD;AAAA,IAEvD,MAAM0O,CAAA,GAAIkC,gBAAA,CAAiB5Q,CAAA,CAAE,CAAF,CAAjB,CAAV,CAFuD;AAAA,IAGvD,MAAMqR,WAAA,GAAc1a,IAAA,CAAK2a,GAAL,CAAS,CAAT,EAAYpD,SAAA,CAAUqD,CAAtB,CAApB,CAHuD;AAAA,IAIvD,OAAO;AAAA,QAAC5a,IAAA,CAAKuQ,KAAL,CAAW9L,CAAA,GAAIiW,WAAJ,GAAkBhB,MAA7B,CAAD;AAAA,QAAuC1Z,IAAA,CAAKuQ,KAAL,CAAWwH,CAAA,GAAI2C,WAAJ,GAAkBhB,MAA7B,CAAvC;AAAA,KAAP,CAJuD;AAAA,CAxC3D;AA+CA,SAASmB,UAAT,CAAoBxR,CAApB,EAAuByR,EAAvB,EAA2BC,EAA3B,EAA+B;AAAA,IAC3B,MAAMC,EAAA,GAAK3R,CAAA,CAAE,CAAF,CAAA,GAAOyR,EAAA,CAAG,CAAH,CAAlB,CAD2B;AAAA,IAE3B,MAAMG,EAAA,GAAK5R,CAAA,CAAE,CAAF,CAAA,GAAOyR,EAAA,CAAG,CAAH,CAAlB,CAF2B;AAAA,IAG3B,MAAMI,EAAA,GAAK7R,CAAA,CAAE,CAAF,CAAA,GAAO0R,EAAA,CAAG,CAAH,CAAlB,CAH2B;AAAA,IAI3B,MAAMI,EAAA,GAAK9R,CAAA,CAAE,CAAF,CAAA,GAAO0R,EAAA,CAAG,CAAH,CAAlB,CAJ2B;AAAA,IAK3B,OAAQC,EAAA,GAAKG,EAAL,GAAUD,EAAA,GAAKD,EAAf,KAAsB,CAAvB,IAA8BD,EAAA,GAAKE,EAAL,IAAW,CAAzC,IAAgDD,EAAA,GAAKE,EAAL,IAAW,CAAlE,CAL2B;AAAA,CA/C/B;AAuDA,SAASC,YAAT,CAAsB/R,CAAtB,EAAyByR,EAAzB,EAA6BC,EAA7B,EAAiC;AAAA,IAC7B,OAASD,EAAA,CAAG,CAAH,CAAQzR,GAAAA,CAAA,CAAE,CAAF,CAAT,KAAoB0R,EAAA,CAAG,CAAH,CAAA,GAAQ1R,CAAA,CAAE,CAAF,CAA7B,IAAwCA,CAAA,CAAE,CAAF,CAAQ,GAAA,CAAA0R,EAAA,CAAG,CAAH,CAAA,GAAQD,EAAA,CAAG,CAAH,CAAR,KAAkBzR,CAAA,CAAE,CAAF,CAAOyR,GAAAA,EAAA,CAAG,CAAH,CAAP,CAAnB,IAAoCC,EAAA,CAAG,CAAH,CAAA,GAAQD,EAAA,CAAG,CAAH,CAAR,CAApC,GAAqDA,EAAA,CAAG,CAAH,CAA3G,CAD6B;AAAA,CAvDjC;AA4DA;AAAA,SAASO,kBAAT,CAA4BC,KAA5B,EAAmCC,KAAnC,EAA0C;AAAA,IACtC,IAAIC,MAAA,GAAS,KAAb,CADsC;AAAA,IAEtC,KAAK,IAAItZ,CAAA,GAAI,CAAR,EAAWsC,GAAA,GAAM+W,KAAA,CAAMhf,MAAvB,EAA+B2F,CAAA,GAAIsC,GAAxC,EAA6CtC,CAAA,EAA7C,EAAkD;AAAA,QAC9C,MAAMuZ,IAAA,GAAOF,KAAA,CAAMrZ,CAAN,CAAb,CAD8C;AAAA,QAE9C,KAAK,IAAII,CAAA,GAAI,CAAR,EAAWoZ,IAAA,GAAOD,IAAA,CAAKlf,MAAvB,EAA+B+F,CAAA,GAAIoZ,IAAA,GAAO,CAA/C,EAAkDpZ,CAAA,EAAlD,EAAuD;AAAA,YACnD,IAAIuY,UAAA,CAAWS,KAAX,EAAkBG,IAAA,CAAKnZ,CAAL,CAAlB,EAA2BmZ,IAAA,CAAKnZ,CAAA,GAAI,CAAT,CAA3B,CAAJ;AAAA,gBAA6C,OAAO,KAAP,CADM;AAAA,YAEnD,IAAI8Y,YAAA,CAAaE,KAAb,EAAoBG,IAAA,CAAKnZ,CAAL,CAApB,EAA6BmZ,IAAA,CAAKnZ,CAAA,GAAI,CAAT,CAA7B,CAAJ;AAAA,gBAA+CkZ,MAAA,GAAS,CAACA,MAAV,CAFI;AAAA,SAFT;AAAA,KAFZ;AAAA,IAStC,OAAOA,MAAP,CATsC;AAAA,CA5D1C;AAwEA,SAASG,mBAAT,CAA6BL,KAA7B,EAAoCM,QAApC,EAA8C;AAAA,IAC1C,KAAK,IAAI1Z,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI0Z,QAAA,CAASrf,MAA7B,EAAqC2F,CAAA,EAArC,EAA0C;AAAA,QACtC,IAAImZ,kBAAA,CAAmBC,KAAnB,EAA0BM,QAAA,CAAS1Z,CAAT,CAA1B,CAAJ;AAAA,YAA4C,OAAO,IAAP,CADN;AAAA,KADA;AAAA,IAI1C,OAAO,KAAP,CAJ0C;AAAA,CAxE9C;AA+EA,SAAS2Z,IAAT,CAAcC,EAAd,EAAkBC,EAAlB,EAAsB;AAAA,IAClB,OAAQD,EAAA,CAAG,CAAH,CAAQC,GAAAA,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,CAAA,GAAQC,EAAA,CAAG,CAAH,CAAhC,CADkB;AAAA,CA/EtB;AAoFA;AAAA,SAAUC,QAAV,CAAmBlB,EAAnB,EAAuBC,EAAvB,EAA2BkB,EAA3B,EAA+BC,EAA/B,EAAmC;AAAA;AAE/B,IAAMlB,MAAAA,EAAA,GAAKF,EAAA,CAAG,CAAH,IAAQmB,EAAA,CAAG,CAAH,CAAnB,CAF+B;AAAA,IAG/B,MAAMhB,EAAA,GAAKH,EAAA,CAAG,CAAH,CAAA,GAAQmB,EAAA,CAAG,CAAH,CAAnB,CAH+B;AAAA,IAI/B,MAAMf,EAAA,GAAKH,EAAA,CAAG,CAAH,CAAA,GAAQkB,EAAA,CAAG,CAAH,CAAnB,CAJ+B;AAAA,IAK/B,MAAMd,EAAA,GAAKJ,EAAA,CAAG,CAAH,CAAA,GAAQkB,EAAA,CAAG,CAAH,CAAnB,CAL+B;AAAA,IAM/B,MAAME,EAAA,GAAKD,EAAA,CAAG,CAAH,CAAA,GAAQD,EAAA,CAAG,CAAH,CAAnB,CAN+B;AAAA,IAO/B,MAAMG,EAAA,GAAKF,EAAA,CAAG,CAAH,CAAA,GAAQD,EAAA,CAAG,CAAH,CAAnB,CAP+B;AAAA,IAQ/B,MAAMI,IAAA,GAAQrB,EAAA,GAAKoB,EAAL,GAAUD,EAAA,GAAKlB,EAA7B,CAR+B;AAAA,IAS/B,MAAMqB,IAAA,GAASpB,EAAA,GAAKkB,EAAL,GAAUD,EAAA,GAAKhB,EAA9B,CAT+B;AAAA,IAU/B,IAAKkB,IAAA,GAAO,CAAP,IAAYC,IAAA,GAAO,CAApB,IAA2BD,IAAA,GAAO,CAAP,IAAYC,IAAA,GAAO,CAAlD;AAAA,QAAsD,OAAO,IAAP,CAVvB;AAAA,IAW/B,OAAO,KAAP,CAX+B;AAAA,CApFnC;AAkGA;AAAA,SAASC,iBAAT,CAA2BxK,CAA3B,EAA8BD,CAA9B,EAAiC2E,CAAjC,EAAoC+F,CAApC,EAAuC;AAAA;AAInC;AAAA;AAAA,IAAA,MAAMC,OAAA,GAAU;AAAA,QAAC3K,CAAA,CAAE,CAAF,IAAOC,CAAA,CAAE,CAAF,CAAR;AAAA,QAAcD,CAAA,CAAE,CAAF,IAAOC,CAAA,CAAE,CAAF,CAArB;AAAA,KAAhB,CAJmC;AAAA,IAKnC,MAAM2K,OAAA,GAAU;AAAA,QAACF,CAAA,CAAE,CAAF,IAAO/F,CAAA,CAAE,CAAF,CAAR;AAAA,QAAc+F,CAAA,CAAE,CAAF,IAAO/F,CAAA,CAAE,CAAF,CAArB;AAAA,KAAhB,CALmC;AAAA,IAMnC,IAAIoF,IAAA,CAAKa,OAAL,EAAcD,OAAd,MAA2B,CAA/B;AAAA,QAAkC,OAAO,KAAP,CANC;AAAA;AAWnC;AAAA;AAAA,IAAA,IAAIT,QAAA,CAASjK,CAAT,EAAYD,CAAZ,EAAe2E,CAAf,EAAkB+F,CAAlB,KAAwBR,QAAA,CAASvF,CAAT,EAAY+F,CAAZ,EAAezK,CAAf,EAAkBD,CAAlB,CAA5B;AAAA,QAAkD,OAAO,IAAP,CAXf;AAAA,IAYnC,OAAO,KAAP,CAZmC;AAAA,CAlGvC;AAiHA,SAAS6K,oBAAT,CAA8B7B,EAA9B,EAAkCC,EAAlC,EAAsC6B,OAAtC,EAA+C;AAAA,IAC3C,KAAWnB,MAAAA,IAAX,IAAmBmB,OAAnB,EAA4B;AAAA;AAExB,QAAA,KAAK,IAAIta,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAImZ,IAAA,CAAKlf,MAAL,GAAc,CAAlC,EAAqC,EAAE+F,CAAvC,EAA0C;AAAA,YACtC,IAAIia,iBAAA,CAAkBzB,EAAlB,EAAsBC,EAAtB,EAA0BU,IAAA,CAAKnZ,CAAL,CAA1B,EAAmCmZ,IAAA,CAAKnZ,CAAA,GAAI,CAAT,CAAnC,CAAJ,EAAqD;AAAA,gBACjD,OAAO,IAAP,CADiD;AAAA,aADf;AAAA,SAFlB;AAAA,KADe;AAAA,IAS3C,OAAO,KAAP,CAT2C;AAAA,CAjH/C;AA6HA,SAASua,uBAAT,CAAiCC,IAAjC,EAAuCF,OAAvC,EAAgD;AAAA;AAE5C,IAAA,KAAK,IAAI1a,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI4a,IAAA,CAAKvgB,MAAzB,EAAiC,EAAE2F,CAAnC,EAAsC;AAAA,QAClC,IAAI,CAACmZ,kBAAA,CAAmByB,IAAA,CAAK5a,CAAL,CAAnB,EAA4B0a,OAA5B,CAAL,EAA2C;AAAA,YACvC,OAAO,KAAP,CADuC;AAAA,SADT;AAAA,KAFM;AAAA;AAS5C,IAAA,KAAK,IAAI1a,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI4a,IAAA,CAAKvgB,MAAL,GAAc,CAAlC,EAAqC,EAAE2F,CAAvC,EAA0C;AAAA,QACtC,IAAIya,oBAAA,CAAqBG,IAAA,CAAK5a,CAAL,CAArB,EAA8B4a,IAAA,CAAK5a,CAAA,GAAI,CAAT,CAA9B,EAA2C0a,OAA3C,CAAJ,EAAyD;AAAA,YACrD,OAAO,KAAP,CADqD;AAAA,SADnB;AAAA,KATE;AAAA,IAc5C,OAAO,IAAP,CAd4C;AAAA,CA7HhD;AA8IA,SAASG,wBAAT,CAAkCD,IAAlC,EAAwClB,QAAxC,EAAkD;AAAA,IAC9C,KAAK,IAAI1Z,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI0Z,QAAA,CAASrf,MAA7B,EAAqC2F,CAAA,EAArC,EAA0C;AAAA,QACtC,IAAI2a,uBAAA,CAAwBC,IAAxB,EAA8BlB,QAAA,CAAS1Z,CAAT,CAA9B,CAAJ;AAAA,YAAgD,OAAO,IAAP,CADV;AAAA,KADI;AAAA,IAI9C,OAAO,KAAP,CAJ8C;AAAA,CA9IlD;AAqJA,SAAS8a,cAAT,CAAwBhQ,WAAxB,EAAqC4M,IAArC,EAAiDrC,SAAjD,EAA6E;AAAA,IACzE,MAAMqF,OAAA,GAAU,EAAhB,CADyE;AAAA,IAEzE,KAAK,IAAI1a,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI8K,WAAA,CAAYzQ,MAAhC,EAAwC2F,CAAA,EAAxC,EAA6C;AAAA,QACzC,MAAMuZ,IAAA,GAAO,EAAb,CADyC;AAAA,QAEzC,KAAK,IAAInZ,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI0K,WAAA,CAAY9K,CAAZ,CAAA,CAAe3F,MAAnC,EAA2C+F,CAAA,EAA3C,EAAgD;AAAA,YAC5C,MAAM2K,KAAA,GAAQwN,kBAAA,CAAmBzN,WAAA,CAAY9K,CAAZ,CAAA,CAAeI,CAAf,CAAnB,EAAsCiV,SAAtC,CAAd,CAD4C;AAAA,YAE5CoC,UAAA,CAAWC,IAAX,EAAiB3M,KAAjB,CAF4C,CAAA;AAAA,YAG5CwO,IAAA,CAAKre,IAAL,CAAU6P,KAAV,CAH4C,CAAA;AAAA,SAFP;AAAA,QAOzC2P,OAAA,CAAQxf,IAAR,CAAaqe,IAAb,CAPyC,CAAA;AAAA,KAF4B;AAAA,IAWzE,OAAOmB,OAAP,CAXyE;AAAA,CArJ7E;AAmKA,SAASK,eAAT,CAAyBjQ,WAAzB,EAAsC4M,IAAtC,EAA4CrC,SAA5C,EAAwE;AAAA,IACpE,MAAMqE,QAAA,GAAW,EAAjB,CADoE;AAAA,IAEpE,KAAK,IAAI1Z,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI8K,WAAA,CAAYzQ,MAAhC,EAAwC2F,CAAA,EAAxC,EAA6C;AAAA,QACzC,MAAM0a,OAAA,GAAUI,cAAA,CAAehQ,WAAA,CAAY9K,CAAZ,CAAf,EAA+B0X,IAA/B,EAAqCrC,SAArC,CAAhB,CADyC;AAAA,QAEzCqE,QAAA,CAASxe,IAAT,CAAcwf,OAAd,CAFyC,CAAA;AAAA,KAFuB;AAAA,IAMpE,OAAOhB,QAAP,CANoE;AAAA,CAnKxE;AA4KA,SAASsB,WAAT,CAAqB7T,CAArB,EAAwBuQ,IAAxB,EAA8BuD,QAA9B,EAAwCC,SAAxC,EAAmD;AAAA,IAC/C,IAAI/T,CAAA,CAAE,CAAF,CAAO8T,GAAAA,QAAA,CAAS,CAAT,CAAP,IAAsB9T,CAAA,CAAE,CAAF,CAAA,GAAO8T,QAAA,CAAS,CAAT,CAAjC,EAA8C;AAAA,QAC1C,MAAME,aAAA,GAAgBD,SAAA,GAAY,GAAlC,CAD0C;AAAA,QAE1C,IAAI3S,KAAA,GAASpB,CAAA,CAAE,CAAF,CAAO8T,GAAAA,QAAA,CAAS,CAAT,CAAP,GAAqBE,aAAtB,GAAuC,CAACD,SAAxC,GAAqDD,QAAA,CAAS,CAAT,CAAA,GAAc9T,CAAA,CAAE,CAAF,CAAd,GAAqBgU,aAAtB,GAAuCD,SAAvC,GAAmD,CAAnH,CAF0C;AAAA,QAG1C,IAAI3S,KAAA,KAAU,CAAd,EAAiB;AAAA,YACbA,KAAA,GAASpB,CAAA,CAAE,CAAF,CAAA,GAAO8T,QAAA,CAAS,CAAT,CAAP,GAAqBE,aAAtB,GAAuC,CAACD,SAAxC,GAAqDD,QAAA,CAAS,CAAT,CAAc9T,GAAAA,CAAA,CAAE,CAAF,CAAd,GAAqBgU,aAAtB,GAAuCD,SAAvC,GAAmD,CAA/G,CADa;AAAA,SAHyB;AAAA,QAM1C/T,CAAA,CAAE,CAAF,CAAA,IAAQoB,KAAR,CAN0C;AAAA,KADC;AAAA,IAS/CkP,UAAA,CAAWC,IAAX,EAAiBvQ,CAAjB,CAT+C,CAAA;AAAA,CA5KnD;AAwLA,SAASiU,SAAT,CAAmB1D,IAAnB,EAAyB;AAAA,IACrBA,IAAA,CAAK,CAAL,CAAA,GAAUA,IAAA,CAAK,CAAL,CAAU7d,GAAAA,QAApB,CADqB;AAAA,IAErB6d,IAAA,CAAK,CAAL,CAAUA,GAAAA,IAAA,CAAK,CAAL,CAAA,GAAU,CAAC7d,QAArB,CAFqB;AAAA,CAxLzB;AA6LA,SAASwhB,aAAT,CAAuB5F,QAAvB,EAAiC6F,SAAjC,EAA4CL,QAA5C,EAAsD5F,SAAtD,EAAkF;AAAA,IAC9E,MAAM6F,SAAA,GAAYpd,IAAA,CAAK2a,GAAL,CAAS,CAAT,EAAYpD,SAAA,CAAUqD,CAAtB,CAAA,GAA2BlB,MAA7C,CAD8E;AAAA,IAE9E,MAAM+D,MAAA,GAAS;AAAA,QAAClG,SAAA,CAAU9S,CAAV,GAAciV,MAAf;AAAA,QAAuBnC,SAAA,CAAUQ,CAAV,GAAc2B,MAArC;AAAA,KAAf,CAF8E;AAAA,IAG9E,MAAMgE,UAAA,GAAa,EAAnB,CAH8E;AAAA,IAI9E,IAAI,CAAC/F,QAAL;AAAA,QAAe,OAAO+F,UAAP,CAJ+D;AAAA,IAK9E,KAAWC,MAAAA,MAAX,IAAqBhG,QAArB,EAA+B;AAAA,QAC3B,KAAW2D,MAAAA,KAAX,IAAoBqC,MAApB,EAA4B;AAAA,YACxB,MAAMtU,CAAA,GAAI;AAAA,gBAACiS,KAAA,CAAM7W,CAAN,GAAUgZ,MAAA,CAAO,CAAP,CAAX;AAAA,gBAAsBnC,KAAA,CAAMvD,CAAN,GAAU0F,MAAA,CAAO,CAAP,CAAhC;AAAA,aAAV,CADwB;AAAA,YAExBP,WAAA,CAAY7T,CAAZ,EAAemU,SAAf,EAA0BL,QAA1B,EAAoCC,SAApC,CAFwB,CAAA;AAAA,YAGxBM,UAAA,CAAWtgB,IAAX,CAAgBiM,CAAhB,CAHwB,CAAA;AAAA,SADD;AAAA,KAL+C;AAAA,IAY9E,OAAOqU,UAAP,CAZ8E;AAAA,CA7LlF;AA4MA,SAASE,YAAT,CAAsBjG,QAAtB,EAAgCkG,QAAhC,EAA0CV,QAA1C,EAAoD5F,SAApD,EAAgF;AAAA,IAC5E,MAAM6F,SAAA,GAAYpd,IAAA,CAAK2a,GAAL,CAAS,CAAT,EAAYpD,SAAA,CAAUqD,CAAtB,CAAA,GAA2BlB,MAA7C,CAD4E;AAAA,IAE5E,MAAM+D,MAAA,GAAS;AAAA,QAAClG,SAAA,CAAU9S,CAAV,GAAciV,MAAf;AAAA,QAAuBnC,SAAA,CAAUQ,CAAV,GAAc2B,MAArC;AAAA,KAAf,CAF4E;AAAA,IAG5E,MAAMoE,SAAA,GAAY,EAAlB,CAH4E;AAAA,IAI5E,IAAI,CAACnG,QAAL;AAAA,QAAe,OAAOmG,SAAP,CAJ6D;AAAA,IAK5E,KAAWhB,MAAAA,IAAX,IAAmBnF,QAAnB,EAA6B;AAAA,QACzB,MAAMoG,QAAA,GAAW,EAAjB,CADyB;AAAA,QAEzB,KAAWzC,MAAAA,KAAX,IAAoBwB,IAApB,EAA0B;AAAA,YACtB,MAAMzT,CAAA,GAAI;AAAA,gBAACiS,KAAA,CAAM7W,CAAN,GAAUgZ,MAAA,CAAO,CAAP,CAAX;AAAA,gBAAsBnC,KAAA,CAAMvD,CAAN,GAAU0F,MAAA,CAAO,CAAP,CAAhC;AAAA,aAAV,CADsB;AAAA,YAEtB9D,UAAA,CAAWkE,QAAX,EAAqBxU,CAArB,CAFsB,CAAA;AAAA,YAGtB0U,QAAA,CAAS3gB,IAAT,CAAciM,CAAd,CAHsB,CAAA;AAAA,SAFD;AAAA,QAOzByU,SAAA,CAAU1gB,IAAV,CAAe2gB,QAAf,CAPyB,CAAA;AAAA,KAL+C;AAAA,IAc5E,IAAIF,QAAA,CAAS,CAAT,CAAcA,GAAAA,QAAA,CAAS,CAAT,CAAd,IAA6BT,SAAA,GAAY,CAA7C,EAAgD;AAAA,QAC5CE,SAAA,CAAUO,QAAV,CAD4C,CAAA;AAAA,QAE5C,KAAWf,MAAAA,IAAX,IAAmBgB,SAAnB,EAA8B;AAAA,YAC1B,KAAWzU,MAAAA,CAAX,IAAgByT,IAAhB,EAAsB;AAAA,gBAClBI,WAAA,CAAY7T,CAAZ,EAAewU,QAAf,EAAyBV,QAAzB,EAAmCC,SAAnC,CADkB,CAAA;AAAA,aADI;AAAA,SAFc;AAAA,KAd4B;AAAA,IAsB5E,OAAOU,SAAP,CAtB4E;AAAA,CA5MhF;AAqOA,SAASE,oBAAT,CAA8BrI,GAA9B,EAAsDsI,eAAtD,EAAwF;AAAA,IACpF,MAAMT,SAAA,GAAY;AAAA,QAACzhB,QAAD;AAAA,QAAWA,QAAX;AAAA,QAAqB,CAACA,QAAtB;AAAA,QAAgC,CAACA,QAAjC;AAAA,KAAlB,CADoF;AAAA,IAEpF,MAAMohB,QAAA,GAAW;AAAA,QAACphB,QAAD;AAAA,QAAWA,QAAX;AAAA,QAAqB,CAACA,QAAtB;AAAA,QAAgC,CAACA,QAAjC;AAAA,KAAjB,CAFoF;AAAA,IAIpF,MAAMwb,SAAA,GAAY5B,GAAA,CAAIiC,WAAJ,EAAlB,CAJoF;AAAA,IAKpF,IAAI,CAACL,SAAL,EAAgB;AAAA,QACZ,OAAO,KAAP,CADY;AAAA,KALoE;AAAA,IASpF,IAAI0G,eAAA,CAAgB5d,IAAhB,KAAyB,SAA7B,EAAwC;AAAA,QACpC,MAAM6d,WAAA,GAAclB,cAAA,CAAeiB,eAAA,CAAgBjR,WAA/B,EAA4CmQ,QAA5C,EAAsD5F,SAAtD,CAApB,CADoC;AAAA,QAEpC,MAAMmG,UAAA,GAAaH,aAAA,CAAc5H,GAAA,CAAIgC,QAAJ,EAAd,EAA8B6F,SAA9B,EAAyCL,QAAzC,EAAmD5F,SAAnD,CAAnB,CAFoC;AAAA,QAGpC,IAAI,CAAC+C,YAAA,CAAakD,SAAb,EAAwBL,QAAxB,CAAL;AAAA,YAAwC,OAAO,KAAP,CAHJ;AAAA,QAKpC,KAAW7B,MAAAA,KAAX,IAAoBoC,UAApB,EAAgC;AAAA,YAC5B,IAAI,CAACrC,kBAAA,CAAmBC,KAAnB,EAA0B4C,WAA1B,CAAL;AAAA,gBAA6C,OAAO,KAAP,CADjB;AAAA,SALI;AAAA,KAT4C;AAAA,IAkBpF,IAAID,eAAA,CAAgB5d,IAAhB,KAAyB,cAA7B,EAA6C;AAAA,QACzC,MAAM8d,YAAA,GAAelB,eAAA,CAAgBgB,eAAA,CAAgBjR,WAAhC,EAA6CmQ,QAA7C,EAAuD5F,SAAvD,CAArB,CADyC;AAAA,QAEzC,MAAMmG,UAAA,GAAaH,aAAA,CAAc5H,GAAA,CAAIgC,QAAJ,EAAd,EAA8B6F,SAA9B,EAAyCL,QAAzC,EAAmD5F,SAAnD,CAAnB,CAFyC;AAAA,QAGzC,IAAI,CAAC+C,YAAA,CAAakD,SAAb,EAAwBL,QAAxB,CAAL;AAAA,YAAwC,OAAO,KAAP,CAHC;AAAA,QAKzC,KAAW7B,MAAAA,KAAX,IAAoBoC,UAApB,EAAgC;AAAA,YAC5B,IAAI,CAAC/B,mBAAA,CAAoBL,KAApB,EAA2B6C,YAA3B,CAAL;AAAA,gBAA+C,OAAO,KAAP,CADnB;AAAA,SALS;AAAA,KAlBuC;AAAA,IA4BpF,OAAO,IAAP,CA5BoF;AAAA,CArOxF;AAoQA,SAASC,mBAAT,CAA6BzI,GAA7B,EAAqDsI,eAArD,EAAuF;AAAA,IACnF,MAAMJ,QAAA,GAAW;AAAA,QAAC9hB,QAAD;AAAA,QAAWA,QAAX;AAAA,QAAqB,CAACA,QAAtB;AAAA,QAAgC,CAACA,QAAjC;AAAA,KAAjB,CADmF;AAAA,IAEnF,MAAMohB,QAAA,GAAW;AAAA,QAACphB,QAAD;AAAA,QAAWA,QAAX;AAAA,QAAqB,CAACA,QAAtB;AAAA,QAAgC,CAACA,QAAjC;AAAA,KAAjB,CAFmF;AAAA,IAInF,MAAMwb,SAAA,GAAY5B,GAAA,CAAIiC,WAAJ,EAAlB,CAJmF;AAAA,IAKnF,IAAI,CAACL,SAAL,EAAgB;AAAA,QACZ,OAAO,KAAP,CADY;AAAA,KALmE;AAAA,IASnF,IAAI0G,eAAA,CAAgB5d,IAAhB,KAAyB,SAA7B,EAAwC;AAAA,QACpC,MAAM6d,WAAA,GAAclB,cAAA,CAAeiB,eAAA,CAAgBjR,WAA/B,EAA4CmQ,QAA5C,EAAsD5F,SAAtD,CAApB,CADoC;AAAA,QAEpC,MAAMuG,SAAA,GAAYF,YAAA,CAAajI,GAAA,CAAIgC,QAAJ,EAAb,EAA6BkG,QAA7B,EAAuCV,QAAvC,EAAiD5F,SAAjD,CAAlB,CAFoC;AAAA,QAGpC,IAAI,CAAC+C,YAAA,CAAauD,QAAb,EAAuBV,QAAvB,CAAL;AAAA,YAAuC,OAAO,KAAP,CAHH;AAAA,QAKpC,KAAWL,MAAAA,IAAX,IAAmBgB,SAAnB,EAA8B;AAAA,YAC1B,IAAI,CAACjB,uBAAA,CAAwBC,IAAxB,EAA8BoB,WAA9B,CAAL;AAAA,gBAAiD,OAAO,KAAP,CADvB;AAAA,SALM;AAAA,KAT2C;AAAA,IAkBnF,IAAID,eAAA,CAAgB5d,IAAhB,KAAyB,cAA7B,EAA6C;AAAA,QACzC,MAAM8d,YAAA,GAAelB,eAAA,CAAgBgB,eAAA,CAAgBjR,WAAhC,EAA6CmQ,QAA7C,EAAuD5F,SAAvD,CAArB,CADyC;AAAA,QAEzC,MAAMuG,SAAA,GAAYF,YAAA,CAAajI,GAAA,CAAIgC,QAAJ,EAAb,EAA6BkG,QAA7B,EAAuCV,QAAvC,EAAiD5F,SAAjD,CAAlB,CAFyC;AAAA,QAGzC,IAAI,CAAC+C,YAAA,CAAauD,QAAb,EAAuBV,QAAvB,CAAL;AAAA,YAAuC,OAAO,KAAP,CAHE;AAAA,QAKzC,KAAWL,MAAAA,IAAX,IAAmBgB,SAAnB,EAA8B;AAAA,YAC1B,IAAI,CAACf,wBAAA,CAAyBD,IAAzB,EAA+BqB,YAA/B,CAAL;AAAA,gBAAmD,OAAO,KAAP,CADzB;AAAA,SALW;AAAA,KAlBsC;AAAA,IA2BnF,OAAO,IAAP,CA3BmF;AAAA,CApQvF;AAkSA,MAAME,MAAN,CAAmC;AAAA,IAK/BhQ,WAAA,CAAYiQ,OAAZ,EAA8BC,UAA9B,EAA2D;AAAA,QACvD,IAAKle,CAAAA,IAAL,GAAY4O,WAAZ,CADuD;AAAA,QAEvD,IAAKqP,CAAAA,OAAL,GAAeA,OAAf,CAFuD;AAAA,QAGvD,IAAKC,CAAAA,UAAL,GAAkBA,UAAlB,CAHuD;AAAA,KAL5B;AAAA,IAW/B,OAAO3hB,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAA4E;AAAA,QACxE,IAAID,IAAA,CAAKvY,MAAL,KAAgB,CAApB;AAAA,YACI,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,6DAAD,GAAgE0U,IAAA,CAAKvY,MAAL,GAAc,CAA9E,EAAgF,SAAhF,CAAd,CAAP,CAFoE;AAAA,QAGxE,IAAIkY,OAAA,CAAQK,IAAA,CAAK,CAAL,CAAR,CAAJ,EAAsB;AAAA,YAClB,MAAMwJ,OAAA,GAAWxJ,IAAA,CAAK,CAAL,CAAjB,CADkB;AAAA,YAElB,IAAIwJ,OAAA,CAAQje,IAAR,KAAiB,mBAArB,EAA0C;AAAA,gBACtC,KAAK,IAAI6B,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIoc,OAAA,CAAQE,QAAR,CAAiBjiB,MAArC,EAA6C,EAAE2F,CAA/C,EAAkD;AAAA,oBAC9C,MAAM7B,IAAA,GAAOie,OAAA,CAAQE,QAAR,CAAiBtc,CAAjB,CAAoByV,CAAAA,QAApB,CAA6BtX,IAA1C,CAD8C;AAAA,oBAE9C,IAAIA,IAAA,KAAS,SAAT,IAAsBA,IAAA,KAAS,cAAnC,EAAmD;AAAA,wBAC/C,OAAO,IAAIge,MAAJ,CAAWC,OAAX,EAAoBA,OAAA,CAAQE,QAAR,CAAiBtc,CAAjB,CAAoByV,CAAAA,QAAxC,CAAP,CAD+C;AAAA,qBAFL;AAAA,iBADZ;AAAA,aAA1C,MAOO,IAAI2G,OAAA,CAAQje,IAAR,KAAiB,SAArB,EAAgC;AAAA,gBACnC,MAAMA,IAAA,GAAOie,OAAA,CAAQ3G,QAAR,CAAiBtX,IAA9B,CADmC;AAAA,gBAEnC,IAAIA,IAAA,KAAS,SAAT,IAAsBA,IAAA,KAAS,cAAnC,EAAmD;AAAA,oBAC/C,OAAO,IAAIge,MAAJ,CAAWC,OAAX,EAAoBA,OAAA,CAAQ3G,QAA5B,CAAP,CAD+C;AAAA,iBAFhB;AAAA,aAAhC,MAKA,IAAI2G,OAAA,CAAQje,IAAR,KAAkB,SAAlB,IAA+Bie,OAAA,CAAQje,IAAR,KAAiB,cAApD,EAAoE;AAAA,gBACvE,OAAO,IAAIge,MAAJ,CAAWC,OAAX,EAAoBA,OAApB,CAAP,CADuE;AAAA,aAdzD;AAAA,SAHkD;AAAA,QAqBxE,OAAOvJ,OAAA,CAAQ3U,KAAR,CAAc,CAAC,sFAAD,CAAd,CAAP,CArBwE;AAAA,KAX7C;AAAA,IAmC/B6U,QAAA,CAASU,GAAT,EAA0C;AAAA,QACtC,IAAIA,GAAA,CAAIgC,QAAJ,EAAkB,IAAA,IAAlB,IAA0BhC,GAAA,CAAIiC,WAAJ,EAAqB,IAAA,IAAnD,EAAyD;AAAA,YACrD,IAAIjC,GAAA,CAAI+B,YAAJ,EAAA,KAAuB,OAA3B,EAAoC;AAAA,gBAChC,OAAOsG,oBAAA,CAAqBrI,GAArB,EAA0B,IAAK4I,CAAAA,UAA/B,CAAP,CADgC;AAAA,aAApC,MAEO,IAAI5I,GAAA,CAAI+B,YAAJ,EAAA,KAAuB,YAA3B,EAAyC;AAAA,gBAC5C,OAAO0G,mBAAA,CAAoBzI,GAApB,EAAyB,IAAK4I,CAAAA,UAA9B,CAAP,CAD4C;AAAA,aAHK;AAAA,SADnB;AAAA,QAQtC,OAAO,KAAP,CARsC;AAAA,KAnCX;AAAA,IA8C/BrJ,SAAA,GAAY;AAAA,KA9CmB;AAAA,IAgD/BC,aAAA,GAAyB;AAAA,QACrB,OAAO,IAAP,CADqB;AAAA,KAhDM;AAAA,IAoD/Bf,SAAA,GAAkC;AAAA,QAC9B,OAAO;AAAA,YAAC,QAAD;AAAA,YAAW,KAAKkK,OAAhB;AAAA,SAAP,CAD8B;AAAA,KApDH;AAAA,CAlSnC;AA4VA,eAAA,MAAA;;AC1VA;AAIA,SAASG,iBAAT,CAA2B/M,CAA3B,EAAmD;AAAA,IAC/C,IAAIA,CAAA,YAAa6G,oBAAjB,EAAqC;AAAA,QACjC,IAAI7G,CAAA,CAAEvM,IAAF,KAAW,KAAX,IAAoBuM,CAAA,CAAEoD,IAAF,CAAOvY,MAAP,KAAkB,CAA1C,EAA6C;AAAA,YACzC,OAAO,KAAP,CADyC;AAAA,SAA7C,MAEO,IAAImV,CAAA,CAAEvM,IAAF,KAAW,eAAf,EAAgC;AAAA,YACnC,OAAO,KAAP,CADmC;AAAA,SAAhC,MAEA,IAAIuM,CAAA,CAAEvM,IAAF,KAAW,KAAX,IAAoBuM,CAAA,CAAEoD,IAAF,CAAOvY,MAAP,KAAkB,CAA1C,EAA6C;AAAA,YAChD,OAAO,KAAP,CADgD;AAAA,SAA7C,MAEA,IACHmV,CAAA,CAAEvM,IAAF,KAAW,YAAX,IACAuM,CAAA,CAAEvM,IAAF,KAAW,eADX,IAEAuM,CAAA,CAAEvM,IAAF,KAAW,IAHR,EAIL;AAAA,YACE,OAAO,KAAP,CADF;AAAA,SAJK,MAMA,IAAI,UAAW7B,CAAAA,IAAX,CAAgBoO,CAAA,CAAEvM,IAAlB,CAAJ,EAA6B;AAAA,YAChC,OAAO,KAAP,CADgC;AAAA,SAbH;AAAA,KADU;AAAA,IAmB/C,IAAIuM,CAAA,YAAa2M,QAAjB,EAAyB;AAAA,QACrB,OAAO,KAAP,CADqB;AAAA,KAnBsB;AAAA,IAuB/C,IAAIxgB,MAAA,GAAS,IAAb,CAvB+C;AAAA,IAwB/C6T,CAAA,CAAEwD,SAAF,CAAYtR,GAAA,IAAO;AAAA,QACf,IAAI/F,MAAA,IAAU,CAAC4gB,iBAAA,CAAkB7a,GAAlB,CAAf,EAAuC;AAAA,YAAE/F,MAAA,GAAS,KAAT,CAAF;AAAA,SADxB;AAAA,KAAnB,CAxB+C,CAAA;AAAA,IA2B/C,OAAOA,MAAP,CA3B+C;AAAA,CANnD;AAoCA,SAAS6gB,eAAT,CAAyBhN,CAAzB,EAAiD;AAAA,IAC7C,IAAIA,CAAA,YAAa6G,oBAAjB,EAAqC;AAAA,QACjC,IAAI7G,CAAA,CAAEvM,IAAF,KAAW,eAAf,EAAgC;AAAA,YAC5B,OAAO,KAAP,CAD4B;AAAA,SADC;AAAA,KADQ;AAAA,IAM7C,IAAItH,MAAA,GAAS,IAAb,CAN6C;AAAA,IAO7C6T,CAAA,CAAEwD,SAAF,CAAYtR,GAAA,IAAO;AAAA,QACf,IAAI/F,MAAA,IAAU,CAAC6gB,eAAA,CAAgB9a,GAAhB,CAAf,EAAqC;AAAA,YAAE/F,MAAA,GAAS,KAAT,CAAF;AAAA,SADtB;AAAA,KAAnB,CAP6C,CAAA;AAAA,IAU7C,OAAOA,MAAP,CAV6C;AAAA,CApCjD;AAiDA,SAAS8gB,wBAAT,CAAkCjN,CAAlC,EAAiDxF,UAAjD,EAAqF;AAAA,IACjF,IAAIwF,CAAA,YAAa6G,oBAAb,IAAmCrM,UAAA,CAAWvH,OAAX,CAAmB+M,CAAA,CAAEvM,IAArB,CAAA,IAA8B,CAArE,EAAwE;AAAA,QAAE,OAAO,KAAP,CAAF;AAAA,KADS;AAAA,IAEjF,IAAItH,MAAA,GAAS,IAAb,CAFiF;AAAA,IAGjF6T,CAAA,CAAEwD,SAAF,CAAatR,GAAD,IAAS;AAAA,QACjB,IAAI/F,MAAA,IAAU,CAAC8gB,wBAAA,CAAyB/a,GAAzB,EAA8BsI,UAA9B,CAAf,EAA0D;AAAA,YAAErO,MAAA,GAAS,KAAT,CAAF;AAAA,SADzC;AAAA,KAArB,CAHiF,CAAA;AAAA,IAMjF,OAAOA,MAAP,CANiF;AAAA;;AC1CrF;AAAA,MAAM+gB,GAAN,CAAgC;AAAA,IAK5BvQ,WAAA,CAAYlJ,IAAZ,EAA0B0Z,eAA1B,EAAuD;AAAA,QACnD,KAAKxe,IAAL,GAAYwe,eAAA,CAAgBxe,IAA5B,CADmD;AAAA,QAEnD,IAAK8E,CAAAA,IAAL,GAAYA,IAAZ,CAFmD;AAAA,QAGnD,IAAK0Z,CAAAA,eAAL,GAAuBA,eAAvB,CAHmD;AAAA,KAL3B;AAAA,IAW5B,OAAOjiB,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAA+E;AAAA,QAC3E,IAAID,IAAA,CAAKvY,MAAL,KAAgB,CAAhB,IAAqB,OAAOuY,IAAA,CAAK,CAAL,CAAP,KAAmB,QAA5C;AAAA,YACI,OAAOC,OAAA,CAAQ3U,KAAR,CAAc,CAAC,8DAAD,CAAd,CAAP,CAFuE;AAAA,QAI3E,MAAM+E,IAAA,GAAO2P,IAAA,CAAK,CAAL,CAAb,CAJ2E;AAAA,QAK3E,IAAI,CAACC,OAAA,CAAQmE,KAAR,CAActK,GAAd,CAAkBzJ,IAAlB,CAAL,EAA8B;AAAA,YAC1B,OAAO4P,OAAA,CAAQ3U,KAAR,CAAc,CAAC,kBAAD,GAAqB+E,IAArB,EAA0B,cAA1B,GAA0CA,IAA1C,EAA+C,kEAA/C,CAAd,EAAkI,CAAlI,CAAP,CAD0B;AAAA,SAL6C;AAAA,QAS3E,OAAO,IAAIyZ,GAAJ,CAAQzZ,IAAR,EAAc4P,OAAA,CAAQmE,KAAR,CAAcvK,GAAd,CAAkBxJ,IAAlB,CAAd,CAAP,CAT2E;AAAA,KAXnD;AAAA,IAuB5B8P,QAAA,CAASU,GAAT,EAAsC;AAAA,QAClC,OAAO,KAAKkJ,eAAL,CAAqB5J,QAArB,CAA8BU,GAA9B,CAAP,CADkC;AAAA,KAvBV;AAAA,IA2B5BT,SAAA,GAAY;AAAA,KA3BgB;AAAA,IA6B5BC,aAAA,GAAyB;AAAA,QACrB,OAAO,KAAP,CADqB;AAAA,KA7BG;AAAA,IAiC5Bf,SAAA,GAA2B;AAAA,QACvB,OAAO;AAAA,YAAC,KAAD;AAAA,YAAQ,KAAKjP,IAAb;AAAA,SAAP,CADuB;AAAA,KAjCC;AAAA,CAPhC;AA6CA,YAAA,GAAA;;AC3CA;AAoBA;AAAA;AAAA;AAAA;AAAA,MAAM6T,cAAN,CAAqB;AAAA;AAajB;AAAA;AAAA;AAAA,IAAA3K,WAAA,CACI4K,QADJ,EAEIzS,IAAA,GAAsB,EAF1B,EAGIwO,YAHJ,EAIIkE,KAAA,GAAe,IAAI3K,OAAJ,EAJnB,EAKI1O,MAAA,GAA8B,EALlC,EAME;AAAA,QACE,IAAKoZ,CAAAA,QAAL,GAAgBA,QAAhB,CADF;AAAA,QAEE,IAAKzS,CAAAA,IAAL,GAAYA,IAAZ,CAFF;AAAA,QAGE,IAAA,CAAKjJ,GAAL,GAAWiJ,IAAA,CAAKrI,GAAL,CAAS4K,IAAA,IAAQ,CAAC,CAAD,GAAIA,IAAJ,EAAS,CAAT,CAAjB,EAA8BrL,IAA9B,CAAmC,EAAnC,CAAX,CAHF;AAAA,QAIE,IAAKwb,CAAAA,KAAL,GAAaA,KAAb,CAJF;AAAA,QAKE,IAAKrZ,CAAAA,MAAL,GAAcA,MAAd,CALF;AAAA,QAME,IAAKmV,CAAAA,YAAL,GAAoBA,YAApB,CANF;AAAA,KAnBe;AAAA;AAmCjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAApY,KAAA,CACIkiB,IADJ,EAEI/hB,KAFJ,EAGIiY,YAHJ,EAIIvG,QAJJ,EAKIhT,OAAA,GAA2D,EAL/D,EAMe;AAAA,QACX,IAAIsB,KAAJ,EAAW;AAAA,YACP,OAAO,IAAKgK,CAAAA,MAAL,CAAYhK,KAAZ,EAAmBiY,YAAnB,EAAiCvG,QAAjC,CAAA,CAA2CsQ,MAA3C,CAAkDD,IAAlD,EAAwDrjB,OAAxD,CAAP,CADO;AAAA,SADA;AAAA,QAIX,OAAO,KAAKsjB,MAAL,CAAYD,IAAZ,EAAkBrjB,OAAlB,CAAP,CAJW;AAAA,KAzCE;AAAA,IAgDjBsjB,MAAA,CAAOD,IAAP,EAAoBrjB,OAApB,EAA2F;AAAA,QACvF,IAAIqjB,IAAA,KAAS,IAAT,IAAiB,OAAOA,IAAP,KAAgB,QAAjC,IAA6C,OAAOA,IAAP,KAAgB,SAA7D,IAA0E,OAAOA,IAAP,KAAgB,QAA9F,EAAwG;AAAA,YACpGA,IAAA,GAAO;AAAA,gBAAC,SAAD;AAAA,gBAAYA,IAAZ;AAAA,aAAP,CADoG;AAAA,SADjB;AAAA,QAKvF,SAASE,QAAT,CAAkBtJ,MAAlB,EAA0BrV,IAA1B,EAAgC4e,cAAhC,EAA8E;AAAA,YAC1E,IAAIA,cAAA,KAAmB,QAAvB,EAAiC;AAAA,gBAC7B,OAAO,IAAIxJ,WAAJ,CAAcpV,IAAd,EAAoB,CAACqV,MAAD,CAApB,CAAP,CAD6B;AAAA,aAAjC,MAEO,IAAIuJ,cAAA,KAAmB,QAAvB,EAAiC;AAAA,gBACpC,OAAO,IAAI1I,UAAJ,CAAalW,IAAb,EAAmB,CAACqV,MAAD,CAAnB,CAAP,CADoC;AAAA,aAAjC,MAEA;AAAA,gBACH,OAAOA,MAAP,CADG;AAAA,aALmE;AAAA,SALS;AAAA,QAevF,IAAIxY,KAAA,CAAMC,OAAN,CAAc2hB,IAAd,CAAJ,EAAyB;AAAA,YACrB,IAAIA,IAAA,CAAKviB,MAAL,KAAgB,CAApB,EAAuB;AAAA,gBACnB,OAAO,KAAK6D,KAAL,CAAW,CAAC,gGAAD,CAAX,CAAP,CADmB;AAAA,aADF;AAAA,YAKrB,MAAMiR,EAAA,GAAKyN,IAAA,CAAK,CAAL,CAAX,CALqB;AAAA,YAMrB,IAAI,OAAOzN,EAAP,KAAc,QAAlB,EAA4B;AAAA,gBACxB,IAAKjR,CAAAA,KAAL,CAAW,CAAC,4CAAD,GAA+C,OAAOiR,EAAtD,EAAyD,gEAAzD,CAAX,EAAuI,CAAvI,CADwB,CAAA;AAAA,gBAExB,OAAO,IAAP,CAFwB;AAAA,aANP;AAAA,YAWrB,MAAM6N,IAAA,GAAO,IAAA,CAAKjG,QAAL,CAAc5H,EAAd,CAAb,CAXqB;AAAA,YAYrB,IAAI6N,IAAJ,EAAU;AAAA,gBACN,IAAIxJ,MAAA,GAASwJ,IAAA,CAAKtiB,KAAL,CAAWkiB,IAAX,EAAiB,IAAjB,CAAb,CADM;AAAA,gBAEN,IAAI,CAACpJ,MAAL;AAAA,oBAAa,OAAO,IAAP,CAFP;AAAA,gBAIN,IAAI,IAAKV,CAAAA,YAAT,EAAuB;AAAA,oBACnB,MAAMlF,QAAA,GAAW,IAAA,CAAKkF,YAAtB,CADmB;AAAA,oBAEnB,MAAMmK,MAAA,GAASzJ,MAAA,CAAOrV,IAAtB,CAFmB;AAAA;AAYnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAA,IAAK,CAAAyP,QAAA,CAAShB,IAAT,KAAkB,QAAlB,IAA8BgB,QAAA,CAAShB,IAAT,KAAkB,QAAhD,IAA4DgB,QAAA,CAAShB,IAAT,KAAkB,SAA9E,IAA2FgB,QAAA,CAAShB,IAAT,KAAkB,QAA7G,IAAyHgB,QAAA,CAAShB,IAAT,KAAkB,OAA3I,KAAuJqQ,MAAA,CAAOrQ,IAAP,KAAgB,OAA5K,EAAqL;AAAA,wBACjL4G,MAAA,GAASsJ,QAAA,CAAStJ,MAAT,EAAiB5F,QAAjB,EAA2BrU,OAAA,CAAQwjB,cAAR,IAA0B,QAArD,CAAT,CADiL;AAAA,qBAArL,MAEO,IAAK,CAAAnP,QAAA,CAAShB,IAAT,KAAkB,OAAlB,IAA6BgB,QAAA,CAAShB,IAAT,KAAkB,WAA/C,IAA8DgB,QAAA,CAAShB,IAAT,KAAkB,eAAhF,MAAqGqQ,MAAA,CAAOrQ,IAAP,KAAgB,OAAhB,IAA2BqQ,MAAA,CAAOrQ,IAAP,KAAgB,QAA3C,CAA1G,EAAgK;AAAA,wBACnK4G,MAAA,GAASsJ,QAAA,CAAStJ,MAAT,EAAiB5F,QAAjB,EAA2BrU,OAAA,CAAQwjB,cAAR,IAA0B,QAArD,CAAT,CADmK;AAAA,qBAAhK,MAEA,IAAI,IAAKpP,CAAAA,YAAL,CAAkBC,QAAlB,EAA4BqP,MAA5B,CAAJ,EAAyC;AAAA,wBAC5C,OAAO,IAAP,CAD4C;AAAA,qBAhB7B;AAAA,iBAJjB;AAAA;AA6BN;AAAA;AAAA;AAAA,gBAAA,IAAI,EAAEzJ,MAAA,YAAkBb,SAAlB,CAAF,IAAiCa,MAAA,CAAOrV,IAAP,CAAYyO,IAAZ,KAAqB,eAAtD,IAA0EsQ,UAAA,CAAW1J,MAAX,CAA9E,EAAkG;AAAA,oBAC9F,MAAM2J,EAAA,GAAK,IAAIpI,mBAAJ,EAAX,CAD8F;AAAA,oBAE9F,IAAI;AAAA,wBACAvB,MAAA,GAAS,IAAIb,SAAJ,CAAYa,MAAA,CAAOrV,IAAnB,EAAyBqV,MAAA,CAAOT,QAAP,CAAgBoK,EAAhB,CAAzB,CAAT,CADA;AAAA,qBAAJ,CAEE,OAAO3N,CAAP,EAAU;AAAA,wBACR,KAAKtR,KAAL,CAAWsR,CAAA,CAAEpD,OAAb,CADQ,CAAA;AAAA,wBAER,OAAO,IAAP,CAFQ;AAAA,qBAJkF;AAAA,iBA7B5F;AAAA,gBAuCN,OAAOoH,MAAP,CAvCM;AAAA,aAZW;AAAA,YAsDrB,OAAO,IAAA,CAAKtV,KAAL,CAAW,CAAC,oBAAD,GAAuBiR,EAAvB,EAA0B,yDAA1B,CAAX,EAAiG,CAAjG,CAAP,CAtDqB;AAAA,SAAzB,MAuDO,IAAI,OAAOyN,IAAP,KAAgB,WAApB,EAAiC;AAAA,YACpC,OAAO,KAAK1e,KAAL,CAAW,CAAC,4CAAD,CAAX,CAAP,CADoC;AAAA,SAAjC,MAEA,IAAI,OAAO0e,IAAP,KAAgB,QAApB,EAA8B;AAAA,YACjC,OAAO,KAAK1e,KAAL,CAAW,CAAC,qDAAD,CAAX,CAAP,CADiC;AAAA,SAA9B,MAEA;AAAA,YACH,OAAO,IAAA,CAAKA,KAAL,CAAW,CAAC,6BAAD,GAAgC,OAAO0e,IAAvC,EAA4C,SAA5C,CAAX,CAAP,CADG;AAAA,SA1EgF;AAAA,KAhD1E;AAAA;AAuIjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA/X,MAAA,CAAOhK,KAAP,EAAsBiY,YAAtB,EAA4CvG,QAA5C,EAAoG;AAAA,QAChG,MAAMjI,IAAA,GAAO,OAAOzJ,KAAP,KAAiB,QAAjB,GAA4B,IAAA,CAAKyJ,IAAL,CAAUO,MAAV,CAAiBhK,KAAjB,CAA5B,GAAsD,IAAA,CAAKyJ,IAAxE,CADgG;AAAA,QAEhG,MAAM0S,KAAA,GAAQzK,QAAA,GAAW,IAAKyK,CAAAA,KAAL,CAAWnS,MAAX,CAAkB0H,QAAlB,CAAX,GAAyC,IAAA,CAAKyK,KAA5D,CAFgG;AAAA,QAGhG,OAAO,IAAIF,cAAJ,CACH,IAAKC,CAAAA,QADF,EAEHzS,IAFG,EAGHwO,YAAA,IAAgB,IAHb,EAIHkE,KAJG,EAKH,IAAKrZ,CAAAA,MALF,CAAP,CAHgG;AAAA,KAvInF;AAAA;AA0JjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAO,KAAA,CAAMA,KAAN,EAAqB,OAArB,EAA6C;AAAA,QACzC,MAAM7C,GAAA,GAAM,CAAG,GAAA,IAAA,CAAKA,GAAR,EAAA,GAAcF,IAAA,CAAKc,GAAL,CAAS0D,CAAA,IAAK,CAAC,CAAD,GAAIA,CAAJ,EAAM,CAAN,CAAd,CAAwBnE,CAAAA,IAAxB,CAA6B,EAA7B,CAAd,EAAA,CAAZ,CADyC;AAAA,QAEzC,IAAKmC,CAAAA,MAAL,CAAYzC,IAAZ,CAAiB,IAAIgR,cAAJ,CAAiB7Q,GAAjB,EAAsB6C,KAAtB,CAAjB,CAFyC,CAAA;AAAA,KA1J5B;AAAA;AAmKjB;AAAA;AAAA;AAAA,IAAAyP,YAAA,CAAaC,QAAb,EAA6BrN,CAA7B,EAA+C;AAAA,QAC3C,MAAMrC,KAAA,GAAQyP,YAAA,CAAaC,QAAb,EAAuBrN,CAAvB,CAAd,CAD2C;AAAA,QAE3C,IAAIrC,KAAJ;AAAA,YAAW,IAAKA,CAAAA,KAAL,CAAWA,KAAX,CAFgC,CAAA;AAAA,QAG3C,OAAOA,KAAP,CAH2C;AAAA,KAnK9B;AAAA,CAtBrB;AAgMA,uBAhMA,cAAA,CAAA;AAkMA,SAASgf,UAAT,CAAoB1Q,UAApB,EAA4C;AAAA,IACxC,IAAIA,UAAA,YAAsBkQ,KAA1B,EAA+B;AAAA,QAC3B,OAAOQ,UAAA,CAAW1Q,UAAA,CAAWmQ,eAAtB,CAAP,CAD2B;AAAA,KAA/B,MAEO,IAAInQ,UAAA,YAAsB6J,oBAAtB,IAA4C7J,UAAA,CAAWvJ,IAAX,KAAoB,OAApE,EAA6E;AAAA,QAChF,OAAO,KAAP,CADgF;AAAA,KAA7E,MAEA,IAAIuJ,UAAA,YAAsB+K,kBAA1B,EAA8C;AAAA;AAIjD;AAAA;AAAA,QAAA,OAAO,KAAP,CAJiD;AAAA,KAA9C,MAKA,IAAI/K,UAAA,YAAsB2P,QAA1B,EAAkC;AAAA,QACrC,OAAO,KAAP,CADqC;AAAA,KAVD;AAAA,IAcxC,MAAMiB,gBAAA,GAAmB5Q,UAAA,YAAsB6H,UAAtB,IACrB7H,UAAA,YAAsB+G,WAD1B,CAdwC;AAAA,IAiBxC,IAAI8J,gBAAA,GAAmB,IAAvB,CAjBwC;AAAA,IAkBxC7Q,UAAA,CAAWwG,SAAX,CAAqB6B,KAAA,IAAS;AAAA;AAQ1B;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,IAAIuI,gBAAJ,EAAsB;AAAA,YAClBC,gBAAA,GAAmBA,gBAAA,IAAoBH,UAAA,CAAWrI,KAAX,CAAvC,CADkB;AAAA,SAAtB,MAEO;AAAA,YACHwI,gBAAA,GAAmBA,gBAAA,IAAoBxI,KAAA,YAAiBlC,SAAxD,CADG;AAAA,SAVmB;AAAA,KAA9B,CAlBwC,CAAA;AAAA,IAgCxC,IAAI,CAAC0K,gBAAL,EAAuB;AAAA,QACnB,OAAO,KAAP,CADmB;AAAA,KAhCiB;AAAA,IAoCxC,OAAOd,iBAAA,CAAkB/P,UAAlB,KACHiQ,wBAAA,CAAyBjQ,UAAzB,EAAqC;AAAA,QAAC,MAAD;AAAA,QAAS,iBAAT;AAAA,QAA4B,eAA5B;AAAA,QAA6C,qBAA7C;AAAA,QAAoE,aAApE;AAAA,QAAmF,qBAAnF;AAAA,QAA0G,OAA1G;AAAA,QAAmH,sBAAnH;AAAA,KAArC,CADJ,CApCwC;AAAA;;AChM5C;AAUA;AAAA;AAAA;AAAA;AAAO,SAAS8Q,yBAAT,CAAmC7S,KAAnC,EAAyD5K,KAAzD,EAAgF;AAAA,IACnF,MAAM0d,SAAA,GAAY9S,KAAA,CAAMpQ,MAAN,GAAe,CAAjC,CADmF;AAAA,IAEnF,IAAImjB,UAAA,GAAa,CAAjB,CAFmF;AAAA,IAGnF,IAAIC,UAAA,GAAaF,SAAjB,CAHmF;AAAA,IAInF,IAAIG,YAAA,GAAe,CAAnB,CAJmF;AAAA,IAKnF,IAAI1c,YAAJ,EAAkB2c,SAAlB,CALmF;AAAA,IAOnF,OAAOH,UAAA,IAAcC,UAArB,EAAiC;AAAA,QAC7BC,YAAA,GAAe5f,IAAA,CAAKD,KAAL,CAAY,CAAA2f,UAAA,GAAaC,UAAb,IAA2B,CAAvC,CAAf,CAD6B;AAAA,QAE7Bzc,YAAA,GAAeyJ,KAAA,CAAMiT,YAAN,CAAf,CAF6B;AAAA,QAG7BC,SAAA,GAAYlT,KAAA,CAAMiT,YAAA,GAAe,CAArB,CAAZ,CAH6B;AAAA,QAK7B,IAAI1c,YAAA,IAAgBnB,KAApB,EAA2B;AAAA,YACvB,IAAI6d,YAAA,KAAiBH,SAAjB,IAA8B1d,KAAA,GAAQ8d,SAA1C,EAAqD;AAAA;AACjD,gBAAA,OAAOD,YAAP,CADiD;AAAA,aAD9B;AAAA,YAKvBF,UAAA,GAAaE,YAAA,GAAe,CAA5B,CALuB;AAAA,SAA3B,MAMO,IAAI1c,YAAA,GAAenB,KAAnB,EAA0B;AAAA,YAC7B4d,UAAA,GAAaC,YAAA,GAAe,CAA5B,CAD6B;AAAA,SAA1B,MAEA;AAAA,YACH,MAAM,IAAIxK,cAAJ,CAAiB,wBAAjB,CAAN,CADG;AAAA,SAbsB;AAAA,KAPkD;AAAA,IAyBnF,OAAO,CAAP,CAzBmF;AAAA;;ACVvF;AAUA,MAAM0K,IAAN,CAAiC;AAAA,IAO7BzR,WAAA,CAAYhO,IAAZ,EAAwB0B,KAAxB,EAA2C4K,KAA3C,EAAyD;AAAA,QACrD,IAAKtM,CAAAA,IAAL,GAAYA,IAAZ,CADqD;AAAA,QAErD,IAAK0B,CAAAA,KAAL,GAAaA,KAAb,CAFqD;AAAA,QAIrD,IAAKnB,CAAAA,MAAL,GAAc,EAAd,CAJqD;AAAA,QAKrD,IAAKmf,CAAAA,OAAL,GAAe,EAAf,CALqD;AAAA,QAMrD,KAAA,MAAW,CAACC,KAAD,EAAQtR,UAAR,CAAX,IAAkC/B,KAAlC,EAAyC;AAAA,YACrC,KAAK/L,MAAL,CAAYxD,IAAZ,CAAiB4iB,KAAjB,CADqC,CAAA;AAAA,YAErC,KAAKD,OAAL,CAAa3iB,IAAb,CAAkBsR,UAAlB,CAFqC,CAAA;AAAA,SANY;AAAA,KAP5B;AAAA,IAmB7B,OAAO9R,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAA0E;AAAA,QACtE,IAAID,IAAA,CAAKvY,MAAL,GAAc,CAAd,GAAkB,CAAtB,EAAyB;AAAA,YACrB,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,8CAAD,GAAiD0U,IAAA,CAAKvY,MAAL,GAAc,CAA/D,EAAiE,CAAjE,CAAd,CAAP,CADqB;AAAA,SAD6C;AAAA,QAKtE,IAAK,CAAAuY,IAAA,CAAKvY,MAAL,GAAc,CAAd,IAAmB,CAApB,KAA0B,CAA9B,EAAiC;AAAA,YAC7B,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,qCAAD,CAAd,CAAP,CAD6B;AAAA,SALqC;AAAA,QAStE,MAAM2B,KAAA,GAAQgT,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0B/F,UAA1B,CAAd,CATsE;AAAA,QAUtE,IAAI,CAAChN,KAAL;AAAA,YAAY,OAAO,IAAP,CAV0D;AAAA,QAYtE,MAAM4K,KAAA,GAAe,EAArB,CAZsE;AAAA,QActE,IAAIsT,UAAA,GAAoB,IAAxB,CAdsE;AAAA,QAetE,IAAIlL,OAAA,CAAQC,YAAR,IAAwBD,OAAA,CAAQC,YAAR,CAAqBlG,IAArB,KAA8B,OAA1D,EAAmE;AAAA,YAC/DmR,UAAA,GAAalL,OAAA,CAAQC,YAArB,CAD+D;AAAA,SAfG;AAAA,QAmBtE,KAAK,IAAI9S,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI4S,IAAA,CAAKvY,MAAzB,EAAiC2F,CAAA,IAAK,CAAtC,EAAyC;AAAA,YACrC,MAAM8d,KAAA,GAAQ9d,CAAA,KAAM,CAAN,GAAU,CAACnG,QAAX,GAAsB+Y,IAAA,CAAK5S,CAAL,CAApC,CADqC;AAAA,YAErC,MAAMzE,KAAA,GAAQqX,IAAA,CAAK5S,CAAA,GAAI,CAAT,CAAd,CAFqC;AAAA,YAIrC,MAAMge,QAAA,GAAWhe,CAAjB,CAJqC;AAAA,YAKrC,MAAMie,QAAA,GAAWje,CAAA,GAAI,CAArB,CALqC;AAAA,YAOrC,IAAI,OAAO8d,KAAP,KAAiB,QAArB,EAA+B;AAAA,gBAC3B,OAAOjL,OAAA,CAAQ3U,KAAR,CAAc,yIAAd,EAAyJ8f,QAAzJ,CAAP,CAD2B;AAAA,aAPM;AAAA,YAWrC,IAAIvT,KAAA,CAAMpQ,MAAN,IAAgBoQ,KAAA,CAAMA,KAAA,CAAMpQ,MAAN,GAAe,CAArB,CAAA,CAAwB,CAAxB,CAAA,IAA8ByjB,KAAlD,EAAyD;AAAA,gBACrD,OAAOjL,OAAA,CAAQ3U,KAAR,CAAc,2GAAd,EAA2H8f,QAA3H,CAAP,CADqD;AAAA,aAXpB;AAAA,YAerC,MAAMxK,MAAA,GAASX,OAAA,CAAQnY,KAAR,CAAca,KAAd,EAAqB0iB,QAArB,EAA+BF,UAA/B,CAAf,CAfqC;AAAA,YAgBrC,IAAI,CAACvK,MAAL;AAAA,gBAAa,OAAO,IAAP,CAhBwB;AAAA,YAiBrCuK,UAAA,GAAaA,UAAA,IAAcvK,MAAA,CAAOrV,IAAlC,CAjBqC;AAAA,YAkBrCsM,KAAA,CAAMvP,IAAN,CAAW;AAAA,gBAAC4iB,KAAD;AAAA,gBAAQtK,MAAR;AAAA,aAAX,CAlBqC,CAAA;AAAA,SAnB6B;AAAA,QAwCtE,OAAO,IAAIoK,IAAJ,CAASG,UAAT,EAAqBle,KAArB,EAA4B4K,KAA5B,CAAP,CAxCsE;AAAA,KAnB7C;AAAA,IA8D7BsI,QAAA,CAASU,GAAT,EAAsC;AAAA,QAClC,MAAM/U,MAAA,GAAS,IAAA,CAAKA,MAApB,CADkC;AAAA,QAElC,MAAMmf,OAAA,GAAU,IAAA,CAAKA,OAArB,CAFkC;AAAA,QAIlC,IAAInf,MAAA,CAAOrE,MAAP,KAAkB,CAAtB,EAAyB;AAAA,YACrB,OAAOwjB,OAAA,CAAQ,CAAR,EAAW9K,QAAX,CAAoBU,GAApB,CAAP,CADqB;AAAA,SAJS;AAAA,QAQlC,MAAMlY,KAAA,GAAU,IAAKsE,CAAAA,KAAL,CAAWkT,QAAX,CAAoBU,GAApB,CAAhB,CARkC;AAAA,QASlC,IAAIlY,KAAA,IAASmD,MAAA,CAAO,CAAP,CAAb,EAAwB;AAAA,YACpB,OAAOmf,OAAA,CAAQ,CAAR,EAAW9K,QAAX,CAAoBU,GAApB,CAAP,CADoB;AAAA,SATU;AAAA,QAalC,MAAMyK,SAAA,GAAYxf,MAAA,CAAOrE,MAAzB,CAbkC;AAAA,QAclC,IAAIkB,KAAA,IAASmD,MAAA,CAAOwf,SAAA,GAAY,CAAnB,CAAb,EAAoC;AAAA,YAChC,OAAOL,OAAA,CAAQK,SAAA,GAAY,CAApB,CAAA,CAAuBnL,QAAvB,CAAgCU,GAAhC,CAAP,CADgC;AAAA,SAdF;AAAA,QAkBlC,MAAM5Y,KAAA,GAAQyiB,yBAAA,CAA0B5e,MAA1B,EAAkCnD,KAAlC,CAAd,CAlBkC;AAAA,QAmBlC,OAAOsiB,OAAA,CAAQhjB,KAAR,EAAekY,QAAf,CAAwBU,GAAxB,CAAP,CAnBkC;AAAA,KA9DT;AAAA,IAoF7BT,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnCA,EAAA,CAAG,IAAKuB,CAAAA,KAAR,CADmC,CAAA;AAAA,QAEnC,KAAW2M,MAAAA,UAAX,IAAyB,IAAA,CAAKqR,OAA9B,EAAuC;AAAA,YACnCvf,EAAA,CAAGkO,UAAH,CADmC,CAAA;AAAA,SAFJ;AAAA,KApFV;AAAA,IA2F7ByG,aAAA,GAAyB;AAAA,QACrB,OAAO,IAAA,CAAK4K,OAAL,CAAanK,KAAb,CAAmB3T,GAAA,IAAOA,GAAA,CAAIkT,aAAJ,EAA1B,CAAP,CADqB;AAAA,KA3FI;AAAA,IA+F7Bf,SAAA,GAAkC;AAAA,QAC9B,MAAMC,UAAA,GAAa;AAAA,YAAC,MAAD;AAAA,YAAS,IAAKtS,CAAAA,KAAL,CAAWqS,SAAX,EAAT;AAAA,SAAnB,CAD8B;AAAA,QAE9B,KAAK,IAAIlS,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,IAAA,CAAKtB,MAAL,CAAYrE,MAAhC,EAAwC2F,CAAA,EAAxC,EAA6C;AAAA,YACzC,IAAIA,CAAA,GAAI,CAAR,EAAW;AAAA,gBACPmS,UAAA,CAAWjX,IAAX,CAAgB,KAAKwD,MAAL,CAAYsB,CAAZ,CAAhB,CADO,CAAA;AAAA,aAD8B;AAAA,YAIzCmS,UAAA,CAAWjX,IAAX,CAAgB,IAAA,CAAK2iB,OAAL,CAAa7d,CAAb,CAAA,CAAgBkS,SAAhB,EAAhB,CAJyC,CAAA;AAAA,SAFf;AAAA,QAQ9B,OAAOC,UAAP,CAR8B;AAAA,KA/FL;AAAA,CAZjC;AAuHA,aAAA,IAAA;;ICrHA1V,UAAA,GAAiB0hB,UAAjB,CAFA;AAIA,SAASA,UAAT,CAAoBC,GAApB,EAAyBC,GAAzB,EAA8BC,GAA9B,EAAmCC,GAAnC,EAAwC;AAAA;AAEpC,IAAA,IAAA,CAAKC,EAAL,GAAU,CAAMJ,GAAAA,GAAhB,CAFoC;AAAA,IAGpC,IAAKK,CAAAA,EAAL,GAAU,CAAA,IAAOH,GAAA,GAAMF,GAAN,CAAP,GAAoB,IAAKI,CAAAA,EAAnC,CAHoC;AAAA,IAIpC,IAAA,CAAKE,EAAL,GAAU,CAAA,GAAM,KAAKF,EAAX,GAAgB,IAAKC,CAAAA,EAA/B,CAJoC;AAAA,IAMpC,IAAKE,CAAAA,EAAL,GAAU,CAAA,GAAMN,GAAhB,CANoC;AAAA,IAOpC,IAAKO,CAAAA,EAAL,GAAU,CAAA,IAAOL,GAAA,GAAMF,GAAN,CAAP,GAAoB,IAAKM,CAAAA,EAAnC,CAPoC;AAAA,IAQpC,IAAA,CAAKE,EAAL,GAAU,CAAA,GAAM,KAAKF,EAAX,GAAgB,IAAKC,CAAAA,EAA/B,CARoC;AAAA,IAUpC,IAAKR,CAAAA,GAAL,GAAWA,GAAX,CAVoC;AAAA,IAWpC,IAAKC,CAAAA,GAAL,GAAWA,GAAX,CAXoC;AAAA,IAYpC,IAAKC,CAAAA,GAAL,GAAWA,GAAX,CAZoC;AAAA,IAapC,IAAKC,CAAAA,GAAL,GAAWA,GAAX,CAboC;AAAA,CAJxC;AAoBAJ,UAAA,CAAWpc,SAAX,GAAuB;AAAA,IACnB+c,YAAA,EAAc,UAAUve,CAAV,EAAa;AAAA;AAEvB,QAAA,OAAQ,CAAC,CAAKme,IAAAA,CAAAA,EAAL,GAAUne,CAAV,GAAc,IAAKke,CAAAA,EAAnB,IAAyBle,CAA1B,GAA8B,IAAA,CAAKie,EAAnC,IAAyCje,CAAjD,CAFuB;AAAA,KADR;AAAA,IAMnBwe,YAAA,EAAc,UAAUxe,CAAV,EAAa;AAAA,QACvB,OAAQ,CAAC,CAAA,IAAA,CAAKse,EAAL,GAAUte,CAAV,GAAc,IAAKqe,CAAAA,EAAnB,IAAyBre,CAA1B,GAA8B,IAAA,CAAKoe,EAAnC,IAAyCpe,CAAjD,CADuB;AAAA,KANR;AAAA,IAUnBye,sBAAA,EAAwB,UAAUze,CAAV,EAAa;AAAA,QACjC,OAAQ,CAAM,CAAA,GAAA,IAAA,CAAKme,EAAX,GAAgBne,CAAhB,GAAoB,CAAA,GAAM,IAAKke,CAAAA,EAA/B,IAAqCle,CAAtC,GAA0C,IAAA,CAAKie,EAAtD,CADiC;AAAA,KAVlB;AAAA,IAcnBS,WAAA,EAAa,UAAU1c,CAAV,EAAa2c,OAAb,EAAsB;AAAA,QAC/B,IAAIA,OAAA,KAAYxlB,SAAhB;AAAA,YAA2BwlB,OAAA,GAAU,QAAV,CADI;AAAA,QAG/B,IAAI3c,CAAA,GAAI,CAAR;AAAA,YAAa,OAAO,CAAP,CAHkB;AAAA,QAI/B,IAAIA,CAAA,GAAI,CAAR;AAAA,YAAa,OAAO,CAAP,CAJkB;AAAA,QAM/B,IAAIhC,CAAA,GAAIgC,CAAR,CAN+B;AAAA;AAS/B,QAAA,KAAK,IAAIvC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,CAApB,EAAuBA,CAAA,EAAvB,EAA4B;AAAA,YACxB,IAAIgZ,EAAA,GAAK,IAAA,CAAK8F,YAAL,CAAkBve,CAAlB,CAAuBgC,GAAAA,CAAhC,CADwB;AAAA,YAExB,IAAIzE,IAAA,CAAKqhB,GAAL,CAASnG,EAAT,IAAekG,OAAnB;AAAA,gBAA4B,OAAO3e,CAAP,CAFJ;AAAA,YAIxB,IAAI6e,EAAA,GAAK,IAAA,CAAKJ,sBAAL,CAA4Bze,CAA5B,CAAT,CAJwB;AAAA,YAKxB,IAAIzC,IAAA,CAAKqhB,GAAL,CAASC,EAAT,IAAe,QAAnB;AAAA,gBAAyB,MALD;AAAA,YAOxB7e,CAAA,GAAIA,CAAA,GAAIyY,EAAA,GAAKoG,EAAb,CAPwB;AAAA,SATG;AAAA;AAoB/B,QAAIC,IAAAA,EAAA,GAAK,CAAT,CApB+B;AAAA,QAqB/B,IAAIC,EAAA,GAAK,CAAT,CArB+B;AAAA,QAsB/B/e,CAAA,GAAIgC,CAAJ,CAtB+B;AAAA,QAwB/B,KAAKvC,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAI,EAAhB,EAAoBA,CAAA,EAApB,EAAyB;AAAA,YACrBgZ,EAAA,GAAK,IAAA,CAAK8F,YAAL,CAAkBve,CAAlB,CAAL,CADqB;AAAA,YAErB,IAAIzC,IAAA,CAAKqhB,GAAL,CAASnG,EAAA,GAAKzW,CAAd,CAAA,GAAmB2c,OAAvB;AAAA,gBAAgC,MAFX;AAAA,YAIrB,IAAI3c,CAAA,GAAIyW,EAAR,EAAY;AAAA,gBACRqG,EAAA,GAAK9e,CAAL,CADQ;AAAA,aAAZ,MAEO;AAAA,gBACH+e,EAAA,GAAK/e,CAAL,CADG;AAAA,aANc;AAAA,YAUrBA,CAAA,GAAK,CAAA+e,EAAA,GAAKD,EAAL,IAAW,GAAZ,GAAkBA,EAAtB,CAVqB;AAAA,SAxBM;AAAA,QAqC/B,OAAO9e,CAAP,CArC+B;AAAA,KAdhB;AAAA,IAsDnBgf,KAAA,EAAO,UAAUhd,CAAV,EAAa2c,OAAb,EAAsB;AAAA,QACzB,OAAO,IAAA,CAAKH,YAAL,CAAkB,IAAKE,CAAAA,WAAL,CAAiB1c,CAAjB,EAAoB2c,OAApB,CAAlB,CAAP,CADyB;AAAA,KAtDV;AAAA,CAAvB;;AClBA;AAEO,SAAS9L,MAAT,CAAgBvD,CAAhB,EAA2BD,CAA3B,EAAsCrP,CAAtC,EAAyD;AAAA,IAC5D,OAAQsP,CAAA,IAAStP,CAAAA,GAAAA,CAAJ,CAAN,GAAiBqP,CAAA,GAAIrP,CAA5B,CAD4D;AAAA,CAJhE;AAQO,SAASif,KAAT,CAAe7U,IAAf,EAA4BC,EAA5B,EAAuCrK,CAAvC,EAAyD;AAAA,IAC5D,OAAO,IAAIkP,OAAJ,CACH2D,MAAA,CAAOzI,IAAA,CAAK+E,CAAZ,EAAe9E,EAAA,CAAG8E,CAAlB,EAAqBnP,CAArB,CADG,EAEH6S,MAAA,CAAOzI,IAAA,CAAKgF,CAAZ,EAAe/E,EAAA,CAAG+E,CAAlB,EAAqBpP,CAArB,CAFG,EAGH6S,MAAA,CAAOzI,IAAA,CAAKiF,CAAZ,EAAehF,EAAA,CAAGgF,CAAlB,EAAqBrP,CAArB,CAHG,EAIH6S,MAAA,CAAOzI,IAAA,CAAKkF,CAAZ,EAAejF,EAAA,CAAGiF,CAAlB,EAAqBtP,CAArB,CAJG,CAAP,CAD4D;AAAA,CARhE;AAiBO,SAASlC,KAAT,CAAesM,IAAf,EAAoCC,EAApC,EAAuDrK,CAAvD,EAAiF;AAAA,IACpF,OAAOoK,IAAA,CAAK1O,GAAL,CAAS,CAACqe,CAAD,EAAIta,CAAJ,KAAU;AAAA,QACtB,OAAOoT,MAAA,CAAOkH,CAAP,EAAU1P,EAAA,CAAG5K,CAAH,CAAV,EAAiBO,CAAjB,CAAP,CADsB;AAAA,KAAnB,CAAP,CADoF;AAAA;;;;;;;;;ACfxF;AAmBA;AAAA,MAAMkf,EAAA,GAAK,OAAX;AAAA;AACI,IAAAC,EAAA,GAAK,CADT,EAEIC,EAAA,GAAK,OAFT,EAGIN,EAAA,GAAK,IAAI,EAHb,EAIIC,EAAA,GAAK,CAAA,GAAI,EAJb,EAKIM,EAAA,GAAK,CAAA,GAAIN,EAAJ,GAASA,EALlB,EAMIO,EAAA,GAAKP,EAAA,GAAKA,EAAL,GAAUA,EANnB,EAOIQ,OAAA,GAAUhiB,IAAA,CAAKma,EAAL,GAAU,GAPxB,EAQI8H,OAAA,GAAU,GAAMjiB,GAAAA,IAAA,CAAKma,EARzB,CArBA;AAgCA;AAAA,SAAS+H,OAAT,CAAiBzf,CAAjB,EAA4B;AAAA,IACxB,OAAOA,CAAA,GAAIsf,EAAJ,GAAS/hB,IAAA,CAAK2a,GAAL,CAASlY,CAAT,EAAY,CAAI,GAAA,CAAhB,CAAT,GAA8BA,CAAA,GAAIqf,EAAJ,GAASP,EAA9C,CADwB;AAAA,CAhC5B;AAoCA,SAASY,OAAT,CAAiB1f,CAAjB,EAA4B;AAAA,IACxB,OAAOA,CAAA,GAAI+e,EAAJ,GAAS/e,CAAA,GAAIA,CAAJ,GAAQA,CAAjB,GAAqBqf,EAAA,IAAMrf,CAAA,GAAI8e,EAAJ,CAAlC,CADwB;AAAA,CApC5B;AAwCA,SAASa,OAAT,CAAiB3d,CAAjB,EAA4B;AAAA,IACxB,OAAO,OAAOA,CAAA,IAAK,SAAL,GAAiB,KAAQA,GAAAA,CAAzB,GAA6B,KAAA,GAAQzE,IAAA,CAAK2a,GAAL,CAASlW,CAAT,EAAY,CAAA,GAAI,GAAhB,CAAR,GAA+B,KAA5D,CAAd,CADwB;AAAA,CAxC5B;AA4CA,SAAS4d,OAAT,CAAiB5d,CAAjB,EAA4B;AAAA,IACxBA,CAAA,IAAK,GAAL,CADwB;AAAA,IAExB,OAAOA,CAAA,IAAK,OAAL,GAAeA,CAAA,GAAI,KAAnB,GAA2BzE,IAAA,CAAK2a,GAAL,CAAU,CAAAlW,CAAA,GAAI,KAAJ,IAAa,KAAvB,EAA8B,GAA9B,CAAlC,CAFwB;AAAA,CA5C5B;AAkDA;AAAA,SAAS6d,QAAT,CAAkBC,QAAlB,EAA6C;AAAA,IACzC,MAAMzQ,CAAA,GAAIuQ,OAAA,CAAQE,QAAA,CAAS3Q,CAAjB,CAAV,EACIG,CAAA,GAAIsQ,OAAA,CAAQE,QAAA,CAAS1Q,CAAjB,CADR,EAEI/I,CAAA,GAAIuZ,OAAA,CAAQE,QAAA,CAASzQ,CAAjB,CAFR,EAGIrN,CAAA,GAAIyd,OAAA,CAAS,CAAA,SAAA,GAAYpQ,CAAZ,GAAgB,SAAA,GAAYC,CAA5B,GAAgC,SAAA,GAAYjJ,CAA5C,IAAiD6Y,EAA1D,CAHR,EAII5J,CAAA,GAAImK,OAAA,CAAS,CAAYpQ,SAAAA,GAAAA,CAAZ,GAAgB,SAAYC,GAAAA,CAA5B,GAAgC,QAAA,GAAYjJ,CAA5C,IAAiD8Y,EAA1D,CAJR,EAKIhH,CAAA,GAAIsH,OAAA,CAAS,aAAYpQ,CAAZ,GAAgB,QAAYC,GAAAA,CAA5B,GAAgC,SAAYjJ,GAAAA,CAA5C,IAAiD+Y,EAA1D,CALR,CADyC;AAAA,IAQzC,OAAO;AAAA,QACH/Y,CAAA,EAAG,GAAMiP,GAAAA,CAAN,GAAU,EADV;AAAA,QAEHhG,CAAA,EAAG,GAAA,IAAOtN,CAAA,GAAIsT,CAAJ,CAFP;AAAA,QAGHjG,CAAA,EAAG,GAAA,IAAOiG,CAAA,GAAI6C,CAAJ,CAHP;AAAA,QAIHnJ,KAAA,EAAO8Q,QAAA,CAASxQ,CAJb;AAAA,KAAP,CARyC;AAAA,CAlD7C;AAkEA,SAASyQ,QAAT,CAAkBC,QAAlB,EAA6C;AAAA,IACzC,IAAI1K,CAAA,GAAK,CAAA0K,QAAA,CAAS3Z,CAAT,GAAa,EAAb,IAAmB,GAA5B,EACIrE,CAAA,GAAIoS,KAAA,CAAM4L,QAAA,CAAS1Q,CAAf,CAAoBgG,GAAAA,CAApB,GAAwBA,CAAA,GAAI0K,QAAA,CAAS1Q,CAAT,GAAa,GADjD,EAEI6I,CAAA,GAAI/D,KAAA,CAAM4L,QAAA,CAAS3Q,CAAf,CAAoBiG,GAAAA,CAApB,GAAwBA,CAAA,GAAI0K,QAAA,CAAS3Q,CAAT,GAAa,GAFjD,CADyC;AAAA,IAIzCiG,CAAA,GAAI6J,EAAA,GAAKO,OAAA,CAAQpK,CAAR,CAAT,CAJyC;AAAA,IAKzCtT,CAAA,GAAIkd,EAAA,GAAKQ,OAAA,CAAQ1d,CAAR,CAAT,CALyC;AAAA,IAMzCmW,CAAA,GAAIiH,EAAA,GAAKM,OAAA,CAAQvH,CAAR,CAAT,CANyC;AAAA,IAOzC,OAAO,IAAIjJ,OAAJ,CACHyQ,OAAA,CAAQ,SAAA,GAAY3d,CAAZ,GAAgB,YAAYsT,CAA5B,GAAgC,SAAY6C,GAAAA,CAApD,CADG;AAEH,IAAAwH,OAAA,CAAQ,CAAC,QAAD,GAAa3d,CAAb,GAAiB,SAAA,GAAYsT,CAA7B,GAAiC,QAAY6C,GAAAA,CAArD,CAFG,EAGHwH,OAAA,CAAQ,SAAA,GAAY3d,CAAZ,GAAgB,SAAYsT,GAAAA,CAA5B,GAAgC,SAAA,GAAY6C,CAApD,CAHG,EAIH6H,QAAA,CAAShR,KAJN,CAAP,CAPyC;AAAA,CAlE7C;AAiFA,SAASiR,cAAT,CAAwB7V,IAAxB,EAAwCC,EAAxC,EAAsDrK,CAAtD,EAA2E;AAAA,IACvE,OAAO;AAAA,QACHqG,CAAA,EAAG6Z,MAAA,CAAkB9V,IAAA,CAAK/D,CAAvB,EAA0BgE,EAAA,CAAGhE,CAA7B,EAAgCrG,CAAhC,CADA;AAAA,QAEHsP,CAAA,EAAG4Q,MAAA,CAAkB9V,IAAA,CAAKkF,CAAvB,EAA0BjF,EAAA,CAAGiF,CAA7B,EAAgCtP,CAAhC,CAFA;AAAA,QAGHqP,CAAA,EAAG6Q,MAAA,CAAkB9V,IAAA,CAAKiF,CAAvB,EAA0BhF,EAAA,CAAGgF,CAA7B,EAAgCrP,CAAhC,CAHA;AAAA,QAIHgP,KAAA,EAAOkR,MAAA,CAAkB9V,IAAA,CAAK4E,KAAvB,EAA8B3E,EAAA,CAAG2E,KAAjC,EAAwChP,CAAxC,CAJJ;AAAA,KAAP,CADuE;AAAA,CAjF3E;AA2FA;AAAA,SAASmgB,QAAT,CAAkBL,QAAlB,EAA6C;AAAA,IACzC,MAAM,CAACzZ,CAAD,EAAIiJ,CAAJ,EAAOD,CAAP,CAAA,GAAYwQ,QAAA,CAASC,QAAT,CAAlB,CADyC;AAAA,IAEzC,MAAMjZ,CAAA,GAAItJ,IAAA,CAAK6iB,KAAL,CAAW/Q,CAAX,EAAcC,CAAd,CAAmBkQ,GAAAA,OAA7B,CAFyC;AAAA,IAGzC,OAAO;AAAA,QACH3Y,CAAA,EAAGA,CAAA,GAAI,CAAJ,GAAQA,CAAA,GAAI,GAAZ,GAAkBA,CADlB;AAAA,QAEHmN,CAAA,EAAGzW,IAAA,CAAK8iB,IAAL,CAAU/Q,CAAA,GAAIA,CAAJ,GAAQD,CAAA,GAAIA,CAAtB,CAFA;AAAA,QAGHhJ,CAHG;AAAA,QAIH2I,KAAA,EAAO8Q,QAAA,CAASxQ,CAJb;AAAA,KAAP,CAHyC;AAAA,CA3F7C;AAsGA,SAASgR,QAAT,CAAkBC,QAAlB,EAA6C;AAAA,IACzC,MAAM1Z,CAAA,GAAI0Z,QAAA,CAAS1Z,CAAT,GAAa0Y,OAAvB,EACIvL,CAAA,GAAIuM,QAAA,CAASvM,CADjB,EAEI3N,CAAA,GAAIka,QAAA,CAASla,CAFjB,CADyC;AAAA,IAIzC,OAAO0Z,QAAA,CAAS;AAAA,QACZ1Z,CADY;AAAA,QAEZiJ,CAAA,EAAG/R,IAAA,CAAKijB,GAAL,CAAS3Z,CAAT,IAAcmN,CAFL;AAAA,QAGZ3E,CAAA,EAAG9R,IAAA,CAAKkjB,GAAL,CAAS5Z,CAAT,IAAcmN,CAHL;AAAA,QAIZhF,KAAA,EAAOuR,QAAA,CAASvR,KAJJ;AAAA,KAAT,CAAP,CAJyC;AAAA,CAtG7C;AAkHA,SAAS0R,cAAT,CAAwBpR,CAAxB,EAAmCD,CAAnC,EAA8CrP,CAA9C,EAAyD;AAAA,IACrD,MAAM+Z,CAAA,GAAI1K,CAAA,GAAIC,CAAd,CADqD;AAAA,IAErD,OAAOA,CAAA,GAAItP,CAAA,IAAK+Z,CAAA,GAAI,GAAJ,IAAWA,CAAA,GAAI,CAAC,GAAhB,GAAsBA,CAAA,GAAI,GAAA,GAAMxc,IAAA,CAAKuQ,KAAL,CAAWiM,CAAA,GAAI,GAAf,CAAhC,GAAsDA,CAAtD,CAAhB,CAFqD;AAAA,CAlHzD;AAuHA,SAAS4G,cAAT,CAAwBvW,IAAxB,EAAwCC,EAAxC,EAAsDrK,CAAtD,EAA2E;AAAA,IACvE,OAAO;AAAA,QACH6G,CAAA,EAAG6Z,cAAA,CAAetW,IAAA,CAAKvD,CAApB,EAAuBwD,EAAA,CAAGxD,CAA1B,EAA6B7G,CAA7B,CADA;AAAA,QAEHgU,CAAA,EAAGkM,MAAA,CAAkB9V,IAAA,CAAK4J,CAAvB,EAA0B3J,EAAA,CAAG2J,CAA7B,EAAgChU,CAAhC,CAFA;AAAA,QAGHqG,CAAA,EAAG6Z,MAAA,CAAkB9V,IAAA,CAAK/D,CAAvB,EAA0BgE,EAAA,CAAGhE,CAA7B,EAAgCrG,CAAhC,CAHA;AAAA,QAIHgP,KAAA,EAAOkR,MAAA,CAAkB9V,IAAA,CAAK4E,KAAvB,EAA8B3E,EAAA,CAAG2E,KAAjC,EAAwChP,CAAxC,CAJJ;AAAA,KAAP,CADuE;AAAA,CAvH3E;AAgIO,MAAM4gB,GAAA,GAAM;AAAA,IACfC,OAAA,EAAShB,QADM;AAAA,IAEfpV,OAAA,EAASsV,QAFM;AAAA,IAGfe,WAAA,EAAab,cAHE;AAAA,CAAZ,CAhIP;AAsIO,MAAMc,GAAA,GAAM;AAAA,IACfF,OAAA,EAASV,QADM;AAAA,IAEf1V,OAAA,EAAS6V,QAFM;AAAA,IAGfQ,WAAA,EAAaH,cAHE;AAAA,CAAZ;;;;;;;;ACpIP;AAmBA,MAAMK,WAAN,CAAwC;AAAA,IASpCpV,WAAA,CAAYhO,IAAZ,EAAwBqjB,QAAxB,EAAyFC,aAAzF,EAA2H5hB,KAA3H,EAA8I4K,KAA9I,EAA4J;AAAA,QACxJ,IAAKtM,CAAAA,IAAL,GAAYA,IAAZ,CADwJ;AAAA,QAExJ,IAAKqjB,CAAAA,QAAL,GAAgBA,QAAhB,CAFwJ;AAAA,QAGxJ,IAAKC,CAAAA,aAAL,GAAqBA,aAArB,CAHwJ;AAAA,QAIxJ,IAAK5hB,CAAAA,KAAL,GAAaA,KAAb,CAJwJ;AAAA,QAMxJ,IAAKnB,CAAAA,MAAL,GAAc,EAAd,CANwJ;AAAA,QAOxJ,IAAKmf,CAAAA,OAAL,GAAe,EAAf,CAPwJ;AAAA,QAQxJ,KAAA,MAAW,CAACC,KAAD,EAAQtR,UAAR,CAAX,IAAkC/B,KAAlC,EAAyC;AAAA,YACrC,KAAK/L,MAAL,CAAYxD,IAAZ,CAAiB4iB,KAAjB,CADqC,CAAA;AAAA,YAErC,KAAKD,OAAL,CAAa3iB,IAAb,CAAkBsR,UAAlB,CAFqC,CAAA;AAAA,SAR+G;AAAA,KATxH;AAAA,IAuBpC,OAAOkV,mBAAP,CAA2BD,aAA3B,EAA6D5hB,KAA7D,EAA4E8hB,KAA5E,EAA2FC,KAA3F,EAAkH;AAAA,QAC9G,IAAIrhB,CAAA,GAAI,CAAR,CAD8G;AAAA,QAE9G,IAAIkhB,aAAA,CAAcxe,IAAd,KAAuB,aAA3B,EAA0C;AAAA,YACtC1C,CAAA,GAAIshB,wBAAA,CAAyBhiB,KAAzB,EAAgC4hB,aAAA,CAAczkB,IAA9C,EAAoD2kB,KAApD,EAA2DC,KAA3D,CAAJ,CADsC;AAAA,SAA1C,MAEO,IAAIH,aAAA,CAAcxe,IAAd,KAAuB,QAA3B,EAAqC;AAAA,YACxC1C,CAAA,GAAIshB,wBAAA,CAAyBhiB,KAAzB,EAAgC,CAAhC,EAAmC8hB,KAAnC,EAA0CC,KAA1C,CAAJ,CADwC;AAAA,SAArC,MAEA,IAAIH,aAAA,CAAcxe,IAAd,KAAuB,cAA3B,EAA2C;AAAA,YAC9C,MAAMsR,CAAA,GAAIkN,aAAA,CAAcK,aAAxB,CAD8C;AAAA,YAE9C,MAAMC,EAAA,GAAK,IAAI5D,UAAJ,CAAe5J,CAAA,CAAE,CAAF,CAAf,EAAqBA,CAAA,CAAE,CAAF,CAArB,EAA2BA,CAAA,CAAE,CAAF,CAA3B,EAAiCA,CAAA,CAAE,CAAF,CAAjC,CAAX,CAF8C;AAAA,YAG9ChU,CAAA,GAAIwhB,EAAA,CAAGxC,KAAH,CAASsC,wBAAA,CAAyBhiB,KAAzB,EAAgC,CAAhC,EAAmC8hB,KAAnC,EAA0CC,KAA1C,CAAT,CAAJ,CAH8C;AAAA,SAN4D;AAAA,QAW9G,OAAOrhB,CAAP,CAX8G;AAAA,KAvB9E;AAAA,IAqCpC,OAAO7F,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAAiF;AAAA,QAC7E,IAAI,CAAC2O,QAAD,EAAWC,aAAX,EAA0B5hB,KAA1B,EAAiC,GAAA,IAAjC,CAA4C+S,GAAAA,IAAhD,CAD6E;AAAA,QAG7E,IAAI,CAAC5X,KAAA,CAAMC,OAAN,CAAcwmB,aAAd,CAAD,IAAiCA,aAAA,CAAcpnB,MAAd,KAAyB,CAA9D,EAAiE;AAAA,YAC7D,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,0CAAD,CAAd,EAA4D,CAA5D,CAAP,CAD6D;AAAA,SAHY;AAAA,QAO7E,IAAIujB,aAAA,CAAc,CAAd,CAAA,KAAqB,QAAzB,EAAmC;AAAA,YAC/BA,aAAA,GAAgB,EAACxe,IAAA,EAAM,QAAP,EAAhB,CAD+B;AAAA,SAAnC,MAEO,IAAIwe,aAAA,CAAc,CAAd,CAAA,KAAqB,aAAzB,EAAwC;AAAA,YAC3C,MAAMzkB,IAAA,GAAOykB,aAAA,CAAc,CAAd,CAAb,CAD2C;AAAA,YAE3C,IAAI,OAAOzkB,IAAP,KAAgB,QAApB;AAAA,gBACI,OAAO6V,OAAA,CAAQ3U,KAAR,CAAc,CAAC,kDAAD,CAAd,EAAoE,CAApE,EAAuE,CAAvE,CAAP,CAHuC;AAAA,YAI3CujB,aAAA,GAAgB;AAAA,gBACZxe,IAAA,EAAM,aADM;AAAA,gBAEZjG,IAFY;AAAA,aAAhB,CAJ2C;AAAA,SAAxC,MAQA,IAAIykB,aAAA,CAAc,CAAd,CAAA,KAAqB,cAAzB,EAAyC;AAAA,YAC5C,MAAMK,aAAA,GAAgBL,aAAA,CAAc9nB,KAAd,CAAoB,CAApB,CAAtB,CAD4C;AAAA,YAE5C,IACImoB,aAAA,CAAcznB,MAAd,KAAyB,CAAzB,IACAynB,aAAA,CAAc7T,IAAd,CAAmB1N,CAAA,IAAK,OAAOA,CAAP,KAAa,QAAb,IAAyBA,CAAA,GAAI,CAA7B,IAAkCA,CAAA,GAAI,CAA9D,CAFJ,EAGE;AAAA,gBACE,OAAOsS,OAAA,CAAQ3U,KAAR,CAAc,yFAAd,EAAyG,CAAzG,CAAP,CADF;AAAA,aAL0C;AAAA,YAS5CujB,aAAA,GAAgB;AAAA,gBACZxe,IAAA,EAAM,cADM;AAAA,gBAEZ6e,aAAA,EAAgBA,aAFJ;AAAA,aAAhB,CAT4C;AAAA,SAAzC,MAaA;AAAA,YACH,OAAOjP,OAAA,CAAQ3U,KAAR,CAAc,CAAC,2BAAD,GAA8BF,MAAA,CAAOyjB,aAAA,CAAc,CAAd,CAAP,CAA9B,EAAA,CAAd,EAAwE,CAAxE,EAA2E,CAA3E,CAAP,CADG;AAAA,SA9BsE;AAAA,QAkC7E,IAAI7O,IAAA,CAAKvY,MAAL,GAAc,CAAd,GAAkB,CAAtB,EAAyB;AAAA,YACrB,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,8CAAD,GAAiD0U,IAAA,CAAKvY,MAAL,GAAc,CAA/D,EAAiE,CAAjE,CAAd,CAAP,CADqB;AAAA,SAlCoD;AAAA,QAsC7E,IAAK,CAAAuY,IAAA,CAAKvY,MAAL,GAAc,CAAd,IAAmB,CAApB,KAA0B,CAA9B,EAAiC;AAAA,YAC7B,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,qCAAD,CAAd,CAAP,CAD6B;AAAA,SAtC4C;AAAA,QA0C7E2B,KAAA,GAAQgT,OAAA,CAAQnY,KAAR,CAAcmF,KAAd,EAAqB,CAArB,EAAwBgN,UAAxB,CAAR,CA1C6E;AAAA,QA2C7E,IAAI,CAAChN,KAAL;AAAA,YAAY,OAAO,IAAP,CA3CiE;AAAA,QA6C7E,MAAM4K,KAAA,GAAe,EAArB,CA7C6E;AAAA,QA+C7E,IAAIsT,UAAA,GAAoB,IAAxB,CA/C6E;AAAA,QAgD7E,IAAIyD,QAAA,KAAa,iBAAb,IAAkCA,QAAA,KAAa,iBAAnD,EAAsE;AAAA,YAClEzD,UAAA,GAAa/Q,SAAb,CADkE;AAAA,SAAtE,MAEO,IAAI6F,OAAA,CAAQC,YAAR,IAAwBD,OAAA,CAAQC,YAAR,CAAqBlG,IAArB,KAA8B,OAA1D,EAAmE;AAAA,YACtEmR,UAAA,GAAalL,OAAA,CAAQC,YAArB,CADsE;AAAA,SAlDG;AAAA,QAsD7E,KAAK,IAAI9S,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIgG,IAAA,CAAK3L,MAAzB,EAAiC2F,CAAA,IAAK,CAAtC,EAAyC;AAAA,YACrC,MAAM8d,KAAA,GAAQ9X,IAAA,CAAKhG,CAAL,CAAd,CADqC;AAAA,YAErC,MAAMzE,KAAA,GAAQyK,IAAA,CAAKhG,CAAA,GAAI,CAAT,CAAd,CAFqC;AAAA,YAIrC,MAAMge,QAAA,GAAWhe,CAAA,GAAI,CAArB,CAJqC;AAAA,YAKrC,MAAMie,QAAA,GAAWje,CAAA,GAAI,CAArB,CALqC;AAAA,YAOrC,IAAI,OAAO8d,KAAP,KAAiB,QAArB,EAA+B;AAAA,gBAC3B,OAAOjL,OAAA,CAAQ3U,KAAR,CAAc,gJAAd,EAAgK8f,QAAhK,CAAP,CAD2B;AAAA,aAPM;AAAA,YAWrC,IAAIvT,KAAA,CAAMpQ,MAAN,IAAgBoQ,KAAA,CAAMA,KAAA,CAAMpQ,MAAN,GAAe,CAArB,CAAA,CAAwB,CAAxB,CAAA,IAA8ByjB,KAAlD,EAAyD;AAAA,gBACrD,OAAOjL,OAAA,CAAQ3U,KAAR,CAAc,kHAAd,EAAkI8f,QAAlI,CAAP,CADqD;AAAA,aAXpB;AAAA,YAerC,MAAMxK,MAAA,GAASX,OAAA,CAAQnY,KAAR,CAAca,KAAd,EAAqB0iB,QAArB,EAA+BF,UAA/B,CAAf,CAfqC;AAAA,YAgBrC,IAAI,CAACvK,MAAL;AAAA,gBAAa,OAAO,IAAP,CAhBwB;AAAA,YAiBrCuK,UAAA,GAAaA,UAAA,IAAcvK,MAAA,CAAOrV,IAAlC,CAjBqC;AAAA,YAkBrCsM,KAAA,CAAMvP,IAAN,CAAW;AAAA,gBAAC4iB,KAAD;AAAA,gBAAQtK,MAAR;AAAA,aAAX,CAlBqC,CAAA;AAAA,SAtDoC;AAAA,QA2E7E,IAAIuK,UAAA,CAAWnR,IAAX,KAAoB,QAApB,IACAmR,UAAA,CAAWnR,IAAX,KAAoB,OADpB,IAEA,EACImR,UAAA,CAAWnR,IAAX,KAAoB,OAApB,IACAmR,UAAA,CAAWxQ,QAAX,CAAoBX,IAApB,KAA6B,QAD7B,IAEA,OAAOmR,UAAA,CAAWvQ,CAAlB,KAAwB,QAFxB,CAHR,EAOE;AAAA,YACE,OAAOqF,OAAA,CAAQ3U,KAAR,CAAc,CAAC,KAAD,GAAQuP,UAAA,CAASsQ,UAAT,CAAR,EAA6B,uBAA7B,CAAd,CAAP,CADF;AAAA,SAlF2E;AAAA,QAsF7E,OAAO,IAAIwD,WAAJ,CAAgBxD,UAAhB,EAA6ByD,QAA7B,EAA6CC,aAA7C,EAA4D5hB,KAA5D,EAAmE4K,KAAnE,CAAP,CAtF6E;AAAA,KArC7C;AAAA,IA8HpCsI,QAAA,CAASU,GAAT,EAAwC;AAAA,QACpC,MAAM/U,MAAA,GAAS,IAAA,CAAKA,MAApB,CADoC;AAAA,QAEpC,MAAMmf,OAAA,GAAU,IAAA,CAAKA,OAArB,CAFoC;AAAA,QAIpC,IAAInf,MAAA,CAAOrE,MAAP,KAAkB,CAAtB,EAAyB;AAAA,YACrB,OAAOwjB,OAAA,CAAQ,CAAR,EAAW9K,QAAX,CAAoBU,GAApB,CAAP,CADqB;AAAA,SAJW;AAAA,QAQpC,MAAMlY,KAAA,GAAU,IAAKsE,CAAAA,KAAL,CAAWkT,QAAX,CAAoBU,GAApB,CAAhB,CARoC;AAAA,QASpC,IAAIlY,KAAA,IAASmD,MAAA,CAAO,CAAP,CAAb,EAAwB;AAAA,YACpB,OAAOmf,OAAA,CAAQ,CAAR,EAAW9K,QAAX,CAAoBU,GAApB,CAAP,CADoB;AAAA,SATY;AAAA,QAapC,MAAMyK,SAAA,GAAYxf,MAAA,CAAOrE,MAAzB,CAboC;AAAA,QAcpC,IAAIkB,KAAA,IAASmD,MAAA,CAAOwf,SAAA,GAAY,CAAnB,CAAb,EAAoC;AAAA,YAChC,OAAOL,OAAA,CAAQK,SAAA,GAAY,CAApB,CAAA,CAAuBnL,QAAvB,CAAgCU,GAAhC,CAAP,CADgC;AAAA,SAdA;AAAA,QAkBpC,MAAM5Y,KAAA,GAAQyiB,yBAAA,CAA0B5e,MAA1B,EAAkCnD,KAAlC,CAAd,CAlBoC;AAAA,QAmBpC,MAAMomB,KAAA,GAAQjjB,MAAA,CAAO7D,KAAP,CAAd,CAnBoC;AAAA,QAoBpC,MAAM+mB,KAAA,GAAQljB,MAAA,CAAO7D,KAAA,GAAQ,CAAf,CAAd,CApBoC;AAAA,QAqBpC,MAAM0F,CAAA,GAAIghB,WAAA,CAAYG,mBAAZ,CAAgC,IAAA,CAAKD,aAArC,EAAoDlmB,KAApD,EAA2DomB,KAA3D,EAAkEC,KAAlE,CAAV,CArBoC;AAAA,QAuBpC,MAAMI,WAAA,GAAcnE,OAAA,CAAQhjB,KAAR,CAAA,CAAekY,QAAf,CAAwBU,GAAxB,CAApB,CAvBoC;AAAA,QAwBpC,MAAMwO,WAAA,GAAcpE,OAAA,CAAQhjB,KAAA,GAAQ,CAAhB,CAAmBkY,CAAAA,QAAnB,CAA4BU,GAA5B,CAApB,CAxBoC;AAAA,QA0BpC,IAAI,IAAA,CAAK+N,QAAL,KAAkB,aAAtB,EAAqC;AAAA,YACjC,OAAQH,WAAA,CAAY,IAAKljB,CAAAA,IAAL,CAAUyO,IAAV,CAAevL,WAAf,EAAZ,CAAD,CAAiD2gB,WAAjD,EAA8DC,WAA9D,EAA2E1hB,CAA3E,CAAP,CAAA;AADiC,SAArC,MAEO,IAAI,IAAA,CAAKihB,QAAL,KAAkB,iBAAtB,EAAyC;AAAA,YAC5C,OAAOF,GAAA,CAAItW,OAAJ,CAAYsW,GAAA,CAAID,WAAJ,CAAgBC,GAAA,CAAIF,OAAJ,CAAYY,WAAZ,CAAhB,EAA0CV,GAAA,CAAIF,OAAJ,CAAYa,WAAZ,CAA1C,EAAoE1hB,CAApE,CAAZ,CAAP,CAD4C;AAAA,SAAzC,MAEA;AAAA,YACH,OAAO4gB,GAAA,CAAInW,OAAJ,CAAYmW,GAAA,CAAIE,WAAJ,CAAgBF,GAAA,CAAIC,OAAJ,CAAYY,WAAZ,CAAhB,EAA0Cb,GAAA,CAAIC,OAAJ,CAAYa,WAAZ,CAA1C,EAAoE1hB,CAApE,CAAZ,CAAP,CADG;AAAA,SA9B6B;AAAA,KA9HJ;AAAA,IAiKpCyS,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnCA,EAAA,CAAG,IAAKuB,CAAAA,KAAR,CADmC,CAAA;AAAA,QAEnC,KAAW2M,MAAAA,UAAX,IAAyB,IAAA,CAAKqR,OAA9B,EAAuC;AAAA,YACnCvf,EAAA,CAAGkO,UAAH,CADmC,CAAA;AAAA,SAFJ;AAAA,KAjKH;AAAA,IAwKpCyG,aAAA,GAAyB;AAAA,QACrB,OAAO,IAAA,CAAK4K,OAAL,CAAanK,KAAb,CAAmB3T,GAAA,IAAOA,GAAA,CAAIkT,aAAJ,EAA1B,CAAP,CADqB;AAAA,KAxKW;AAAA,IA4KpCf,SAAA,GAAkC;AAAA,QAC9B,IAAIuP,aAAJ,CAD8B;AAAA,QAE9B,IAAI,IAAKA,CAAAA,aAAL,CAAmBxe,IAAnB,KAA4B,QAAhC,EAA0C;AAAA,YACtCwe,aAAA,GAAgB,CAAC,QAAD,CAAhB,CADsC;AAAA,SAA1C,MAEO,IAAI,IAAKA,CAAAA,aAAL,CAAmBxe,IAAnB,KAA4B,aAAhC,EAA+C;AAAA,YAClD,IAAK,IAAKwe,CAAAA,aAAL,CAAmBzkB,IAAnB,KAA4B,CAAjC,EAAoC;AAAA,gBAChCykB,aAAA,GAAgB,CAAC,QAAD,CAAhB,CADgC;AAAA,aAApC,MAEO;AAAA,gBACHA,aAAA,GAAgB;AAAA,oBAAC,aAAD;AAAA,oBAAgB,IAAA,CAAKA,aAAL,CAAmBzkB,IAAnC;AAAA,iBAAhB,CADG;AAAA,aAH2C;AAAA,SAA/C,MAMA;AAAA,YACHykB,aAAA,GAAgB,CAAC,cAAD,CAAkB5c,CAAAA,MAAlB,CAAyB,IAAA,CAAK4c,aAAL,CAAmBK,aAA5C,CAAhB,CADG;AAAA,SAVuB;AAAA,QAc9B,MAAM3P,UAAA,GAAa;AAAA,YAAC,KAAKqP,QAAN;AAAA,YAAgBC,aAAhB;AAAA,YAA+B,IAAK5hB,CAAAA,KAAL,CAAWqS,SAAX,EAA/B;AAAA,SAAnB,CAd8B;AAAA,QAgB9B,KAAK,IAAIlS,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,IAAA,CAAKtB,MAAL,CAAYrE,MAAhC,EAAwC2F,CAAA,EAAxC,EAA6C;AAAA,YACzCmS,UAAA,CAAWjX,IAAX,CACI,IAAA,CAAKwD,MAAL,CAAYsB,CAAZ,CADJ,EAEI,KAAK6d,OAAL,CAAa7d,CAAb,CAAgBkS,CAAAA,SAAhB,EAFJ,CADyC,CAAA;AAAA,SAhBf;AAAA,QAsB9B,OAAOC,UAAP,CAtB8B;AAAA,KA5KE;AAAA,CArBxC;AA8PA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS0P,wBAAT,CAAkChiB,KAAlC,EAAyC7C,IAAzC,EAA+CklB,UAA/C,EAA2DC,UAA3D,EAAuE;AAAA,IACnE,MAAMC,UAAA,GAAaD,UAAA,GAAaD,UAAhC,CADmE;AAAA,IAEnE,MAAMG,QAAA,GAAWxiB,KAAA,GAAQqiB,UAAzB,CAFmE;AAAA,IAInE,IAAIE,UAAA,KAAe,CAAnB,EAAsB;AAAA,QAClB,OAAO,CAAP,CADkB;AAAA,KAAtB,MAEO,IAAIplB,IAAA,KAAS,CAAb,EAAgB;AAAA,QACnB,OAAOqlB,QAAA,GAAWD,UAAlB,CADmB;AAAA,KAAhB,MAEA;AAAA,QACH,OAAQ,CAAAtkB,IAAA,CAAK2a,GAAL,CAASzb,IAAT,EAAeqlB,QAAf,CAAA,GAA2B,CAA3B,KAAiCvkB,IAAA,CAAK2a,GAAL,CAASzb,IAAT,EAAeolB,UAAf,CAAA,GAA6B,CAA7B,CAAzC,CADG;AAAA,KAR4D;AAAA,CA9PvE;AA2QA,oBAAA,WAAA;;AC/PA,MAAME,QAAN,CAAqC;AAAA,IAIjCnW,WAAA,CAAYhO,IAAZ,EAAwByU,IAAxB,EAAiD;AAAA,QAC7C,IAAKzU,CAAAA,IAAL,GAAYA,IAAZ,CAD6C;AAAA,QAE7C,IAAKyU,CAAAA,IAAL,GAAYA,IAAZ,CAF6C;AAAA,KAJhB;AAAA,IASjC,OAAOlY,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAA8E;AAAA,QAC1E,IAAID,IAAA,CAAKvY,MAAL,GAAc,CAAlB,EAAqB;AAAA,YACjB,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,oCAAd,CAAP,CADiB;AAAA,SADqD;AAAA,QAI1E,IAAI6f,UAAA,GAAoB,IAAxB,CAJ0E;AAAA,QAK1E,MAAMjL,YAAA,GAAeD,OAAA,CAAQC,YAA7B,CAL0E;AAAA,QAM1E,IAAIA,YAAA,IAAgBA,YAAA,CAAalG,IAAb,KAAsB,OAA1C,EAAmD;AAAA,YAC/CmR,UAAA,GAAajL,YAAb,CAD+C;AAAA,SANuB;AAAA,QAS1E,MAAMmE,UAAA,GAAa,EAAnB,CAT0E;AAAA,QAW1E,KAAA,MAAWvV,GAAX,IAAkBkR,IAAA,CAAKjZ,KAAL,CAAW,CAAX,CAAlB,EAAiC;AAAA,YAC7B,MAAM6Z,MAAA,GAASX,OAAA,CAAQnY,KAAR,CAAcgH,GAAd,EAAmB,CAAA,GAAIuV,UAAA,CAAW5c,MAAlC,EAA0C0jB,UAA1C,EAAsDrkB,SAAtD,EAAiE,EAACqjB,cAAA,EAAgB,MAAjB,EAAjE,CAAf,CAD6B;AAAA,YAE7B,IAAI,CAACvJ,MAAL;AAAA,gBAAa,OAAO,IAAP,CAFgB;AAAA,YAG7BuK,UAAA,GAAaA,UAAA,IAAcvK,MAAA,CAAOrV,IAAlC,CAH6B;AAAA,YAI7B8Y,UAAA,CAAW/b,IAAX,CAAgBsY,MAAhB,CAJ6B,CAAA;AAAA,SAXyC;AAAA;AAwB1E;AAAA;AAAA;AAAA;AAAA,QAAA,MAAM+O,eAAA,GAAkBzP,YAAA,IACpBmE,UAAA,CAAWhJ,IAAX,CAAgBvM,GAAA,IAAOiM,YAAA,CAAamF,YAAb,EAA2BpR,GAAA,CAAIvD,IAA/B,CAAvB,CADJ,CAxB0E;AAAA,QA2B1E,OAAOokB,eAAA,GACH,IAAID,QAAJ,CAAapV,SAAb,EAAwB+J,UAAxB,CADG,GAEH,IAAIqL,QAAJ,CAAcvE,UAAd,EAAgC9G,UAAhC,CAFJ,CA3B0E;AAAA,KAT7C;AAAA,IAyCjClE,QAAA,CAASU,GAAT,EAA6C;AAAA,QACzC,IAAI9X,MAAA,GAAS,IAAb,CADyC;AAAA,QAEzC,IAAI6mB,QAAA,GAAW,CAAf,CAFyC;AAAA,QAGzC,IAAIC,UAAJ,CAHyC;AAAA,QAIzC,KAAW/gB,MAAAA,GAAX,IAAkB,IAAA,CAAKkR,IAAvB,EAA6B;AAAA,YACzB4P,QAAA,EADyB,CAAA;AAAA,YAEzB7mB,MAAA,GAAS+F,GAAA,CAAIqR,QAAJ,CAAaU,GAAb,CAAT,CAFyB;AAAA;AAKzB;AAAA,YAAI9X,IAAAA,MAAA,IAAUA,MAAA,YAAkByW,aAA5B,IAA6C,CAACzW,MAAA,CAAO0W,SAAzD,EAAoE;AAAA;AAEhE,gBAAI,IAAA,CAACoQ,UAAL,EAAiB;AAAA,oBACbA,UAAA,GAAa9mB,MAAb,CADa;AAAA,iBAF+C;AAAA,gBAKhEA,MAAA,GAAS,IAAT,CALgE;AAAA;AAOhE,gBAAA,IAAI6mB,QAAA,KAAa,IAAA,CAAK5P,IAAL,CAAUvY,MAA3B,EAAmC;AAAA,oBAC/B,OAAOooB,UAAP,CAD+B;AAAA,iBAP6B;AAAA,aAL3C;AAAA,YAiBzB,IAAI9mB,MAAA,KAAW,IAAf;AAAA,gBAAqB,MAjBI;AAAA,SAJY;AAAA,QAuBzC,OAAOA,MAAP,CAvByC;AAAA,KAzCZ;AAAA,IAmEjCqX,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnC,KAAKsU,IAAL,CAAU3I,OAAV,CAAkB3L,EAAlB,CADmC,CAAA;AAAA,KAnEN;AAAA,IAuEjC2U,aAAA,GAAyB;AAAA,QACrB,OAAO,IAAA,CAAKL,IAAL,CAAUc,KAAV,CAAgBhS,GAAA,IAAOA,GAAA,CAAIuR,aAAJ,EAAvB,CAAP,CADqB;AAAA,KAvEQ;AAAA,IA2EjCf,SAAA,GAAkC;AAAA,QAC9B,MAAMC,UAAA,GAAa,CAAC,UAAD,CAAnB,CAD8B;AAAA,QAE9B,IAAKa,CAAAA,SAAL,CAAe6B,KAAA,IAAS;AAAA,YAAE1C,UAAA,CAAWjX,IAAX,CAAgB2Z,KAAA,CAAM3C,SAAN,EAAhB,CAAF,CAAA;AAAA,SAAxB,CAF8B,CAAA;AAAA,QAG9B,OAAOC,UAAP,CAH8B;AAAA,KA3ED;AAAA,CAZrC;AA8FA,iBAAA,QAAA;;ACvFA;AAAA,MAAMuQ,GAAN,CAAgC;AAAA,IAK5BvW,WAAA,CAAYI,QAAZ,EAAmD5Q,MAAnD,EAAuE;AAAA,QACnE,KAAKwC,IAAL,GAAYxC,MAAA,CAAOwC,IAAnB,CADmE;AAAA,QAEnE,IAAA,CAAKoO,QAAL,GAAgB,EAAA,CAAG1H,MAAH,CAAU0H,QAAV,CAAhB,CAFmE;AAAA,QAGnE,IAAK5Q,CAAAA,MAAL,GAAcA,MAAd,CAHmE;AAAA,KAL3C;AAAA,IAW5BoX,QAAA,CAASU,GAAT,EAAsC;AAAA,QAClC,OAAO,KAAK9X,MAAL,CAAYoX,QAAZ,CAAqBU,GAArB,CAAP,CADkC;AAAA,KAXV;AAAA,IAe5BT,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnC,KAAWqkB,MAAAA,OAAX,IAAsB,IAAA,CAAKpW,QAA3B,EAAqC;AAAA,YACjCjO,EAAA,CAAGqkB,OAAA,CAAQ,CAAR,CAAH,CADiC,CAAA;AAAA,SADF;AAAA,QAInCrkB,EAAA,CAAG,IAAK3C,CAAAA,MAAR,CAJmC,CAAA;AAAA,KAfX;AAAA,IAsB5B,OAAOjB,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAAyE;AAAA,QACrE,IAAID,IAAA,CAAKvY,MAAL,GAAc,CAAlB;AAAA,YACI,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,yCAAD,GAA4C0U,IAAA,CAAKvY,MAAL,GAAc,CAA1D,EAA4D,SAA5D,CAAd,CAAP,CAFiE;AAAA,QAIrE,MAAMkS,QAAA,GAAwC,EAA9C,CAJqE;AAAA,QAKrE,KAAK,IAAIvM,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI4S,IAAA,CAAKvY,MAAL,GAAc,CAAlC,EAAqC2F,CAAA,IAAK,CAA1C,EAA6C;AAAA,YACzC,MAAMiD,IAAA,GAAO2P,IAAA,CAAK5S,CAAL,CAAb,CADyC;AAAA,YAGzC,IAAI,OAAOiD,IAAP,KAAgB,QAApB,EAA8B;AAAA,gBAC1B,OAAO4P,OAAA,CAAQ3U,KAAR,CAAc,CAAC,2BAAD,GAA8B,OAAO+E,IAArC,EAA0C,SAA1C,CAAd,EAAoEjD,CAApE,CAAP,CAD0B;AAAA,aAHW;AAAA,YAOzC,IAAI,eAAgBoB,CAAAA,IAAhB,CAAqB6B,IAArB,CAAJ,EAAgC;AAAA,gBAC5B,OAAO4P,OAAA,CAAQ3U,KAAR,CAAc,CAAC,gEAAD,CAAd,EAAkF8B,CAAlF,CAAP,CAD4B;AAAA,aAPS;AAAA,YAWzC,MAAMzE,KAAA,GAAQsX,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK5S,CAAA,GAAI,CAAT,CAAd,EAA2BA,CAAA,GAAI,CAA/B,CAAd,CAXyC;AAAA,YAYzC,IAAI,CAACzE,KAAL;AAAA,gBAAY,OAAO,IAAP,CAZ6B;AAAA,YAczCgR,QAAA,CAASrR,IAAT,CAAc;AAAA,gBAAC+H,IAAD;AAAA,gBAAO1H,KAAP;AAAA,aAAd,CAdyC,CAAA;AAAA,SALwB;AAAA,QAsBrE,MAAMI,MAAA,GAASkX,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAKA,IAAA,CAAKvY,MAAL,GAAc,CAAnB,CAAd,EAAqCuY,IAAA,CAAKvY,MAAL,GAAc,CAAnD,EAAsDwY,OAAA,CAAQC,YAA9D,EAA4EvG,QAA5E,CAAf,CAtBqE;AAAA,QAuBrE,IAAI,CAAC5Q,MAAL;AAAA,YAAa,OAAO,IAAP,CAvBwD;AAAA,QAyBrE,OAAO,IAAI+mB,GAAJ,CAAQnW,QAAR,EAAkB5Q,MAAlB,CAAP,CAzBqE;AAAA,KAtB7C;AAAA,IAkD5BsX,aAAA,GAAyB;AAAA,QACrB,OAAO,IAAKtX,CAAAA,MAAL,CAAYsX,aAAZ,EAAP,CADqB;AAAA,KAlDG;AAAA,IAsD5Bf,SAAA,GAAkC;AAAA,QAC9B,MAAMC,UAAA,GAAa,CAAC,KAAD,CAAnB,CAD8B;AAAA,QAE9B,KAAA,MAAW,CAAClP,IAAD,EAAO2Z,IAAP,CAAX,IAA2B,IAAKrQ,CAAAA,QAAhC,EAA0C;AAAA,YACtC4F,UAAA,CAAWjX,IAAX,CAAgB+H,IAAhB,EAAsB2Z,IAAA,CAAK1K,SAAL,EAAtB,CADsC,CAAA;AAAA,SAFZ;AAAA,QAK9BC,UAAA,CAAWjX,IAAX,CAAgB,KAAKS,MAAL,CAAYuW,SAAZ,EAAhB,CAL8B,CAAA;AAAA,QAM9B,OAAOC,UAAP,CAN8B;AAAA,KAtDN;AAAA,CAPhC;AAuEA,YAAA,GAAA;;ACrEA;AAUA,MAAMyQ,EAAN,CAA+B;AAAA,IAK3BzW,WAAA,CAAYhO,IAAZ,EAAwBtD,KAAxB,EAA2CgF,KAA3C,EAA8D;AAAA,QAC1D,IAAK1B,CAAAA,IAAL,GAAYA,IAAZ,CAD0D;AAAA,QAE1D,IAAKtD,CAAAA,KAAL,GAAaA,KAAb,CAF0D;AAAA,QAG1D,IAAKgF,CAAAA,KAAL,GAAaA,KAAb,CAH0D;AAAA,KALnC;AAAA,IAW3B,OAAOnF,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAAwE;AAAA,QACpE,IAAID,IAAA,CAAKvY,MAAL,KAAgB,CAApB;AAAA,YACI,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,gCAAD,GAAmC0U,IAAA,CAAKvY,MAAL,GAAc,CAAjD,EAAmD,SAAnD,CAAd,CAAP,CAFgE;AAAA,QAIpE,MAAMQ,KAAA,GAAQgY,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0B/F,UAA1B,CAAd,CAJoE;AAAA,QAKpE,MAAMhN,KAAA,GAAQgT,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0BvU,OAAA,CAAMwU,OAAA,CAAQC,YAAR,IAAwB5F,SAA9B,CAA1B,CAAd,CALoE;AAAA,QAOpE,IAAI,CAACrS,KAAD,IAAU,CAACgF,KAAf;AAAA,YAAsB,OAAO,IAAP,CAP8C;AAAA,QASpE,MAAMU,CAAA,GAAgBV,KAAA,CAAM1B,IAA5B,CAToE;AAAA,QAUpE,OAAO,IAAIykB,EAAJ,CAAOriB,CAAA,CAAEgN,QAAT,EAAmB1S,KAAnB,EAA0BgF,KAA1B,CAAP,CAVoE;AAAA,KAX7C;AAAA,IAwB3BkT,QAAA,CAASU,GAAT,EAAwC;AAAA,QACpC,MAAM5Y,KAAA,GAAU,IAAKA,CAAAA,KAAL,CAAWkY,QAAX,CAAoBU,GAApB,CAAhB,CADoC;AAAA,QAEpC,MAAMpV,KAAA,GAAU,IAAKwB,CAAAA,KAAL,CAAWkT,QAAX,CAAoBU,GAApB,CAAhB,CAFoC;AAAA,QAIpC,IAAI5Y,KAAA,GAAQ,CAAZ,EAAe;AAAA,YACX,MAAM,IAAIqY,cAAJ,CAAiB,CAAC,2BAAD,GAA8BrY,KAA9B,EAAoC,KAApC,CAAjB,CAAN,CADW;AAAA,SAJqB;AAAA,QAQpC,IAAIA,KAAA,IAASwD,KAAA,CAAMhE,MAAnB,EAA2B;AAAA,YACvB,MAAM,IAAI6Y,cAAJ,CAAiB,CAAC,2BAAD,GAA8BrY,KAA9B,EAAoC,GAApC,GAAyCwD,KAAA,CAAMhE,MAAN,GAAe,CAAxD,EAA0D,CAA1D,CAAjB,CAAN,CADuB;AAAA,SARS;AAAA,QAYpC,IAAIQ,KAAA,KAAUiD,IAAA,CAAKD,KAAL,CAAWhD,KAAX,CAAd,EAAiC;AAAA,YAC7B,MAAM,IAAIqY,cAAJ,CAAiB,CAAC,0CAAD,GAA6CrY,KAA7C,EAAmD,SAAnD,CAAjB,CAAN,CAD6B;AAAA,SAZG;AAAA,QAgBpC,OAAOwD,KAAA,CAAMxD,KAAN,CAAP,CAhBoC;AAAA,KAxBb;AAAA,IA2C3BmY,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnCA,EAAA,CAAG,IAAKzD,CAAAA,KAAR,CADmC,CAAA;AAAA,QAEnCyD,EAAA,CAAG,IAAKuB,CAAAA,KAAR,CAFmC,CAAA;AAAA,KA3CZ;AAAA,IAgD3BoT,aAAA,GAAyB;AAAA,QACrB,OAAO,KAAP,CADqB;AAAA,KAhDE;AAAA,IAoD3Bf,SAAA,GAAkC;AAAA,QAC9B,OAAO;AAAA,YAAC,IAAD;AAAA,YAAO,IAAKrX,CAAAA,KAAL,CAAWqX,SAAX,EAAP;AAAA,YAA+B,IAAKrS,CAAAA,KAAL,CAAWqS,SAAX,EAA/B;AAAA,SAAP,CAD8B;AAAA,KApDP;AAAA,CAZ/B;AAqEA,WAAA,EAAA;;ACnEA;AASA,MAAM2Q,EAAN,CAA+B;AAAA,IAK3B1W,WAAA,CAAY2W,MAAZ,EAAgCC,QAAhC,EAAsD;AAAA,QAClD,IAAK5kB,CAAAA,IAAL,GAAY4O,WAAZ,CADkD;AAAA,QAElD,IAAK+V,CAAAA,MAAL,GAAcA,MAAd,CAFkD;AAAA,QAGlD,IAAKC,CAAAA,QAAL,GAAgBA,QAAhB,CAHkD;AAAA,KAL3B;AAAA,IAW3B,OAAOroB,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAAwE;AAAA,QACpE,IAAID,IAAA,CAAKvY,MAAL,KAAgB,CAApB,EAAuB;AAAA,YACnB,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,gCAAD,GAAmC0U,IAAA,CAAKvY,MAAL,GAAc,CAAjD,EAAmD,SAAnD,CAAd,CAAP,CADmB;AAAA,SAD6C;AAAA,QAKpE,MAAMyoB,MAAA,GAASjQ,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0B1F,SAA1B,CAAf,CALoE;AAAA,QAOpE,MAAM6V,QAAA,GAAWlQ,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0B1F,SAA1B,CAAjB,CAPoE;AAAA,QASpE,IAAI,CAAC4V,MAAD,IAAW,CAACC,QAAhB;AAAA,YAA0B,OAAO,IAAP,CAT0C;AAAA,QAWpE,IAAI,CAACjV,WAAA,CAAYgV,MAAA,CAAO3kB,IAAnB,EAAyB;AAAA,gBAAC4O,WAAD;AAAA,gBAAcD,UAAd;AAAA,gBAA0BD,UAA1B;AAAA,gBAAsCF,QAAtC;AAAA,gBAAgDO,SAAhD;AAAA,aAAzB,CAAL,EAA2F;AAAA,YACvF,OAAO2F,OAAA,CAAQ3U,KAAR,CAAc,CAAC,iFAAD,GAAoFuP,UAAA,CAASqV,MAAA,CAAO3kB,IAAhB,CAApF,EAA0G,QAA1G,CAAd,CAAP,CADuF;AAAA,SAXvB;AAAA,QAepE,OAAO,IAAI0kB,EAAJ,CAAOC,MAAP,EAAeC,QAAf,CAAP,CAfoE;AAAA,KAX7C;AAAA,IA6B3BhQ,QAAA,CAASU,GAAT,EAA0C;AAAA,QACtC,MAAMqP,MAAA,GAAU,IAAKA,CAAAA,MAAL,CAAY/P,QAAZ,CAAqBU,GAArB,CAAhB,CADsC;AAAA,QAEtC,MAAMsP,QAAA,GAAY,IAAKA,CAAAA,QAAL,CAAchQ,QAAd,CAAuBU,GAAvB,CAAlB,CAFsC;AAAA,QAItC,IAAIsP,QAAA,IAAY,IAAhB;AAAA,YAAsB,OAAO,KAAP,CAJgB;AAAA,QAMtC,IAAI,CAAC7U,iBAAA,CAAkB4U,MAAlB,EAA0B;AAAA,gBAAC,SAAD;AAAA,gBAAY,QAAZ;AAAA,gBAAsB,QAAtB;AAAA,gBAAgC,MAAhC;AAAA,aAA1B,CAAL,EAAyE;AAAA,YACrE,MAAM,IAAI5P,cAAJ,CAAiB,CAAC,iFAAD,GAAoFzF,UAAA,CAASiF,MAAA,CAAOoQ,MAAP,CAAT,CAApF,EAA6G,SAA7G,CAAjB,CAAN,CADqE;AAAA,SANnC;AAAA,QAUtC,IAAI,CAAC5U,iBAAA,CAAkB6U,QAAlB,EAA4B;AAAA,gBAAC,QAAD;AAAA,gBAAW,OAAX;AAAA,aAA5B,CAAL,EAAuD;AAAA,YACnD,MAAM,IAAI7P,cAAJ,CAAiB,CAAC,kEAAD,GAAqEzF,UAAA,CAASiF,MAAA,CAAOqQ,QAAP,CAAT,CAArE,EAAgG,SAAhG,CAAjB,CAAN,CADmD;AAAA,SAVjB;AAAA,QActC,OAAOA,QAAA,CAAStgB,OAAT,CAAiBqgB,MAAjB,CAAA,IAA4B,CAAnC,CAdsC;AAAA,KA7Bf;AAAA,IA8C3B9P,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnCA,EAAA,CAAG,IAAKwkB,CAAAA,MAAR,CADmC,CAAA;AAAA,QAEnCxkB,EAAA,CAAG,IAAKykB,CAAAA,QAAR,CAFmC,CAAA;AAAA,KA9CZ;AAAA,IAmD3B9P,aAAA,GAAyB;AAAA,QACrB,OAAO,IAAP,CADqB;AAAA,KAnDE;AAAA,IAuD3Bf,SAAA,GAAkC;AAAA,QAC9B,OAAO;AAAA,YAAC,IAAD;AAAA,YAAO,IAAK4Q,CAAAA,MAAL,CAAY5Q,SAAZ,EAAP;AAAA,YAAgC,IAAK6Q,CAAAA,QAAL,CAAc7Q,SAAd,EAAhC;AAAA,SAAP,CAD8B;AAAA,KAvDP;AAAA,CAX/B;AAuEA,WAAA,EAAA;;ACrEA;AASA,MAAM8Q,OAAN,CAAoC;AAAA,IAMhC7W,WAAA,CAAY2W,MAAZ,EAAgCC,QAAhC,EAAsDE,SAAtD,EAA8E;AAAA,QAC1E,IAAK9kB,CAAAA,IAAL,GAAY0O,UAAZ,CAD0E;AAAA,QAE1E,IAAKiW,CAAAA,MAAL,GAAcA,MAAd,CAF0E;AAAA,QAG1E,IAAKC,CAAAA,QAAL,GAAgBA,QAAhB,CAH0E;AAAA,QAI1E,IAAKE,CAAAA,SAAL,GAAiBA,SAAjB,CAJ0E;AAAA,KAN9C;AAAA,IAahC,OAAOvoB,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAA6E;AAAA,QACzE,IAAID,IAAA,CAAKvY,MAAL,IAAe,CAAf,IAAqBuY,IAAA,CAAKvY,MAAL,IAAe,CAAxC,EAA2C;AAAA,YACvC,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,qCAAD,GAAwC0U,IAAA,CAAKvY,MAAL,GAAc,CAAtD,EAAwD,SAAxD,CAAd,CAAP,CADuC;AAAA,SAD8B;AAAA,QAKzE,MAAMyoB,MAAA,GAASjQ,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0B1F,SAA1B,CAAf,CALyE;AAAA,QAOzE,MAAM6V,QAAA,GAAWlQ,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0B1F,SAA1B,CAAjB,CAPyE;AAAA,QASzE,IAAI,CAAC4V,MAAD,IAAW,CAACC,QAAhB;AAAA,YAA0B,OAAO,IAAP,CAT+C;AAAA,QAUzE,IAAI,CAACjV,WAAA,CAAYgV,MAAA,CAAO3kB,IAAnB,EAAyB;AAAA,gBAAC4O,WAAD;AAAA,gBAAcD,UAAd;AAAA,gBAA0BD,UAA1B;AAAA,gBAAsCF,QAAtC;AAAA,gBAAgDO,SAAhD;AAAA,aAAzB,CAAL,EAA2F;AAAA,YACvF,OAAO2F,OAAA,CAAQ3U,KAAR,CAAc,CAAC,iFAAD,GAAoFuP,UAAA,CAASqV,MAAA,CAAO3kB,IAAhB,CAApF,EAA0G,QAA1G,CAAd,CAAP,CADuF;AAAA,SAVlB;AAAA,QAczE,IAAIyU,IAAA,CAAKvY,MAAL,KAAgB,CAApB,EAAuB;AAAA,YACnB,MAAM4oB,SAAA,GAAYpQ,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0B/F,UAA1B,CAAlB,CADmB;AAAA,YAEnB,IAAI,CAACoW,SAAL;AAAA,gBAAgB,OAAO,IAAP,CAFG;AAAA,YAGnB,OAAO,IAAID,OAAJ,CAAYF,MAAZ,EAAoBC,QAApB,EAA8BE,SAA9B,CAAP,CAHmB;AAAA,SAAvB,MAIO;AAAA,YACH,OAAO,IAAID,OAAJ,CAAYF,MAAZ,EAAoBC,QAApB,CAAP,CADG;AAAA,SAlBkE;AAAA,KAb7C;AAAA,IAoChChQ,QAAA,CAASU,GAAT,EAAsC;AAAA,QAClC,MAAMqP,MAAA,GAAU,IAAKA,CAAAA,MAAL,CAAY/P,QAAZ,CAAqBU,GAArB,CAAhB,CADkC;AAAA,QAElC,MAAMsP,QAAA,GAAY,IAAKA,CAAAA,QAAL,CAAchQ,QAAd,CAAuBU,GAAvB,CAAlB,CAFkC;AAAA,QAIlC,IAAI,CAACvF,iBAAA,CAAkB4U,MAAlB,EAA0B;AAAA,gBAAC,SAAD;AAAA,gBAAY,QAAZ;AAAA,gBAAsB,QAAtB;AAAA,gBAAgC,MAAhC;AAAA,aAA1B,CAAL,EAAyE;AAAA,YACrE,MAAM,IAAI5P,cAAJ,CAAiB,CAAC,iFAAD,GAAoFzF,UAAA,CAASiF,MAAA,CAAOoQ,MAAP,CAAT,CAApF,EAA6G,SAA7G,CAAjB,CAAN,CADqE;AAAA,SAJvC;AAAA,QAQlC,IAAI,CAAC5U,iBAAA,CAAkB6U,QAAlB,EAA4B;AAAA,gBAAC,QAAD;AAAA,gBAAW,OAAX;AAAA,aAA5B,CAAL,EAAuD;AAAA,YACnD,MAAM,IAAI7P,cAAJ,CAAiB,CAAC,kEAAD,GAAqEzF,UAAA,CAASiF,MAAA,CAAOqQ,QAAP,CAAT,CAArE,EAAgG,SAAhG,CAAjB,CAAN,CADmD;AAAA,SARrB;AAAA,QAYlC,IAAI,IAAKE,CAAAA,SAAT,EAAoB;AAAA,YAChB,MAAMA,SAAA,GAAa,IAAKA,CAAAA,SAAL,CAAelQ,QAAf,CAAwBU,GAAxB,CAAnB,CADgB;AAAA,YAEhB,OAAOsP,QAAA,CAAStgB,OAAT,CAAiBqgB,MAAjB,EAAyBG,SAAzB,CAAP,CAFgB;AAAA,SAZc;AAAA,QAiBlC,OAAOF,QAAA,CAAStgB,OAAT,CAAiBqgB,MAAjB,CAAP,CAjBkC;AAAA,KApCN;AAAA,IAwDhC9P,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnCA,EAAA,CAAG,IAAKwkB,CAAAA,MAAR,CADmC,CAAA;AAAA,QAEnCxkB,EAAA,CAAG,IAAKykB,CAAAA,QAAR,CAFmC,CAAA;AAAA,QAGnC,IAAI,IAAKE,CAAAA,SAAT,EAAoB;AAAA,YAChB3kB,EAAA,CAAG,IAAK2kB,CAAAA,SAAR,CADgB,CAAA;AAAA,SAHe;AAAA,KAxDP;AAAA,IAgEhChQ,aAAA,GAAyB;AAAA,QACrB,OAAO,KAAP,CADqB;AAAA,KAhEO;AAAA,IAoEhCf,SAAA,GAAkC;AAAA,QAC9B,IAAI,IAAK+Q,CAAAA,SAAL,IAAkB,IAAlB,IAA0B,IAAKA,CAAAA,SAAL,KAAmBvpB,SAAjD,EAA4D;AAAA,YACxD,MAAMupB,SAAA,GAAY,IAAA,CAAKA,SAAL,CAAe/Q,SAAf,EAAlB,CADwD;AAAA,YAExD,OAAO;AAAA,gBAAC,UAAD;AAAA,gBAAa,IAAK4Q,CAAAA,MAAL,CAAY5Q,SAAZ,EAAb;AAAA,gBAAsC,IAAK6Q,CAAAA,QAAL,CAAc7Q,SAAd,EAAtC;AAAA,gBAAiE+Q,SAAjE;AAAA,aAAP,CAFwD;AAAA,SAD9B;AAAA,QAK9B,OAAO;AAAA,YAAC,UAAD;AAAA,YAAa,IAAKH,CAAAA,MAAL,CAAY5Q,SAAZ,EAAb;AAAA,YAAsC,IAAK6Q,CAAAA,QAAL,CAAc7Q,SAAd,EAAtC;AAAA,SAAP,CAL8B;AAAA,KApEF;AAAA,CAXpC;AAwFA,gBAAA,OAAA;;AC1EA;AAAA,MAAMgR,KAAN,CAAkC;AAAA,IAS9B/W,WAAA,CAAYgX,SAAZ,EAA6BpF,UAA7B,EAA+Cle,KAA/C,EAAkEujB,KAAlE,EAAgFvF,OAAhF,EAA4GwF,SAA5G,EAAmI;AAAA,QAC/H,IAAKF,CAAAA,SAAL,GAAiBA,SAAjB,CAD+H;AAAA,QAE/H,IAAKhlB,CAAAA,IAAL,GAAY4f,UAAZ,CAF+H;AAAA,QAG/H,IAAKle,CAAAA,KAAL,GAAaA,KAAb,CAH+H;AAAA,QAI/H,IAAKujB,CAAAA,KAAL,GAAaA,KAAb,CAJ+H;AAAA,QAK/H,IAAKvF,CAAAA,OAAL,GAAeA,OAAf,CAL+H;AAAA,QAM/H,IAAKwF,CAAAA,SAAL,GAAiBA,SAAjB,CAN+H;AAAA,KATrG;AAAA,IAkB9B,OAAO3oB,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAA2E;AAAA,QACvE,IAAID,IAAA,CAAKvY,MAAL,GAAc,CAAlB;AAAA,YACI,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,8CAAD,GAAiD0U,IAAA,CAAKvY,MAAL,GAAc,CAA/D,EAAiE,CAAjE,CAAd,CAAP,CAFmE;AAAA,QAGvE,IAAIuY,IAAA,CAAKvY,MAAL,GAAc,CAAd,KAAoB,CAAxB;AAAA,YACI,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,qCAAD,CAAd,CAAP,CAJmE;AAAA,QAMvE,IAAIilB,SAAJ,CANuE;AAAA,QAOvE,IAAIpF,UAAJ,CAPuE;AAAA,QAQvE,IAAIlL,OAAA,CAAQC,YAAR,IAAwBD,OAAA,CAAQC,YAAR,CAAqBlG,IAArB,KAA8B,OAA1D,EAAmE;AAAA,YAC/DmR,UAAA,GAAalL,OAAA,CAAQC,YAArB,CAD+D;AAAA,SARI;AAAA,QAWvE,MAAMsQ,KAAA,GAAQ,EAAd,CAXuE;AAAA,QAYvE,MAAMvF,OAAA,GAAU,EAAhB,CAZuE;AAAA,QAavE,KAAK,IAAI7d,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI4S,IAAA,CAAKvY,MAAL,GAAc,CAAlC,EAAqC2F,CAAA,IAAK,CAA1C,EAA6C;AAAA,YACzC,IAAItB,MAAA,GAASkU,IAAA,CAAK5S,CAAL,CAAb,CADyC;AAAA,YAEzC,MAAMzE,KAAA,GAAQqX,IAAA,CAAK5S,CAAA,GAAI,CAAT,CAAd,CAFyC;AAAA,YAIzC,IAAI,CAAChF,KAAA,CAAMC,OAAN,CAAcyD,MAAd,CAAL,EAA4B;AAAA,gBACxBA,MAAA,GAAS,CAACA,MAAD,CAAT,CADwB;AAAA,aAJa;AAAA,YAQzC,MAAM4kB,YAAA,GAAezQ,OAAA,CAAQhO,MAAR,CAAe7E,CAAf,CAArB,CARyC;AAAA,YASzC,IAAItB,MAAA,CAAOrE,MAAP,KAAkB,CAAtB,EAAyB;AAAA,gBACrB,OAAOipB,YAAA,CAAaplB,KAAb,CAAmB,qCAAnB,CAAP,CADqB;AAAA,aATgB;AAAA,YAazC,KAAW4f,MAAAA,KAAX,IAAoBpf,MAApB,EAA4B;AAAA,gBACxB,IAAI,OAAOof,KAAP,KAAiB,QAAjB,IAA6B,OAAOA,KAAP,KAAiB,QAAlD,EAA4D;AAAA,oBACxD,OAAOwF,YAAA,CAAaplB,KAAb,CAAmB,CAAC,yCAAD,CAAnB,CAAP,CADwD;AAAA,iBAA5D,MAEO,IAAI,OAAO4f,KAAP,KAAiB,QAAjB,IAA6BhgB,IAAA,CAAKqhB,GAAL,CAASrB,KAAT,CAAA,GAAkBpJ,MAAA,CAAO6O,gBAA1D,EAA4E;AAAA,oBAC/E,OAAOD,YAAA,CAAaplB,KAAb,CAAmB,CAAC,8CAAD,GAAiDwW,MAAA,CAAO6O,gBAAxD,EAAyE,CAAzE,CAAnB,CAAP,CAD+E;AAAA,iBAA5E,MAGA,IAAI,OAAOzF,KAAP,KAAiB,QAAjB,IAA6BhgB,IAAA,CAAKD,KAAL,CAAWigB,KAAX,CAAA,KAAsBA,KAAvD,EAA8D;AAAA,oBACjE,OAAOwF,YAAA,CAAaplB,KAAb,CAAmB,CAAC,6CAAD,CAAnB,CAAP,CADiE;AAAA,iBAA9D,MAGA,IAAI,CAACilB,SAAL,EAAgB;AAAA,oBACnBA,SAAA,GAAYzQ,MAAA,CAAOoL,KAAP,CAAZ,CADmB;AAAA,iBAAhB,MAEA,IAAIwF,YAAA,CAAa3V,YAAb,CAA0BwV,SAA1B,EAAqCzQ,MAAA,CAAOoL,KAAP,CAArC,CAAJ,EAAyD;AAAA,oBAC5D,OAAO,IAAP,CAD4D;AAAA,iBAXxC;AAAA,gBAexB,IAAI,OAAOsF,KAAA,CAAMplB,MAAA,CAAO8f,KAAP,CAAN,CAAP,KAAgC,WAApC,EAAiD;AAAA,oBAC7C,OAAOwF,YAAA,CAAaplB,KAAb,CAAmB,+BAAnB,CAAP,CAD6C;AAAA,iBAfzB;AAAA,gBAmBxBklB,KAAA,CAAMplB,MAAA,CAAO8f,KAAP,CAAN,CAAuBD,GAAAA,OAAA,CAAQxjB,MAA/B,CAnBwB;AAAA,aAba;AAAA,YAmCzC,MAAMsB,MAAA,GAASkX,OAAA,CAAQnY,KAAR,CAAca,KAAd,EAAqByE,CAArB,EAAwB+d,UAAxB,CAAf,CAnCyC;AAAA,YAoCzC,IAAI,CAACpiB,MAAL;AAAA,gBAAa,OAAO,IAAP,CApC4B;AAAA,YAqCzCoiB,UAAA,GAAaA,UAAA,IAAcpiB,MAAA,CAAOwC,IAAlC,CArCyC;AAAA,YAsCzC0f,OAAA,CAAQ3iB,IAAR,CAAaS,MAAb,CAtCyC,CAAA;AAAA,SAb0B;AAAA,QAsDvE,MAAMkE,KAAA,GAAQgT,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0B1F,SAA1B,CAAd,CAtDuE;AAAA,QAuDvE,IAAI,CAACrN,KAAL;AAAA,YAAY,OAAO,IAAP,CAvD2D;AAAA,QAyDvE,MAAMwjB,SAAA,GAAYxQ,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAKA,IAAA,CAAKvY,MAAL,GAAc,CAAnB,CAAd,EAAqCuY,IAAA,CAAKvY,MAAL,GAAc,CAAnD,EAAsD0jB,UAAtD,CAAlB,CAzDuE;AAAA,QA0DvE,IAAI,CAACsF,SAAL;AAAA,YAAgB,OAAO,IAAP,CA1DuD;AAAA,QA8DvE,IAAIxjB,KAAA,CAAM1B,IAAN,CAAWyO,IAAX,KAAoB,OAApB,IAA+BiG,OAAA,CAAQhO,MAAR,CAAe,CAAf,CAAkB8I,CAAAA,YAAlB,CAAgCwV,SAAhC,EAAiDtjB,KAAA,CAAM1B,IAAvD,CAAnC,EAAiG;AAAA,YAC7F,OAAO,IAAP,CAD6F;AAAA,SA9D1B;AAAA,QAkEvE,OAAO,IAAI+kB,KAAJ,CAAWC,SAAX,EAA6BpF,UAA7B,EAA+Cle,KAA/C,EAAsDujB,KAAtD,EAA6DvF,OAA7D,EAAsEwF,SAAtE,CAAP,CAlEuE;AAAA,KAlB7C;AAAA,IAuF9BtQ,QAAA,CAASU,GAAT,EAAsC;AAAA,QAClC,MAAM5T,KAAA,GAAS,IAAKA,CAAAA,KAAL,CAAWkT,QAAX,CAAoBU,GAApB,CAAf,CADkC;AAAA,QAElC,MAAM5U,MAAA,GAAU6T,MAAA,CAAO7S,KAAP,CAAA,KAAkB,IAAKsjB,CAAAA,SAAvB,IAAoC,IAAA,CAAKtF,OAAL,CAAa,IAAA,CAAKuF,KAAL,CAAWvjB,KAAX,CAAb,CAArC,IAAyE,IAAKwjB,CAAAA,SAA7F,CAFkC;AAAA,QAGlC,OAAOxkB,MAAA,CAAOkU,QAAP,CAAgBU,GAAhB,CAAP,CAHkC;AAAA,KAvFR;AAAA,IA6F9BT,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnCA,EAAA,CAAG,IAAKuB,CAAAA,KAAR,CADmC,CAAA;AAAA,QAEnC,KAAKge,OAAL,CAAa5T,OAAb,CAAqB3L,EAArB,CAFmC,CAAA;AAAA,QAGnCA,EAAA,CAAG,IAAK+kB,CAAAA,SAAR,CAHmC,CAAA;AAAA,KA7FT;AAAA,IAmG9BpQ,aAAA,GAAyB;AAAA,QACrB,OAAO,IAAK4K,CAAAA,OAAL,CAAanK,KAAb,CAAmB3T,GAAA,IAAOA,GAAA,CAAIkT,aAAJ,EAA1B,CAAkD,IAAA,IAAA,CAAKoQ,SAAL,CAAepQ,aAAf,EAAzD,CADqB;AAAA,KAnGK;AAAA,IAuG9Bf,SAAA,GAAkC;AAAA,QAC9B,MAAMC,UAAA,GAAa;AAAA,YAAC,OAAD;AAAA,YAAU,IAAKtS,CAAAA,KAAL,CAAWqS,SAAX,EAAV;AAAA,SAAnB,CAD8B;AAAA;AAK9B;AAAA,QAAMsR,MAAAA,YAAA,GAAepoB,MAAA,CAAOD,IAAP,CAAY,IAAA,CAAKioB,KAAjB,CAAA,CAAwBK,IAAxB,EAArB,CAL8B;AAAA;AAS9B;AAAA,QAAMC,MAAAA,eAAA,GAA2D,EAAjE,CAT8B;AAAA,QAU9B,MAAMC,YAAA,GAA0C,EAAhD,CAV8B;AAAA;AAW9B,QAAW7F,KAAAA,MAAAA,KAAX,IAAoB0F,YAApB,EAAkC;AAAA,YAC9B,MAAMI,WAAA,GAAcD,YAAA,CAAa,IAAKP,CAAAA,KAAL,CAAWtF,KAAX,CAAb,CAApB,CAD8B;AAAA,YAE9B,IAAI8F,WAAA,KAAgBlqB,SAApB,EAA+B;AAAA;AAE3B,gBAAAiqB,YAAA,CAAa,IAAA,CAAKP,KAAL,CAAWtF,KAAX,CAAb,CAAkC4F,GAAAA,eAAA,CAAgBrpB,MAAlD,CAF2B;AAAA,gBAG3BqpB,eAAA,CAAgBxoB,IAAhB,CAAqB;AAAA,oBAAC,IAAKkoB,CAAAA,KAAL,CAAWtF,KAAX,CAAD;AAAA,oBAAoB,CAACA,KAAD,CAApB;AAAA,iBAArB,CAH2B,CAAA;AAAA,aAA/B,MAIO;AAAA;AAEH,gBAAA4F,eAAA,CAAgBE,WAAhB,CAAA,CAA6B,CAA7B,CAAgC1oB,CAAAA,IAAhC,CAAqC4iB,KAArC,CAFG,CAAA;AAAA,aANuB;AAAA,SAXJ;AAAA,QAuB9B,MAAM+F,WAAA,GAAe/F,KAAD,IAAW,IAAA,CAAKqF,SAAL,CAAevW,IAAf,KAAwB,QAAxB,GAAmC8H,MAAA,CAAOoJ,KAAP,CAAnC,GAAmDA,KAAlF,CAvB8B;AAAA,QAyB9B,KAAA,MAAW,CAAC8F,WAAD,EAAcllB,MAAd,CAAX,IAAoCglB,eAApC,EAAqD;AAAA,YACjD,IAAIhlB,MAAA,CAAOrE,MAAP,KAAkB,CAAtB,EAAyB;AAAA;AAErB,gBAAA8X,UAAA,CAAWjX,IAAX,CAAgB2oB,WAAA,CAAYnlB,MAAA,CAAO,CAAP,CAAZ,CAAhB,CAFqB,CAAA;AAAA,aAAzB,MAGO;AAAA;AAEH,gBAAAyT,UAAA,CAAWjX,IAAX,CAAgBwD,MAAA,CAAOzC,GAAP,CAAW4nB,WAAX,CAAhB,CAFG,CAAA;AAAA,aAJ0C;AAAA,YAQjD1R,UAAA,CAAWjX,IAAX,CAAgB,IAAA,CAAK2iB,OAAL,CAAa+F,WAAb,CAAA,CAA0B1R,SAA1B,EAAhB,CARiD,CAAA;AAAA,SAzBvB;AAAA,QAmC9BC,UAAA,CAAWjX,IAAX,CAAgB,KAAKmoB,SAAL,CAAenR,SAAf,EAAhB,CAnC8B,CAAA;AAAA,QAoC9B,OAAOC,UAAP,CApC8B;AAAA,KAvGJ;AAAA,CAdlC;AA6JA,cAAA,KAAA;;AChJA,MAAM2R,IAAN,CAAiC;AAAA,IAM7B3X,WAAA,CAAYhO,IAAZ,EAAwB4lB,QAAxB,EAA4CV,SAA5C,EAAmE;AAAA,QAC/D,IAAKllB,CAAAA,IAAL,GAAYA,IAAZ,CAD+D;AAAA,QAE/D,IAAK4lB,CAAAA,QAAL,GAAgBA,QAAhB,CAF+D;AAAA,QAG/D,IAAKV,CAAAA,SAAL,GAAiBA,SAAjB,CAH+D;AAAA,KANtC;AAAA,IAY7B,OAAO3oB,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAA0E;AAAA,QACtE,IAAID,IAAA,CAAKvY,MAAL,GAAc,CAAlB;AAAA,YACI,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,8CAAD,GAAiD0U,IAAA,CAAKvY,MAAL,GAAc,CAA/D,EAAiE,CAAjE,CAAd,CAAP,CAFkE;AAAA,QAGtE,IAAIuY,IAAA,CAAKvY,MAAL,GAAc,CAAd,KAAoB,CAAxB;AAAA,YACI,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,oCAAD,CAAd,CAAP,CAJkE;AAAA,QAMtE,IAAI6f,UAAJ,CANsE;AAAA,QAOtE,IAAIlL,OAAA,CAAQC,YAAR,IAAwBD,OAAA,CAAQC,YAAR,CAAqBlG,IAArB,KAA8B,OAA1D,EAAmE;AAAA,YAC/DmR,UAAA,GAAalL,OAAA,CAAQC,YAArB,CAD+D;AAAA,SAPG;AAAA,QAWtE,MAAMiR,QAAA,GAAW,EAAjB,CAXsE;AAAA,QAYtE,KAAK,IAAI/jB,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI4S,IAAA,CAAKvY,MAAL,GAAc,CAAlC,EAAqC2F,CAAA,IAAK,CAA1C,EAA6C;AAAA,YACzC,MAAMoB,IAAA,GAAOyR,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK5S,CAAL,CAAd,EAAuBA,CAAvB,EAA0B+M,WAA1B,CAAb,CADyC;AAAA,YAEzC,IAAI,CAAC3L,IAAL;AAAA,gBAAW,OAAO,IAAP,CAF8B;AAAA,YAIzC,MAAMzF,MAAA,GAASkX,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK5S,CAAA,GAAI,CAAT,CAAd,EAA2BA,CAAA,GAAI,CAA/B,EAAkC+d,UAAlC,CAAf,CAJyC;AAAA,YAKzC,IAAI,CAACpiB,MAAL;AAAA,gBAAa,OAAO,IAAP,CAL4B;AAAA,YAOzCooB,QAAA,CAAS7oB,IAAT,CAAc;AAAA,gBAACkG,IAAD;AAAA,gBAAOzF,MAAP;AAAA,aAAd,CAPyC,CAAA;AAAA,YASzCoiB,UAAA,GAAaA,UAAA,IAAcpiB,MAAA,CAAOwC,IAAlC,CATyC;AAAA,SAZyB;AAAA,QAwBtE,MAAMklB,SAAA,GAAYxQ,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAKA,IAAA,CAAKvY,MAAL,GAAc,CAAnB,CAAd,EAAqCuY,IAAA,CAAKvY,MAAL,GAAc,CAAnD,EAAsD0jB,UAAtD,CAAlB,CAxBsE;AAAA,QAyBtE,IAAI,CAACsF,SAAL;AAAA,YAAgB,OAAO,IAAP,CAzBsD;AAAA,QA4BtE,OAAO,IAAIS,IAAJ,CAAU/F,UAAV,EAA4BgG,QAA5B,EAAsCV,SAAtC,CAAP,CA5BsE;AAAA,KAZ7C;AAAA,IA2C7BtQ,QAAA,CAASU,GAAT,EAAsC;AAAA,QAClC,KAAA,MAAW,CAACrS,IAAD,EAAOoL,UAAP,CAAX,IAAiC,IAAKuX,CAAAA,QAAtC,EAAgD;AAAA,YAC5C,IAAI3iB,IAAA,CAAK2R,QAAL,CAAcU,GAAd,CAAJ,EAAwB;AAAA,gBACpB,OAAOjH,UAAA,CAAWuG,QAAX,CAAoBU,GAApB,CAAP,CADoB;AAAA,aADoB;AAAA,SADd;AAAA,QAMlC,OAAO,KAAK4P,SAAL,CAAetQ,QAAf,CAAwBU,GAAxB,CAAP,CANkC;AAAA,KA3CT;AAAA,IAoD7BT,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnC,KAAA,MAAW,CAAC8C,IAAD,EAAOoL,UAAP,CAAX,IAAiC,IAAKuX,CAAAA,QAAtC,EAAgD;AAAA,YAC5CzlB,EAAA,CAAG8C,IAAH,CAD4C,CAAA;AAAA,YAE5C9C,EAAA,CAAGkO,UAAH,CAF4C,CAAA;AAAA,SADb;AAAA,QAKnClO,EAAA,CAAG,IAAK+kB,CAAAA,SAAR,CALmC,CAAA;AAAA,KApDV;AAAA,IA4D7BpQ,aAAA,GAAyB;AAAA,QACrB,OAAO,KAAK8Q,QAAL,CAAcrQ,KAAd,CAAoB,CAAC,CAACsQ,CAAD,EAAIjkB,GAAJ,CAAD,KAAcA,GAAA,CAAIkT,aAAJ,EAAlC,CAAA,IAA0D,KAAKoQ,SAAL,CAAepQ,aAAf,EAAjE,CADqB;AAAA,KA5DI;AAAA,IAgE7Bf,SAAA,GAAkC;AAAA,QAC9B,MAAMC,UAAA,GAAa,CAAC,MAAD,CAAnB,CAD8B;AAAA,QAE9B,IAAKa,CAAAA,SAAL,CAAe6B,KAAA,IAAS;AAAA,YAAE1C,UAAA,CAAWjX,IAAX,CAAgB2Z,KAAA,CAAM3C,SAAN,EAAhB,CAAF,CAAA;AAAA,SAAxB,CAF8B,CAAA;AAAA,QAG9B,OAAOC,UAAP,CAH8B;AAAA,KAhEL;AAAA,CAbjC;AAoFA,aAAA,IAAA;;AClFA;AASA,MAAM8R,KAAN,CAAkC;AAAA,IAM9B9X,WAAA,CAAYhO,IAAZ,EAAwB0B,KAAxB,EAA2CqkB,UAA3C,EAAmEC,QAAnE,EAA0F;AAAA,QACtF,IAAKhmB,CAAAA,IAAL,GAAYA,IAAZ,CADsF;AAAA,QAEtF,IAAK0B,CAAAA,KAAL,GAAaA,KAAb,CAFsF;AAAA,QAGtF,IAAKqkB,CAAAA,UAAL,GAAkBA,UAAlB,CAHsF;AAAA,QAItF,IAAKC,CAAAA,QAAL,GAAgBA,QAAhB,CAJsF;AAAA,KAN5D;AAAA,IAc9B,OAAOzpB,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAA2E;AAAA,QACvE,IAAID,IAAA,CAAKvY,MAAL,IAAe,CAAf,IAAqBuY,IAAA,CAAKvY,MAAL,IAAe,CAAxC,EAA2C;AAAA,YACvC,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,qCAAD,GAAwC0U,IAAA,CAAKvY,MAAL,GAAc,CAAtD,EAAwD,SAAxD,CAAd,CAAP,CADuC;AAAA,SAD4B;AAAA,QAKvE,MAAMwF,KAAA,GAAQgT,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0B1F,SAA1B,CAAd,CALuE;AAAA,QAMvE,MAAMgX,UAAA,GAAarR,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0B/F,UAA1B,CAAnB,CANuE;AAAA,QAQvE,IAAI,CAAChN,KAAD,IAAU,CAACqkB,UAAf;AAAA,YAA2B,OAAO,IAAP,CAR4C;AAAA,QAUvE,IAAI,CAACpW,WAAA,CAAYjO,KAAA,CAAM1B,IAAlB,EAAwB;AAAA,gBAACE,OAAA,CAAM6O,SAAN,CAAD;AAAA,gBAAmBJ,UAAnB;AAAA,gBAA+BI,SAA/B;AAAA,aAAxB,CAAL,EAAyE;AAAA,YACrE,OAAO2F,OAAA,CAAQ3U,KAAR,CAAc,CAAC,iEAAD,GAAoEuP,UAAA,CAAS5N,KAAA,CAAM1B,IAAf,CAApE,EAAyF,QAAzF,CAAd,CAAP,CADqE;AAAA,SAVF;AAAA,QAcvE,IAAIyU,IAAA,CAAKvY,MAAL,KAAgB,CAApB,EAAuB;AAAA,YACnB,MAAM8pB,QAAA,GAAWtR,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0B/F,UAA1B,CAAjB,CADmB;AAAA,YAEnB,IAAI,CAACsX,QAAL;AAAA,gBAAe,OAAO,IAAP,CAFI;AAAA,YAGnB,OAAO,IAAIF,KAAJ,CAAUpkB,KAAA,CAAM1B,IAAhB,EAAsB0B,KAAtB,EAA6BqkB,UAA7B,EAAyCC,QAAzC,CAAP,CAHmB;AAAA,SAAvB,MAIO;AAAA,YACH,OAAO,IAAIF,KAAJ,CAAUpkB,KAAA,CAAM1B,IAAhB,EAAsB0B,KAAtB,EAA6BqkB,UAA7B,CAAP,CADG;AAAA,SAlBgE;AAAA,KAd7C;AAAA,IAqC9BnR,QAAA,CAASU,GAAT,EAAsC;AAAA,QAClC,MAAM5T,KAAA,GAAS,IAAKA,CAAAA,KAAL,CAAWkT,QAAX,CAAoBU,GAApB,CAAf,CADkC;AAAA,QAElC,MAAMyQ,UAAA,GAAc,IAAKA,CAAAA,UAAL,CAAgBnR,QAAhB,CAAyBU,GAAzB,CAApB,CAFkC;AAAA,QAIlC,IAAI,CAACvF,iBAAA,CAAkBrO,KAAlB,EAAyB;AAAA,gBAAC,QAAD;AAAA,gBAAW,OAAX;AAAA,aAAzB,CAAL,EAAoD;AAAA,YAChD,MAAM,IAAIqT,cAAJ,CAAiB,CAAC,iEAAD,GAAoEzF,UAAA,CAASiF,MAAA,CAAO7S,KAAP,CAAT,CAApE,EAA4F,SAA5F,CAAjB,CAAN,CADgD;AAAA,SAJlB;AAAA,QAQlC,IAAI,IAAKskB,CAAAA,QAAT,EAAmB;AAAA,YACf,MAAMA,QAAA,GAAY,IAAKA,CAAAA,QAAL,CAAcpR,QAAd,CAAuBU,GAAvB,CAAlB,CADe;AAAA,YAEf,OAAO5T,KAAA,CAAMlG,KAAN,CAAYuqB,UAAZ,EAAwBC,QAAxB,CAAP,CAFe;AAAA,SARe;AAAA,QAalC,OAAOtkB,KAAA,CAAMlG,KAAN,CAAYuqB,UAAZ,CAAP,CAbkC;AAAA,KArCR;AAAA,IAqD9BlR,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnCA,EAAA,CAAG,IAAKuB,CAAAA,KAAR,CADmC,CAAA;AAAA,QAEnCvB,EAAA,CAAG,IAAK4lB,CAAAA,UAAR,CAFmC,CAAA;AAAA,QAGnC,IAAI,IAAKC,CAAAA,QAAT,EAAmB;AAAA,YACf7lB,EAAA,CAAG,IAAK6lB,CAAAA,QAAR,CADe,CAAA;AAAA,SAHgB;AAAA,KArDT;AAAA,IA6D9BlR,aAAA,GAAyB;AAAA,QACrB,OAAO,KAAP,CADqB;AAAA,KA7DK;AAAA,IAiE9Bf,SAAA,GAAkC;AAAA,QAC9B,IAAI,IAAKiS,CAAAA,QAAL,IAAiB,IAAjB,IAAyB,IAAKA,CAAAA,QAAL,KAAkBzqB,SAA/C,EAA0D;AAAA,YACtD,MAAMyqB,QAAA,GAAW,IAAA,CAAKA,QAAL,CAAcjS,SAAd,EAAjB,CADsD;AAAA,YAEtD,OAAO;AAAA,gBAAC,OAAD;AAAA,gBAAU,IAAKrS,CAAAA,KAAL,CAAWqS,SAAX,EAAV;AAAA,gBAAkC,IAAKgS,CAAAA,UAAL,CAAgBhS,SAAhB,EAAlC;AAAA,gBAA+DiS,QAA/D;AAAA,aAAP,CAFsD;AAAA,SAD5B;AAAA,QAK9B,OAAO;AAAA,YAAC,OAAD;AAAA,YAAU,IAAKtkB,CAAAA,KAAL,CAAWqS,SAAX,EAAV;AAAA,YAAkC,IAAKgS,CAAAA,UAAL,CAAgBhS,SAAhB,EAAlC;AAAA,SAAP,CAL8B;AAAA,KAjEJ;AAAA,CAXlC;AAqFA,cAAA,KAAA;;ACnFA;AAYA,SAASkS,gBAAT,CAA0BjV,EAA1B,EAAkDhR,IAAlD,EAA8D;AAAA,IAC1D,IAAIgR,EAAA,KAAO,IAAP,IAAeA,EAAA,KAAO,IAA1B,EAAgC;AAAA;AAE5B,QAAA,OAAOhR,IAAA,CAAKyO,IAAL,KAAc,SAAd,IACHzO,IAAA,CAAKyO,IAAL,KAAc,QADX,IAEHzO,IAAA,CAAKyO,IAAL,KAAc,QAFX,IAGHzO,IAAA,CAAKyO,IAAL,KAAc,MAHX,IAIHzO,IAAA,CAAKyO,IAAL,KAAc,OAJlB,CAF4B;AAAA,KAAhC,MAOO;AAAA;AAEH,QAAA,OAAOzO,IAAA,CAAKyO,IAAL,KAAc,QAAd,IACHzO,IAAA,CAAKyO,IAAL,KAAc,QADX,IAEHzO,IAAA,CAAKyO,IAAL,KAAc,OAFlB,CAFG;AAAA,KARmD;AAAA,CAd9D;AA8BA,SAASzK,EAAT,CAAYsR,GAAZ,EAAoC5D,CAApC,EAA4CD,CAA5C,EAA6D;AAAA,IAAE,OAAOC,CAAA,KAAMD,CAAb,CAAF;AAAA,CA9B7D;AA+BA,SAASyU,GAAT,CAAa5Q,GAAb,EAAqC5D,CAArC,EAA6CD,CAA7C,EAA8D;AAAA,IAAE,OAAOC,CAAA,KAAMD,CAAb,CAAF;AAAA,CA/B9D;AAgCA,SAAS0U,EAAT,CAAY7Q,GAAZ,EAAoC5D,CAApC,EAA4CD,CAA5C,EAA6D;AAAA,IAAE,OAAOC,CAAA,GAAID,CAAX,CAAF;AAAA,CAhC7D;AAiCA,SAAS2U,EAAT,CAAY9Q,GAAZ,EAAoC5D,CAApC,EAA4CD,CAA5C,EAA6D;AAAA,IAAE,OAAOC,CAAA,GAAID,CAAX,CAAF;AAAA,CAjC7D;AAkCA,SAAS4U,IAAT,CAAc/Q,GAAd,EAAsC5D,CAAtC,EAA8CD,CAA9C,EAA+D;AAAA,IAAE,OAAOC,CAAA,IAAKD,CAAZ,CAAF;AAAA,CAlC/D;AAmCA,SAAS6U,IAAT,CAAchR,GAAd,EAAsC5D,CAAtC,EAA8CD,CAA9C,EAA+D;AAAA,IAAE,OAAOC,CAAA,IAAKD,CAAZ,CAAF;AAAA,CAnC/D;AAqCA,SAAS8U,SAAT,CAAmBjR,GAAnB,EAA2C5D,CAA3C,EAAmDD,CAAnD,EAA2D2E,CAA3D,EAA4E;AAAA,IAAE,OAAOA,CAAA,CAAExD,OAAF,CAAUlB,CAAV,EAAaD,CAAb,CAAoB,KAAA,CAA3B,CAAF;AAAA,CArC5E;AAsCA,SAAS+U,UAAT,CAAoBlR,GAApB,EAA4C5D,CAA5C,EAAoDD,CAApD,EAA4D2E,CAA5D,EAA6E;AAAA,IAAE,OAAO,CAACmQ,SAAA,CAAUjR,GAAV,EAAe5D,CAAf,EAAkBD,CAAlB,EAAqB2E,CAArB,CAAR,CAAF;AAAA,CAtC7E;AAuCA,SAASqQ,SAAT,CAAmBnR,GAAnB,EAA2C5D,CAA3C,EAAmDD,CAAnD,EAA2D2E,CAA3D,EAA4E;AAAA,IAAE,OAAOA,CAAA,CAAExD,OAAF,CAAUlB,CAAV,EAAaD,CAAb,CAAkB,GAAA,CAAzB,CAAF;AAAA,CAvC5E;AAwCA,SAASiV,SAAT,CAAmBpR,GAAnB,EAA2C5D,CAA3C,EAAmDD,CAAnD,EAA2D2E,CAA3D,EAA4E;AAAA,IAAE,OAAOA,CAAA,CAAExD,OAAF,CAAUlB,CAAV,EAAaD,CAAb,CAAkB,GAAA,CAAzB,CAAF;AAAA,CAxC5E;AAyCA,SAASkV,WAAT,CAAqBrR,GAArB,EAA6C5D,CAA7C,EAAqDD,CAArD,EAA6D2E,CAA7D,EAA8E;AAAA,IAAE,OAAOA,CAAA,CAAExD,OAAF,CAAUlB,CAAV,EAAaD,CAAb,CAAmB,IAAA,CAA1B,CAAF;AAAA,CAzC9E;AA0CA,SAASmV,WAAT,CAAqBtR,GAArB,EAA6C5D,CAA7C,EAAqDD,CAArD,EAA6D2E,CAA7D,EAA8E;AAAA,IAAE,OAAOA,CAAA,CAAExD,OAAF,CAAUlB,CAAV,EAAaD,CAAb,CAAmB,IAAA,CAA1B,CAAF;AAAA,CA1C9E;AA6DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAASoV,cAAT,CAAwB7V,EAAxB,EAAgD8V,YAAhD,EAAwGC,mBAAxG,EAAoM;AAAA,IAChM,MAAMC,iBAAA,GAAoBhW,EAAA,KAAO,IAAP,IAAeA,EAAA,KAAO,IAAhD,CADgM;AAAA,IAGhM,OAAO,MAAMiW,UAAN,CAAuC;AAAA,QAO1CjZ,WAAA,CAAY6E,GAAZ,EAA6BC,GAA7B,EAA8CL,QAA9C,EAAqE;AAAA,YACjE,IAAKzS,CAAAA,IAAL,GAAY4O,WAAZ,CADiE;AAAA,YAEjE,IAAKiE,CAAAA,GAAL,GAAWA,GAAX,CAFiE;AAAA,YAGjE,IAAKC,CAAAA,GAAL,GAAWA,GAAX,CAHiE;AAAA,YAIjE,IAAKL,CAAAA,QAAL,GAAgBA,QAAhB,CAJiE;AAAA,YAKjE,KAAKyU,kBAAL,GAA0BrU,GAAA,CAAI7S,IAAJ,CAASyO,IAAT,KAAkB,OAAlB,IAA6BqE,GAAA,CAAI9S,IAAJ,CAASyO,IAAT,KAAkB,OAAzE,CALiE;AAAA,SAP3B;AAAA,QAe1C,OAAOlS,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAAgF;AAAA,YAC5E,IAAID,IAAA,CAAKvY,MAAL,KAAgB,CAAhB,IAAqBuY,IAAA,CAAKvY,MAAL,KAAgB,CAAzC;AAAA,gBACI,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,gCAAD,CAAd,CAAP,CAFwE;AAAA,YAI5E,MAAMiR,EAAA,GAA0ByD,IAAA,CAAK,CAAL,CAAhC,CAJ4E;AAAA,YAM5E,IAAI5B,GAAA,GAAM6B,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0B1F,SAA1B,CAAV,CAN4E;AAAA,YAO5E,IAAI,CAAC8D,GAAL;AAAA,gBAAU,OAAO,IAAP,CAPkE;AAAA,YAQ5E,IAAI,CAACoT,gBAAA,CAAiBjV,EAAjB,EAAqB6B,GAAA,CAAI7S,IAAzB,CAAL,EAAqC;AAAA,gBACjC,OAAO0U,OAAA,CAAQhO,MAAR,CAAe,CAAf,CAAA,CAAkB3G,KAAlB,CAAwB,CAAC,CAAD,GAAIiR,EAAJ,EAAO,0CAAP,GAAmD1B,UAAA,CAASuD,GAAA,CAAI7S,IAAb,CAAnD,EAAsE,EAAtE,CAAxB,CAAP,CADiC;AAAA,aARuC;AAAA,YAW5E,IAAI8S,GAAA,GAAM4B,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0B1F,SAA1B,CAAV,CAX4E;AAAA,YAY5E,IAAI,CAAC+D,GAAL;AAAA,gBAAU,OAAO,IAAP,CAZkE;AAAA,YAa5E,IAAI,CAACmT,gBAAA,CAAiBjV,EAAjB,EAAqB8B,GAAA,CAAI9S,IAAzB,CAAL,EAAqC;AAAA,gBACjC,OAAO0U,OAAA,CAAQhO,MAAR,CAAe,CAAf,CAAA,CAAkB3G,KAAlB,CAAwB,CAAC,CAAD,GAAIiR,EAAJ,EAAO,0CAAP,GAAmD1B,UAAA,CAASwD,GAAA,CAAI9S,IAAb,CAAnD,EAAsE,EAAtE,CAAxB,CAAP,CADiC;AAAA,aAbuC;AAAA,YAiB5E,IACI6S,GAAA,CAAI7S,IAAJ,CAASyO,IAAT,KAAkBqE,GAAA,CAAI9S,IAAJ,CAASyO,IAA3B,IACAoE,GAAA,CAAI7S,IAAJ,CAASyO,IAAT,KAAkB,OADlB,IAEAqE,GAAA,CAAI9S,IAAJ,CAASyO,IAAT,KAAkB,OAHtB,EAIE;AAAA,gBACE,OAAOiG,OAAA,CAAQ3U,KAAR,CAAc,CAAC,sBAAD,GAAyBuP,UAAA,CAASuD,GAAA,CAAI7S,IAAb,CAAzB,EAA4C,OAA5C,GAAqDsP,UAAA,CAASwD,GAAA,CAAI9S,IAAb,CAArD,EAAwE,EAAxE,CAAd,CAAP,CADF;AAAA,aArB0E;AAAA,YAyB5E,IAAIgnB,iBAAJ,EAAuB;AAAA;AAEnB,gBAAA,IAAInU,GAAA,CAAI7S,IAAJ,CAASyO,IAAT,KAAkB,OAAlB,IAA6BqE,GAAA,CAAI9S,IAAJ,CAASyO,IAAT,KAAkB,OAAnD,EAA4D;AAAA;AAExD,oBAAAoE,GAAA,GAAM,IAAIuC,WAAJ,CAActC,GAAA,CAAI9S,IAAlB,EAAwB,CAAC6S,GAAD,CAAxB,CAAN,CAFwD;AAAA,iBAA5D,MAGO,IAAIA,GAAA,CAAI7S,IAAJ,CAASyO,IAAT,KAAkB,OAAlB,IAA6BqE,GAAA,CAAI9S,IAAJ,CAASyO,IAAT,KAAkB,OAAnD,EAA4D;AAAA;AAE/D,oBAAAqE,GAAA,GAAM,IAAIsC,WAAJ,CAAcvC,GAAA,CAAI7S,IAAlB,EAAwB,CAAC8S,GAAD,CAAxB,CAAN,CAF+D;AAAA,iBALhD;AAAA,aAzBqD;AAAA,YAoC5E,IAAIL,QAAA,GAAW,IAAf,CApC4E;AAAA,YAqC5E,IAAIgC,IAAA,CAAKvY,MAAL,KAAgB,CAApB,EAAuB;AAAA,gBACnB,IACI2W,GAAA,CAAI7S,IAAJ,CAASyO,IAAT,KAAkB,QAAlB,IACAqE,GAAA,CAAI9S,IAAJ,CAASyO,IAAT,KAAkB,QADlB,IAEAoE,GAAA,CAAI7S,IAAJ,CAASyO,IAAT,KAAkB,OAFlB,IAGAqE,GAAA,CAAI9S,IAAJ,CAASyO,IAAT,KAAkB,OAJtB,EAKE;AAAA,oBACE,OAAOiG,OAAA,CAAQ3U,KAAR,CAAc,CAAC,gDAAD,CAAd,CAAP,CADF;AAAA,iBANiB;AAAA,gBASnB0S,QAAA,GAAWiC,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0BxF,YAA1B,CAAX,CATmB;AAAA,gBAUnB,IAAI,CAACwD,QAAL;AAAA,oBAAe,OAAO,IAAP,CAVI;AAAA,aArCqD;AAAA,YAkD5E,OAAO,IAAIwU,UAAJ,CAAepU,GAAf,EAAoBC,GAApB,EAAyBL,QAAzB,CAAP,CAlD4E;AAAA,SAftC;AAAA,QAoE1CmC,QAAA,CAASU,GAAT,EAA0C;AAAA,YACtC,MAAMzC,GAAA,GAAM,IAAKA,CAAAA,GAAL,CAAS+B,QAAT,CAAkBU,GAAlB,CAAZ,CADsC;AAAA,YAEtC,MAAMxC,GAAA,GAAM,IAAKA,CAAAA,GAAL,CAAS8B,QAAT,CAAkBU,GAAlB,CAAZ,CAFsC;AAAA,YAItC,IAAI0R,iBAAA,IAAqB,IAAA,CAAKE,kBAA9B,EAAkD;AAAA,gBAC9C,MAAMf,EAAA,GAAK5R,MAAA,CAAO1B,GAAP,CAAX,CAD8C;AAAA,gBAE9C,MAAMsU,EAAA,GAAK5S,MAAA,CAAOzB,GAAP,CAAX,CAF8C;AAAA;AAI9C,gBAAIqT,IAAAA,EAAA,CAAG1X,IAAH,KAAY0Y,EAAA,CAAG1Y,IAAf,IAAuB,EAAE0X,EAAA,CAAG1X,IAAH,KAAY,QAAZ,IAAwB0X,EAAA,CAAG1X,IAAH,KAAY,QAApC,CAA7B,EAA4E;AAAA,oBACxE,MAAM,IAAIsG,cAAJ,CAAiB,CAAC,wBAAD,GAA2B/D,EAA3B,EAA8B,yDAA9B,GAAyFmV,EAAA,CAAG1X,IAA5F,EAAiG,EAAjG,GAAqG0Y,EAAA,CAAG1Y,IAAxG,EAA6G,UAA7G,CAAjB,CAAN,CADwE;AAAA,iBAJ9B;AAAA,aAJZ;AAAA,YAatC,IAAI,KAAKgE,QAAL,IAAiB,CAACuU,iBAAlB,IAAuC,IAAKE,CAAAA,kBAAhD,EAAoE;AAAA,gBAChE,MAAMf,EAAA,GAAK5R,MAAA,CAAO1B,GAAP,CAAX,CADgE;AAAA,gBAEhE,MAAMsU,EAAA,GAAK5S,MAAA,CAAOzB,GAAP,CAAX,CAFgE;AAAA,gBAGhE,IAAIqT,EAAA,CAAG1X,IAAH,KAAY,QAAZ,IAAwB0Y,EAAA,CAAG1Y,IAAH,KAAY,QAAxC,EAAkD;AAAA,oBAC9C,OAAOqY,YAAA,CAAaxR,GAAb,EAAkBzC,GAAlB,EAAuBC,GAAvB,CAAP,CAD8C;AAAA,iBAHc;AAAA,aAb9B;AAAA,YAqBtC,OAAO,IAAA,CAAKL,QAAL,GACHsU,mBAAA,CAAoBzR,GAApB,EAAyBzC,GAAzB,EAA8BC,GAA9B,EAAmC,IAAKL,CAAAA,QAAL,CAAcmC,QAAd,CAAuBU,GAAvB,CAAnC,CADG,GAEHwR,YAAA,CAAaxR,GAAb,EAAkBzC,GAAlB,EAAuBC,GAAvB,CAFJ,CArBsC;AAAA,SApEA;AAAA,QA8F1C+B,SAAA,CAAU1U,EAAV,EAAuC;AAAA,YACnCA,EAAA,CAAG,IAAK0S,CAAAA,GAAR,CADmC,CAAA;AAAA,YAEnC1S,EAAA,CAAG,IAAK2S,CAAAA,GAAR,CAFmC,CAAA;AAAA,YAGnC,IAAI,IAAKL,CAAAA,QAAT,EAAmB;AAAA,gBACftS,EAAA,CAAG,IAAKsS,CAAAA,QAAR,CADe,CAAA;AAAA,aAHgB;AAAA,SA9FG;AAAA,QAsG1CqC,aAAA,GAAyB;AAAA,YACrB,OAAO,IAAP,CADqB;AAAA,SAtGiB;AAAA,QA0G1Cf,SAAA,GAAkC;AAAA,YAC9B,MAAMC,UAAA,GAAa,CAAChD,EAAD,CAAnB,CAD8B;AAAA,YAE9B,IAAK6D,CAAAA,SAAL,CAAe6B,KAAA,IAAS;AAAA,gBAAE1C,UAAA,CAAWjX,IAAX,CAAgB2Z,KAAA,CAAM3C,SAAN,EAAhB,CAAF,CAAA;AAAA,aAAxB,CAF8B,CAAA;AAAA,YAG9B,OAAOC,UAAP,CAH8B;AAAA,SA1GQ;AAAA,KAA9C,CAHgM;AAAA,CA7DpM;AAkLO,MAAMoT,MAAA,GAA0EP,cAAA,CAAe,IAAf,EAAqB7iB,EAArB,EAAyBuiB,SAAzB,CAAhF,CAlLP;AAmLO,MAAMc,SAAA,GAA+ER,cAAA,CAAe,IAAf,EAAqBX,GAArB,EAA0BM,UAA1B,CAArF,CAnLP;AAoLO,MAAMc,QAAA,GAA2ET,cAAA,CAAe,GAAf,EAAoBV,EAApB,EAAwBM,SAAxB,CAAjF,CApLP;AAqLO,MAAMc,WAAA,GAA8EV,cAAA,CAAe,GAAf,EAAoBT,EAApB,EAAwBM,SAAxB,CAApF,CArLP;AAsLO,MAAMc,eAAA,GAAuFX,cAAA,CAAe,IAAf,EAAqBR,IAArB,EAA2BM,WAA3B,CAA7F,CAtLP;AAuLO,MAAMc,kBAAA,GAA0FZ,cAAA,CAAe,IAAf,EAAqBP,IAArB,EAA2BM,WAA3B,CAAhG;;ACrLP;AAmCe,MAAMc,YAAN,CAAyC;AAAA;AASpD;AAAA;AAAA;AAAA;AAAA,IAAA1Z,WAAA,CAAYiH,MAAZ,EACY1C,MADZ,EAEYoV,QAFZ,EAGYC,IAHZ,EAIYC,iBAJZ,EAKYC,iBALZ,EAKkD;AAAA,QAC9C,IAAK9nB,CAAAA,IAAL,GAAY2O,UAAZ,CAD8C;AAAA,QAE9C,IAAKsG,CAAAA,MAAL,GAAcA,MAAd,CAF8C;AAAA,QAG9C,IAAK1C,CAAAA,MAAL,GAAcA,MAAd,CAH8C;AAAA,QAI9C,IAAKoV,CAAAA,QAAL,GAAgBA,QAAhB,CAJ8C;AAAA,QAK9C,IAAKC,CAAAA,IAAL,GAAYA,IAAZ,CAL8C;AAAA,QAM9C,IAAKC,CAAAA,iBAAL,GAAyBA,iBAAzB,CAN8C;AAAA,QAO9C,IAAKC,CAAAA,iBAAL,GAAyBA,iBAAzB,CAP8C;AAAA,KAdE;AAAA,IAwBpD,OAAOvrB,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAAgF;AAAA,QAC5E,IAAID,IAAA,CAAKvY,MAAL,KAAgB,CAApB;AAAA,YACI,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,uBAAD,CAAd,CAAP,CAFwE;AAAA,QAI5E,MAAMkV,MAAA,GAASP,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,EAA0B/F,UAA1B,CAAf,CAJ4E;AAAA,QAK5E,IAAI,CAACuG,MAAL;AAAA,YAAa,OAAO,IAAP,CAL+D;AAAA,QAO5E,MAAM7Z,OAAA,GAAWqZ,IAAA,CAAK,CAAL,CAAjB,CAP4E;AAAA,QAQ5E,IAAI,OAAOrZ,OAAP,KAAmB,QAAnB,IAA+ByB,KAAA,CAAMC,OAAN,CAAc1B,OAAd,CAAnC;AAAA,YACI,OAAOsZ,OAAA,CAAQ3U,KAAR,CAAc,CAAC,gDAAD,CAAd,CAAP,CATwE;AAAA,QAW5E,IAAIwS,MAAA,GAAS,IAAb,CAX4E;AAAA,QAY5E,IAAInX,OAAA,CAAQ,QAAR,CAAJ,EAAuB;AAAA,YACnBmX,MAAA,GAASmC,OAAA,CAAQnY,KAAR,CAAcnB,OAAA,CAAQ,QAAR,CAAd,EAAiC,CAAjC,EAAoCuT,UAApC,CAAT,CADmB;AAAA,YAEnB,IAAI,CAAC4D,MAAL;AAAA,gBAAa,OAAO,IAAP,CAFM;AAAA,SAZqD;AAAA,QAiB5E,IAAIoV,QAAA,GAAW,IAAf,CAjB4E;AAAA,QAkB5E,IAAIvsB,OAAA,CAAQ,UAAR,CAAJ,EAAyB;AAAA,YACrBusB,QAAA,GAAWjT,OAAA,CAAQnY,KAAR,CAAcnB,OAAA,CAAQ,UAAR,CAAd,EAAmC,CAAnC,EAAsCuT,UAAtC,CAAX,CADqB;AAAA,YAErB,IAAI,CAACgZ,QAAL;AAAA,gBAAe,OAAO,IAAP,CAFM;AAAA,SAlBmD;AAAA,QAuB5E,IAAIC,IAAA,GAAO,IAAX,CAvB4E;AAAA,QAwB5E,IAAIxsB,OAAA,CAAQ,MAAR,CAAJ,EAAqB;AAAA,YACjBwsB,IAAA,GAAOlT,OAAA,CAAQnY,KAAR,CAAcnB,OAAA,CAAQ,MAAR,CAAd,EAA+B,CAA/B,EAAkCuT,UAAlC,CAAP,CADiB;AAAA,YAEjB,IAAI,CAACiZ,IAAL;AAAA,gBAAW,OAAO,IAAP,CAFM;AAAA,SAxBuD;AAAA,QA6B5E,IAAIC,iBAAA,GAAoB,IAAxB,CA7B4E;AAAA,QA8B5E,IAAIzsB,OAAA,CAAQ,qBAAR,CAAJ,EAAoC;AAAA,YAChCysB,iBAAA,GAAoBnT,OAAA,CAAQnY,KAAR,CAAcnB,OAAA,CAAQ,qBAAR,CAAd,EAA8C,CAA9C,EAAiDsT,UAAjD,CAApB,CADgC;AAAA,YAEhC,IAAI,CAACmZ,iBAAL;AAAA,gBAAwB,OAAO,IAAP,CAFQ;AAAA,SA9BwC;AAAA,QAmC5E,IAAIC,iBAAA,GAAoB,IAAxB,CAnC4E;AAAA,QAoC5E,IAAI1sB,OAAA,CAAQ,qBAAR,CAAJ,EAAoC;AAAA,YAChC0sB,iBAAA,GAAoBpT,OAAA,CAAQnY,KAAR,CAAcnB,OAAA,CAAQ,qBAAR,CAAd,EAA8C,CAA9C,EAAiDsT,UAAjD,CAApB,CADgC;AAAA,YAEhC,IAAI,CAACoZ,iBAAL;AAAA,gBAAwB,OAAO,IAAP,CAFQ;AAAA,SApCwC;AAAA,QAyC5E,OAAO,IAAIJ,YAAJ,CAAiBzS,MAAjB,EAAyB1C,MAAzB,EAAiCoV,QAAjC,EAA2CC,IAA3C,EAAiDC,iBAAjD,EAAoEC,iBAApE,CAAP,CAzC4E;AAAA,KAxB5B;AAAA,IAoEpDlT,QAAA,CAASU,GAAT,EAAyC;AAAA,QACrC,OAAO,IAAI5C,IAAA,CAAKgV,YAAT,CAAsB,KAAKnV,MAAL,GAAc,IAAKA,CAAAA,MAAL,CAAYqC,QAAZ,CAAqBU,GAArB,CAAd,GAA0C,EAAhE,EACH;AAAA,YACI5X,KAAA,EACK,IAAKiqB,CAAAA,QAAL,IAAiB,UAAlB,IACC,IAAA,CAAKC,IAAL,IAAa,MADd,IAEA,SAJR;AAAA,YAKID,QAAA,EAAU,IAAKA,CAAAA,QAAL,GAAgB,IAAA,CAAKA,QAAL,CAAc/S,QAAd,CAAuBU,GAAvB,CAAhB,GAA8C/Z,SAL5D;AAAA,YAMIqsB,IAAA,EAAM,IAAKA,CAAAA,IAAL,GAAY,IAAA,CAAKA,IAAL,CAAUhT,QAAV,CAAmBU,GAAnB,CAAZ,GAAsC/Z,SANhD;AAAA,YAOIwsB,qBAAA,EAAuB,IAAKF,CAAAA,iBAAL,GAAyB,IAAA,CAAKA,iBAAL,CAAuBjT,QAAvB,CAAgCU,GAAhC,CAAzB,GAAgE/Z,SAP3F;AAAA,YAQIysB,qBAAA,EAAuB,IAAKF,CAAAA,iBAAL,GAAyB,IAAA,CAAKA,iBAAL,CAAuBlT,QAAvB,CAAgCU,GAAhC,CAAzB,GAAgE/Z,SAR3F;AAAA,SADG,CAAA,CAUAkC,MAVA,CAUO,IAAKwX,CAAAA,MAAL,CAAYL,QAAZ,CAAqBU,GAArB,CAVP,CAAP,CADqC;AAAA,KApEW;AAAA,IAkFpDT,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnCA,EAAA,CAAG,IAAK8U,CAAAA,MAAR,CADmC,CAAA;AAAA,QAEnC,IAAI,IAAK1C,CAAAA,MAAT,EAAiB;AAAA,YACbpS,EAAA,CAAG,IAAKoS,CAAAA,MAAR,CADa,CAAA;AAAA,SAFkB;AAAA,QAKnC,IAAI,IAAKoV,CAAAA,QAAT,EAAmB;AAAA,YACfxnB,EAAA,CAAG,IAAKwnB,CAAAA,QAAR,CADe,CAAA;AAAA,SALgB;AAAA,QAQnC,IAAI,IAAKC,CAAAA,IAAT,EAAe;AAAA,YACXznB,EAAA,CAAG,IAAKynB,CAAAA,IAAR,CADW,CAAA;AAAA,SARoB;AAAA,QAWnC,IAAI,IAAKC,CAAAA,iBAAT,EAA4B;AAAA,YACxB1nB,EAAA,CAAG,IAAK0nB,CAAAA,iBAAR,CADwB,CAAA;AAAA,SAXO;AAAA,QAcnC,IAAI,IAAKC,CAAAA,iBAAT,EAA4B;AAAA,YACxB3nB,EAAA,CAAG,IAAK2nB,CAAAA,iBAAR,CADwB,CAAA;AAAA,SAdO;AAAA,KAlFa;AAAA,IAqGpDhT,aAAA,GAAyB;AAAA,QACrB,OAAO,KAAP,CADqB;AAAA,KArG2B;AAAA,IAyGpDf,SAAA,GAAkC;AAAA,QAC9B,MAAM3Y,OAAA,GAAU,EAAhB,CAD8B;AAAA,QAE9B,IAAI,IAAKmX,CAAAA,MAAT,EAAiB;AAAA,YACbnX,OAAA,CAAQ,QAAR,CAAA,GAAoB,KAAKmX,MAAL,CAAYwB,SAAZ,EAApB,CADa;AAAA,SAFa;AAAA,QAK9B,IAAI,IAAK4T,CAAAA,QAAT,EAAmB;AAAA,YACfvsB,OAAA,CAAQ,UAAR,CAAA,GAAsB,KAAKusB,QAAL,CAAc5T,SAAd,EAAtB,CADe;AAAA,SALW;AAAA,QAQ9B,IAAI,IAAK6T,CAAAA,IAAT,EAAe;AAAA,YACXxsB,OAAA,CAAQ,MAAR,CAAA,GAAkB,KAAKwsB,IAAL,CAAU7T,SAAV,EAAlB,CADW;AAAA,SARe;AAAA,QAW9B,IAAI,IAAK8T,CAAAA,iBAAT,EAA4B;AAAA,YACxBzsB,OAAA,CAAQ,qBAAR,CAAA,GAAiC,KAAKysB,iBAAL,CAAuB9T,SAAvB,EAAjC,CADwB;AAAA,SAXE;AAAA,QAc9B,IAAI,IAAK+T,CAAAA,iBAAT,EAA4B;AAAA,YACxB1sB,OAAA,CAAQ,qBAAR,CAAA,GAAiC,KAAK0sB,iBAAL,CAAuB/T,SAAvB,EAAjC,CADwB;AAAA,SAdE;AAAA,QAiB9B,OAAO;AAAA,YAAC,eAAD;AAAA,YAAkB,IAAKkB,CAAAA,MAAL,CAAYlB,SAAZ,EAAlB;AAAA,YAA2C3Y,OAA3C;AAAA,SAAP,CAjB8B;AAAA,KAzGkB;AAAA;;ACnCxD;AAUA,MAAM6sB,MAAN,CAAmC;AAAA,IAI/Bja,WAAA,CAAYtM,KAAZ,EAA+B;AAAA,QAC3B,IAAK1B,CAAAA,IAAL,GAAY0O,UAAZ,CAD2B;AAAA,QAE3B,IAAKhN,CAAAA,KAAL,GAAaA,KAAb,CAF2B;AAAA,KAJA;AAAA,IAS/B,OAAOnF,KAAP,CAAakY,IAAb,EAA0CC,OAA1C,EAA4E;AAAA,QACxE,IAAID,IAAA,CAAKvY,MAAL,KAAgB,CAApB;AAAA,YACI,OAAOwY,OAAA,CAAQ3U,KAAR,CAAc,CAAC,+BAAD,GAAkC0U,IAAA,CAAKvY,MAAL,GAAc,CAAhD,EAAkD,SAAlD,CAAd,CAAP,CAFoE;AAAA,QAIxE,MAAMwF,KAAA,GAAQgT,OAAA,CAAQnY,KAAR,CAAckY,IAAA,CAAK,CAAL,CAAd,EAAuB,CAAvB,CAAd,CAJwE;AAAA,QAKxE,IAAI,CAAC/S,KAAL;AAAA,YAAY,OAAO,IAAP,CAL4D;AAAA,QAOxE,IAAIA,KAAA,CAAM1B,IAAN,CAAWyO,IAAX,KAAoB,OAApB,IAA+B/M,KAAA,CAAM1B,IAAN,CAAWyO,IAAX,KAAoB,QAAnD,IAA+D/M,KAAA,CAAM1B,IAAN,CAAWyO,IAAX,KAAoB,OAAvF;AAAA,YACI,OAAOiG,OAAA,CAAQ3U,KAAR,CAAc,CAAC,qDAAD,GAAwDuP,UAAA,CAAS5N,KAAA,CAAM1B,IAAf,CAAxD,EAA6E,SAA7E,CAAd,CAAP,CARoE;AAAA,QAUxE,OAAO,IAAIioB,MAAJ,CAAWvmB,KAAX,CAAP,CAVwE;AAAA,KAT7C;AAAA,IAsB/BkT,QAAA,CAASU,GAAT,EAA+C;AAAA,QAC3C,MAAM5T,KAAA,GAAQ,IAAKA,CAAAA,KAAL,CAAWkT,QAAX,CAAoBU,GAApB,CAAd,CAD2C;AAAA,QAE3C,IAAI,OAAO5T,KAAP,KAAiB,QAArB,EAA+B;AAAA,YAC3B,OAAOA,KAAA,CAAMxF,MAAb,CAD2B;AAAA,SAA/B,MAEO,IAAIW,KAAA,CAAMC,OAAN,CAAc4E,KAAd,CAAJ,EAA0B;AAAA,YAC7B,OAAOA,KAAA,CAAMxF,MAAb,CAD6B;AAAA,SAA1B,MAEA;AAAA,YACH,MAAM,IAAI6Y,cAAJ,CAAiB,CAAC,wDAAD,GAA2DzF,UAAA,CAASiF,MAAA,CAAO7S,KAAP,CAAT,CAA3D,EAAmF,SAAnF,CAAjB,CAAN,CADG;AAAA,SANoC;AAAA,KAtBhB;AAAA,IAiC/BmT,SAAA,CAAU1U,EAAV,EAAuC;AAAA,QACnCA,EAAA,CAAG,IAAKuB,CAAAA,KAAR,CADmC,CAAA;AAAA,KAjCR;AAAA,IAqC/BoT,aAAA,GAAyB;AAAA,QACrB,OAAO,KAAP,CADqB;AAAA,KArCM;AAAA,IAyC/Bf,SAAA,GAAkC;AAAA,QAC9B,MAAMC,UAAA,GAAa,CAAC,QAAD,CAAnB,CAD8B;AAAA,QAE9B,IAAKa,CAAAA,SAAL,CAAe6B,KAAA,IAAS;AAAA,YAAE1C,UAAA,CAAWjX,IAAX,CAAgB2Z,KAAA,CAAM3C,SAAN,EAAhB,CAAF,CAAA;AAAA,SAAxB,CAF8B,CAAA;AAAA,QAG9B,OAAOC,UAAP,CAH8B;AAAA,KAzCH;AAAA,CAZnC;AA4DA,eAAA,MAAA;;AC1DA;AAiDA,MAAMkU,WAAA,GAAkC;AAAA;AAEpC,IAAA,IAAA,EAAMd,MAF8B;AAAA,IAGpC,MAAMC,SAH8B;AAAA,IAIpC,KAAKE,WAJ+B;AAAA,IAKpC,KAAKD,QAL+B;AAAA,IAMpC,MAAMG,kBAN8B;AAAA,IAOpC,MAAMD,eAP8B;AAAA,IAQpC,SAASpS,WAR2B;AAAA,IASpC,MAAMqP,IAT8B;AAAA,IAUpC,WAAWrP,WAVyB;AAAA,IAWpC,QAAQuQ,MAX4B;AAAA,IAYpC,YAAYxB,UAZwB;AAAA,IAapC,YAAY/K,kBAbwB;AAAA,IAcpC,UAAU5D,gBAd0B;AAAA,IAepC,SAASO,eAf2B;AAAA,IAgBpC,MAAM2O,IAhB8B;AAAA,IAiBpC,YAAYG,SAjBwB;AAAA,IAkBpC,eAAezB,aAlBqB;AAAA,IAmBpC,mBAAmBA,aAnBiB;AAAA,IAoBpC,mBAAmBA,aApBiB;AAAA,IAqBpC,UAAU6E,QArB0B;AAAA,IAsBpC,OAAO1D,KAtB6B;AAAA,IAuBpC,WAAW/P,SAvByB;AAAA,IAwBpC,SAASuQ,OAxB2B;AAAA,IAyBpC,UAAU3P,WAzB0B;AAAA,IA0BpC,iBAAiBsS,YA1BmB;AAAA,IA2BpC,UAAUtS,WA3B0B;AAAA,IA4BpC,SAAS0Q,OA5B2B;AAAA,IA6BpC,QAAQrG,MA7B4B;AAAA,IA8BpC,UAAUrK,WA9B0B;AAAA,IA+BpC,cAAcc,UA/BsB;AAAA,IAgCpC,YAAYA,UAhCwB;AAAA,IAiCpC,aAAaA,UAjCuB;AAAA,IAkCpC,aAAaA,UAlCuB;AAAA,IAmCpC,OAAOqI,KAnC6B;AAAA,IAoCpC,UAAUP,QApC0B;AAAA,CAAxC,CAnDA;AA0FA,SAASrM,IAAT,CAAc2D,GAAd,EAAmB,CAAC/D,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAUC,CAAV,CAAnB,EAAiC;AAAA,IAC7BH,CAAA,GAAIA,CAAA,CAAEqD,QAAF,CAAWU,GAAX,CAAJ,CAD6B;AAAA,IAE7B9D,CAAA,GAAIA,CAAA,CAAEoD,QAAF,CAAWU,GAAX,CAAJ,CAF6B;AAAA,IAG7B7D,CAAA,GAAIA,CAAA,CAAEmD,QAAF,CAAWU,GAAX,CAAJ,CAH6B;AAAA,IAI7B,MAAMlE,KAAA,GAAQM,CAAA,GAAIA,CAAA,CAAEkD,QAAF,CAAWU,GAAX,CAAJ,GAAsB,CAApC,CAJ6B;AAAA,IAK7B,MAAMvV,KAAA,GAAQoU,YAAA,CAAa5C,CAAb,EAAgBC,CAAhB,EAAmBC,CAAnB,EAAsBL,KAAtB,CAAd,CAL6B;AAAA,IAM7B,IAAIrR,KAAJ;AAAA,QAAW,MAAM,IAAIgV,cAAJ,CAAiBhV,KAAjB,CAAN,CANkB;AAAA,IAO7B,OAAO,IAAIuR,OAAJ,CAAUC,CAAA,GAAI,GAAJ,GAAUH,KAApB,EAA2BI,CAAA,GAAI,GAAJ,GAAUJ,KAArC,EAA4CK,CAAA,GAAI,GAAJ,GAAUL,KAAtD,EAA6DA,KAA7D,CAAP,CAP6B;AAAA,CA1FjC;AAoGA,SAAS7C,GAAT,CAAarR,GAAb,EAAkBrB,GAAlB,EAAuB;AAAA,IACnB,OAAOqB,GAAA,IAAOrB,GAAd,CADmB;AAAA,CApGvB;AAwGA,SAASyS,GAAT,CAAapR,GAAb,EAAkBrB,GAAlB,EAAuB;AAAA,IACnB,MAAM4I,CAAA,GAAI5I,GAAA,CAAIqB,GAAJ,CAAV,CADmB;AAAA,IAEnB,OAAO,OAAOuH,CAAP,KAAa,WAAb,GAA2B,IAA3B,GAAkCA,CAAzC,CAFmB;AAAA,CAxGvB;AA6GA,SAAS0jB,YAAT,CAAsB1jB,CAAtB,EAAyBiN,CAAzB,EAA4B7P,CAA5B,EAA+BI,CAA/B,EAAkC;AAAA,IAC9B,OAAOJ,CAAA,IAAKI,CAAZ,EAAe;AAAA,QACX,MAAMU,CAAA,GAAKd,CAAA,GAAII,CAAL,IAAW,CAArB,CADW;AAAA,QAEX,IAAIyP,CAAA,CAAE/O,CAAF,MAAS8B,CAAb;AAAA,YACI,OAAO,IAAP,CAHO;AAAA,QAIX,IAAIiN,CAAA,CAAE/O,CAAF,IAAO8B,CAAX;AAAA,YACIxC,CAAA,GAAIU,CAAA,GAAI,CAAR,CADJ;AAAA;AAAA,YAGId,CAAA,GAAIc,CAAA,GAAI,CAAR,CAPO;AAAA,KADe;AAAA,IAU9B,OAAO,KAAP,CAV8B;AAAA,CA7GlC;AA0HA,SAASylB,OAAT,CAAiBpoB,IAAjB,EAAsC;AAAA,IAClC,OAAO,EAACA,IAAD,EAAP,CADkC;AAAA,CA1HtC;AA8HAkY,oBAAA,CAAmBiB,QAAnB,CAA4B+O,WAA5B,EAAyC;AAAA,IACrC,OAAS,EAAA;AAAA,QACLlZ,SADK;AAAA,QAEL,CAACL,UAAD,CAFK;AAAA,QAGL,CAAC2G,GAAD,EAAM,CAAC7Q,CAAD,CAAN,KAAc;AAAA,YAAE,MAAM,IAAIsQ,cAAJ,CAAiBtQ,CAAA,CAAEmQ,QAAF,CAAWU,GAAX,CAAjB,CAAN,CAAF;AAAA,SAHT;AAAA,KAD4B;AAAA,IAMrC,QAAU,EAAA;AAAA,QACN3G,UADM;AAAA,QAEN,CAACI,SAAD,CAFM;AAAA,QAGN,CAACuG,GAAD,EAAM,CAAC7Q,CAAD,CAAN,KAAc4jB,UAAA,CAAa9T,MAAA,CAAO9P,CAAA,CAAEmQ,QAAF,CAAWU,GAAX,CAAP,CAAb,CAHR;AAAA,KAN2B;AAAA,IAWrC,SAAW,EAAA;AAAA,QACPpV,OAAA,CAAMwO,UAAN,EAAkB,CAAlB,CADO;AAAA,QAEP,CAACG,SAAD,CAFO;AAAA,QAGP,CAACyG,GAAD,EAAM,CAAC7Q,CAAD,CAAN,KAAc;AAAA,YACV,OAAOA,CAAA,CAAEmQ,QAAF,CAAWU,GAAX,CAAA,CAAgB1D,OAAhB,EAAP,CADU;AAAA,SAHP;AAAA,KAX0B;AAAA,IAkBrC,KAAO,EAAA;AAAA,QACH/C,SADG;AAAA,QAEH;AAAA,YAACH,UAAD;AAAA,YAAaA,UAAb;AAAA,YAAyBA,UAAzB;AAAA,SAFG;AAAA,QAGHiD,IAHG;AAAA,KAlB8B;AAAA,IAuBrC,MAAQ,EAAA;AAAA,QACJ9C,SADI;AAAA,QAEJ;AAAA,YAACH,UAAD;AAAA,YAAaA,UAAb;AAAA,YAAyBA,UAAzB;AAAA,YAAqCA,UAArC;AAAA,SAFI;AAAA,QAGJiD,IAHI;AAAA,KAvB6B;AAAA,IA4BrC,KAAO,EAAA;AAAA,QACH3R,IAAA,EAAM4O,WADH;AAAA,QAEH2J,SAAA,EAAW;AAAA,YACP;AAAA,gBACI,CAAC5J,UAAD,CADJ;AAAA,gBAEI,CAAC2G,GAAD,EAAM,CAACpY,GAAD,CAAN,KAAgBqR,GAAA,CAAIrR,GAAA,CAAI0X,QAAJ,CAAaU,GAAb,CAAJ,EAAuBA,GAAA,CAAIzJ,UAAJ,EAAvB,CAFpB;AAAA,aADO;AAAA,YAIJ;AAAA,gBACC;AAAA,oBAAC8C,UAAD;AAAA,oBAAaG,UAAb;AAAA,iBADD;AAAA,gBAEC,CAACwG,GAAD,EAAM,CAACpY,GAAD,EAAMrB,GAAN,CAAN,KAAqB0S,GAAA,CAAIrR,GAAA,CAAI0X,QAAJ,CAAaU,GAAb,CAAJ,EAAuBzZ,GAAA,CAAI+Y,QAAJ,CAAaU,GAAb,CAAvB,CAFtB;AAAA,aAJI;AAAA,SAFR;AAAA,KA5B8B;AAAA,IAwCrC,KAAO,EAAA;AAAA,QACHtV,IAAA,EAAM+O,SADH;AAAA,QAEHwJ,SAAA,EAAW;AAAA,YACP;AAAA,gBACI,CAAC5J,UAAD,CADJ;AAAA,gBAEI,CAAC2G,GAAD,EAAM,CAACpY,GAAD,CAAN,KAAgBoR,GAAA,CAAIpR,GAAA,CAAI0X,QAAJ,CAAaU,GAAb,CAAJ,EAAuBA,GAAA,CAAIzJ,UAAJ,EAAvB,CAFpB;AAAA,aADO;AAAA,YAIJ;AAAA,gBACC;AAAA,oBAAC8C,UAAD;AAAA,oBAAaG,UAAb;AAAA,iBADD;AAAA,gBAEC,CAACwG,GAAD,EAAM,CAACpY,GAAD,EAAMrB,GAAN,CAAN,KAAqByS,GAAA,CAAIpR,GAAA,CAAI0X,QAAJ,CAAaU,GAAb,CAAJ,EAAuBzZ,GAAA,CAAI+Y,QAAJ,CAAaU,GAAb,CAAvB,CAFtB;AAAA,aAJI;AAAA,SAFR;AAAA,KAxC8B;AAAA,IAoDrC,eAAiB,EAAA;AAAA,QACbvG,SADa;AAAA,QAEb,CAACJ,UAAD,CAFa;AAAA,QAGb,CAAC2G,GAAD,EAAM,CAACpY,GAAD,CAAN,KAAgBoR,GAAA,CAAIpR,GAAA,CAAI0X,QAAJ,CAAaU,GAAb,CAAJ,EAAuBA,GAAA,CAAIyB,YAAJ,IAAoB,EAA3C,CAHH;AAAA,KApDoB;AAAA,IAyDrC,YAAc,EAAA;AAAA,QACVjI,UADU;AAAA,QAEV,EAFU;AAAA,QAGTwG,GAAD,IAASA,GAAA,CAAIzJ,UAAJ,EAHC;AAAA,KAzDuB;AAAA,IA8DrC,eAAiB,EAAA;AAAA,QACb8C,UADa;AAAA,QAEb,EAFa;AAAA,QAGZ2G,GAAD,IAASA,GAAA,CAAI+B,YAAJ,EAHI;AAAA,KA9DoB;AAAA,IAmErC,IAAM,EAAA;AAAA,QACFtI,SADE;AAAA,QAEF,EAFE;AAAA,QAGDuG,GAAD,IAASA,GAAA,CAAIvJ,EAAJ,EAHP;AAAA,KAnE+B;AAAA,IAwErC,MAAQ,EAAA;AAAA,QACJ2C,UADI;AAAA,QAEJ,EAFI;AAAA,QAGH4G,GAAD,IAASA,GAAA,CAAIuB,OAAJ,CAAYyR,IAHjB;AAAA,KAxE6B;AAAA,IA6ErC,OAAS,EAAA;AAAA,QACL5Z,UADK;AAAA,QAEL,EAFK;AAAA,QAGJ4G,GAAD,IAASA,GAAA,CAAIuB,OAAJ,CAAY0R,KAAZ,IAAqB,CAHzB;AAAA,KA7E4B;AAAA,IAkFrC,sBAAwB,EAAA;AAAA,QACpB7Z,UADoB;AAAA,QAEpB,EAFoB;AAAA,QAGnB4G,GAAD,IAASA,GAAA,CAAIkC,kBAAJ,EAHW;AAAA,KAlFa;AAAA,IAuFrC,iBAAmB,EAAA;AAAA,QACf9I,UADe;AAAA,QAEf,EAFe;AAAA,QAGd4G,GAAD,IAASA,GAAA,CAAIuB,OAAJ,CAAY2R,cAAZ,IAA8B,CAHxB;AAAA,KAvFkB;AAAA,IA4FrC,eAAiB,EAAA;AAAA,QACb9Z,UADa;AAAA,QAEb,EAFa;AAAA,QAGZ4G,GAAD,IAASA,GAAA,CAAIuB,OAAJ,CAAY4R,YAAZ,IAA4B,CAHxB;AAAA,KA5FoB;AAAA,IAiGrC,qBAAuB,EAAA;AAAA,QACnB/Z,UADmB;AAAA,QAEnB,EAFmB;AAAA,QAGlB4G,GAAD,IAASA,GAAA,CAAIuB,OAAJ,CAAY6R,iBAAZ,IAAiC,CAHvB;AAAA,KAjGc;AAAA,IAsGrC,aAAe,EAAA;AAAA,QACX3Z,SADW;AAAA,QAEX,EAFW;AAAA,QAGVuG,GAAD,IAASA,GAAA,CAAIuB,OAAJ,CAAY8R,WAAZ,KAA4BptB,SAA5B,GAAwC,IAAxC,GAA+C+Z,GAAA,CAAIuB,OAAJ,CAAY8R,WAHzD;AAAA,KAtGsB;AAAA,IA2GrC,GAAK,EAAA;AAAA,QACDja,UADC;AAAA,QAED0Z,OAAA,CAAQ1Z,UAAR,CAFC;AAAA,QAGD,CAAC4G,GAAD,EAAMb,IAAN,KAAe;AAAA,YACX,IAAIjX,MAAA,GAAS,CAAb,CADW;AAAA,YAEX,KAAW+F,MAAAA,GAAX,IAAkBkR,IAAlB,EAAwB;AAAA,gBACpBjX,MAAA,IAAU+F,GAAA,CAAIqR,QAAJ,CAAaU,GAAb,CAAV,CADoB;AAAA,aAFb;AAAA,YAKX,OAAO9X,MAAP,CALW;AAAA,SAHd;AAAA,KA3GgC;AAAA,IAsHrC,GAAK,EAAA;AAAA,QACDkR,UADC;AAAA,QAED0Z,OAAA,CAAQ1Z,UAAR,CAFC;AAAA,QAGD,CAAC4G,GAAD,EAAMb,IAAN,KAAe;AAAA,YACX,IAAIjX,MAAA,GAAS,CAAb,CADW;AAAA,YAEX,KAAW+F,MAAAA,GAAX,IAAkBkR,IAAlB,EAAwB;AAAA,gBACpBjX,MAAA,IAAU+F,GAAA,CAAIqR,QAAJ,CAAaU,GAAb,CAAV,CADoB;AAAA,aAFb;AAAA,YAKX,OAAO9X,MAAP,CALW;AAAA,SAHd;AAAA,KAtHgC;AAAA,IAiIrC,GAAK,EAAA;AAAA,QACDwC,IAAA,EAAM0O,UADL;AAAA,QAED6J,SAAA,EAAW;AAAA,YACP;AAAA,gBACI;AAAA,oBAAC7J,UAAD;AAAA,oBAAaA,UAAb;AAAA,iBADJ;AAAA,gBAEI,CAAC4G,GAAD,EAAM,CAAC5D,CAAD,EAAID,CAAJ,CAAN,KAAiBC,CAAA,CAAEkD,QAAF,CAAWU,GAAX,CAAkB7D,GAAAA,CAAA,CAAEmD,QAAF,CAAWU,GAAX,CAFvC;AAAA,aADO;AAAA,YAIJ;AAAA,gBACC,CAAC5G,UAAD,CADD;AAAA,gBAEC,CAAC4G,GAAD,EAAM,CAAC5D,CAAD,CAAN,KAAc,CAACA,CAAA,CAAEkD,QAAF,CAAWU,GAAX,CAFhB;AAAA,aAJI;AAAA,SAFV;AAAA,KAjIgC;AAAA,IA6IrC,GAAK,EAAA;AAAA,QACD5G,UADC;AAAA,QAED;AAAA,YAACA,UAAD;AAAA,YAAaA,UAAb;AAAA,SAFC;AAAA,QAGD,CAAC4G,GAAD,EAAM,CAAC5D,CAAD,EAAID,CAAJ,CAAN,KAAiBC,CAAA,CAAEkD,QAAF,CAAWU,GAAX,CAAkB7D,GAAAA,CAAA,CAAEmD,QAAF,CAAWU,GAAX,CAHlC;AAAA,KA7IgC;AAAA,IAkJrC,GAAK,EAAA;AAAA,QACD5G,UADC;AAAA,QAED;AAAA,YAACA,UAAD;AAAA,YAAaA,UAAb;AAAA,SAFC;AAAA,QAGD,CAAC4G,GAAD,EAAM,CAAC5D,CAAD,EAAID,CAAJ,CAAN,KAAiBC,CAAA,CAAEkD,QAAF,CAAWU,GAAX,CAAkB7D,GAAAA,CAAA,CAAEmD,QAAF,CAAWU,GAAX,CAHlC;AAAA,KAlJgC;AAAA,IAuJrC,KAAO,EAAA;AAAA,QACH5G,UADG;AAAA,QAEH,EAFG;AAAA,QAGH,MAAM/O,IAAA,CAAKipB,GAHR;AAAA,KAvJ8B;AAAA,IA4JrC,IAAM,EAAA;AAAA,QACFla,UADE;AAAA,QAEF,EAFE;AAAA,QAGF,MAAM/O,IAAA,CAAKma,EAHT;AAAA,KA5J+B;AAAA,IAiKrC,GAAK,EAAA;AAAA,QACDpL,UADC;AAAA,QAED,EAFC;AAAA,QAGD,MAAM/O,IAAA,CAAKkpB,CAHV;AAAA,KAjKgC;AAAA,IAsKrC,GAAK,EAAA;AAAA,QACDna,UADC;AAAA,QAED;AAAA,YAACA,UAAD;AAAA,YAAaA,UAAb;AAAA,SAFC;AAAA,QAGD,CAAC4G,GAAD,EAAM,CAAC7D,CAAD,EAAIJ,CAAJ,CAAN,KAAiB1R,IAAA,CAAK2a,GAAL,CAAS7I,CAAA,CAAEmD,QAAF,CAAWU,GAAX,CAAT,EAA0BjE,CAAA,CAAEuD,QAAF,CAAWU,GAAX,CAA1B,CAHhB;AAAA,KAtKgC;AAAA,IA2KrC,MAAQ,EAAA;AAAA,QACJ5G,UADI;AAAA,QAEJ,CAACA,UAAD,CAFI;AAAA,QAGJ,CAAC4G,GAAD,EAAM,CAAClR,CAAD,CAAN,KAAczE,IAAA,CAAK8iB,IAAL,CAAUre,CAAA,CAAEwQ,QAAF,CAAWU,GAAX,CAAV,CAHV;AAAA,KA3K6B;AAAA,IAgLrC,OAAS,EAAA;AAAA,QACL5G,UADK;AAAA,QAEL,CAACA,UAAD,CAFK;AAAA,QAGL,CAAC4G,GAAD,EAAM,CAACxT,CAAD,CAAN,KAAcnC,IAAA,CAAKoa,GAAL,CAASjY,CAAA,CAAE8S,QAAF,CAAWU,GAAX,CAAT,CAA4B3V,GAAAA,IAAA,CAAKmpB,IAH1C;AAAA,KAhL4B;AAAA,IAqLrC,IAAM,EAAA;AAAA,QACFpa,UADE;AAAA,QAEF,CAACA,UAAD,CAFE;AAAA,QAGF,CAAC4G,GAAD,EAAM,CAACxT,CAAD,CAAN,KAAcnC,IAAA,CAAKoa,GAAL,CAASjY,CAAA,CAAE8S,QAAF,CAAWU,GAAX,CAAT,CAHZ;AAAA,KArL+B;AAAA,IA0LrC,MAAQ,EAAA;AAAA,QACJ5G,UADI;AAAA,QAEJ,CAACA,UAAD,CAFI;AAAA,QAGJ,CAAC4G,GAAD,EAAM,CAACxT,CAAD,CAAN,KAAcnC,IAAA,CAAKoa,GAAL,CAASjY,CAAA,CAAE8S,QAAF,CAAWU,GAAX,CAAT,CAA4B3V,GAAAA,IAAA,CAAKipB,GAH3C;AAAA,KA1L6B;AAAA,IA+LrC,KAAO,EAAA;AAAA,QACHla,UADG;AAAA,QAEH,CAACA,UAAD,CAFG;AAAA,QAGH,CAAC4G,GAAD,EAAM,CAACxT,CAAD,CAAN,KAAcnC,IAAA,CAAKkjB,GAAL,CAAS/gB,CAAA,CAAE8S,QAAF,CAAWU,GAAX,CAAT,CAHX;AAAA,KA/L8B;AAAA,IAoMrC,KAAO,EAAA;AAAA,QACH5G,UADG;AAAA,QAEH,CAACA,UAAD,CAFG;AAAA,QAGH,CAAC4G,GAAD,EAAM,CAACxT,CAAD,CAAN,KAAcnC,IAAA,CAAKijB,GAAL,CAAS9gB,CAAA,CAAE8S,QAAF,CAAWU,GAAX,CAAT,CAHX;AAAA,KApM8B;AAAA,IAyMrC,KAAO,EAAA;AAAA,QACH5G,UADG;AAAA,QAEH,CAACA,UAAD,CAFG;AAAA,QAGH,CAAC4G,GAAD,EAAM,CAACxT,CAAD,CAAN,KAAcnC,IAAA,CAAKqa,GAAL,CAASlY,CAAA,CAAE8S,QAAF,CAAWU,GAAX,CAAT,CAHX;AAAA,KAzM8B;AAAA,IA8MrC,MAAQ,EAAA;AAAA,QACJ5G,UADI;AAAA,QAEJ,CAACA,UAAD,CAFI;AAAA,QAGJ,CAAC4G,GAAD,EAAM,CAACxT,CAAD,CAAN,KAAcnC,IAAA,CAAKopB,IAAL,CAAUjnB,CAAA,CAAE8S,QAAF,CAAWU,GAAX,CAAV,CAHV;AAAA,KA9M6B;AAAA,IAmNrC,MAAQ,EAAA;AAAA,QACJ5G,UADI;AAAA,QAEJ,CAACA,UAAD,CAFI;AAAA,QAGJ,CAAC4G,GAAD,EAAM,CAACxT,CAAD,CAAN,KAAcnC,IAAA,CAAKqpB,IAAL,CAAUlnB,CAAA,CAAE8S,QAAF,CAAWU,GAAX,CAAV,CAHV;AAAA,KAnN6B;AAAA,IAwNrC,MAAQ,EAAA;AAAA,QACJ5G,UADI;AAAA,QAEJ,CAACA,UAAD,CAFI;AAAA,QAGJ,CAAC4G,GAAD,EAAM,CAACxT,CAAD,CAAN,KAAcnC,IAAA,CAAKspB,IAAL,CAAUnnB,CAAA,CAAE8S,QAAF,CAAWU,GAAX,CAAV,CAHV;AAAA,KAxN6B;AAAA,IA6NrC,KAAO,EAAA;AAAA,QACH5G,UADG;AAAA,QAEH0Z,OAAA,CAAQ1Z,UAAR,CAFG;AAAA,QAGH,CAAC4G,GAAD,EAAMb,IAAN,KAAe9U,IAAA,CAAK6Z,GAAL,CAAS,GAAG/E,IAAA,CAAK3W,GAAL,CAASyF,GAAA,IAAOA,GAAA,CAAIqR,QAAJ,CAAaU,GAAb,CAAhB,CAAZ,CAHZ;AAAA,KA7N8B;AAAA,IAkOrC,KAAO,EAAA;AAAA,QACH5G,UADG;AAAA,QAEH0Z,OAAA,CAAQ1Z,UAAR,CAFG;AAAA,QAGH,CAAC4G,GAAD,EAAMb,IAAN,KAAe9U,IAAA,CAAK8Z,GAAL,CAAS,GAAGhF,IAAA,CAAK3W,GAAL,CAASyF,GAAA,IAAOA,GAAA,CAAIqR,QAAJ,CAAaU,GAAb,CAAhB,CAAZ,CAHZ;AAAA,KAlO8B;AAAA,IAuOrC,KAAO,EAAA;AAAA,QACH5G,UADG;AAAA,QAEH,CAACA,UAAD,CAFG;AAAA,QAGH,CAAC4G,GAAD,EAAM,CAACxT,CAAD,CAAN,KAAcnC,IAAA,CAAKqhB,GAAL,CAASlf,CAAA,CAAE8S,QAAF,CAAWU,GAAX,CAAT,CAHX;AAAA,KAvO8B;AAAA,IA4OrC,OAAS,EAAA;AAAA,QACL5G,UADK;AAAA,QAEL,CAACA,UAAD,CAFK;AAAA,QAGL,CAAC4G,GAAD,EAAM,CAACxT,CAAD,CAAN,KAAc;AAAA,YACV,MAAM2C,CAAA,GAAI3C,CAAA,CAAE8S,QAAF,CAAWU,GAAX,CAAV,CADU;AAAA;AAKV;AAAA;AAAA,YAAA,OAAO7Q,CAAA,GAAI,CAAJ,GAAQ,CAAC9E,IAAA,CAAKuQ,KAAL,CAAW,CAACzL,CAAZ,CAAT,GAA0B9E,IAAA,CAAKuQ,KAAL,CAAWzL,CAAX,CAAjC,CALU;AAAA,SAHT;AAAA,KA5O4B;AAAA,IAuPrC,OAAS,EAAA;AAAA,QACLiK,UADK;AAAA,QAEL,CAACA,UAAD,CAFK;AAAA,QAGL,CAAC4G,GAAD,EAAM,CAACxT,CAAD,CAAN,KAAcnC,IAAA,CAAKD,KAAL,CAAWoC,CAAA,CAAE8S,QAAF,CAAWU,GAAX,CAAX,CAHT;AAAA,KAvP4B;AAAA,IA4PrC,MAAQ,EAAA;AAAA,QACJ5G,UADI;AAAA,QAEJ,CAACA,UAAD,CAFI;AAAA,QAGJ,CAAC4G,GAAD,EAAM,CAACxT,CAAD,CAAN,KAAcnC,IAAA,CAAKupB,IAAL,CAAUpnB,CAAA,CAAE8S,QAAF,CAAWU,GAAX,CAAV,CAHV;AAAA,KA5P6B;AAAA,IAiQrC,WAAa,EAAA;AAAA,QACT1G,WADS;AAAA,QAET;AAAA,YAACD,UAAD;AAAA,YAAaI,SAAb;AAAA,SAFS;AAAA,QAGT,CAACuG,GAAD,EAAM,CAAC9T,CAAD,EAAIiD,CAAJ,CAAN,KAAiB6Q,GAAA,CAAIzJ,UAAJ,GAAkBrK,CAAD,CAASpE,KAA1B,CAAsCqH,KAAAA,CAAD,CAASrH,KAHtD;AAAA,KAjQwB;AAAA,IAsQrC,cAAgB,EAAA;AAAA,QACZwR,WADY;AAAA,QAEZ,CAACG,SAAD,CAFY;AAAA,QAGZ,CAACuG,GAAD,EAAM,CAAC7Q,CAAD,CAAN,KAAc6Q,GAAA,CAAIvJ,EAAJ,EAActH,KAAAA,CAAD,CAASrH,KAHxB;AAAA,KAtQqB;AAAA,IA2QrC,gBAAkB,EAAA;AAAA,QACdwR,WADc;AAAA,QAEd,CAACD,UAAD,CAFc;AAAA,QAGd,CAAC2G,GAAD,EAAM,CAAC7Q,CAAD,CAAN,KAAc6Q,GAAA,CAAI+B,YAAJ,EAAwB5S,KAAAA,CAAD,CAASrH,KAHhC;AAAA,KA3QmB;AAAA,IAgRrC,UAAY,EAAA;AAAA,QACRwR,WADQ;AAAA,QAER;AAAA,YAACD,UAAD;AAAA,YAAaI,SAAb;AAAA,SAFQ;AAAA,QAGR,CAACuG,GAAD,EAAM,CAAC9T,CAAD,EAAIiD,CAAJ,CAAN,KAAiB;AAAA,YACb,MAAMiN,CAAA,GAAI4D,GAAA,CAAIzJ,UAAJ,EAAA,CAAkBrK,CAAD,CAASpE,KAA1B,CAAV,CADa;AAAA,YAEb,MAAMqU,CAAA,GAAKhN,CAAD,CAASrH,KAAnB,CAFa;AAAA,YAGb,OAAO,OAAOsU,CAAP,KAAa,OAAOD,CAApB,IAAyBC,CAAA,GAAID,CAApC,CAHa;AAAA,SAHT;AAAA,KAhRyB;AAAA,IAyRrC,aAAe,EAAA;AAAA,QACX7C,WADW;AAAA,QAEX,CAACG,SAAD,CAFW;AAAA,QAGX,CAACuG,GAAD,EAAM,CAAC7Q,CAAD,CAAN,KAAc;AAAA,YACV,MAAMiN,CAAA,GAAI4D,GAAA,CAAIvJ,EAAJ,EAAV,CADU;AAAA,YAEV,MAAM0F,CAAA,GAAKhN,CAAD,CAASrH,KAAnB,CAFU;AAAA,YAGV,OAAO,OAAOsU,CAAP,KAAa,OAAOD,CAApB,IAAyBC,CAAA,GAAID,CAApC,CAHU;AAAA,SAHH;AAAA,KAzRsB;AAAA,IAkSrC,UAAY,EAAA;AAAA,QACR7C,WADQ;AAAA,QAER;AAAA,YAACD,UAAD;AAAA,YAAaI,SAAb;AAAA,SAFQ;AAAA,QAGR,CAACuG,GAAD,EAAM,CAAC9T,CAAD,EAAIiD,CAAJ,CAAN,KAAiB;AAAA,YACb,MAAMiN,CAAA,GAAI4D,GAAA,CAAIzJ,UAAJ,EAAA,CAAkBrK,CAAD,CAASpE,KAA1B,CAAV,CADa;AAAA,YAEb,MAAMqU,CAAA,GAAKhN,CAAD,CAASrH,KAAnB,CAFa;AAAA,YAGb,OAAO,OAAOsU,CAAP,KAAa,OAAOD,CAApB,IAAyBC,CAAA,GAAID,CAApC,CAHa;AAAA,SAHT;AAAA,KAlSyB;AAAA,IA2SrC,aAAe,EAAA;AAAA,QACX7C,WADW;AAAA,QAEX,CAACG,SAAD,CAFW;AAAA,QAGX,CAACuG,GAAD,EAAM,CAAC7Q,CAAD,CAAN,KAAc;AAAA,YACV,MAAMiN,CAAA,GAAI4D,GAAA,CAAIvJ,EAAJ,EAAV,CADU;AAAA,YAEV,MAAM0F,CAAA,GAAKhN,CAAD,CAASrH,KAAnB,CAFU;AAAA,YAGV,OAAO,OAAOsU,CAAP,KAAa,OAAOD,CAApB,IAAyBC,CAAA,GAAID,CAApC,CAHU;AAAA,SAHH;AAAA,KA3SsB;AAAA,IAoTrC,WAAa,EAAA;AAAA,QACT7C,WADS;AAAA,QAET;AAAA,YAACD,UAAD;AAAA,YAAaI,SAAb;AAAA,SAFS;AAAA,QAGT,CAACuG,GAAD,EAAM,CAAC9T,CAAD,EAAIiD,CAAJ,CAAN,KAAiB;AAAA,YACb,MAAMiN,CAAA,GAAI4D,GAAA,CAAIzJ,UAAJ,EAAA,CAAkBrK,CAAD,CAASpE,KAA1B,CAAV,CADa;AAAA,YAEb,MAAMqU,CAAA,GAAKhN,CAAD,CAASrH,KAAnB,CAFa;AAAA,YAGb,OAAO,OAAOsU,CAAP,KAAa,OAAOD,CAApB,IAAyBC,CAAA,IAAKD,CAArC,CAHa;AAAA,SAHR;AAAA,KApTwB;AAAA,IA6TrC,cAAgB,EAAA;AAAA,QACZ7C,WADY;AAAA,QAEZ,CAACG,SAAD,CAFY;AAAA,QAGZ,CAACuG,GAAD,EAAM,CAAC7Q,CAAD,CAAN,KAAc;AAAA,YACV,MAAMiN,CAAA,GAAI4D,GAAA,CAAIvJ,EAAJ,EAAV,CADU;AAAA,YAEV,MAAM0F,CAAA,GAAKhN,CAAD,CAASrH,KAAnB,CAFU;AAAA,YAGV,OAAO,OAAOsU,CAAP,KAAa,OAAOD,CAApB,IAAyBC,CAAA,IAAKD,CAArC,CAHU;AAAA,SAHF;AAAA,KA7TqB;AAAA,IAsUrC,WAAa,EAAA;AAAA,QACT7C,WADS;AAAA,QAET;AAAA,YAACD,UAAD;AAAA,YAAaI,SAAb;AAAA,SAFS;AAAA,QAGT,CAACuG,GAAD,EAAM,CAAC9T,CAAD,EAAIiD,CAAJ,CAAN,KAAiB;AAAA,YACb,MAAMiN,CAAA,GAAI4D,GAAA,CAAIzJ,UAAJ,EAAA,CAAkBrK,CAAD,CAASpE,KAA1B,CAAV,CADa;AAAA,YAEb,MAAMqU,CAAA,GAAKhN,CAAD,CAASrH,KAAnB,CAFa;AAAA,YAGb,OAAO,OAAOsU,CAAP,KAAa,OAAOD,CAApB,IAAyBC,CAAA,IAAKD,CAArC,CAHa;AAAA,SAHR;AAAA,KAtUwB;AAAA,IA+UrC,cAAgB,EAAA;AAAA,QACZ7C,WADY;AAAA,QAEZ,CAACG,SAAD,CAFY;AAAA,QAGZ,CAACuG,GAAD,EAAM,CAAC7Q,CAAD,CAAN,KAAc;AAAA,YACV,MAAMiN,CAAA,GAAI4D,GAAA,CAAIvJ,EAAJ,EAAV,CADU;AAAA,YAEV,MAAM0F,CAAA,GAAKhN,CAAD,CAASrH,KAAnB,CAFU;AAAA,YAGV,OAAO,OAAOsU,CAAP,KAAa,OAAOD,CAApB,IAAyBC,CAAA,IAAKD,CAArC,CAHU;AAAA,SAHF;AAAA,KA/UqB;AAAA,IAwVrC,YAAc,EAAA;AAAA,QACV7C,WADU;AAAA,QAEV,CAACG,SAAD,CAFU;AAAA,QAGV,CAACuG,GAAD,EAAM,CAAC9T,CAAD,CAAN,KAAeA,CAAD,CAASpE,KAAT,IAAkBkY,GAAA,CAAIzJ,UAAJ,EAHtB;AAAA,KAxVuB;AAAA,IA6VrC,eAAiB,EAAA;AAAA,QACb+C,WADa;AAAA,QAEb,EAFa;AAAA,QAGZ0G,GAAD,IAAUA,GAAA,CAAIvJ,EAAJ,EAAA,KAAa,IAAb,IAAqBuJ,GAAA,CAAIvJ,EAAJ,EAAA,KAAaxQ,SAH/B;AAAA,KA7VoB;AAAA,IAkWrC,gBAAkB,EAAA;AAAA,QACdqT,WADc;AAAA,QAEd,CAAC1O,OAAA,CAAMyO,UAAN,CAAD,CAFc;AAAA,QAGd,CAAC2G,GAAD,EAAM,CAAC7Q,CAAD,CAAN,KAAeA,CAAD,CAASrH,KAAT,CAAekH,OAAf,CAAuBgR,GAAA,CAAI+B,YAAJ,EAAvB,KAA8C,CAH9C;AAAA,KAlWmB;AAAA,IAuWrC,cAAgB,EAAA;AAAA,QACZzI,WADY;AAAA,QAEZ,CAAC1O,OAAA,CAAM6O,SAAN,CAAD,CAFY;AAAA,QAGZ,CAACuG,GAAD,EAAM,CAAC7Q,CAAD,CAAN,KAAeA,CAAD,CAASrH,KAAT,CAAekH,OAAf,CAAuBgR,GAAA,CAAIvJ,EAAJ,EAAvB,KAAoC,CAHtC;AAAA,KAvWqB;AAAA,IA4WrC,iBAAmB,EAAA;AAAA,QACf6C,WADe;AAAA,QAEf;AAAA,YAACD,UAAD;AAAA,YAAazO,OAAA,CAAM6O,SAAN,CAAb;AAAA,SAFe;AAAA;AAIf,QAACuG,CAAAA,GAAD,EAAM,CAAC9T,CAAD,EAAIiD,CAAJ,CAAN,KAAkBA,CAAD,CAASrH,KAAT,CAAekH,OAAf,CAAuBgR,GAAA,CAAIzJ,UAAJ,EAAA,CAAkBrK,CAAD,CAASpE,KAA1B,CAAvB,CAAA,IAA4D,CAJ9D;AAAA,KA5WkB;AAAA,IAkXrC,iBAAmB,EAAA;AAAA,QACfwR,WADe;AAAA,QAEf;AAAA,YAACD,UAAD;AAAA,YAAazO,OAAA,CAAM6O,SAAN,CAAb;AAAA,SAFe;AAAA;AAIf,QAAA,CAACuG,GAAD,EAAM,CAAC9T,CAAD,EAAIiD,CAAJ,CAAN,KAAiB0jB,YAAA,CAAa7S,GAAA,CAAIzJ,UAAJ,GAAkBrK,CAAD,CAASpE,KAA1B,CAAb,EAAgDqH,CAAD,CAASrH,KAAxD,EAA+D,CAA/D,EAAmEqH,CAAD,CAASrH,KAAT,CAAelB,MAAf,GAAwB,CAA1F,CAJF;AAAA,KAlXkB;AAAA,IAwXrC,KAAO,EAAA;AAAA,QACH8D,IAAA,EAAM4O,WADH;AAAA,QAEH2J,SAAA,EAAW;AAAA,YACP;AAAA,gBACI;AAAA,oBAAC3J,WAAD;AAAA,oBAAcA,WAAd;AAAA,iBADJ;AAAA,gBAEI,CAAC0G,GAAD,EAAM,CAAC5D,CAAD,EAAID,CAAJ,CAAN,KAAiBC,CAAA,CAAEkD,QAAF,CAAWU,GAAX,CAAmB7D,IAAAA,CAAA,CAAEmD,QAAF,CAAWU,GAAX,CAFxC;AAAA,aADO;AAAA,YAKP;AAAA,gBACI8S,OAAA,CAAQxZ,WAAR,CADJ;AAAA,gBAEI,CAAC0G,GAAD,EAAMb,IAAN,KAAe;AAAA,oBACX,KAAWlR,MAAAA,GAAX,IAAkBkR,IAAlB,EAAwB;AAAA,wBACpB,IAAI,CAAClR,GAAA,CAAIqR,QAAJ,CAAaU,GAAb,CAAL;AAAA,4BACI,OAAO,KAAP,CAFgB;AAAA,qBADb;AAAA,oBAKX,OAAO,IAAP,CALW;AAAA,iBAFnB;AAAA,aALO;AAAA,SAFR;AAAA,KAxX8B;AAAA,IA2YrC,KAAO,EAAA;AAAA,QACHtV,IAAA,EAAM4O,WADH;AAAA,QAEH2J,SAAA,EAAW;AAAA,YACP;AAAA,gBACI;AAAA,oBAAC3J,WAAD;AAAA,oBAAcA,WAAd;AAAA,iBADJ;AAAA,gBAEI,CAAC0G,GAAD,EAAM,CAAC5D,CAAD,EAAID,CAAJ,CAAN,KAAiBC,CAAA,CAAEkD,QAAF,CAAWU,GAAX,CAAmB7D,IAAAA,CAAA,CAAEmD,QAAF,CAAWU,GAAX,CAFxC;AAAA,aADO;AAAA,YAKP;AAAA,gBACI8S,OAAA,CAAQxZ,WAAR,CADJ;AAAA,gBAEI,CAAC0G,GAAD,EAAMb,IAAN,KAAe;AAAA,oBACX,KAAWlR,MAAAA,GAAX,IAAkBkR,IAAlB,EAAwB;AAAA,wBACpB,IAAIlR,GAAA,CAAIqR,QAAJ,CAAaU,GAAb,CAAJ;AAAA,4BACI,OAAO,IAAP,CAFgB;AAAA,qBADb;AAAA,oBAKX,OAAO,KAAP,CALW;AAAA,iBAFnB;AAAA,aALO;AAAA,SAFR;AAAA,KA3Y8B;AAAA,IA8ZrC,GAAK,EAAA;AAAA,QACD1G,WADC;AAAA,QAED,CAACA,WAAD,CAFC;AAAA,QAGD,CAAC0G,GAAD,EAAM,CAAC7D,CAAD,CAAN,KAAc,CAACA,CAAA,CAAEmD,QAAF,CAAWU,GAAX,CAHd;AAAA,KA9ZgC;AAAA,IAmarC,qBAAuB,EAAA;AAAA,QACnB1G,WADmB;AAAA,QAEnB,CAACD,UAAD,CAFmB;AAAA;AAInB,QAAA,CAAC2G,GAAD,EAAM,CAAChM,CAAD,CAAN,KAAc;AAAA,YACV,MAAM6f,iBAAA,GAAoB7T,GAAA,CAAIuB,OAAJ,IAAevB,GAAA,CAAIuB,OAAJ,CAAYsS,iBAArD,CADU;AAAA,YAEV,IAAIA,iBAAJ,EAAuB;AAAA,gBACnB,OAAOA,iBAAA,CAAkB7f,CAAA,CAAEsL,QAAF,CAAWU,GAAX,CAAlB,CAAP,CADmB;AAAA,aAFb;AAAA,YAKV,OAAO,IAAP,CALU;AAAA,SAJK;AAAA,KAnac;AAAA,IA+arC,QAAU,EAAA;AAAA,QACN3G,UADM;AAAA,QAEN,CAACA,UAAD,CAFM;AAAA,QAGN,CAAC2G,GAAD,EAAM,CAAChM,CAAD,CAAN,KAAcA,CAAA,CAAEsL,QAAF,CAAWU,GAAX,CAAA,CAAgB8T,WAAhB,EAHR;AAAA,KA/a2B;AAAA,IAobrC,UAAY,EAAA;AAAA,QACRza,UADQ;AAAA,QAER,CAACA,UAAD,CAFQ;AAAA,QAGR,CAAC2G,GAAD,EAAM,CAAChM,CAAD,CAAN,KAAcA,CAAA,CAAEsL,QAAF,CAAWU,GAAX,CAAA,CAAgBpS,WAAhB,EAHN;AAAA,KApbyB;AAAA,IAybrC,QAAU,EAAA;AAAA,QACNyL,UADM;AAAA,QAENyZ,OAAA,CAAQrZ,SAAR,CAFM;AAAA,QAGN,CAACuG,GAAD,EAAMb,IAAN,KAAeA,IAAA,CAAK3W,GAAL,CAASyF,GAAA,IAAOkT,QAAA,CAAclT,GAAA,CAAIqR,QAAJ,CAAaU,GAAb,CAAd,CAAhB,CAAkDjY,CAAAA,IAAlD,CAAuD,EAAvD,CAHT;AAAA,KAzb2B;AAAA,IA8brC,iBAAmB,EAAA;AAAA,QACfsR,UADe;AAAA,QAEf,CAACM,YAAD,CAFe;AAAA,QAGf,CAACqG,GAAD,EAAM,CAAC7C,QAAD,CAAN,KAAqBA,QAAA,CAASmC,QAAT,CAAkBU,GAAlB,CAAA,CAAuBvC,cAAvB,EAHN;AAAA,KA9bkB;AAAA,CAAzC,CA9HA,CAAA;AAmkBA,kBAAA,WAAA;;ACvjBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAASsW,OAAT,CAAuBjsB,KAAvB,EAA+C;AAAA,IAClD,OAAO;AAAA,QAACI,MAAA,EAAQ,SAAT;AAAA,QAAoBJ,KAApB;AAAA,KAAP,CADkD;AAAA,CAZtD;AAgBO,SAAS2C,KAAT,CAAqB3C,KAArB,EAA6C;AAAA,IAChD,OAAO;AAAA,QAACI,MAAA,EAAQ,OAAT;AAAA,QAAkBJ,KAAlB;AAAA,KAAP,CADgD;AAAA;;ACZpD;AAAO,SAASksB,0BAAT,CAAoCC,IAApC,EAA+E;AAAA,IAClF,OAAOA,IAAA,CAAK,eAAL,CAAA,KAA0B,aAAjC,CADkF;AAAA,CAJtF;AAQO,SAASC,sBAAT,CAAgCD,IAAhC,EAA2E;AAAA,IAC9E,OAAO,CAAC,CAACA,IAAA,CAAKlb,UAAP,IAAqBkb,IAAA,CAAKlb,UAAL,CAAgBob,UAAhB,CAA2BnlB,OAA3B,CAAmC,MAAnC,CAA6C,GAAA,CAAC,CAA1E,CAD8E;AAAA,CARlF;AAYO,SAASolB,qBAAT,CAA+BH,IAA/B,EAA0E;AAAA,IAC7E,OAAO,CAAC,CAACA,IAAA,CAAKlb,UAAP,IAAqBkb,IAAA,CAAKlb,UAAL,CAAgBsb,YAA5C,CAD6E;AAAA;;ACVjF;AAAe,SAASC,OAAT,CAAiBC,GAAjB,EAAqC;AAAA,IAChD,IAAIA,GAAA,YAAetT,MAAnB,EAA2B;AAAA,QACvB,OAAO,QAAP,CADuB;AAAA,KAA3B,MAEO,IAAIsT,GAAA,YAAehqB,MAAnB,EAA2B;AAAA,QAC9B,OAAO,QAAP,CAD8B;AAAA,KAA3B,MAEA,IAAIgqB,GAAA,YAAe1T,OAAnB,EAA4B;AAAA,QAC/B,OAAO,SAAP,CAD+B;AAAA,KAA5B,MAEA,IAAItZ,KAAA,CAAMC,OAAN,CAAc+sB,GAAd,CAAJ,EAAwB;AAAA,QAC3B,OAAO,OAAP,CAD2B;AAAA,KAAxB,MAEA,IAAIA,GAAA,KAAQ,IAAZ,EAAkB;AAAA,QACrB,OAAO,MAAP,CADqB;AAAA,KAAlB,MAEA;AAAA,QACH,OAAO,OAAOA,GAAd,CADG;AAAA,KAXyC;AAAA;;ACU7C,SAASxd,UAAT,CAAoBjP,KAApB,EAA2B;AAAA,IAC9B,OAAO,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAA,KAAU,IAAvC,IAA+C,CAACP,KAAA,CAAMC,OAAN,CAAcM,KAAd,CAAvD,CAD8B;AAAA,CAZlC;AAgBA,SAAS0sB,gBAAT,CAA0B1lB,CAA1B,EAA6B;AAAA,IACzB,OAAOA,CAAP,CADyB;AAAA,CAhB7B;AAoBO,SAAS2lB,cAAT,CAAwBN,UAAxB,EAAoCO,YAApC,EAAkD;AAAA,IACrD,MAAMC,OAAA,GAAUD,YAAA,CAAahqB,IAAb,KAAsB,OAAtC,CADqD;AAAA,IAErD,MAAMkqB,uBAAA,GAA0BT,UAAA,CAAWnd,KAAX,IAAoB,OAAOmd,UAAA,CAAWnd,KAAX,CAAiB,CAAjB,CAAA,CAAoB,CAApB,CAAP,KAAkC,QAAtF,CAFqD;AAAA,IAGrD,MAAM6d,gBAAA,GAAmBD,uBAAA,IAA2BT,UAAA,CAAW3c,QAAX,KAAwBvR,SAA5E,CAHqD;AAAA,IAIrD,MAAM6uB,aAAA,GAAgBF,uBAAA,IAA2B,CAACC,gBAAlD,CAJqD;AAAA,IAKrD,MAAMnqB,IAAA,GAAOypB,UAAA,CAAWzpB,IAAX,KAAoB0pB,qBAAA,CAAsBM,YAAtB,CAAsC,GAAA,aAAtC,GAAsD,UAAtD,CAAjC,CALqD;AAAA,IAOrD,IAAIC,OAAJ,EAAa;AAAA,QACTR,UAAA,GAAaY,MAAA,CAAO,EAAP,EAAWZ,UAAX,CAAb,CADS;AAAA,QAGT,IAAIA,UAAA,CAAWnd,KAAf,EAAsB;AAAA,YAClBmd,UAAA,CAAWnd,KAAX,GAAmBmd,UAAA,CAAWnd,KAAX,CAAiBxO,GAAjB,CAAsBiP,IAAD,IAAU;AAAA,gBAC9C,OAAO;AAAA,oBAACA,IAAA,CAAK,CAAL,CAAD;AAAA,oBAAUuE,OAAA,CAAM/U,KAAN,CAAYwQ,IAAA,CAAK,CAAL,CAAZ,CAAV;AAAA,iBAAP,CAD8C;AAAA,aAA/B,CAAnB,CADkB;AAAA,SAHb;AAAA,QAST,IAAI0c,UAAA,CAAWa,OAAf,EAAwB;AAAA,YACpBb,UAAA,CAAWa,OAAX,GAAqBhZ,OAAA,CAAM/U,KAAN,CAAYktB,UAAA,CAAWa,OAAvB,CAArB,CADoB;AAAA,SAAxB,MAEO;AAAA,YACHb,UAAA,CAAWa,OAAX,GAAqBhZ,OAAA,CAAM/U,KAAN,CAAYytB,YAAA,CAAaM,OAAzB,CAArB,CADG;AAAA,SAXE;AAAA,KAPwC;AAAA,IAuBrD,IAAIb,UAAA,CAAWc,UAAX,IAAyBd,UAAA,CAAWc,UAAX,KAA0B,KAAnD,IAA4D,CAACC,WAAA,CAAYf,UAAA,CAAWc,UAAvB,CAAjE,EAAqG;AAAA;AACjG,QAAM,MAAA,IAAIhd,KAAJ,CAAU,CAAC,qBAAD,GAAwBkc,UAAA,CAAWc,UAAnC,EAAV,CAAA,CAAN,CADiG;AAAA,KAvBhD;AAAA,IA2BrD,IAAIE,QAAJ,CA3BqD;AAAA,IA4BrD,IAAIC,WAAJ,CA5BqD;AAAA,IA6BrD,IAAIC,kBAAJ,CA7BqD;AAAA,IA8BrD,IAAI3qB,IAAA,KAAS,aAAb,EAA4B;AAAA,QACxByqB,QAAA,GAAWG,2BAAX,CADwB;AAAA,KAA5B,MAEO,IAAI5qB,IAAA,KAAS,UAAb,EAAyB;AAAA,QAC5ByqB,QAAA,GAAWI,wBAAX,CAD4B;AAAA,KAAzB,MAEA,IAAI7qB,IAAA,KAAS,aAAb,EAA4B;AAAA,QAC/ByqB,QAAA,GAAWK,2BAAX,CAD+B;AAAA;AAI/B,QAAAJ,WAAA,GAAcztB,MAAA,CAAO8tB,MAAP,CAAc,IAAd,CAAd,CAJ+B;AAAA,QAK/B,WAAWhe,IAAX,IAAmB0c,UAAA,CAAWnd,KAA9B,EAAqC;AAAA,YACjCoe,WAAA,CAAY3d,IAAA,CAAK,CAAL,CAAZ,CAAA,GAAuBA,IAAA,CAAK,CAAL,CAAvB,CADiC;AAAA,SALN;AAAA;AAU/B,QAAA4d,kBAAA,GAAqB,OAAOlB,UAAA,CAAWnd,KAAX,CAAiB,CAAjB,CAAA,CAAoB,CAApB,CAA5B,CAV+B;AAAA,KAA5B,MAYA,IAAItM,IAAA,KAAS,UAAb,EAAyB;AAAA,QAC5ByqB,QAAA,GAAWO,wBAAX,CAD4B;AAAA,KAAzB,MAEA;AAAA,QACH,MAAM,IAAIzd,KAAJ,CAAU,CAAC,uBAAD,GAA0BvN,IAA1B,EAA+B,CAA/B,CAAV,CAAN,CADG;AAAA,KAhD8C;AAAA,IAoDrD,IAAIkqB,uBAAJ,EAA6B;AAAA,QACzB,MAAMe,gBAAA,GAAmB,EAAzB,CADyB;AAAA,QAEzB,MAAMC,SAAA,GAAY,EAAlB,CAFyB;AAAA,QAGzB,KAAK,IAAI5hB,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAImgB,UAAA,CAAWnd,KAAX,CAAiBpQ,MAArC,EAA6CoN,CAAA,EAA7C,EAAkD;AAAA,YAC9C,MAAMyD,IAAA,GAAO0c,UAAA,CAAWnd,KAAX,CAAiBhD,CAAjB,CAAb,CAD8C;AAAA,YAE9C,MAAMgf,IAAA,GAAOvb,IAAA,CAAK,CAAL,CAAA,CAAQub,IAArB,CAF8C;AAAA,YAG9C,IAAI2C,gBAAA,CAAiB3C,IAAjB,CAAA,KAA2B/sB,SAA/B,EAA0C;AAAA,gBACtC0vB,gBAAA,CAAiB3C,IAAjB,CAAyB,GAAA;AAAA,oBACrBA,IADqB;AAAA,oBAErBtoB,IAAA,EAAMypB,UAAA,CAAWzpB,IAFI;AAAA,oBAGrB8M,QAAA,EAAU2c,UAAA,CAAW3c,QAHA;AAAA,oBAIrBwd,OAAA,EAASb,UAAA,CAAWa,OAJC;AAAA,oBAKrBhe,KAAA,EAAO,EALc;AAAA,iBAAzB,CADsC;AAAA,gBAQtC4e,SAAA,CAAUnuB,IAAV,CAAeurB,IAAf,CARsC,CAAA;AAAA,aAHI;AAAA,YAa9C2C,gBAAA,CAAiB3C,IAAjB,EAAuBhc,KAAvB,CAA6BvP,IAA7B,CAAkC;AAAA,gBAACgQ,IAAA,CAAK,CAAL,CAAA,CAAQ3P,KAAT;AAAA,gBAAgB2P,IAAA,CAAK,CAAL,CAAhB;AAAA,aAAlC,CAb8C,CAAA;AAAA,SAHzB;AAAA,QAmBzB,MAAMoe,oBAAA,GAAuB,EAA7B,CAnByB;AAAA,QAoBzB,KAAW5Q,MAAAA,CAAX,IAAgB2Q,SAAhB,EAA2B;AAAA,YACvBC,oBAAA,CAAqBpuB,IAArB,CAA0B;AAAA,gBAACkuB,gBAAA,CAAiB1Q,CAAjB,CAAA,CAAoB+N,IAArB;AAAA,gBAA2ByB,cAAA,CAAekB,gBAAA,CAAiB1Q,CAAjB,CAAf,EAAoCyP,YAApC,CAA3B;AAAA,aAA1B,CADuB,CAAA;AAAA,SApBF;AAAA,QAwBzB,MAAMoB,iBAAA,GAAoB,EAACtmB,IAAA,EAAM,QAAP,EAA1B,CAxByB;AAAA,QAyBzB,OAAO;AAAA,YACH2J,IAAA,EAAM,WADH;AAAA,YAEH2c,iBAFG;AAAA,YAGH7H,mBAAA,EAAqBH,aAAA,CAAYG,mBAAZ,CAAgC8H,IAAhC,CAAqC9vB,SAArC,EAAgD6vB,iBAAhD,CAHlB;AAAA,YAIHF,SAAA,EAAWC,oBAAA,CAAqBrtB,GAArB,CAAyBwL,CAAA,IAAKA,CAAA,CAAE,CAAF,CAA9B,CAJR;AAAA,YAKHsL,QAAA,CAAS,CAAC0T,IAAD,CAAT,EAAiBzc,UAAjB,EAA6B;AAAA,gBACzB,OAAO+e,2BAAA,CAA4B;AAAA,oBAC/Bte,KAAA,EAAO6e,oBADwB;AAAA,oBAE/BtsB,IAAA,EAAM4qB,UAAA,CAAW5qB,IAFc;AAAA,iBAA5B,EAGJmrB,YAHI,EAGU1B,IAHV,CAAA,CAGgB1T,QAHhB,CAGyB0T,IAHzB,EAG+Bzc,UAH/B,CAAP,CADyB;AAAA,aAL1B;AAAA,SAAP,CAzByB;AAAA,KAA7B,MAqCO,IAAIue,aAAJ,EAAmB;AAAA,QACtB,MAAMgB,iBAAA,GAAoBprB,IAAA,KAAS,aAAT,GACtB;AAAA,YAAC8E,IAAA,EAAM,aAAP;AAAA,YAAsBjG,IAAA,EAAM4qB,UAAA,CAAW5qB,IAAX,KAAoBtD,SAApB,GAAgCkuB,UAAA,CAAW5qB,IAA3C,GAAkD,CAA9E;AAAA,SADsB,GAC6D,IADvF,CADsB;AAAA,QAGtB,OAAO;AAAA,YACH4P,IAAA,EAAM,QADH;AAAA,YAEH2c,iBAFG;AAAA,YAGH7H,mBAAA,EAAqBH,aAAA,CAAYG,mBAAZ,CAAgC8H,IAAhC,CAAqC9vB,SAArC,EAAgD6vB,iBAAhD,CAHlB;AAAA,YAIHF,SAAA,EAAWzB,UAAA,CAAWnd,KAAX,CAAiBxO,GAAjB,CAAqBwL,CAAA,IAAKA,CAAA,CAAE,CAAF,CAA1B,CAJR;AAAA,YAKHsL,QAAA,EAAU,CAAC,CAAC0T,IAAD,CAAD,KAAYmC,QAAA,CAAShB,UAAT,EAAqBO,YAArB,EAAmC1B,IAAnC,EAAyCoC,WAAzC,EAAsDC,kBAAtD,CALnB;AAAA,SAAP,CAHsB;AAAA,KAAnB,MAUA;AAAA,QACH,OAAO;AAAA,YACHlc,IAAA,EAAM,QADH;AAAA,YAEHmG,QAAA,CAASiR,CAAT,EAAY/O,OAAZ,EAAqB;AAAA,gBACjB,MAAM1Z,KAAA,GAAQ0Z,OAAA,IAAWA,OAAA,CAAQjL,UAAnB,GAAgCiL,OAAA,CAAQjL,UAAR,CAAmB4d,UAAA,CAAW3c,QAA9B,CAAhC,GAA0EvR,SAAxF,CADiB;AAAA,gBAEjB,IAAI6B,KAAA,KAAU7B,SAAd,EAAyB;AAAA,oBACrB,OAAO+vB,UAAA,CAAS7B,UAAA,CAAWa,OAApB,EAA6BN,YAAA,CAAaM,OAA1C,CAAP,CADqB;AAAA,iBAFR;AAAA,gBAKjB,OAAOG,QAAA,CAAShB,UAAT,EAAqBO,YAArB,EAAmC5sB,KAAnC,EAA0CstB,WAA1C,EAAuDC,kBAAvD,CAAP,CALiB;AAAA,aAFlB;AAAA,SAAP,CADG;AAAA,KAnG8C;AAAA,CApBzD;AAqIA,SAASW,UAAT,CAAkB5Z,CAAlB,EAAqBD,CAArB,EAAwB2E,CAAxB,EAA2B;AAAA,IACvB,IAAI1E,CAAA,KAAMnW,SAAV;AAAA,QAAqB,OAAOmW,CAAP,CADE;AAAA,IAEvB,IAAID,CAAA,KAAMlW,SAAV;AAAA,QAAqB,OAAOkW,CAAP,CAFE;AAAA,IAGvB,IAAI2E,CAAA,KAAM7a,SAAV;AAAA,QAAqB,OAAO6a,CAAP,CAHE;AAAA,CArI3B;AA2IA,SAAS0U,2BAAT,CAAqCrB,UAArC,EAAiDO,YAAjD,EAA+DtoB,KAA/D,EAAsEgpB,WAAtE,EAAmFa,OAAnF,EAA4F;AAAA,IACxF,MAAMC,SAAA,GAAY,OAAO9pB,KAAP,KAAiB6pB,OAAjB,GAA2Bb,WAAA,CAAYhpB,KAAZ,CAA3B,GAAgDnG,SAAlE,CADwF;AAAA;AAExF,IAAA,OAAO+vB,UAAA,CAASE,SAAT,EAAoB/B,UAAA,CAAWa,OAA/B,EAAwCN,YAAA,CAAaM,OAArD,CAAP,CAFwF;AAAA,CA3I5F;AAgJA,SAASO,wBAAT,CAAkCpB,UAAlC,EAA8CO,YAA9C,EAA4DtoB,KAA5D,EAAmE;AAAA;AAE/D,IAAA,IAAIkoB,OAAA,CAAQloB,KAAR,CAAA,KAAmB,QAAvB;AAAA,QAAiC,OAAO4pB,UAAA,CAAS7B,UAAA,CAAWa,OAApB,EAA6BN,YAAA,CAAaM,OAA1C,CAAP,CAF8B;AAAA,IAG/D,MAAMxoB,CAAA,GAAI2nB,UAAA,CAAWnd,KAAX,CAAiBpQ,MAA3B,CAH+D;AAAA,IAI/D,IAAI4F,CAAA,KAAM,CAAV;AAAA,QAAa,OAAO2nB,UAAA,CAAWnd,KAAX,CAAiB,CAAjB,CAAA,CAAoB,CAApB,CAAP,CAJkD;AAAA,IAK/D,IAAI5K,KAAA,IAAS+nB,UAAA,CAAWnd,KAAX,CAAiB,CAAjB,CAAoB,CAAA,CAApB,CAAb;AAAA,QAAqC,OAAOmd,UAAA,CAAWnd,KAAX,CAAiB,CAAjB,CAAA,CAAoB,CAApB,CAAP,CAL0B;AAAA,IAM/D,IAAI5K,KAAA,IAAS+nB,UAAA,CAAWnd,KAAX,CAAiBxK,CAAA,GAAI,CAArB,CAAwB,CAAA,CAAxB,CAAb;AAAA,QAAyC,OAAO2nB,UAAA,CAAWnd,KAAX,CAAiBxK,CAAA,GAAI,CAArB,CAAA,CAAwB,CAAxB,CAAP,CANsB;AAAA,IAQ/D,MAAMpF,KAAA,GAAQyiB,yBAAA,CAA0BsK,UAAA,CAAWnd,KAAX,CAAiBxO,GAAjB,CAAsBiP,IAAD,IAAUA,IAAA,CAAK,CAAL,CAA/B,CAA1B,EAAmErL,KAAnE,CAAd,CAR+D;AAAA,IAU/D,OAAO+nB,UAAA,CAAWnd,KAAX,CAAiB5P,KAAjB,CAAA,CAAwB,CAAxB,CAAP,CAV+D;AAAA,CAhJnE;AA6JA,SAASkuB,2BAAT,CAAqCnB,UAArC,EAAiDO,YAAjD,EAA+DtoB,KAA/D,EAAsE;AAAA,IAClE,MAAM7C,IAAA,GAAO4qB,UAAA,CAAW5qB,IAAX,KAAoBtD,SAApB,GAAgCkuB,UAAA,CAAW5qB,IAA3C,GAAkD,CAA/D,CADkE;AAAA;AAIlE,IAAA,IAAI+qB,OAAA,CAAQloB,KAAR,CAAA,KAAmB,QAAvB;AAAA,QAAiC,OAAO4pB,UAAA,CAAS7B,UAAA,CAAWa,OAApB,EAA6BN,YAAA,CAAaM,OAA1C,CAAP,CAJiC;AAAA,IAKlE,MAAMxoB,CAAA,GAAI2nB,UAAA,CAAWnd,KAAX,CAAiBpQ,MAA3B,CALkE;AAAA,IAMlE,IAAI4F,CAAA,KAAM,CAAV;AAAA,QAAa,OAAO2nB,UAAA,CAAWnd,KAAX,CAAiB,CAAjB,CAAA,CAAoB,CAApB,CAAP,CANqD;AAAA,IAOlE,IAAI5K,KAAA,IAAS+nB,UAAA,CAAWnd,KAAX,CAAiB,CAAjB,CAAoB,CAAA,CAApB,CAAb;AAAA,QAAqC,OAAOmd,UAAA,CAAWnd,KAAX,CAAiB,CAAjB,CAAA,CAAoB,CAApB,CAAP,CAP6B;AAAA,IAQlE,IAAI5K,KAAA,IAAS+nB,UAAA,CAAWnd,KAAX,CAAiBxK,CAAA,GAAI,CAArB,CAAwB,CAAA,CAAxB,CAAb;AAAA,QAAyC,OAAO2nB,UAAA,CAAWnd,KAAX,CAAiBxK,CAAA,GAAI,CAArB,CAAA,CAAwB,CAAxB,CAAP,CARyB;AAAA,IAUlE,MAAMpF,KAAA,GAAQyiB,yBAAA,CAA0BsK,UAAA,CAAWnd,KAAX,CAAiBxO,GAAjB,CAAsBiP,IAAD,IAAUA,IAAA,CAAK,CAAL,CAA/B,CAA1B,EAAmErL,KAAnE,CAAd,CAVkE;AAAA,IAWlE,MAAMU,CAAA,GAAImhB,mBAAA,CACN7hB,KADM,EACC7C,IADD,EAEN4qB,UAAA,CAAWnd,KAAX,CAAiB5P,KAAjB,CAAwB,CAAA,CAAxB,CAFM,EAGN+sB,UAAA,CAAWnd,KAAX,CAAiB5P,KAAA,GAAQ,CAAzB,CAAA,CAA4B,CAA5B,CAHM,CAAV,CAXkE;AAAA,IAgBlE,MAAMmnB,WAAA,GAAc4F,UAAA,CAAWnd,KAAX,CAAiB5P,KAAjB,CAAA,CAAwB,CAAxB,CAApB,CAhBkE;AAAA,IAiBlE,MAAMonB,WAAA,GAAc2F,UAAA,CAAWnd,KAAX,CAAiB5P,KAAA,GAAQ,CAAzB,CAA4B,CAAA,CAA5B,CAApB,CAjBkE;AAAA,IAkBlE,IAAI+uB,MAAA,GAASvI,WAAA,CAAY8G,YAAA,CAAahqB,IAAzB,CAAkC8pB,IAAAA,gBAA/C,CAlBkE;AAAA;AAoBlE,IAAIL,IAAAA,UAAA,CAAWc,UAAX,IAAyBd,UAAA,CAAWc,UAAX,KAA0B,KAAvD,EAA8D;AAAA,QAC1D,MAAMmB,UAAA,GAAalB,WAAA,CAAYf,UAAA,CAAWc,UAAvB,CAAnB,CAD0D;AAAA;AAE1D,QAAAkB,MAAA,GAAS,CAAC/Z,CAAD,EAAID,CAAJ,KAAUia,UAAA,CAAW7e,OAAX,CAAmB6e,UAAA,CAAWxI,WAAX,CAAuBwI,UAAA,CAAWzI,OAAX,CAAmBvR,CAAnB,CAAvB,EAA8Cga,UAAA,CAAWzI,OAAX,CAAmBxR,CAAnB,CAA9C,EAAqErP,CAArE,CAAnB,CAAnB,CAF0D;AAAA,KApBI;AAAA,IAyBlE,IAAI,OAAOyhB,WAAA,CAAYjP,QAAnB,KAAgC,UAApC,EAAgD;AAAA,QAC5C,OAAO;AAAA,YACHA,QAAA,CAAS,GAAA,IAAT,EAAkB;AAAA,gBACd,MAAM+W,cAAA,GAAiB9H,WAAA,CAAYjP,QAAZ,CAAqBgX,KAArB,CAA2BrwB,SAA3B,EAAsCkZ,IAAtC,CAAvB,CADc;AAAA,gBAEd,MAAMoX,cAAA,GAAiB/H,WAAA,CAAYlP,QAAZ,CAAqBgX,KAArB,CAA2BrwB,SAA3B,EAAsCkZ,IAAtC,CAAvB,CAFc;AAAA;AAId,gBAAA,IAAIkX,cAAA,KAAmBpwB,SAAnB,IAAgCswB,cAAA,KAAmBtwB,SAAvD,EAAkE;AAAA,oBAC9D,OAAOA,SAAP,CAD8D;AAAA,iBAJpD;AAAA,gBAOd,OAAOkwB,MAAA,CAAOE,cAAP,EAAuBE,cAAvB,EAAuCzpB,CAAvC,CAAP,CAPc;AAAA,aADf;AAAA,SAAP,CAD4C;AAAA,KAzBkB;AAAA,IAuClE,OAAOqpB,MAAA,CAAO5H,WAAP,EAAoBC,WAApB,EAAiC1hB,CAAjC,CAAP,CAvCkE;AAAA,CA7JtE;AAuMA,SAAS4oB,wBAAT,CAAkCvB,UAAlC,EAA8CO,YAA9C,EAA4DtoB,KAA5D,EAAmE;AAAA,IAC/D,IAAIsoB,YAAA,CAAahqB,IAAb,KAAsB,OAA1B,EAAmC;AAAA,QAC/B0B,KAAA,GAAQ4P,OAAA,CAAM/U,KAAN,CAAYmF,KAAZ,CAAR,CAD+B;AAAA,KAAnC,MAEO,IAAIsoB,YAAA,CAAahqB,IAAb,KAAsB,WAA1B,EAAuC;AAAA,QAC1C0B,KAAA,GAAQ8R,SAAA,CAAUE,UAAV,CAAqBhS,KAAA,CAAM4N,QAAN,EAArB,CAAR,CAD0C;AAAA,KAAvC,MAEA,IAAI0a,YAAA,CAAahqB,IAAb,KAAsB,eAA1B,EAA2C;AAAA,QAC9C0B,KAAA,GAAQuS,aAAA,CAAcP,UAAd,CAAyBhS,KAAA,CAAM4N,QAAN,EAAzB,CAAR,CAD8C;AAAA,KAA3C,MAEA,IAAIsa,OAAA,CAAQloB,KAAR,MAAmBsoB,YAAA,CAAahqB,IAAhC,KAAyCgqB,YAAA,CAAahqB,IAAb,KAAsB,MAAtB,IAAgC,CAACgqB,YAAA,CAAa8B,MAAb,CAAoBpqB,KAApB,CAAjC,CAA7C,EAA2G;AAAA,QAC9GA,KAAA,GAAQnG,SAAR,CAD8G;AAAA,KAPnD;AAAA,IAU/D,OAAO+vB,UAAA,CAAS5pB,KAAT,EAAgB+nB,UAAA,CAAWa,OAA3B,EAAoCN,YAAA,CAAaM,OAAjD,CAAP,CAV+D;AAAA,CAvMnE;AA0PA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS/G,mBAAT,CAA6B7hB,KAA7B,EAAoC7C,IAApC,EAA0CklB,UAA1C,EAAsDC,UAAtD,EAAkE;AAAA,IAC9D,MAAMC,UAAA,GAAaD,UAAA,GAAaD,UAAhC,CAD8D;AAAA,IAE9D,MAAMG,QAAA,GAAWxiB,KAAA,GAAQqiB,UAAzB,CAF8D;AAAA,IAI9D,IAAIE,UAAA,KAAe,CAAnB,EAAsB;AAAA,QAClB,OAAO,CAAP,CADkB;AAAA,KAAtB,MAEO,IAAIplB,IAAA,KAAS,CAAb,EAAgB;AAAA,QACnB,OAAOqlB,QAAA,GAAWD,UAAlB,CADmB;AAAA,KAAhB,MAEA;AAAA,QACH,OAAQ,CAAAtkB,IAAA,CAAK2a,GAAL,CAASzb,IAAT,EAAeqlB,QAAf,CAAA,GAA2B,CAA3B,KAAiCvkB,IAAA,CAAK2a,GAAL,CAASzb,IAAT,EAAeolB,UAAf,CAAA,GAA6B,CAA7B,CAAzC,CADG;AAAA,KARuD;AAAA;;ACvM3D,MAAM8H,eAAN,CAAsB;AAAA,IAQzB/d,WAAA,CAAYK,UAAZ,EAAoC2b,YAApC,EAA+E;AAAA,QAC3E,IAAK3b,CAAAA,UAAL,GAAkBA,UAAlB,CAD2E;AAAA,QAE3E,IAAK2d,CAAAA,eAAL,GAAuB,EAAvB,CAF2E;AAAA,QAG3E,KAAKC,UAAL,GAAkB,IAAIrV,mBAAJ,EAAlB,CAH2E;AAAA,QAI3E,IAAA,CAAKsV,aAAL,GAAqBlC,YAAA,GAAemC,eAAA,CAAgBnC,YAAhB,CAAf,GAA+C,IAApE,CAJ2E;AAAA,QAK3E,KAAKoC,WAAL,GAAmBpC,YAAA,IAAgBA,YAAA,CAAahqB,IAAb,KAAsB,MAAtC,GAA+CgqB,YAAA,CAAa8B,MAA5D,GAAqE,IAAxF,CAL2E;AAAA,KARtD;AAAA,IAgBzBO,4BAAA,CAA6BxV,OAA7B,EAAwDC,OAAxD,EAA2EC,YAA3E,EAAwGG,SAAxG,EAAqIjB,eAArI,EAAsKe,gBAAtK,EAA2MG,gBAA3M,EAAqOC,mBAArO,EAAqR;AAAA,QACjR,KAAK6U,UAAL,CAAgBpV,OAAhB,GAA0BA,OAA1B,CADiR;AAAA,QAEjR,KAAKoV,UAAL,CAAgBnV,OAAhB,GAA0BA,OAA1B,CAFiR;AAAA,QAGjR,KAAKmV,UAAL,CAAgBlV,YAAhB,GAA+BA,YAA/B,CAHiR;AAAA,QAIjR,IAAA,CAAKkV,UAAL,CAAgB/U,SAAhB,GAA4BA,SAAA,IAAa,IAAzC,CAJiR;AAAA,QAKjR,IAAA,CAAK+U,UAAL,CAAgBhW,eAAhB,GAAkCA,eAAA,IAAmB,IAArD,CALiR;AAAA,QAMjR,KAAKgW,UAAL,CAAgBjV,gBAAhB,GAAmCA,gBAAnC,CANiR;AAAA,QAOjR,IAAA,CAAKiV,UAAL,CAAgB9U,gBAAhB,GAAmCA,gBAAA,IAAoB,IAAvD,CAPiR;AAAA,QAQjR,IAAA,CAAK8U,UAAL,CAAgB7U,mBAAhB,GAAsCA,mBAAA,IAAuB,IAA7D,CARiR;AAAA,QAUjR,OAAO,KAAK/I,UAAL,CAAgBuG,QAAhB,CAAyB,IAAA,CAAKqX,UAA9B,CAAP,CAViR;AAAA,KAhB5P;AAAA,IA6BzBrX,QAAA,CAASiC,OAAT,EAAoCC,OAApC,EAAuDC,YAAvD,EAAoFG,SAApF,EAAiHjB,eAAjH,EAAkJe,gBAAlJ,EAAuLG,gBAAvL,EAAiNC,mBAAjN,EAAiQ;AAAA,QAC7P,KAAK6U,UAAL,CAAgBpV,OAAhB,GAA0BA,OAA1B,CAD6P;AAAA,QAE7P,IAAA,CAAKoV,UAAL,CAAgBnV,OAAhB,GAA0BA,OAAA,IAAW,IAArC,CAF6P;AAAA,QAG7P,IAAA,CAAKmV,UAAL,CAAgBlV,YAAhB,GAA+BA,YAAA,IAAgB,IAA/C,CAH6P;AAAA,QAI7P,IAAA,CAAKkV,UAAL,CAAgB/U,SAAhB,GAA4BA,SAAA,IAAa,IAAzC,CAJ6P;AAAA,QAK7P,IAAA,CAAK+U,UAAL,CAAgBhW,eAAhB,GAAkCA,eAAA,IAAmB,IAArD,CAL6P;AAAA,QAM7P,IAAA,CAAKgW,UAAL,CAAgBjV,gBAAhB,GAAmCA,gBAAA,IAAoB,IAAvD,CAN6P;AAAA,QAO7P,IAAA,CAAKiV,UAAL,CAAgB9U,gBAAhB,GAAmCA,gBAAA,IAAoB,IAAvD,CAP6P;AAAA,QAQ7P,IAAA,CAAK8U,UAAL,CAAgB7U,mBAAhB,GAAsCA,mBAAA,IAAuB,IAA7D,CAR6P;AAAA,QAU7P,IAAI;AAAA,YACA,MAAMyS,GAAA,GAAM,IAAKxb,CAAAA,UAAL,CAAgBuG,QAAhB,CAAyB,IAAA,CAAKqX,UAA9B,CAAZ,CADA;AAAA;AAGA,YAAA,IAAIpC,GAAA,KAAQ,IAAR,IAAgBA,GAAA,KAAQtuB,SAAxB,IAAsC,OAAOsuB,GAAP,KAAe,QAAf,IAA2BA,GAAA,KAAQA,GAA7E,EAAmF;AAAA,gBAC/E,OAAO,IAAKqC,CAAAA,aAAZ,CAD+E;AAAA,aAHnF;AAAA,YAMA,IAAI,IAAKE,CAAAA,WAAL,IAAoB,EAAEvC,GAAA,IAAO,IAAA,CAAKuC,WAAZ,CAA1B,EAAoD;AAAA,gBAChD,MAAM,IAAIrX,cAAJ,CAAiB,CAAC,4BAAD,GAA+B9X,MAAA,CAAOD,IAAP,CAAY,IAAA,CAAKovB,WAAjB,CAA8BtuB,CAAAA,GAA9B,CAAkC2G,CAAA,IAAKnJ,IAAA,CAAKJ,SAAL,CAAeuJ,CAAf,CAAvC,CAA0DpH,CAAAA,IAA1D,CAA+D,IAA/D,CAA/B,EAAoG,YAApG,GAAkH/B,IAAA,CAAKJ,SAAL,CAAe2uB,GAAf,CAAlH,EAAsI,SAAtI,CAAjB,CAAN,CADgD;AAAA,aANpD;AAAA,YASA,OAAOA,GAAP,CATA;AAAA,SAAJ,CAUE,OAAOxY,CAAP,EAAU;AAAA,YACR,IAAI,CAAC,IAAK2a,CAAAA,eAAL,CAAqB3a,CAAA,CAAEpD,OAAvB,CAAL,EAAsC;AAAA,gBAClC,IAAA,CAAK+d,eAAL,CAAqB3a,CAAA,CAAEpD,OAAvB,CAAA,GAAkC,IAAlC,CADkC;AAAA,gBAElC,IAAI,OAAOqe,OAAP,KAAmB,WAAvB,EAAoC;AAAA,oBAChCA,OAAA,CAAQC,IAAR,CAAalb,CAAA,CAAEpD,OAAf,CADgC,CAAA;AAAA,iBAFF;AAAA,aAD9B;AAAA,YAOR,OAAO,IAAKie,CAAAA,aAAZ,CAPQ;AAAA,SApBiP;AAAA,KA7BxO;AAAA,CAnD7B;AAgHO,SAASM,YAAT,CAAsBne,UAAtB,EAAkD;AAAA,IACrD,OAAOxR,KAAA,CAAMC,OAAN,CAAcuR,UAAd,CAAA,IAA6BA,UAAA,CAAWnS,MAAX,GAAoB,CAAjD,IACH,OAAOmS,UAAA,CAAW,CAAX,CAAP,KAAyB,QADtB,IACkCA,UAAA,CAAW,CAAX,CAAiBgK,IAAAA,WAD1D,CADqD;AAAA,CAhHzD;AA8HA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAASoU,gBAAT,CAA0Bpe,UAA1B,EAA6C2b,YAA7C,EAAsI;AAAA,IACzI,MAAM0C,MAAA,GAAS,IAAI/T,gBAAJ,CAAmBN,WAAnB,EAAgC,EAAhC,EAAoC2R,YAAA,GAAe2C,eAAA,CAAgB3C,YAAhB,CAAf,GAA+CzuB,SAAnF,CAAf,CADyI;AAAA;AAIzI,IAAA,MAAM8Z,MAAA,GAASqX,MAAA,CAAOnwB,KAAP,CAAa8R,UAAb,EAAyB9S,SAAzB,EAAoCA,SAApC,EAA+CA,SAA/C,EACXyuB,YAAA,IAAgBA,YAAA,CAAahqB,IAAb,KAAsB,QAAtC,GAAiD,EAAC4e,cAAA,EAAgB,QAAjB,EAAjD,GAA8ErjB,SADnE,CAAf,CAJyI;AAAA,IAOzI,IAAI,CAAC8Z,MAAL,EAAa;AAAA,QAET,OAAOtV,KAAA,CAAM2sB,MAAA,CAAOltB,MAAb,CAAP,CAFS;AAAA,KAP4H;AAAA,IAYzI,OAAO6pB,OAAA,CAAQ,IAAI0C,eAAJ,CAAoB1W,MAApB,EAA4B2U,YAA5B,CAAR,CAAP,CAZyI;AAAA,CA9H7I;AA6IO,MAAM4C,sBAAN,CAAmD;AAAA,IAKtD5e,WAAA,CAAYS,IAAZ,EAAwBJ,UAAxB,EAAqD;AAAA,QACjD,IAAKI,CAAAA,IAAL,GAAYA,IAAZ,CADiD;AAAA,QAEjD,IAAKoe,CAAAA,gBAAL,GAAwBxe,UAAxB,CAFiD;AAAA,QAGjD,KAAKye,gBAAL,GAAwBre,IAAA,KAAU,UAAV,IAAyC,CAACsQ,eAAA,CAA2B1Q,UAAA,CAAWA,UAAtC,CAAlE,CAHiD;AAAA,KALC;AAAA,IAWtDge,4BAAA,CAA6BxV,OAA7B,EAAwDC,OAAxD,EAA2EC,YAA3E,EAAwGG,SAAxG,EAAqIjB,eAArI,EAAsKe,gBAAtK,EAAgN;AAAA,QAC5M,OAAO,IAAK6V,CAAAA,gBAAL,CAAsBR,4BAAtB,CAAmDxV,OAAnD,EAA4DC,OAA5D,EAAqEC,YAArE,EAAmFG,SAAnF,EAA8FjB,eAA9F,EAA+Ge,gBAA/G,CAAP,CAD4M;AAAA,KAX1J;AAAA,IAetDpC,QAAA,CAASiC,OAAT,EAAoCC,OAApC,EAAuDC,YAAvD,EAAoFG,SAApF,EAAiHjB,eAAjH,EAAkJe,gBAAlJ,EAA4L;AAAA,QACxL,OAAO,IAAK6V,CAAAA,gBAAL,CAAsBjY,QAAtB,CAA+BiC,OAA/B,EAAwCC,OAAxC,EAAiDC,YAAjD,EAA+DG,SAA/D,EAA0EjB,eAA1E,EAA2Fe,gBAA3F,CAAP,CADwL;AAAA,KAftI;AAAA,CA7I1D;AAiKO,MAAM+V,uBAAN,CAAoD;AAAA,IAQvD/e,WAAA,CAAYS,IAAZ,EAAwBJ,UAAxB,EAAqD6c,SAArD,EAA+EE,iBAA/E,EAAsH;AAAA,QAClH,IAAK3c,CAAAA,IAAL,GAAYA,IAAZ,CADkH;AAAA,QAElH,IAAKyc,CAAAA,SAAL,GAAiBA,SAAjB,CAFkH;AAAA,QAGlH,IAAK2B,CAAAA,gBAAL,GAAwBxe,UAAxB,CAHkH;AAAA,QAIlH,KAAKye,gBAAL,GAAwBre,IAAA,KAAU,QAAV,IAAuC,CAACsQ,eAAA,CAA2B1Q,UAAA,CAAWA,UAAtC,CAAhE,CAJkH;AAAA,QAKlH,IAAK+c,CAAAA,iBAAL,GAAyBA,iBAAzB,CALkH;AAAA,KAR/D;AAAA,IAgBvDiB,4BAAA,CAA6BxV,OAA7B,EAAwDC,OAAxD,EAA2EC,YAA3E,EAAwGG,SAAxG,EAAqIjB,eAArI,EAAsKe,gBAAtK,EAAgN;AAAA,QAC5M,OAAO,IAAK6V,CAAAA,gBAAL,CAAsBR,4BAAtB,CAAmDxV,OAAnD,EAA4DC,OAA5D,EAAqEC,YAArE,EAAmFG,SAAnF,EAA8FjB,eAA9F,EAA+Ge,gBAA/G,CAAP,CAD4M;AAAA,KAhBzJ;AAAA,IAoBvDpC,QAAA,CAASiC,OAAT,EAAoCC,OAApC,EAAuDC,YAAvD,EAAoFG,SAApF,EAAiHjB,eAAjH,EAAkJe,gBAAlJ,EAA4L;AAAA,QACxL,OAAO,IAAK6V,CAAAA,gBAAL,CAAsBjY,QAAtB,CAA+BiC,OAA/B,EAAwCC,OAAxC,EAAiDC,YAAjD,EAA+DG,SAA/D,EAA0EjB,eAA1E,EAA2Fe,gBAA3F,CAAP,CADwL;AAAA,KApBrI;AAAA,IAwBvDuM,mBAAA,CAAoB7hB,KAApB,EAAmC8hB,KAAnC,EAAkDC,KAAlD,EAAyE;AAAA,QACrE,IAAI,IAAK2H,CAAAA,iBAAT,EAA4B;AAAA,YACxB,OAAOhI,aAAA,CAAYG,mBAAZ,CAAgC,IAAK6H,CAAAA,iBAArC,EAAwD1pB,KAAxD,EAA+D8hB,KAA/D,EAAsEC,KAAtE,CAAP,CADwB;AAAA,SAA5B,MAEO;AAAA,YACH,OAAO,CAAP,CADG;AAAA,SAH8D;AAAA,KAxBlB;AAAA,CAjK3D;AAoOO,SAASuJ,wBAAT,CAAkC3e,UAAlC,EAAqD2b,YAArD,EAAqJ;AAAA,IACxJ3b,UAAA,GAAaoe,gBAAA,CAAiBpe,UAAjB,EAA6B2b,YAA7B,CAAb,CADwJ;AAAA,IAExJ,IAAI3b,UAAA,CAAW7Q,MAAX,KAAsB,OAA1B,EAAmC;AAAA,QAC/B,OAAO6Q,UAAP,CAD+B;AAAA,KAFqH;AAAA,IAMxJ,MAAMgH,MAAA,GAAShH,UAAA,CAAWjR,KAAX,CAAiBiR,UAAhC,CANwJ;AAAA,IAQxJ,MAAM+P,mBAAA,GAAoBW,iBAAA,CAA6B1J,MAA7B,CAA1B,CARwJ;AAAA,IASxJ,IAAI,CAAC+I,mBAAD,IAAsB,CAACkL,0BAAA,CAA2BU,YAA3B,CAA3B,EAAqE;AAAA,QACjE,OAAOjqB,KAAA,CAAM,CAAC,IAAIgO,cAAJ,CAAiB,EAAjB,EAAqB,gCAArB,CAAD,CAAN,CAAP,CADiE;AAAA,KATmF;AAAA,IAaxJ,MAAMkf,cAAA,GAAiBlO,wBAAA,CAAoC1J,MAApC,EAA4C;AAAA,QAAC,MAAD;AAAA,QAAS,OAAT;AAAA,QAAkB,sBAAlB;AAAA,KAA5C,CAAvB,CAbwJ;AAAA,IAcxJ,IAAI,CAAC4X,cAAD,IAAmB,CAACzD,sBAAA,CAAuBQ,YAAvB,CAAxB,EAA8D;AAAA,QAC1D,OAAOjqB,KAAA,CAAM,CAAC,IAAIgO,cAAJ,CAAiB,EAAjB,EAAqB,gCAArB,CAAD,CAAN,CAAP,CAD0D;AAAA,KAd0F;AAAA,IAkBxJ,MAAMmf,SAAA,GAAYC,aAAA,CAAc9X,MAAd,CAAlB,CAlBwJ;AAAA,IAmBxJ,IAAI,CAAC6X,SAAD,IAAc,CAACD,cAAnB,EAAmC;AAAA,QAC/B,OAAOltB,KAAA,CAAM,CAAC,IAAIgO,cAAJ,CAAiB,EAAjB,EAAqB,gGAArB,CAAD,CAAN,CAAP,CAD+B;AAAA,KAAnC,MAEO,IAAImf,SAAA,YAAqBnf,cAAzB,EAAuC;AAAA,QAC1C,OAAOhO,KAAA,CAAM,CAACmtB,SAAD,CAAN,CAAP,CAD0C;AAAA,KAAvC,MAEA,IAAIA,SAAA,YAAqB9J,aAArB,IAAoC,CAACsG,qBAAA,CAAsBM,YAAtB,CAAzC,EAA8E;AAAA,QACjF,OAAOjqB,KAAA,CAAM,CAAC,IAAIgO,cAAJ,CAAiB,EAAjB,EAAqB,6DAArB,CAAD,CAAN,CAAP,CADiF;AAAA,KAvBmE;AAAA,IA2BxJ,IAAI,CAACmf,SAAL,EAAgB;AAAA,QACZ,OAAO7D,OAAA,CAAQjL,mBAAA,GACV,IAAIwO,sBAAJ,CAA2B,UAA3B,EAAuCve,UAAA,CAAWjR,KAAlD,CADU,GAEV,IAAIwvB,sBAAJ,CAA2B,QAA3B,EAAqCve,UAAA,CAAWjR,KAAhD,CAFE,CAAP,CADY;AAAA,KA3BwI;AAAA,IAiCxJ,MAAMguB,iBAAA,GAAoB8B,SAAA,YAAqB9J,aAArB,GAAmC8J,SAAA,CAAU5J,aAA7C,GAA6D/nB,SAAvF,CAjCwJ;AAAA,IAmCxJ,OAAO8tB,OAAA,CAAQjL,mBAAA,GACV,IAAI2O,uBAAJ,CAA4B,QAA5B,EAAsC1e,UAAA,CAAWjR,KAAjD,EAAwD8vB,SAAA,CAAU3sB,MAAlE,EAA0E6qB,iBAA1E,CADU,GAEV,IAAI2B,uBAAJ,CAA4B,WAA5B,EAAyC1e,UAAA,CAAWjR,KAApD,EAA2D8vB,SAAA,CAAU3sB,MAArE,EAA6E6qB,iBAA7E,CAFE,CAAP,CAnCwJ;AAAA,CApO5J;AAiRA;AAAA;AAAO,MAAMgC,qBAAN,CAA+B;AAAA,IASlCpf,WAAA,CAAYyb,UAAZ,EAAuD4D,aAAvD,EAAkG;AAAA,QAC9F,IAAKC,CAAAA,WAAL,GAAmB7D,UAAnB,CAD8F;AAAA,QAE9F,IAAK8D,CAAAA,cAAL,GAAsBF,aAAtB,CAF8F;AAAA,QAG9FhD,MAAA,CAAO,IAAP,EAAaN,cAAA,CAAe,IAAKuD,CAAAA,WAApB,EAAiC,IAAA,CAAKC,cAAtC,CAAb,CAH8F,CAAA;AAAA,KAThE;AAAA,IAelC,OAAOC,WAAP,CAAmBxZ,UAAnB,EAAmJ;AAAA,QAC/I,OAAO,IAAIoZ,qBAAJ,CAA0BpZ,UAAA,CAAWsZ,WAArC,EAAkDtZ,UAAA,CAAWuZ,cAA7D,CAAP,CAD+I;AAAA,KAfjH;AAAA,IAmBlC,OAAOxZ,SAAP,CAAiBrS,KAAjB,EAA4I;AAAA,QACxI,OAAO;AAAA,YACH4rB,WAAA,EAAa5rB,KAAA,CAAM4rB,WADhB;AAAA,YAEHC,cAAA,EAAgB7rB,KAAA,CAAM6rB,cAFnB;AAAA,SAAP,CADwI;AAAA,KAnB1G;AAAA,CAjRtC;AA4SO,SAASE,2BAAT,CAAwCrwB,KAAxC,EAA8EiwB,aAA9E,EAAkJ;AAAA,IACrJ,IAAIhhB,UAAA,CAAWjP,KAAX,CAAJ,EAAuB;AAAA,QACnB,OAAQ,IAAIgwB,qBAAJ,CAA0BhwB,KAA1B,EAAiCiwB,aAAjC,CAAR,CADmB;AAAA,KAAvB,MAGO,IAAIb,YAAA,CAAapvB,KAAb,CAAJ,EAAyB;AAAA,QAC5B,MAAMiR,UAAA,GAAa2e,wBAAA,CAAyB5vB,KAAzB,EAAgCiwB,aAAhC,CAAnB,CAD4B;AAAA,QAE5B,IAAIhf,UAAA,CAAW7Q,MAAX,KAAsB,OAA1B,EAAmC;AAAA;AAE/B,YAAA,MAAM,IAAI+P,KAAJ,CAAUc,UAAA,CAAWjR,KAAX,CAAiBU,GAAjB,CAAqB4vB,GAAA,IAAO,CAAA,GAAGA,GAAA,CAAIxwB,GAAP,EAAW,EAAX,GAAewwB,GAAA,CAAIzf,OAAnB,EAAA,CAA5B,CAA0D5Q,CAAAA,IAA1D,CAA+D,IAA/D,CAAV,CAAN,CAF+B;AAAA,SAFP;AAAA,QAM5B,OAAOgR,UAAA,CAAWjR,KAAlB,CAN4B;AAAA,KAAzB,MAQA;AAAA,QACH,IAAIuwB,QAAA,GAAgBvwB,KAApB,CADG;AAAA,QAEH,IAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6BiwB,aAAA,CAAcrtB,IAAd,KAAuB,OAAxD,EAAiE;AAAA,YAC7D2tB,QAAA,GAAWrc,OAAA,CAAM/U,KAAN,CAAYa,KAAZ,CAAX,CAD6D;AAAA,SAF9D;AAAA,QAKH,OAAO;AAAA,YACHqR,IAAA,EAAM,UADH;AAAA,YAEHmG,QAAA,EAAU,MAAM+Y,QAFb;AAAA,SAAP,CALG;AAAA,KAZ8I;AAAA,CA5SzJ;AAuUA;AAAA;AAAA;AAAA,SAASR,aAAT,CAAuB9e,UAAvB,EAAyF;AAAA,IACrF,IAAI7Q,MAAA,GAAS,IAAb,CADqF;AAAA,IAErF,IAAI6Q,UAAA,YAAsBkW,KAA1B,EAA+B;AAAA,QAC3B/mB,MAAA,GAAS2vB,aAAA,CAAc9e,UAAA,CAAW7Q,MAAzB,CAAT,CAD2B;AAAA,KAA/B,MAGO,IAAI6Q,UAAA,YAAsB8V,UAA1B,EAAoC;AAAA,QACvC,WAAW5gB,GAAX,IAAkB8K,UAAA,CAAWoG,IAA7B,EAAmC;AAAA,YAC/BjX,MAAA,GAAS2vB,aAAA,CAAc5pB,GAAd,CAAT,CAD+B;AAAA,YAE/B,IAAI/F,MAAJ,EAAY;AAAA,gBACR,MADQ;AAAA,aAFmB;AAAA,SADI;AAAA,KAApC,MAQA,IAAK,CAAA6Q,UAAA,YAAsBoR,MAAtB,IAA8BpR,UAAA,YAAsB+U,aAApD,KACR/U,UAAA,CAAW3M,KAAX,YAA4BwW,oBADrB,IAEP7J,UAAA,CAAW3M,KAAX,CAAiBoD,IAAjB,KAA0B,MAFvB,EAE+B;AAAA,QAElCtH,MAAA,GAAS6Q,UAAT,CAFkC;AAAA,KAf+C;AAAA,IAoBrF,IAAI7Q,MAAA,YAAkBuQ,cAAtB,EAAoC;AAAA,QAChC,OAAOvQ,MAAP,CADgC;AAAA,KApBiD;AAAA,IAwBrF6Q,UAAA,CAAWwG,SAAX,CAAsB6B,KAAD,IAAW;AAAA,QAC5B,MAAMkX,WAAA,GAAcT,aAAA,CAAczW,KAAd,CAApB,CAD4B;AAAA,QAE5B,IAAIkX,WAAA,YAAuB7f,cAA3B,EAAyC;AAAA,YACrCvQ,MAAA,GAASowB,WAAT,CADqC;AAAA,SAAzC,MAEO,IAAI,CAACpwB,MAAD,IAAWowB,WAAf,EAA4B;AAAA,YAC/BpwB,MAAA,GAAS,IAAIuQ,cAAJ,CAAiB,EAAjB,EAAqB,gGAArB,CAAT,CAD+B;AAAA,SAA5B,MAEA,IAAIvQ,MAAA,IAAUowB,WAAV,IAAyBpwB,MAAA,KAAWowB,WAAxC,EAAqD;AAAA,YACxDpwB,MAAA,GAAS,IAAIuQ,cAAJ,CAAiB,EAAjB,EAAqB,yFAArB,CAAT,CADwD;AAAA,SANhC;AAAA,KAAhC,CAxBqF,CAAA;AAAA,IAmCrF,OAAOvQ,MAAP,CAnCqF;AAAA,CAvUzF;AA+WA,SAASmvB,eAAT,CAAyBpD,IAAzB,EAAiE;AAAA,IAC7D,MAAMvU,KAAA,GAAQ;AAAA,QACVqM,KAAA,EAAOxS,SADG;AAAA,QAEV5S,MAAA,EAAQ0S,UAFE;AAAA,QAGVsG,MAAA,EAAQvG,UAHE;AAAA,QAIVmf,IAAA,EAAMlf,UAJI;AAAA,QAKVuG,OAAA,EAAStG,WALC;AAAA,QAMVkf,SAAA,EAAW5e,aAND;AAAA,QAOV6e,aAAA,EAAe5e,iBAPL;AAAA,KAAd,CAD6D;AAAA,IAW7D,IAAIoa,IAAA,CAAKvpB,IAAL,KAAc,OAAlB,EAA2B;AAAA,QACvB,OAAOE,OAAA,CAAM8U,KAAA,CAAMuU,IAAA,CAAKnsB,KAAX,CAAA,IAAqB2R,SAA3B,EAAsCwa,IAAA,CAAKrtB,MAA3C,CAAP,CADuB;AAAA,KAXkC;AAAA,IAe7D,OAAO8Y,KAAA,CAAMuU,IAAA,CAAKvpB,IAAX,CAAP,CAf6D;AAAA,CA/WjE;AAiYA,SAASmsB,eAAT,CAAyB5C,IAAzB,EAAkE;AAAA,IAC9D,IAAIA,IAAA,CAAKvpB,IAAL,KAAc,OAAd,KAA0BqM,UAAA,CAAWkd,IAAA,CAAKe,OAAhB,CAAA,IAA4BztB,KAAA,CAAMC,OAAN,CAAcysB,IAAA,CAAKe,OAAnB,CAA5B,CAA9B,EAAwF;AAAA;AAIpF;AAAA;AAAA,QAAO,OAAA,IAAIhZ,OAAJ,CAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAP,CAJoF;AAAA,KAAxF,MAKO,IAAIiY,IAAA,CAAKvpB,IAAL,KAAc,OAAlB,EAA2B;AAAA,QAC9B,OAAOsR,OAAA,CAAM/U,KAAN,CAAYgtB,IAAA,CAAKe,OAAjB,CAA6B,IAAA,IAApC,CAD8B;AAAA,KAA3B,MAEA,IAAIf,IAAA,CAAKe,OAAL,KAAiB/uB,SAArB,EAAgC;AAAA,QACnC,OAAO,IAAP,CADmC;AAAA,KAAhC,MAEA;AAAA,QACH,OAAOguB,IAAA,CAAKe,OAAZ,CADG;AAAA,KAVuD;AAAA;;AC1XlE,SAAS0D,cAAT,CAAwB5wB,KAAxB,EAA+B;AAAA,IAC3B,OAAO,OAAOA,KAAP,KAAiB,QAAjB,GAA4B;AAAA,QAAC,SAAD;AAAA,QAAYA,KAAZ;AAAA,KAA5B,GAAiDA,KAAxD,CAD2B;AAAA,CAP/B;AAWe,SAAS6wB,eAAT,CAAyBxE,UAAzB,EAA0CO,YAA1C,EAA6G;AAAA,IACxH,IAAI1d,KAAA,GAAQmd,UAAA,CAAWnd,KAAvB,CADwH;AAAA,IAExH,IAAI,CAACA,KAAL,EAAY;AAAA;AAER,QAAA,OAAO4hB,uBAAA,CAAwBzE,UAAxB,EAAoCO,YAApC,CAAP,CAFQ;AAAA,KAF4G;AAAA,IAOxH,MAAME,uBAAA,GAA0B5d,KAAA,IAAS,OAAOA,KAAA,CAAM,CAAN,CAAS,CAAA,CAAT,CAAP,KAAuB,QAAhE,CAPwH;AAAA,IAQxH,MAAM6d,gBAAA,GAAmBD,uBAAA,IAA2BT,UAAA,CAAW3c,QAAX,KAAwBvR,SAA5E,CARwH;AAAA,IASxH,MAAM6uB,aAAA,GAAgBF,uBAAA,IAA2B,CAACC,gBAAlD,CATwH;AAAA,IAWxH7d,KAAA,GAAQA,KAAA,CAAMxO,GAAN,CAAWiP,IAAD,IAAU;AAAA,QACxB,IAAI,CAACod,gBAAD,IAAqBH,YAAA,CAAamE,MAAlC,IAA4C,OAAOphB,IAAA,CAAK,CAAL,CAAP,KAAmB,QAAnE,EAA6E;AAAA,YACzE,OAAO;AAAA,gBAACA,IAAA,CAAK,CAAL,CAAD;AAAA,gBAAUqhB,kBAAA,CAAmBrhB,IAAA,CAAK,CAAL,CAAnB,CAAV;AAAA,aAAP,CADyE;AAAA,SADrD;AAAA,QAIxB,OAAO;AAAA,YAACA,IAAA,CAAK,CAAL,CAAD;AAAA,YAAUihB,cAAA,CAAejhB,IAAA,CAAK,CAAL,CAAf,CAAV;AAAA,SAAP,CAJwB;AAAA,KAApB,CAAR,CAXwH;AAAA,IAkBxH,IAAImd,uBAAJ,EAA6B;AAAA,QACzB,OAAOmE,8BAAA,CAA+B5E,UAA/B,EAA2CO,YAA3C,EAAyD1d,KAAzD,CAAP,CADyB;AAAA,KAA7B,MAEO,IAAI8d,aAAJ,EAAmB;AAAA,QACtB,OAAOkE,mBAAA,CAAoB7E,UAApB,EAAgCO,YAAhC,EAA8C1d,KAA9C,CAAP,CADsB;AAAA,KAAnB,MAEA;AAAA,QACH,OAAOiiB,uBAAA,CAAwB9E,UAAxB,EAAoCO,YAApC,EAAkD1d,KAAlD,CAAP,CADG;AAAA,KAtBiH;AAAA,CAX5H;AAsCA,SAAS4hB,uBAAT,CAAiCzE,UAAjC,EAA6CO,YAA7C,EAAyE;AAAA,IACrE,MAAM1b,GAAA,GAAM;AAAA,QAAC,KAAD;AAAA,QAAQmb,UAAA,CAAW3c,QAAnB;AAAA,KAAZ,CADqE;AAAA,IAGrE,IAAI2c,UAAA,CAAWa,OAAX,KAAuB/uB,SAA3B,EAAsC;AAAA;AAGlC;AAAA,QAAA,OAAOyuB,YAAA,CAAahqB,IAAb,KAAsB,QAAtB,GAAiC;AAAA,YAAC,QAAD;AAAA,YAAWsO,GAAX;AAAA,SAAjC,GAAmDA,GAA1D,CAHkC;AAAA,KAAtC,MAIO,IAAI0b,YAAA,CAAahqB,IAAb,KAAsB,MAA1B,EAAkC;AAAA,QACrC,OAAO;AAAA,YACH,OADG;AAAA,YAEHsO,GAFG;AAAA,YAGHrR,MAAA,CAAOD,IAAP,CAAYgtB,YAAA,CAAa8B,MAAzB,CAHG;AAAA,YAIHxd,GAJG;AAAA,YAKHmb,UAAA,CAAWa,OALR;AAAA,SAAP,CADqC;AAAA,KAAlC,MAQA;AAAA,QACH,MAAMjc,UAAA,GAAa;AAAA,YAAC2b,YAAA,CAAahqB,IAAb,KAAsB,OAAtB,GAAgC,UAAhC,GAA6CgqB,YAAA,CAAahqB,IAA3D;AAAA,YAAiEsO,GAAjE;AAAA,YAAsE0f,cAAA,CAAevE,UAAA,CAAWa,OAA1B,CAAtE;AAAA,SAAnB,CADG;AAAA,QAEH,IAAIN,YAAA,CAAahqB,IAAb,KAAsB,OAA1B,EAAmC;AAAA,YAC/BqO,UAAA,CAAW9L,MAAX,CAAkB,CAAlB,EAAqB,CAArB,EAAwBynB,YAAA,CAAa5sB,KAArC,EAA4C4sB,YAAA,CAAa9tB,MAAb,IAAuB,IAAnE,CAD+B,CAAA;AAAA,SAFhC;AAAA,QAKH,OAAOmS,UAAP,CALG;AAAA,KAf8D;AAAA,CAtCzE;AA8DA,SAASmgB,sBAAT,CAAgC/E,UAAhC,EAA4C;AAAA,IACxC,QAAQA,UAAA,CAAWc,UAAnB;AAAA,IACA,KAAK,KAAL;AAAA,QAAY,OAAO,iBAAP,CADZ;AAAA,IAEA,KAAK,KAAL;AAAA,QAAY,OAAO,iBAAP,CAFZ;AAAA,IAGA;AAAA,QAAS,OAAO,aAAP,CAHT;AAAA,KADwC;AAAA,CA9D5C;AAsEA,SAAS8D,8BAAT,CAAwC5E,UAAxC,EAAoDO,YAApD,EAAkE1d,KAAlE,EAAyE;AAAA,IACrE,MAAMmiB,yBAAA,GAA4B,EAAlC,CADqE;AAAA,IAErE,MAAMtD,oBAAA,GAAuB,EAA7B,CAFqE;AAAA,IAGrE,MAAMD,SAAA,GAAY,EAAlB,CAHqE;AAAA,IAIrE,KAAK,IAAI5hB,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIgD,KAAA,CAAMpQ,MAA1B,EAAkCoN,CAAA,EAAlC,EAAuC;AAAA,QACnC,MAAMyD,IAAA,GAAOT,KAAA,CAAMhD,CAAN,CAAb,CADmC;AAAA,QAEnC,MAAMgf,IAAA,GAAOvb,IAAA,CAAK,CAAL,CAAA,CAAQub,IAArB,CAFmC;AAAA,QAGnC,IAAImG,yBAAA,CAA0BnG,IAA1B,CAAA,KAAoC/sB,SAAxC,EAAmD;AAAA,YAC/CkzB,yBAAA,CAA0BnG,IAA1B,CAAkC,GAAA;AAAA,gBAC9BA,IAD8B;AAAA,gBAE9BtoB,IAAA,EAAMypB,UAAA,CAAWzpB,IAFa;AAAA,gBAG9B8M,QAAA,EAAU2c,UAAA,CAAW3c,QAHS;AAAA,gBAI9Bwd,OAAA,EAASb,UAAA,CAAWa,OAJU;AAAA,aAAlC,CAD+C;AAAA,YAO/Ca,oBAAA,CAAqB7C,IAArB,CAAA,GAA6B,EAA7B,CAP+C;AAAA,YAQ/C4C,SAAA,CAAUnuB,IAAV,CAAeurB,IAAf,CAR+C,CAAA;AAAA,SAHhB;AAAA,QAanC6C,oBAAA,CAAqB7C,IAArB,CAAA,CAA2BvrB,IAA3B,CAAgC;AAAA,YAACgQ,IAAA,CAAK,CAAL,CAAA,CAAQ3P,KAAT;AAAA,YAAgB2P,IAAA,CAAK,CAAL,CAAhB;AAAA,SAAhC,CAbmC,CAAA;AAAA,KAJ8B;AAAA;AAwBrE;AAAA;AAAA;AAAA,IAAM2hB,MAAAA,YAAA,GAAeC,eAAA,CAAgB,EAAhB,EAAoB3E,YAApB,CAArB,CAxBqE;AAAA,IAyBrE,IAAI0E,YAAA,KAAiB,aAArB,EAAoC;AAAA,QAChC,MAAMrgB,UAAA,GAAa;AAAA,YAACmgB,sBAAA,CAAuB/E,UAAvB,CAAD;AAAA,YAAqC,CAAC,QAAD,CAArC;AAAA,YAAiD,CAAC,MAAD,CAAjD;AAAA,SAAnB,CADgC;AAAA,QAGhC,KAAWlP,MAAAA,CAAX,IAAgB2Q,SAAhB,EAA2B;AAAA,YACvB,MAAMxqB,MAAA,GAAS6tB,uBAAA,CAAwBE,yBAAA,CAA0BlU,CAA1B,CAAxB,EAAsDyP,YAAtD,EAAoEmB,oBAAA,CAAqB5Q,CAArB,CAApE,CAAf,CADuB;AAAA,YAEvBqU,cAAA,CAAevgB,UAAf,EAA2BkM,CAA3B,EAA8B7Z,MAA9B,EAAsC,KAAtC,CAFuB,CAAA;AAAA,SAHK;AAAA,QAQhC,OAAO2N,UAAP,CARgC;AAAA,KAApC,MASO;AAAA,QACH,MAAMA,UAAA,GAAa;AAAA,YAAC,MAAD;AAAA,YAAS,CAAC,MAAD,CAAT;AAAA,SAAnB,CADG;AAAA,QAGH,KAAWkM,MAAAA,CAAX,IAAgB2Q,SAAhB,EAA2B;AAAA,YACvB,MAAMxqB,MAAA,GAAS6tB,uBAAA,CAAwBE,yBAAA,CAA0BlU,CAA1B,CAAxB,EAAsDyP,YAAtD,EAAoEmB,oBAAA,CAAqB5Q,CAArB,CAApE,CAAf,CADuB;AAAA,YAEvBqU,cAAA,CAAevgB,UAAf,EAA2BkM,CAA3B,EAA8B7Z,MAA9B,EAAsC,IAAtC,CAFuB,CAAA;AAAA,SAHxB;AAAA,QAQHmuB,wBAAA,CAAyBxgB,UAAzB,CARG,CAAA;AAAA,QAUH,OAAOA,UAAP,CAVG;AAAA,KAlC8D;AAAA,CAtEzE;AAsHA,SAASid,QAAT,CAAkB5Z,CAAlB,EAAqBD,CAArB,EAAwB;AAAA,IACpB,IAAIC,CAAA,KAAMnW,SAAV;AAAA,QAAqB,OAAOmW,CAAP,CADD;AAAA,IAEpB,IAAID,CAAA,KAAMlW,SAAV;AAAA,QAAqB,OAAOkW,CAAP,CAFD;AAAA,CAtHxB;AA2HA,SAASqd,WAAT,CAAqBrF,UAArB,EAAiCO,YAAjC,EAA+C;AAAA,IAC3C,MAAM+E,YAAA,GAAef,cAAA,CAAe1C,QAAA,CAAS7B,UAAA,CAAWa,OAApB,EAA6BN,YAAA,CAAaM,OAA1C,CAAf,CAArB,CAD2C;AAAA;AAS3C;AAAA;AAAA;AAAA;AAAA;AAAA,IAAIyE,IAAAA,YAAA,KAAiBxzB,SAAjB,IAA8ByuB,YAAA,CAAahqB,IAAb,KAAsB,eAAxD,EAAyE;AAAA,QACrE,OAAO,EAAP,CADqE;AAAA,KAT9B;AAAA,IAY3C,OAAO+uB,YAAP,CAZ2C;AAAA,CA3H/C;AA0IA,SAASR,uBAAT,CAAiC9E,UAAjC,EAA6CO,YAA7C,EAA2D1d,KAA3D,EAAkE;AAAA,IAC9D,MAAMtM,IAAA,GAAO2uB,eAAA,CAAgBlF,UAAhB,EAA4BO,YAA5B,CAAb,CAD8D;AAAA,IAE9D,MAAM1b,GAAA,GAAM;AAAA,QAAC,KAAD;AAAA,QAAQmb,UAAA,CAAW3c,QAAnB;AAAA,KAAZ,CAF8D;AAAA,IAG9D,IAAI9M,IAAA,KAAS,aAAT,IAA0B,OAAOsM,KAAA,CAAM,CAAN,CAAS,CAAA,CAAT,CAAP,KAAuB,SAArD,EAAgE;AAAA,QAE5D,MAAM+B,UAAA,GAAa,CAAC,MAAD,CAAnB,CAF4D;AAAA,QAG5D,KAAWtB,MAAAA,IAAX,IAAmBT,KAAnB,EAA0B;AAAA,YACtB+B,UAAA,CAAWtR,IAAX,CAAgB;AAAA,gBAAC,IAAD;AAAA,gBAAOuR,GAAP;AAAA,gBAAYvB,IAAA,CAAK,CAAL,CAAZ;AAAA,aAAhB,EAAsCA,IAAA,CAAK,CAAL,CAAtC,CADsB,CAAA;AAAA,SAHkC;AAAA,QAO5DsB,UAAA,CAAWtR,IAAX,CAAgB+xB,WAAA,CAAYrF,UAAZ,EAAwBO,YAAxB,CAAhB,CAP4D,CAAA;AAAA,QAQ5D,OAAO3b,UAAP,CAR4D;AAAA,KAAhE,MASO,IAAIrO,IAAA,KAAS,aAAb,EAA4B;AAAA,QAC/B,MAAMqO,UAAA,GAAa;AAAA,YAAC,OAAD;AAAA,YAAUC,GAAV;AAAA,SAAnB,CAD+B;AAAA,QAE/B,KAAWvB,MAAAA,IAAX,IAAmBT,KAAnB,EAA0B;AAAA,YACtBsiB,cAAA,CAAevgB,UAAf,EAA2BtB,IAAA,CAAK,CAAL,CAA3B,EAAoCA,IAAA,CAAK,CAAL,CAApC,EAA6C,KAA7C,CADsB,CAAA;AAAA,SAFK;AAAA,QAK/BsB,UAAA,CAAWtR,IAAX,CAAgB+xB,WAAA,CAAYrF,UAAZ,EAAwBO,YAAxB,CAAhB,CAL+B,CAAA;AAAA,QAM/B,OAAO3b,UAAP,CAN+B;AAAA,KAA5B,MAOA,IAAIrO,IAAA,KAAS,UAAb,EAAyB;AAAA,QAC5B,MAAMqO,UAAA,GAAa;AAAA,YAAC,MAAD;AAAA,YAAS;AAAA,gBAAC,QAAD;AAAA,gBAAWC,GAAX;AAAA,aAAT;AAAA,SAAnB,CAD4B;AAAA,QAE5B,KAAWvB,MAAAA,IAAX,IAAmBT,KAAnB,EAA0B;AAAA,YACtBsiB,cAAA,CAAevgB,UAAf,EAA2BtB,IAAA,CAAK,CAAL,CAA3B,EAAoCA,IAAA,CAAK,CAAL,CAApC,EAA6C,IAA7C,CADsB,CAAA;AAAA,SAFE;AAAA,QAK5B8hB,wBAAA,CAAyBxgB,UAAzB,CAL4B,CAAA;AAAA,QAM5B,OAAOob,UAAA,CAAWa,OAAX,KAAuB/uB,SAAvB,GAAmC8S,UAAnC,GAAgD;AAAA,YACnD,MADmD;AAAA,YAEnD;AAAA,gBAAC,IAAD;AAAA,gBAAO;AAAA,oBAAC,QAAD;AAAA,oBAAWC,GAAX;AAAA,iBAAP;AAAA,gBAAwB,QAAxB;AAAA,aAFmD;AAAA,YAGnDD,UAHmD;AAAA,YAInD2f,cAAA,CAAevE,UAAA,CAAWa,OAA1B,CAJmD;AAAA,SAAvD,CAN4B;AAAA,KAAzB,MAYA,IAAItqB,IAAA,KAAS,aAAb,EAA4B;AAAA,QAC/B,MAAMnB,IAAA,GAAO4qB,UAAA,CAAW5qB,IAAX,KAAoBtD,SAApB,GAAgCkuB,UAAA,CAAW5qB,IAA3C,GAAkD,CAA/D,CAD+B;AAAA,QAE/B,MAAMwP,UAAA,GAAa;AAAA,YACfmgB,sBAAA,CAAuB/E,UAAvB,CADe;AAAA,YAEf5qB,IAAA,KAAS,CAAT,GAAa,CAAC,QAAD,CAAb,GAA0B;AAAA,gBAAC,aAAD;AAAA,gBAAgBA,IAAhB;AAAA,aAFX;AAAA,YAGf;AAAA,gBAAC,QAAD;AAAA,gBAAWyP,GAAX;AAAA,aAHe;AAAA,SAAnB,CAF+B;AAAA,QAQ/B,KAAWvB,MAAAA,IAAX,IAAmBT,KAAnB,EAA0B;AAAA,YACtBsiB,cAAA,CAAevgB,UAAf,EAA2BtB,IAAA,CAAK,CAAL,CAA3B,EAAoCA,IAAA,CAAK,CAAL,CAApC,EAA6C,KAA7C,CADsB,CAAA;AAAA,SARK;AAAA,QAW/B,OAAO0c,UAAA,CAAWa,OAAX,KAAuB/uB,SAAvB,GAAmC8S,UAAnC,GAAgD;AAAA,YACnD,MADmD;AAAA,YAEnD;AAAA,gBAAC,IAAD;AAAA,gBAAO;AAAA,oBAAC,QAAD;AAAA,oBAAWC,GAAX;AAAA,iBAAP;AAAA,gBAAwB,QAAxB;AAAA,aAFmD;AAAA,YAGnDD,UAHmD;AAAA,YAInD2f,cAAA,CAAevE,UAAA,CAAWa,OAA1B,CAJmD;AAAA,SAAvD,CAX+B;AAAA,KAA5B,MAiBA;AAAA,QACH,MAAM,IAAI/c,KAAJ,CAAU,CAAC,+BAAD,GAAkCvN,IAAlC,EAAV,CAAA,CAAN,CADG;AAAA,KAhDuD;AAAA,CA1IlE;AA+LA,SAASsuB,mBAAT,CAA6B7E,UAA7B,EAAyCO,YAAzC,EAAuD1d,KAAvD,EAA8D5K,KAAA,GAAQ,CAAC,MAAD,CAAtE,EAAgF;AAAA,IAC5E,MAAM1B,IAAA,GAAO2uB,eAAA,CAAgBlF,UAAhB,EAA4BO,YAA5B,CAAb,CAD4E;AAAA,IAE5E,IAAI3b,UAAJ,CAF4E;AAAA,IAG5E,IAAI2gB,MAAA,GAAS,KAAb,CAH4E;AAAA,IAI5E,IAAIhvB,IAAA,KAAS,UAAb,EAAyB;AAAA,QACrBqO,UAAA,GAAa;AAAA,YAAC,MAAD;AAAA,YAAS3M,KAAT;AAAA,SAAb,CADqB;AAAA,QAErBstB,MAAA,GAAS,IAAT,CAFqB;AAAA,KAAzB,MAGO,IAAIhvB,IAAA,KAAS,aAAb,EAA4B;AAAA,QAC/B,MAAMnB,IAAA,GAAO4qB,UAAA,CAAW5qB,IAAX,KAAoBtD,SAApB,GAAgCkuB,UAAA,CAAW5qB,IAA3C,GAAkD,CAA/D,CAD+B;AAAA,QAE/BwP,UAAA,GAAa;AAAA,YAACmgB,sBAAA,CAAuB/E,UAAvB,CAAD;AAAA,YAAqC5qB,IAAA,KAAS,CAAT,GAAa,CAAC,QAAD,CAAb,GAA0B;AAAA,gBAAC,aAAD;AAAA,gBAAgBA,IAAhB;AAAA,aAA/D;AAAA,YAAsF6C,KAAtF;AAAA,SAAb,CAF+B;AAAA,KAA5B,MAIA;AAAA,QACH,MAAM,IAAI6L,KAAJ,CAAU,CAAC,4BAAD,GAA+BvN,IAA/B,EAAoC,CAApC,CAAV,CAAN,CADG;AAAA,KAXqE;AAAA,IAe5E,KAAW+M,MAAAA,IAAX,IAAmBT,KAAnB,EAA0B;AAAA,QACtBsiB,cAAA,CAAevgB,UAAf,EAA2BtB,IAAA,CAAK,CAAL,CAA3B,EAAoCA,IAAA,CAAK,CAAL,CAApC,EAA6CiiB,MAA7C,CADsB,CAAA;AAAA,KAfkD;AAAA,IAmB5EH,wBAAA,CAAyBxgB,UAAzB,CAnB4E,CAAA;AAAA,IAqB5E,OAAOA,UAAP,CArB4E;AAAA,CA/LhF;AAuNA,SAASwgB,wBAAT,CAAkCxgB,UAAlC,EAA8C;AAAA;AAE1C,IAAIA,IAAAA,UAAA,CAAW,CAAX,CAAkB,KAAA,MAAlB,IAA4BA,UAAA,CAAWnS,MAAX,KAAsB,CAAtD,EAAyD;AAAA,QACrDmS,UAAA,CAAWtR,IAAX,CAAgB,CAAhB,CADqD,CAAA;AAAA,QAErDsR,UAAA,CAAWtR,IAAX,CAAgBsR,UAAA,CAAW,CAAX,CAAhB,CAFqD,CAAA;AAAA,KAFf;AAAA,CAvN9C;AA+NA,SAASugB,cAAT,CAAwBK,KAAxB,EAA+BvtB,KAA/B,EAAsChB,MAAtC,EAA8CsuB,MAA9C,EAAsD;AAAA;AAGlD;AAAA,IAAA,IAAIC,KAAA,CAAM/yB,MAAN,GAAe,CAAf,IAAoBwF,KAAA,KAAUutB,KAAA,CAAMA,KAAA,CAAM/yB,MAAN,GAAe,CAArB,CAAlC,EAA2D;AAAA,QACvD,OADuD;AAAA,KAHT;AAAA;AAOlD,IAAI,IAAA,EAAE8yB,MAAA,IAAUC,KAAA,CAAM/yB,MAAN,KAAiB,CAA3B,CAAN,EAAqC;AAAA,QACjC+yB,KAAA,CAAMlyB,IAAN,CAAW2E,KAAX,CADiC,CAAA;AAAA,KAPa;AAAA,IAUlDutB,KAAA,CAAMlyB,IAAN,CAAW2D,MAAX,CAVkD,CAAA;AAAA,CA/NtD;AA4OA,SAASiuB,eAAT,CAAyBlF,UAAzB,EAAqCO,YAArC,EAAmD;AAAA,IAC/C,IAAIP,UAAA,CAAWzpB,IAAf,EAAqB;AAAA,QACjB,OAAOypB,UAAA,CAAWzpB,IAAlB,CADiB;AAAA,KAArB,MAEO;AAAA,QAEH,OAAQgqB,YAAA,CAAa3b,UAAd,CAA+Bsb,YAA/B,GAA8C,aAA9C,GAA8D,UAArE,CAFG;AAAA,KAHwC;AAAA,CA5OnD;AAsPA;AAAO,SAASyE,kBAAT,CAA4B9kB,CAA5B,EAAyE;AAAA,IAC5E,MAAM9L,MAAA,GAAS,CAAC,QAAD,CAAf,CAD4E;AAAA,IAE5E,MAAM0xB,EAAA,GAAK,aAAX,CAF4E;AAAA,IAG5E,IAAIC,GAAA,GAAM,CAAV,CAH4E;AAAA,IAI5E,KAAK,IAAI9yB,KAAA,GAAQ6yB,EAAA,CAAGlnB,IAAH,CAAQsB,CAAR,CAAZ,EAAwBjN,KAAA,KAAU,IAAvC,EAA6CA,KAAA,GAAQ6yB,EAAA,CAAGlnB,IAAH,CAAQsB,CAAR,CAArD,EAAiE;AAAA,QAC7D,MAAM8lB,OAAA,GAAU9lB,CAAA,CAAE9N,KAAF,CAAQ2zB,GAAR,EAAaD,EAAA,CAAG9P,SAAH,GAAe/iB,KAAA,CAAM,CAAN,CAASH,CAAAA,MAArC,CAAhB,CAD6D;AAAA,QAE7DizB,GAAA,GAAMD,EAAA,CAAG9P,SAAT,CAF6D;AAAA,QAG7D,IAAIgQ,OAAA,CAAQlzB,MAAR,GAAiB,CAArB;AAAA,YAAwBsB,MAAA,CAAOT,IAAP,CAAYqyB,OAAZ,CAHqC,CAAA;AAAA,QAI7D5xB,MAAA,CAAOT,IAAP,CAAY;AAAA,YAAC,KAAD;AAAA,YAAQV,KAAA,CAAM,CAAN,CAAR;AAAA,SAAZ,CAJ6D,CAAA;AAAA,KAJW;AAAA,IAW5E,IAAImB,MAAA,CAAOtB,MAAP,KAAkB,CAAtB,EAAyB;AAAA,QACrB,OAAOoN,CAAP,CADqB;AAAA,KAXmD;AAAA,IAe5E,IAAI6lB,GAAA,GAAM7lB,CAAA,CAAEpN,MAAZ,EAAoB;AAAA,QAChBsB,MAAA,CAAOT,IAAP,CAAYuM,CAAA,CAAE9N,KAAF,CAAQ2zB,GAAR,CAAZ,CADgB,CAAA;AAAA,KAApB,MAEO,IAAI3xB,MAAA,CAAOtB,MAAP,KAAkB,CAAtB,EAAyB;AAAA,QAC5B,OAAO;AAAA,YAAC,WAAD;AAAA,YAAcsB,MAAA,CAAO,CAAP,CAAd;AAAA,SAAP,CAD4B;AAAA,KAjB4C;AAAA,IAqB5E,OAAOA,MAAP,CArB4E;AAAA;;ACnPhF;AAAA;AAAO,SAAS6xB,QAAT,CAAkBjyB,KAAlB,EAAuC;AAAA,IAC1C,IAAIA,KAAA,YAAiBmZ,MAAjB,IAA2BnZ,KAAA,YAAiByC,MAA5C,IAAsDzC,KAAA,YAAiB+Y,OAA3E,EAAoF;AAAA,QAChF,OAAO/Y,KAAA,CAAMkyB,OAAN,EAAP,CADgF;AAAA,KAApF,MAEO;AAAA,QACH,OAAOlyB,KAAP,CADG;AAAA,KAHmC;AAAA,CAH9C;AAWO,SAASmyB,YAAT,CAAsBnyB,KAAtB,EAA2C;AAAA,IAC9C,IAAIP,KAAA,CAAMC,OAAN,CAAcM,KAAd,CAAJ,EAA0B;AAAA,QACtB,OAAOA,KAAA,CAAMU,GAAN,CAAUyxB,YAAV,CAAP,CADsB;AAAA,KAA1B,MAEO,IAAInyB,KAAA,YAAiBH,MAAjB,IAA2B,EAAEG,KAAA,YAAiBmZ,MAAjB,IAA2BnZ,KAAA,YAAiByC,MAA5C,IAAsDzC,KAAA,YAAiB+Y,OAAvE,CAAjC,EAAkH;AAAA,QACrH,MAAMqZ,cAAA,GAA2C,EAAjD,CADqH;AAAA,QAErH,KAAWtyB,MAAAA,GAAX,IAAkBE,KAAlB,EAAyB;AAAA,YACrBoyB,cAAA,CAAetyB,GAAf,CAAsBqyB,GAAAA,YAAA,CAAanyB,KAAA,CAAMF,GAAN,CAAb,CAAtB,CADqB;AAAA,SAF4F;AAAA,QAKrH,OAAOsyB,cAAP,CALqH;AAAA,KAH3E;AAAA,IAW9C,OAAOH,QAAA,CAASjyB,KAAT,CAAP,CAX8C;AAAA;;ACTlD;AAeA,SAASqyB,kBAAT,CAA4BjX,MAA5B,EAAkD;AAAA,IAC9C,IAAIA,MAAA,KAAW,IAAX,IAAmBA,MAAA,KAAW,KAAlC,EAAyC;AAAA,QACrC,OAAO,IAAP,CADqC;AAAA,KADK;AAAA,IAK9C,IAAI,CAAC3b,KAAA,CAAMC,OAAN,CAAc0b,MAAd,CAAD,IAA0BA,MAAA,CAAOtc,MAAP,KAAkB,CAAhD,EAAmD;AAAA,QAC/C,OAAO,KAAP,CAD+C;AAAA,KALL;AAAA,IAQ9C,QAAQsc,MAAA,CAAO,CAAP,CAAR;AAAA,IACA,KAAK,KAAL;AAAA,QACI,OAAOA,MAAA,CAAOtc,MAAP,IAAiB,CAAjB,IAAsBsc,MAAA,CAAO,CAAP,CAAA,KAAc,KAApC,IAA6CA,MAAA,CAAO,CAAP,CAAA,KAAc,OAAlE,CAFJ;AAAA,IAIA,KAAK,IAAL;AAAA,QACI,OAAOA,MAAA,CAAOtc,MAAP,IAAiB,CAAjB,KAAuB,OAAOsc,MAAA,CAAO,CAAP,CAAP,KAAqB,QAArB,IAAiC3b,KAAA,CAAMC,OAAN,CAAc0b,MAAA,CAAO,CAAP,CAAd,CAAjC,CAA9B,CALJ;AAAA,IAOA,KAAK,KAAL,CAPA;AAAA,IAQA,KAAK,MAAL,CARA;AAAA,IASA,KAAK,MAAL;AAAA,QACI,OAAO,KAAP,CAVJ;AAAA,IAYA,KAAK,IAAL,CAZA;AAAA,IAaA,KAAK,IAAL,CAbA;AAAA,IAcA,KAAK,GAAL,CAdA;AAAA,IAeA,KAAK,IAAL,CAfA;AAAA,IAgBA,KAAK,GAAL,CAhBA;AAAA,IAiBA,KAAK,IAAL;AAAA,QACI,OAAOA,MAAA,CAAOtc,MAAP,KAAkB,CAAlB,KAAwBW,KAAA,CAAMC,OAAN,CAAc0b,MAAA,CAAO,CAAP,CAAd,CAAA,IAA4B3b,KAAA,CAAMC,OAAN,CAAc0b,MAAA,CAAO,CAAP,CAAd,CAA5B,CAA/B,CAlBJ;AAAA,IAoBA,KAAK,KAAL,CApBA;AAAA,IAqBA,KAAK,KAAL;AAAA,QACI,KAAA,MAAWpI,CAAX,IAAgBoI,MAAA,CAAOhd,KAAP,CAAa,CAAb,CAAhB,EAAiC;AAAA,YAC7B,IAAI,CAACi0B,kBAAA,CAAmBrf,CAAnB,CAAD,IAA0B,OAAOA,CAAP,KAAa,SAA3C,EAAsD;AAAA,gBAClD,OAAO,KAAP,CADkD;AAAA,aADzB;AAAA,SADrC;AAAA,QAMI,OAAO,IAAP,CA3BJ;AAAA,IA6BA;AAAA,QACI,OAAO,IAAP,CA9BJ;AAAA,KAR8C;AAAA,CAjBlD;AAqEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAASsf,YAAT,CAAsBlX,MAAtB,EAAmCmX,SAAA,GAAqB,MAAxD,EAA+E;AAAA,IAC3E,IAAInX,MAAA,KAAW,IAAX,IAAmBA,MAAA,KAAWjd,SAAlC,EAA6C;AAAA,QACzC,OAAO;AAAA,YAACid,MAAA,EAAQ,MAAM,IAAf;AAAA,YAAqBoX,YAAA,EAAc,KAAnC;AAAA,YAA0CC,WAAA,EAAa,KAAvD;AAAA,SAAP,CADyC;AAAA,KAD8B;AAAA,IAK3E,IAAI,CAACJ,kBAAA,CAAmBjX,MAAnB,CAAL,EAAiC;AAAA,QAC7BA,MAAA,GAASsX,eAAA,CAActX,MAAd,CAAT,CAD6B;AAAA,KAL0C;AAAA,IAQ3E,MAAMuX,SAAA,GAAcvX,MAApB,CAR2E;AAAA,IAU3E,IAAIwX,YAAA,GAAe,IAAnB,CAV2E;AAAA,IAW3E,IAAI;AAAA,QACAA,YAAA,GAAeC,mBAAA,CAAoBF,SAApB,CAAf,CADA;AAAA,KAAJ,CAEE,OAAO1e,CAAP,EAAU;AAAA,QACRib,OAAA,CAAQC,IAAR,CACR,CAAC;AAAA;AAAA;AAAA;AAAA;AAAD,GAKEjxB,IAAA,CAAKJ,SAAL,CAAe60B,SAAf,EAA0B,IAA1B,EAAgC,CAAhC,CALF,EAKqC;AAAA,QALrC,CADQ,CADQ,CAAA;AAAA,KAb+D;AAAA;AAyB3E,IAAMG,MAAAA,UAAA,GAAaC,EAAA,CAAO,CAAC,OAAD,GAAUR,SAAV,EAAP,CAAA,CAAnB,CAzB2E;AAAA,IA0B3E,MAAMS,oBAAA,GAAuB3D,gBAAA,CAAiBuD,YAAjB,EAA+BE,UAA/B,CAA7B,CA1B2E;AAAA,IA4B3E,IAAIG,UAAA,GAAa,IAAjB,CA5B2E;AAAA,IA6B3E,IAAID,oBAAA,CAAqB5yB,MAArB,KAAgC,OAApC,EAA6C;AAAA,QACzC,MAAM,IAAI+P,KAAJ,CAAU6iB,oBAAA,CAAqBhzB,KAArB,CAA2BU,GAA3B,CAA+B4vB,GAAA,IAAO,CAAGA,GAAAA,GAAA,CAAIxwB,GAAP,EAAW,EAAX,GAAewwB,GAAA,CAAIzf,OAAnB,EAAtC,CAAA,CAAA,CAAoE5Q,IAApE,CAAyE,IAAzE,CAAV,CAAN,CADyC;AAAA,KAA7C,MAEO;AAAA,QACHgzB,UAAA,GAAa,CAACC,gBAAD,EAAqCxZ,OAArC,EAAuDI,SAAvD,KAAuFkZ,oBAAA,CAAqBhzB,KAArB,CAA2BwX,QAA3B,CAAoC0b,gBAApC,EAAsDxZ,OAAtD,EAA+D,EAA/D,EAAmEI,SAAnE,CAApG,CADG;AAAA,KA/BoE;AAAA;AAqC3E;AAAA,IAAIqZ,IAAAA,iBAAA,GAAoB,IAAxB,CArC2E;AAAA,IAsC3E,IAAIV,WAAA,GAAc,IAAlB,CAtC2E;AAAA,IAuC3E,IAAIG,YAAA,KAAiBD,SAArB,EAAgC;AAAA,QAC5B,MAAMS,qBAAA,GAAwB/D,gBAAA,CAAiBsD,SAAjB,EAA4BG,UAA5B,CAA9B,CAD4B;AAAA,QAG5B,IAAIM,qBAAA,CAAsBhzB,MAAtB,KAAiC,OAArC,EAA8C;AAAA,YAC1C,MAAM,IAAI+P,KAAJ,CAAUijB,qBAAA,CAAsBpzB,KAAtB,CAA4BU,GAA5B,CAAgC4vB,GAAA,IAAO,CAAGA,GAAAA,GAAA,CAAIxwB,GAAP,EAAW,EAAX,GAAewwB,GAAA,CAAIzf,OAAnB,EAAvC,CAAA,CAAA,CAAqE5Q,IAArE,CAA0E,IAA1E,CAAV,CAAN,CAD0C;AAAA,SAA9C,MAEO;AAAA,YACHkzB,iBAAA,GAAoB,CAACD,gBAAD,EAAqCxZ,OAArC,EAAuDI,SAAvD,EAAoFC,gBAApF,EAA8GC,mBAA9G,KAA4JoZ,qBAAA,CAAsBpzB,KAAtB,CAA4BwX,QAA5B,CAAqC0b,gBAArC,EAAuDxZ,OAAvD,EAAgE,EAAhE,EAAoEI,SAApE,EAA+E3b,SAA/E,EAA0FA,SAA1F,EAAqG4b,gBAArG,EAAuHC,mBAAvH,CAAhL,CADG;AAAA,YAEHyY,WAAA,GAAc,CAACzR,iBAAA,CAAkBoS,qBAAA,CAAsBpzB,KAAtB,CAA4BiR,UAA9C,CAAf,CAFG;AAAA,SALqB;AAAA,KAvC2C;AAAA,IAkD3EgiB,UAAA,GAAeA,UAAf,CAlD2E;AAAA,IAmD3E,MAAMT,YAAA,GAAea,cAAA,CAAeT,YAAf,CAArB,CAnD2E;AAAA,IAqD3E,OAAO;AAAA,QACHxX,MAAA,EAAQ6X,UADL;AAAA,QAEHK,aAAA,EAAeH,iBAAA,GAAoBA,iBAApB,GAAwCh1B,SAFpD;AAAA,QAGHq0B,YAHG;AAAA,QAIHC,WAAA,EAAa,CAAC,CAACA,WAJZ;AAAA,KAAP,CArD2E;AAAA,CArE/E;AAkIA,SAASI,mBAAT,CAA6BzX,MAA7B,EAA+C;AAAA,IAC3C,IAAI,CAACmY,eAAA,CAAgBnY,MAAhB,CAAL,EAA8B;AAAA,QAC1B,OAAOA,MAAP,CAD0B;AAAA,KADa;AAAA;AAM3C,IAAA,IAAIhb,MAAA,GAAS+xB,YAAA,CAAa/W,MAAb,CAAb,CAN2C;AAAA;AAS3C,IAAAoY,oBAAA,CAAqBpzB,MAArB,CAT2C,CAAA;AAAA;AAY3C,IAAAA,MAAA,GAASqzB,iCAAA,CAAkCrzB,MAAlC,CAAT,CAZ2C;AAAA,IAc3C,OAAOA,MAAP,CAd2C;AAAA,CAlI/C;AAmJA,SAASqzB,iCAAT,CAA2CxiB,UAA3C,EAAiE;AAAA,IAC7D,IAAI,CAACxR,KAAA,CAAMC,OAAN,CAAcuR,UAAd,CAAL,EAAgC;AAAA,QAC5B,OAAOA,UAAP,CAD4B;AAAA,KAD6B;AAAA,IAK7D,MAAMyiB,SAAA,GAAYC,mBAAA,CAAoB1iB,UAApB,CAAlB,CAL6D;AAAA,IAM7D,IAAIyiB,SAAA,KAAc,IAAlB,EAAwB;AAAA,QACpB,OAAOA,SAAP,CADoB;AAAA,KAAxB,MAEO;AAAA,QACH,OAAOA,SAAA,CAAUhzB,GAAV,CAAekzB,aAAD,IAAmBH,iCAAA,CAAkCG,aAAlC,CAAjC,CAAP,CADG;AAAA,KARsD;AAAA,CAnJjE;AAyKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAASJ,oBAAT,CAA8BpY,MAA9B,EAA2C;AAAA,IACvC,IAAIyY,sBAAA,GAAyB,KAA7B,CADuC;AAAA,IAEvC,MAAMrL,QAAA,GAAW,EAAjB,CAFuC;AAAA,IAIvC,IAAIpN,MAAA,CAAO,CAAP,CAAA,KAAc,MAAlB,EAA0B;AAAA,QACtB,KAAK,IAAI3W,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI2W,MAAA,CAAOtc,MAAP,GAAgB,CAApC,EAAuC2F,CAAA,IAAK,CAA5C,EAA+C;AAAA,YAC3CovB,sBAAA,GAAyBA,sBAAA,IAA0BN,eAAA,CAAgBnY,MAAA,CAAO3W,CAAP,CAAhB,CAAnD,CAD2C;AAAA,YAE3C+jB,QAAA,CAAS7oB,IAAT,CAAcyb,MAAA,CAAO3W,CAAA,GAAI,CAAX,CAAd,CAF2C,CAAA;AAAA,SADzB;AAAA,QAMtB+jB,QAAA,CAAS7oB,IAAT,CAAcyb,MAAA,CAAOA,MAAA,CAAOtc,MAAP,GAAgB,CAAvB,CAAd,CANsB,CAAA;AAAA,KAA1B,MAOO,IAAIsc,MAAA,CAAO,CAAP,CAAA,KAAc,OAAlB,EAA2B;AAAA,QAC9ByY,sBAAA,GAAyBA,sBAAA,IAA0BN,eAAA,CAAgBnY,MAAA,CAAO,CAAP,CAAhB,CAAnD,CAD8B;AAAA,QAG9B,KAAK,IAAI3W,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI2W,MAAA,CAAOtc,MAAP,GAAgB,CAApC,EAAuC2F,CAAA,IAAK,CAA5C,EAA+C;AAAA,YAC3C+jB,QAAA,CAAS7oB,IAAT,CAAcyb,MAAA,CAAO3W,CAAA,GAAI,CAAX,CAAd,CAD2C,CAAA;AAAA,SAHjB;AAAA,QAM9B+jB,QAAA,CAAS7oB,IAAT,CAAcyb,MAAA,CAAOA,MAAA,CAAOtc,MAAP,GAAgB,CAAvB,CAAd,CAN8B,CAAA;AAAA,KAA3B,MAOA,IAAIsc,MAAA,CAAO,CAAP,CAAA,KAAc,MAAlB,EAA0B;AAAA,QAC7ByY,sBAAA,GAAyBA,sBAAA,IAA0BN,eAAA,CAAgBnY,MAAA,CAAO,CAAP,CAAhB,CAAnD,CAD6B;AAAA,QAG7B,KAAK,IAAI3W,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI2W,MAAA,CAAOtc,MAAP,GAAgB,CAApC,EAAuC2F,CAAA,IAAK,CAA5C,EAA+C;AAAA,YAC3C+jB,QAAA,CAAS7oB,IAAT,CAAcyb,MAAA,CAAO3W,CAAA,GAAI,CAAX,CAAd,CAD2C,CAAA;AAAA,SAHlB;AAAA,KAlBM;AAAA,IA0BvC,IAAIovB,sBAAJ,EAA4B;AAAA,QACxBzY,MAAA,CAAOtc,MAAP,GAAgB,CAAhB,CADwB;AAAA,QAExBsc,MAAA,CAAOzb,IAAP,CAAY,KAAZ,EAAmB,GAAG6oB,QAAtB,CAFwB,CAAA;AAAA,KA1BW;AAAA;AAgCvC,IAAA,KAAK,IAAI/jB,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI2W,MAAA,CAAOtc,MAA3B,EAAmC2F,CAAA,EAAnC,EAAwC;AAAA,QACpC+uB,oBAAA,CAAqBpY,MAAA,CAAO3W,CAAP,CAArB,CADoC,CAAA;AAAA,KAhCD;AAAA,CAzK3C;AA8MA,SAAS8uB,eAAT,CAAyBnY,MAAzB,EAA+C;AAAA;AAE3C,IAAA,IAAI,CAAC3b,KAAA,CAAMC,OAAN,CAAc0b,MAAd,CAAL,EAA4B;AAAA,QACxB,OAAO,KAAP,CADwB;AAAA,KAFe;AAAA,IAK3C,IAAI0Y,uBAAA,CAAwB1Y,MAAA,CAAO,CAAP,CAAxB,CAAJ,EAAwC;AAAA,QACpC,OAAO,IAAP,CADoC;AAAA,KALG;AAAA,IAS3C,KAAK,IAAI3W,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI2W,MAAA,CAAOtc,MAA3B,EAAmC2F,CAAA,EAAnC,EAAwC;AAAA,QACpC,MAAM6U,KAAA,GAAQ8B,MAAA,CAAO3W,CAAP,CAAd,CADoC;AAAA,QAEpC,IAAI8uB,eAAA,CAAgBja,KAAhB,CAAJ,EAA4B;AAAA,YACxB,OAAO,IAAP,CADwB;AAAA,SAFQ;AAAA,KATG;AAAA,IAgB3C,OAAO,KAAP,CAhB2C;AAAA,CA9M/C;AAiOA,SAASwa,uBAAT,CAAiC7iB,UAAjC,EAA8D;AAAA,IAC1D,OAAOA,UAAA,KAAe,OAAf,IACHA,UAAA,KAAe,sBADnB,CAD0D;AAAA,CAjO9D;AAsOA,MAAM8iB,2BAAA,GAA8B,IAAIC,GAAJ,CAAQ;AAAA,IACxC,IADwC;AAAA,IAExC,IAFwC;AAAA,IAGxC,IAHwC;AAAA,IAIxC,GAJwC;AAAA,IAKxC,IALwC;AAAA,IAMxC,GANwC;AAAA,IAOxC,IAPwC;AAAA,IAQxC,YARwC;AAAA,CAAR,CAApC,CAtOA;AAiPA,SAASL,mBAAT,CAA6B1iB,UAA7B,EAAmD;AAAA,IAC/C,IAAI8iB,2BAAA,CAA4B5iB,GAA5B,CAAgCF,UAAA,CAAW,CAAX,CAAhC,CAAJ,EAAoD;AAAA,QAEhD,KAAK,IAAIxM,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIwM,UAAA,CAAWnS,MAA/B,EAAuC2F,CAAA,EAAvC,EAA4C;AAAA,YACxC,MAAMwvB,KAAA,GAAQhjB,UAAA,CAAWxM,CAAX,CAAd,CADwC;AAAA,YAExC,IAAI8uB,eAAA,CAAgBU,KAAhB,CAAJ,EAA4B;AAAA,gBACxB,OAAO,IAAP,CADwB;AAAA,aAFY;AAAA,SAFI;AAAA,KADL;AAAA,IAU/C,OAAOhjB,UAAP,CAV+C;AAAA,CAjPnD;AA+PA;AAAA,SAASuE,OAAT,CAAiBlB,CAAjB,EAAoBD,CAApB,EAAuB;AAAA,IACnB,OAAOC,CAAA,GAAID,CAAJ,GAAQ,CAAC,CAAT,GAAaC,CAAA,GAAID,CAAJ,GAAQ,CAAR,GAAY,CAAhC,CADmB;AAAA,CA/PvB;AAmQA,SAASgf,cAAT,CAAwBjY,MAAxB,EAAgC;AAAA,IAC5B,IAAI,CAAC3b,KAAA,CAAMC,OAAN,CAAc0b,MAAd,CAAL;AAAA,QAA4B,OAAO,KAAP,CADA;AAAA,IAE5B,IAAIA,MAAA,CAAO,CAAP,MAAc,QAAlB;AAAA,QAA4B,OAAO,IAAP,CAFA;AAAA,IAG5B,KAAK,IAAI9b,KAAA,GAAQ,CAAZ,EAAeA,KAAA,GAAQ8b,MAAA,CAAOtc,MAAnC,EAA2CQ,KAAA,EAA3C,EAAoD;AAAA,QAChD,IAAI+zB,cAAA,CAAejY,MAAA,CAAO9b,KAAP,CAAf,CAAJ;AAAA,YAAmC,OAAO,IAAP,CADa;AAAA,KAHxB;AAAA,IAM5B,OAAO,KAAP,CAN4B;AAAA,CAnQhC;AA4QA,SAASozB,eAAT,CAAuBtX,MAAvB,EAAmD;AAAA,IAC/C,IAAI,CAACA,MAAL;AAAA,QAAa,OAAO,IAAP,CADkC;AAAA,IAE/C,MAAMxH,EAAA,GAAKwH,MAAA,CAAO,CAAP,CAAX,CAF+C;AAAA,IAG/C,IAAIA,MAAA,CAAOtc,MAAP,IAAiB,CAArB;AAAA,QAAwB,OAAQ8U,EAAA,KAAO,KAAf,CAHuB;AAAA,IAI/C,MAAMsgB,SAAA,GACFtgB,EAAA,KAAO,IAAP,GAAcugB,qBAAA,CAAoB/Y,MAAA,CAAO,CAAP,CAApB,EAA+BA,MAAA,CAAO,CAAP,CAA/B,EAA0C,IAA1C,CAAd,GACAxH,EAAA,KAAO,IAAP,GAAcwgB,eAAA,CAAgBD,qBAAA,CAAoB/Y,MAAA,CAAO,CAAP,CAApB,EAA+BA,MAAA,CAAO,CAAP,CAA/B,EAA0C,IAA1C,CAAhB,CAAd,GACAxH,EAAA,KAAO,GAAP,IACAA,EAAA,KAAO,GADP,IAEAA,EAAA,KAAO,IAFP,IAGAA,EAAA,KAAO,IAHP,GAGcugB,qBAAA,CAAoB/Y,MAAA,CAAO,CAAP,CAApB,EAA+BA,MAAA,CAAO,CAAP,CAA/B,EAA0CxH,EAA1C,CAHd,GAIAA,EAAA,KAAO,KAAP,GAAeygB,oBAAA,CAAqBjZ,MAAA,CAAOhd,KAAP,CAAa,CAAb,CAArB,CAAf,GACAwV,EAAA,KAAO,KAAP,GAAe,CAAC,KAAD,CAAA,CAAQtK,MAAR,CAAe8R,MAAA,CAAOhd,KAAP,CAAa,CAAb,CAAgBsC,CAAAA,GAAhB,CAAoBgyB,eAApB,CAAf,CAAf,GACA9e,EAAA,KAAO,MAAP,GAAgB,CAAC,KAAD,CAAQtK,CAAAA,MAAR,CAAe8R,MAAA,CAAOhd,KAAP,CAAa,CAAb,EAAgBsC,GAAhB,CAAoBgyB,eAApB,CAAA,CAAmChyB,GAAnC,CAAuC0zB,eAAvC,CAAf,CAAhB,GACAxgB,EAAA,KAAO,IAAP,GAAc0gB,aAAA,CAAYlZ,MAAA,CAAO,CAAP,CAAZ,EAAuBA,MAAA,CAAOhd,KAAP,CAAa,CAAb,CAAvB,CAAd,GACAwV,EAAA,KAAO,KAAP,GAAewgB,eAAA,CAAgBE,aAAA,CAAYlZ,MAAA,CAAO,CAAP,CAAZ,EAAuBA,MAAA,CAAOhd,KAAP,CAAa,CAAb,CAAvB,CAAhB,CAAf,GACAwV,EAAA,KAAO,KAAP,GAAe2gB,cAAA,CAAanZ,MAAA,CAAO,CAAP,CAAb,CAAf,GACAxH,EAAA,KAAO,MAAP,GAAgBwgB,eAAA,CAAgBG,cAAA,CAAanZ,MAAA,CAAO,CAAP,CAAb,CAAhB,CAAhB,GACAxH,EAAA,KAAO,QAAP,GAAkBwH,MAAlB,GACA,IAfJ,CAJ+C;AAAA,IAoB/C,OAAO8Y,SAAP,CApB+C;AAAA,CA5QnD;AAmSA,SAASC,qBAAT,CAA6BzkB,QAA7B,EAA+C1P,KAA/C,EAA2D4T,EAA3D,EAAuE;AAAA,IACnE,QAAQlE,QAAR;AAAA,IACA,KAAK,OAAL;AAAA,QACI,OAAO;AAAA,YAAC,CAAC,YAAD,GAAekE,EAAf,EAAD,CAAA;AAAA,YAAsB5T,KAAtB;AAAA,SAAP,CAFJ;AAAA,IAGA,KAAK,KAAL;AAAA,QACI,OAAO;AAAA,YAAC,CAAC,UAAD,GAAa4T,EAAb,EAAD,CAAA;AAAA,YAAoB5T,KAApB;AAAA,SAAP,CAJJ;AAAA,IAKA;AAAA,QACI,OAAO;AAAA,YAAC,CAAC,OAAD,GAAU4T,EAAV,EAAD,CAAA;AAAA,YAAiBlE,QAAjB;AAAA,YAA2B1P,KAA3B;AAAA,SAAP,CANJ;AAAA,KADmE;AAAA,CAnSvE;AA8SA,SAASq0B,oBAAT,CAA8BG,OAA9B,EAA0D;AAAA,IACtD,OAAO,CAAC,KAAD,CAAA,CAAQlrB,MAAR,CAAekrB,OAAA,CAAQ9zB,GAAR,CAAYgyB,eAAZ,CAAf,CAAP,CADsD;AAAA,CA9S1D;AAkTA,SAAS4B,aAAT,CAAqB5kB,QAArB,EAAuCgf,MAAvC,EAA2D;AAAA,IACvD,IAAIA,MAAA,CAAO5vB,MAAP,KAAkB,CAAtB,EAAyB;AAAA,QAAE,OAAO,KAAP,CAAF;AAAA,KAD8B;AAAA,IAEvD,QAAQ4Q,QAAR;AAAA,IACA,KAAK,OAAL;AAAA,QACI,OAAO;AAAA,YAAC,CAAC,cAAD,CAAD;AAAA,YAAmB;AAAA,gBAAC,SAAD;AAAA,gBAAYgf,MAAZ;AAAA,aAAnB;AAAA,SAAP,CAFJ;AAAA,IAGA,KAAK,KAAL;AAAA,QACI,OAAO;AAAA,YAAC,CAAC,YAAD,CAAD;AAAA,YAAiB;AAAA,gBAAC,SAAD;AAAA,gBAAYA,MAAZ;AAAA,aAAjB;AAAA,SAAP,CAJJ;AAAA,IAKA;AAAA,QACI,IAAIA,MAAA,CAAO5vB,MAAP,GAAgB,GAAhB,IAAuB,CAAC4vB,MAAA,CAAOhc,IAAP,CAAYrL,CAAA,IAAK,OAAOA,CAAP,KAAa,OAAOqnB,MAAA,CAAO,CAAP,CAArC,CAA5B,EAA6E;AAAA,YACzE,OAAO;AAAA,gBAAC,iBAAD;AAAA,gBAAoBhf,QAApB;AAAA,gBAA8B;AAAA,oBAAC,SAAD;AAAA,oBAAYgf,MAAA,CAAOxG,IAAP,CAAY1S,OAAZ,CAAZ;AAAA,iBAA9B;AAAA,aAAP,CADyE;AAAA,SAA7E,MAEO;AAAA,YACH,OAAO;AAAA,gBAAC,iBAAD;AAAA,gBAAoB9F,QAApB;AAAA,gBAA8B;AAAA,oBAAC,SAAD;AAAA,oBAAYgf,MAAZ;AAAA,iBAA9B;AAAA,aAAP,CADG;AAAA,SARX;AAAA,KAFuD;AAAA,CAlT3D;AAkUA,SAAS6F,cAAT,CAAsB7kB,QAAtB,EAAwC;AAAA,IACpC,QAAQA,QAAR;AAAA,IACA,KAAK,OAAL;AAAA,QACI,OAAO,IAAP,CAFJ;AAAA,IAGA,KAAK,KAAL;AAAA,QACI,OAAO,CAAC,CAAC,aAAD,CAAD,CAAP,CAJJ;AAAA,IAKA;AAAA,QACI,OAAO;AAAA,YAAC,CAAC,UAAD,CAAD;AAAA,YAAeA,QAAf;AAAA,SAAP,CANJ;AAAA,KADoC;AAAA,CAlUxC;AA6UA,SAAS0kB,eAAT,CAAyBhZ,MAAzB,EAAwC;AAAA,IACpC,OAAO;AAAA,QAAC,GAAD;AAAA,QAAMA,MAAN;AAAA,KAAP,CADoC;AAAA;;AC3UxC;AAWA;AAAA;AAAA;AAAA;AAAA;AAAe,SAASsX,aAAT,CAAuBtX,MAAvB,EAA2D;AAAA,IACtE,OAAOqZ,cAAA,CAAerZ,MAAf,EAAuB,EAAvB,CAAP,CADsE;AAAA,CAb1E;AAiEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAASqZ,cAAT,CAAwBrZ,MAAxB,EAAqDsZ,aAArD,EAA0F;AAAA,IACtF,IAAIrC,kBAAA,CAAmBjX,MAAnB,CAAJ,EAAgC;AAAA,QAAE,OAAOA,MAAP,CAAF;AAAA,KADsD;AAAA,IAGtF,IAAI,CAACA,MAAL;AAAA,QAAa,OAAO,IAAP,CAHyE;AAAA,IAItF,MAAMxH,EAAA,GAAKwH,MAAA,CAAO,CAAP,CAAX,CAJsF;AAAA,IAKtF,IAAIA,MAAA,CAAOtc,MAAP,IAAiB,CAArB;AAAA,QAAwB,OAAQ8U,EAAA,KAAO,KAAf,CAL8D;AAAA,IAOtF,IAAIsgB,SAAJ,CAPsF;AAAA,IAStF,IACItgB,EAAA,KAAO,IAAP,IACAA,EAAA,KAAO,IADP,IAEAA,EAAA,KAAO,GAFP,IAGAA,EAAA,KAAO,GAHP,IAIAA,EAAA,KAAO,IAJP,IAKAA,EAAA,KAAO,IANX,EAOE;AAAA,QACE,MAAM,GAAGlE,QAAH,EAAa1P,KAAb,CAAA,GAAuBob,MAA7B,CADF;AAAA,QAEE8Y,SAAA,GAAYC,mBAAA,CAAoBzkB,QAApB,EAA8B1P,KAA9B,EAAqC4T,EAArC,EAAyC8gB,aAAzC,CAAZ,CAFF;AAAA,KAPF,MAUO,IAAI9gB,EAAA,KAAO,KAAX,EAAkB;AAAA,QACrB,MAAM+gB,QAAA,GAAYvZ,MAAD,CAAchd,KAAd,CAAoB,CAApB,CAAuBsC,CAAAA,GAAvB,CAA2BsS,CAAA,IAAK;AAAA,YAC7C,MAAM4E,KAAA,GAAQ,EAAd,CAD6C;AAAA,YAE7C,MAAM0B,KAAA,GAAQmb,cAAA,CAAezhB,CAAf,EAAkB4E,KAAlB,CAAd,CAF6C;AAAA,YAG7C,MAAMgd,UAAA,GAAaC,iBAAA,CAAkBjd,KAAlB,CAAnB,CAH6C;AAAA,YAI7C,OAAOgd,UAAA,KAAe,IAAf,GAAsBtb,KAAtB,GAA8B;AAAA,gBAAC,MAAD;AAAA,gBAASsb,UAAT;AAAA,gBAAqBtb,KAArB;AAAA,gBAA4B,KAA5B;AAAA,aAArC,CAJ6C;AAAA,SAAhC,CAAjB,CADqB;AAAA,QAOrB,OAAO,CAAC,KAAD,CAAA,CAAQhQ,MAAR,CAAeqrB,QAAf,CAAP,CAPqB;AAAA,KAAlB,MAQA,IAAI/gB,EAAA,KAAO,KAAX,EAAkB;AAAA,QACrB,MAAM+gB,QAAA,GAAYvZ,MAAD,CAAchd,KAAd,CAAoB,CAApB,CAAuBsC,CAAAA,GAAvB,CAA2BsS,CAAA,IAAKyhB,cAAA,CAAezhB,CAAf,EAAkB0hB,aAAlB,CAAhC,CAAjB,CADqB;AAAA,QAErB,OAAOC,QAAA,CAAS71B,MAAT,GAAkB,CAAlB,GAAsB,CAAC,KAAD,CAAA,CAAQwK,MAAR,CAAeqrB,QAAf,CAAtB,GAAiD,EAAA,CAAGrrB,MAAH,CAAU,GAAGqrB,QAAb,CAAxD,CAFqB;AAAA,KAAlB,MAGA,IAAI/gB,EAAA,KAAO,MAAX,EAAmB;AAAA,QACtB,OAAO;AAAA,YAAC,GAAD;AAAA,YAAM6gB,cAAA,CAAe,CAAC,KAAD,CAAA,CAAQnrB,MAAR,CAAgB8R,MAAD,CAAchd,KAAd,CAAoB,CAApB,CAAf,CAAf,EAAuD,EAAvD,CAAN;AAAA,SAAP,CADsB;AAAA,KAAnB,MAEA,IAAIwV,EAAA,KAAO,IAAX,EAAiB;AAAA,QACpBsgB,SAAA,GAAYI,WAAA,CAAalZ,MAAA,CAAO,CAAP,CAAb,EAA8BA,MAAA,CAAOhd,KAAP,CAAa,CAAb,CAA9B,CAAZ,CADoB;AAAA,KAAjB,MAEA,IAAIwV,EAAA,KAAO,KAAX,EAAkB;AAAA,QACrBsgB,SAAA,GAAYI,WAAA,CAAalZ,MAAA,CAAO,CAAP,CAAb,EAA8BA,MAAA,CAAOhd,KAAP,CAAa,CAAb,CAA9B,EAA+C,IAA/C,CAAZ,CADqB;AAAA,KAAlB,MAEA,IAAIwV,EAAA,KAAO,KAAX,EAAkB;AAAA,QACrBsgB,SAAA,GAAYK,YAAA,CAAcnZ,MAAA,CAAO,CAAP,CAAd,CAAZ,CADqB;AAAA,KAAlB,MAEA,IAAIxH,EAAA,KAAO,MAAX,EAAmB;AAAA,QACtBsgB,SAAA,GAAY;AAAA,YAAC,GAAD;AAAA,YAAMK,YAAA,CAAcnZ,MAAA,CAAO,CAAP,CAAd,CAAN;AAAA,SAAZ,CADsB;AAAA,KAAnB,MAEA;AAAA,QACH8Y,SAAA,GAAY,IAAZ,CADG;AAAA,KAxC+E;AAAA,IA4CtF,OAAOA,SAAP,CA5CsF;AAAA,CAjE1F;AAwHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAASW,iBAAT,CAA2BH,aAA3B,EAAyD;AAAA,IACrD,MAAMI,UAAA,GAAa,EAAnB,CADqD;AAAA,IAErD,KAAWplB,MAAAA,QAAX,IAAuBglB,aAAvB,EAAsC;AAAA,QAClC,MAAMxjB,GAAA,GAAMxB,QAAA,KAAa,KAAb,GAAqB,CAAC,IAAD,CAArB,GAA8B;AAAA,YAAC,KAAD;AAAA,YAAQA,QAAR;AAAA,SAA1C,CADkC;AAAA,QAElColB,UAAA,CAAWn1B,IAAX,CAAgB;AAAA,YAAC,IAAD;AAAA,YAAO;AAAA,gBAAC,QAAD;AAAA,gBAAWuR,GAAX;AAAA,aAAP;AAAA,YAAwBwjB,aAAA,CAAchlB,QAAd,CAAxB;AAAA,SAAhB,CAFkC,CAAA;AAAA,KAFe;AAAA,IAMrD,IAAIolB,UAAA,CAAWh2B,MAAX,KAAsB,CAA1B;AAAA,QAA6B,OAAO,IAAP,CANwB;AAAA,IAOrD,IAAIg2B,UAAA,CAAWh2B,MAAX,KAAsB,CAA1B;AAAA,QAA6B,OAAOg2B,UAAA,CAAW,CAAX,CAAP,CAPwB;AAAA,IAQrD,OAAO,CAAC,KAAD,CAAA,CAAQxrB,MAAR,CAAewrB,UAAf,CAAP,CARqD;AAAA,CAxHzD;AAmIA,SAASX,mBAAT,CAA6BzkB,QAA7B,EAA+C1P,KAA/C,EAA2D4T,EAA3D,EAAuE8gB,aAAvE,EAAsG;AAAA,IAClG,IAAIxjB,GAAJ,CADkG;AAAA,IAElG,IAAIxB,QAAA,KAAa,OAAjB,EAA0B;AAAA,QACtB,OAAO;AAAA,YAACkE,EAAD;AAAA,YAAK,CAAC,eAAD,CAAL;AAAA,YAAwB5T,KAAxB;AAAA,SAAP,CADsB;AAAA,KAA1B,MAEO,IAAI0P,QAAA,KAAa,KAAjB,EAAwB;AAAA,QAC3BwB,GAAA,GAAM,CAAC,IAAD,CAAN,CAD2B;AAAA,KAAxB,MAEA;AAAA,QACHA,GAAA,GAAM;AAAA,YAAC,KAAD;AAAA,YAAQxB,QAAR;AAAA,SAAN,CADG;AAAA,KAN2F;AAAA,IAUlG,IAAIglB,aAAA,IAAiB10B,KAAA,KAAU,IAA/B,EAAqC;AAAA,QACjC,MAAM4C,IAAA,GAAS,OAAO5C,KAAtB,CADiC;AAAA,QAEjC00B,aAAA,CAAchlB,QAAd,CAAA,GAA0B9M,IAA1B,CAFiC;AAAA,KAV6D;AAAA,IAelG,IAAIgR,EAAA,KAAO,IAAP,IAAelE,QAAA,KAAa,KAA5B,IAAqC1P,KAAA,KAAU,IAAnD,EAAyD;AAAA,QACrD,OAAO;AAAA,YACH,KADG;AAAA,YAEH;AAAA,gBAAC,KAAD;AAAA,gBAAQ0P,QAAR;AAAA,aAFG;AAAA;AAGH,YAAA;AAAA,gBAAC,IAAD;AAAA,gBAAOwB,GAAP;AAAA,gBAAY,IAAZ;AAAA,aAHG;AAAA,SAAP,CADqD;AAAA,KAAzD,MAMO,IAAI0C,EAAA,KAAO,IAAP,IAAelE,QAAA,KAAa,KAA5B,IAAqC1P,KAAA,KAAU,IAAnD,EAAyD;AAAA,QAC5D,OAAO;AAAA,YACH,KADG;AAAA,YAEH;AAAA,gBAAC,GAAD;AAAA,gBAAM;AAAA,oBAAC,KAAD;AAAA,oBAAQ0P,QAAR;AAAA,iBAAN;AAAA,aAFG;AAAA;AAGH,YAAA;AAAA,gBAAC,IAAD;AAAA,gBAAOwB,GAAP;AAAA,gBAAY,IAAZ;AAAA,aAHG;AAAA,SAAP,CAD4D;AAAA,KArBkC;AAAA,IA6BlG,OAAO;AAAA,QAAC0C,EAAD;AAAA,QAAK1C,GAAL;AAAA,QAAUlR,KAAV;AAAA,KAAP,CA7BkG;AAAA,CAnItG;AAmKA,SAASs0B,WAAT,CAAqB5kB,QAArB,EAAuCgf,MAAvC,EAA2DqG,MAAA,GAAS,KAApE,EAA2E;AAAA,IACvE,IAAIrG,MAAA,CAAO5vB,MAAP,KAAkB,CAAtB;AAAA,QAAyB,OAAOi2B,MAAP,CAD8C;AAAA,IAGvE,IAAI7jB,GAAJ,CAHuE;AAAA,IAIvE,IAAIxB,QAAA,KAAa,OAAjB,EAA0B;AAAA,QACtBwB,GAAA,GAAM,CAAC,eAAD,CAAN,CADsB;AAAA,KAA1B,MAEO,IAAIxB,QAAA,KAAa,KAAjB,EAAwB;AAAA,QAC3BwB,GAAA,GAAM,CAAC,IAAD,CAAN,CAD2B;AAAA,KAAxB,MAEA;AAAA,QACHA,GAAA,GAAM;AAAA,YAAC,KAAD;AAAA,YAAQxB,QAAR;AAAA,SAAN,CADG;AAAA,KARgE;AAAA;AAgBvE;AAAA;AAAA;AAAA,IAAIslB,IAAAA,YAAA,GAAe,IAAnB,CAhBuE;AAAA,IAiBvE,MAAMpyB,IAAA,GAAO,OAAO8rB,MAAA,CAAO,CAAP,CAApB,CAjBuE;AAAA,IAkBvE,KAAW1uB,MAAAA,KAAX,IAAoB0uB,MAApB,EAA4B;AAAA,QACxB,IAAI,OAAO1uB,KAAP,KAAiB4C,IAArB,EAA2B;AAAA,YACvBoyB,YAAA,GAAe,KAAf,CADuB;AAAA,YAEvB,MAFuB;AAAA,SADH;AAAA,KAlB2C;AAAA,IAyBvE,IAAIA,YAAA,KAAiBpyB,IAAA,KAAS,QAAT,IAAqBA,IAAA,KAAS,QAA9B,CAArB,EAA8D;AAAA;AAE1D,QAAMqyB,MAAAA,YAAA,GAAevG,MAAA,CAAOxG,IAAP,GAAc9M,MAAd,CAAqB,CAAC/T,CAAD,EAAI5C,CAAJ,KAAUA,CAAA,KAAM,CAAN,IAAWiqB,MAAA,CAAOjqB,CAAA,GAAI,CAAX,CAAA,KAAkB4C,CAA5D,CAArB,CAF0D;AAAA,QAG1D,OAAO;AAAA,YAAC,OAAD;AAAA,YAAU6J,GAAV;AAAA,YAAe+jB,YAAf;AAAA,YAA6B,CAACF,MAA9B;AAAA,YAAsCA,MAAtC;AAAA,SAAP,CAH0D;AAAA,KAzBS;AAAA,IA+BvE,OAAO,CAAEA,MAAA,GAAS,KAAT,GAAiB,KAAnB,CAA2BzrB,CAAAA,MAA3B,CACHolB,MAAA,CAAOhuB,GAAP,CAAW2G,CAAA,IAAK;AAAA,QAAC0tB,MAAA,GAAS,IAAT,GAAgB,IAAjB;AAAA,QAAuB7jB,GAAvB;AAAA,QAA4B7J,CAA5B;AAAA,KAAhB,CADG,CAAP,CA/BuE;AAAA,CAnK3E;AAuMA,SAASktB,YAAT,CAAsB7kB,QAAtB,EAAwC;AAAA,IACpC,IAAIA,QAAA,KAAa,OAAjB,EAA0B;AAAA,QACtB,OAAO,IAAP,CADsB;AAAA,KAA1B,MAEO,IAAIA,QAAA,KAAa,KAAjB,EAAwB;AAAA,QAC3B,OAAO;AAAA,YAAC,IAAD;AAAA,YAAO,CAAC,IAAD,CAAP;AAAA,YAAe,IAAf;AAAA,SAAP,CAD2B;AAAA,KAAxB,MAEA;AAAA,QACH,OAAO;AAAA,YAAC,KAAD;AAAA,YAAQA,QAAR;AAAA,SAAP,CADG;AAAA,KAL6B;AAAA;;ACrMxC;AAeA;AAAA;AAAA;AAAA;AAAA;AAAe,6BAAA,EAASpP,KAAT,EAAwD;AAAA,IACnE,MAAM4zB,SAAA,GAAY,EAAlB,CADmE;AAAA,IAGnE7lB,SAAA,CAAU/N,KAAV,EAAkBK,KAAD,IAAW;AAAA,QACxB,IAAIA,KAAA,CAAMya,MAAV,EAAkB;AAAA,YACdza,KAAA,CAAMya,MAAN,GAAgBsX,aAAA,CAAc/xB,KAAA,CAAMya,MAApB,CAAhB,CADc;AAAA,SADM;AAAA,KAA5B,CAHmE,CAAA;AAAA,IASnE9M,YAAA,CAAahO,KAAb,EAAoB;AAAA,QAAC2N,KAAA,EAAO,IAAR;AAAA,QAAcD,MAAA,EAAQ,IAAtB;AAAA,KAApB,EAAiD,CAAC,CAACjF,IAAD,EAAO/I,KAAP,EAAcG,SAAd,EAAyByO,GAAzB,CAAD,KAAmC;AAAA,QAChF,IAAIwgB,YAAA,CAAapvB,KAAb,CAAJ;AAAA,YAAyB,OADuD;AAAA,QAEhF,IAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6B,CAACP,KAAA,CAAMC,OAAN,CAAcM,KAAd,CAAlC,EAAwD;AAAA,YACpD4O,GAAA,CAAIiiB,eAAA,CAAgB7wB,KAAhB,EAAuBG,SAAvB,CAAJ,CADoD,CAAA;AAAA,YAEpD+zB,SAAA,CAAUv0B,IAAV,CAAeoJ,IAAA,CAAK9I,IAAL,CAAU,GAAV,CAAf,CAFoD,CAAA;AAAA,SAAxD,MAGO,IAAIE,SAAA,CAAU4wB,MAAV,IAAoB,OAAO/wB,KAAP,KAAiB,QAAzC,EAAmD;AAAA,YACtD4O,GAAA,CAAIoiB,kBAAA,CAAmBhxB,KAAnB,CAAJ,CADsD,CAAA;AAAA,SALsB;AAAA,KAApF,CATmE,CAAA;AAAA,IAmBnE,OAAOM,KAAP,CAnBmE;AAAA;;ACAvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAe,gBAAA,EAASA,KAAT,EAAgB;AAAA,IAC3B,IAAI40B,QAAA,GAAW,KAAf,CAD2B;AAAA,IAG3B,IAAI50B,KAAA,CAAMgP,OAAN,KAAkB,CAAtB,EAAyB;AAAA,QACrBhP,KAAA,GAAQ60B,WAAA,CAAY70B,KAAZ,CAAR,CADqB;AAAA,QAErB40B,QAAA,GAAW,IAAX,CAFqB;AAAA,KAHE;AAAA,IAQ3B,IAAI50B,KAAA,CAAMgP,OAAN,KAAkB,CAAtB,EAAyB;AAAA,QACrB4lB,QAAA,GAAWE,oBAAA,CAAqB90B,KAArB,CAAX,CADqB;AAAA,QAErB40B,QAAA,GAAW,IAAX,CAFqB;AAAA,KARE;AAAA,IAa3B,IAAI,CAACA,QAAL,EAAe;AAAA,QACX,MAAM,IAAI/kB,KAAJ,CAAU,qBAAV,EAAiC7P,KAAA,CAAMgP,OAAvC,CAAN,CADW;AAAA,KAbY;AAAA,IAiB3B,OAAOhP,KAAP,CAjB2B;AAAA;;AChBhB,kBAAA,EAAUA,KAAV,EAAiB;AAAA,IAC5B,MAAM+0B,QAAA,GAAW,EAAjB,CAD4B;AAAA,IAE5B,MAAMC,SAAA,GAAY,EAAlB,CAF4B;AAAA,IAG5B,MAAMC,sBAAA,GAAyB,EAA/B,CAH4B;AAAA,IAK5B,WAAW5mB,EAAX,IAAiBrO,KAAA,CAAM8N,OAAvB,EAAgC;AAAA,QAC5B,MAAMhC,MAAA,GAAS9L,KAAA,CAAM8N,OAAN,CAAcO,EAAd,CAAf,CAD4B;AAAA,QAG5B,IAAIvC,MAAA,CAAOxJ,IAAP,KAAgB,QAApB;AAAA,YACI,SAJwB;AAAA,QAM5B,MAAM3D,KAAA,GAAQ,kBAAmB2L,CAAAA,IAAnB,CAAwBwB,MAAA,CAAOpC,GAA/B,CAAd,CAN4B;AAAA,QAO5B,IAAI,CAAC/K,KAAL;AAAA,YACI,SARwB;AAAA,QAU5Bo2B,QAAA,CAAS11B,IAAT,CAAcgP,EAAd,CAV4B,CAAA;AAAA,QAW5B2mB,SAAA,CAAU31B,IAAV,CAAeV,KAAA,CAAM,CAAN,CAAf,CAX4B,CAAA;AAAA,KALJ;AAAA,IAmB5B,IAAIo2B,QAAA,CAASv2B,MAAT,GAAkB,CAAtB;AAAA,QACI,OAAOwB,KAAP,CApBwB;AAAA,IAsB5B+0B,QAAA,CAAS3mB,OAAT,CAAkBC,EAAD,IAAQ;AAAA,QACrB,OAAOrO,KAAA,CAAM8N,OAAN,CAAcO,EAAd,CAAP,CADqB;AAAA,KAAzB,CAtB4B,CAAA;AAAA,IA0B5B,MAAM6mB,WAAA,GAAcF,SAAA,CAAUr1B,IAAV,CAAe,GAAf,CAApB,CA1B4B;AAAA,IA4B5BK,KAAA,CAAM8N,OAAN,CAAconB,WAAd,CAA6B,GAAA;AAAA,QACzB,QAAQ,QADiB;AAAA,QAEzB,KAAO,EAAA,CAAC,SAAD,GAAYA,WAAZ,EAFkB,CAAA;AAAA,KAA7B,CA5B4B;AAAA,IAiC5Bl1B,KAAA,CAAMG,MAAN,CAAaiO,OAAb,CAAsB/N,KAAD,IAAW;AAAA,QAC5B,IAAI00B,QAAA,CAASnuB,OAAT,CAAiBvG,KAAA,CAAMyL,MAAvB,CAAkC,IAAA,CAAtC,EAAyC;AAAA,YACrCzL,KAAA,CAAMyL,MAAN,GAAeopB,WAAf,CADqC;AAAA,YAGrC,IAAI,cAAkB70B,IAAAA,KAAtB,EAA6B;AAAA,gBACzB,IAAI40B,sBAAA,CAAuBruB,OAAvB,CAA+BvG,KAAA,CAAM,cAAN,CAA/B,CAAyD,IAAA,CAA7D,EAAgE;AAAA,oBAC5D,MAAM,IAAIwP,KAAJ,CAAU,gCAAV,CAAN,CAD4D;AAAA,iBAAhE,MAEO;AAAA,oBACHolB,sBAAA,CAAuB51B,IAAvB,CAA4BgB,KAAA,CAAM,cAAN,CAA5B,CADG,CAAA;AAAA,iBAHkB;AAAA,aAHQ;AAAA,SADb;AAAA,KAAhC,CAjC4B,CAAA;AAAA,IA+C5B,OAAOL,KAAP,CA/C4B;AAAA;;ACAhC;AAAA,oBAAA;AAAA,IAAA,MAAA;AAAA,IAAA,QAAA;AAAA,IAAA,cAAA;AAAA,IAAA,SAAA;AAAA,IAAA,SAAA;AAAA,IAAA,QAAA;AAAA,IAAA,QAAA;AAAA,CAAA;;ACCA;AAIA,SAASm1B,KAAT,CAAe90B,KAAf,EAA0CoQ,MAA1C,EAA0F;AAAA,IACtF,MAAM3Q,MAAA,GAAS,EAAf,CADsF;AAAA,IAGtF,KAAWgE,MAAAA,CAAX,IAAgBzD,KAAhB,EAAuB;AAAA,QACnB,IAAIyD,CAAA,KAAM,KAAV,EAAiB;AAAA,YACbhE,MAAA,CAAOgE,CAAP,CAAA,GAAYzD,KAAA,CAAMyD,CAAN,CAAZ,CADa;AAAA,SADE;AAAA,KAH+D;AAAA,IAStFsxB,aAAA,CAAchnB,OAAd,CAAuBtK,CAAD,IAAO;AAAA,QACzB,IAAIA,CAAA,IAAK2M,MAAT,EAAiB;AAAA,YACb3Q,MAAA,CAAOgE,CAAP,CAAA,GAAa2M,MAAD,CAAc3M,CAAd,CAAZ,CADa;AAAA,SADQ;AAAA,KAA7B,CATsF,CAAA;AAAA,IAetF,OAAShE,MAAT,CAfsF;AAAA,CAN1F;AAqCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAe,SAASu1B,WAAT,CAAqBl1B,MAArB,EAAmF;AAAA,IAC9FA,MAAA,GAASA,MAAA,CAAOrC,KAAP,EAAT,CAD8F;AAAA,IAG9F,MAAMsC,GAAA,GAAMb,MAAA,CAAO8tB,MAAP,CAAc,IAAd,CAAZ,CAH8F;AAAA,IAI9F,KAAK,IAAIlpB,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIhE,MAAA,CAAO3B,MAA3B,EAAmC2F,CAAA,EAAnC,EAAwC;AAAA,QACpC/D,GAAA,CAAID,MAAA,CAAOgE,CAAP,CAAA,CAAUkK,EAAd,CAAA,GAAoBlO,MAAA,CAAOgE,CAAP,CAApB,CADoC;AAAA,KAJsD;AAAA,IAQ9F,KAAK,IAAIA,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIhE,MAAA,CAAO3B,MAA3B,EAAmC2F,CAAA,EAAnC,EAAwC;AAAA,QACpC,IAAI,KAAShE,IAAAA,MAAA,CAAOgE,CAAP,CAAb,EAAwB;AAAA,YACpBhE,MAAA,CAAOgE,CAAP,CAAA,GAAYgxB,KAAA,CAAMh1B,MAAA,CAAOgE,CAAP,CAAN,EAAiB/D,GAAA,CAAKD,MAAA,CAAOgE,CAAP,CAAD,CAAiBmxB,GAArB,CAAjB,CAAZ,CADoB;AAAA,SADY;AAAA,KARsD;AAAA,IAc9F,OAAOn1B,MAAP,CAd8F;AAAA;;AC9BlG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAASo1B,SAAT,CAAmBvhB,CAAnB,EAA8BD,CAA9B,EAAkD;AAAA,IAC9C,IAAI5U,KAAA,CAAMC,OAAN,CAAc4U,CAAd,CAAJ,EAAsB;AAAA,QAClB,IAAI,CAAC7U,KAAA,CAAMC,OAAN,CAAc2U,CAAd,CAAD,IAAqBC,CAAA,CAAExV,MAAF,KAAauV,CAAA,CAAEvV,MAAxC;AAAA,YAAgD,OAAO,KAAP,CAD9B;AAAA,QAElB,KAAK,IAAI2F,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI6P,CAAA,CAAExV,MAAtB,EAA8B2F,CAAA,EAA9B,EAAmC;AAAA,YAC/B,IAAI,CAACoxB,SAAA,CAAUvhB,CAAA,CAAE7P,CAAF,CAAV,EAAgB4P,CAAA,CAAE5P,CAAF,CAAhB,CAAL;AAAA,gBAA4B,OAAO,KAAP,CADG;AAAA,SAFjB;AAAA,QAKlB,OAAO,IAAP,CALkB;AAAA,KADwB;AAAA,IAQ9C,IAAI,OAAO6P,CAAP,KAAa,QAAb,IAAyBA,CAAA,KAAM,IAA/B,IAAuCD,CAAA,KAAM,IAAjD,EAAuD;AAAA,QACnD,IAAI,EAAE,OAAOA,CAAP,KAAa,QAAb,CAAN;AAAA,YAA8B,OAAO,KAAP,CADqB;AAAA,QAEnD,MAAMzU,IAAA,GAAOC,MAAA,CAAOD,IAAP,CAAY0U,CAAZ,CAAb,CAFmD;AAAA,QAGnD,IAAI1U,IAAA,CAAKd,MAAL,KAAgBe,MAAA,CAAOD,IAAP,CAAYyU,CAAZ,CAAA,CAAevV,MAAnC;AAAA,YAA2C,OAAO,KAAP,CAHQ;AAAA,QAInD,KAAWgB,MAAAA,GAAX,IAAkBwU,CAAlB,EAAqB;AAAA,YACjB,IAAI,CAACuhB,SAAA,CAAUvhB,CAAA,CAAExU,GAAF,CAAV,EAAkBuU,CAAA,CAAEvU,GAAF,CAAlB,CAAL;AAAA,gBAAgC,OAAO,KAAP,CADf;AAAA,SAJ8B;AAAA,QAOnD,OAAO,IAAP,CAPmD;AAAA,KART;AAAA,IAiB9C,OAAOwU,CAAA,KAAMD,CAAb,CAjB8C;AAAA;;ACLlD;AASO,MAAMyhB,UAAA,GAAoC;AAAA;AAK7C;AAAA;AAAA,IAAAC,QAAA,EAAU,UALmC;AAAA;AAU7C;AAAA;AAAA,IAAAC,QAAA,EAAU,UAVmC;AAAA;AAe7C;AAAA;AAAA,IAAAC,WAAA,EAAa,aAfgC;AAAA;AAoB7C;AAAA;AAAA,IAAAC,gBAAA,EAAkB,kBApB2B;AAAA;AAyB7C;AAAA;AAAA,IAAAC,iBAAA,EAAmB,mBAzB0B;AAAA;AA8B7C;AAAA;AAAA,IAAAC,SAAA,EAAW,WA9BkC;AAAA;AAmC7C;AAAA;AAAA,IAAAC,SAAA,EAAW,WAnCkC;AAAA;AAwC7C;AAAA;AAAA,IAAAC,YAAA,EAAc,cAxC+B;AAAA;AA6C7C;AAAA;AAAA,IAAAC,oBAAA,EAAsB,sBA7CuB;AAAA;AAkD7C;AAAA;AAAA,IAAAC,iBAAA,EAAmB,mBAlD0B;AAAA;AAuD7C;AAAA;AAAA,IAAAC,gBAAA,EAAkB,kBAvD2B;AAAA;AA4D7C;AAAA;AAAA,IAAAC,SAAA,EAAW,WA5DkC;AAAA;AAiE7C;AAAA;AAAA,IAAAC,OAAA,EAAS,SAjEoC;AAAA;AAsE7C;AAAA;AAAA,IAAAC,UAAA,EAAY,YAtEiC;AAAA;AA2E7C;AAAA;AAAA,IAAAC,QAAA,EAAU,UA3EmC;AAAA;AAgF7C;AAAA;AAAA,IAAAC,SAAA,EAAW,WAhFkC;AAAA;AAqF7C;AAAA;AAAA,IAAAC,SAAA,EAAW,WArFkC;AAAA;AA0F7C;AAAA;AAAA,IAAAC,aAAA,EAAe,eA1F8B;AAAA;AA+F7C;AAAA;AAAA,IAAAC,QAAA,EAAU,UA/FmC;AAAA;AAoG7C;AAAA;AAAA,IAAAC,UAAA,EAAY,YApGiC;AAAA;AAyG7C;AAAA;AAAA,IAAAC,MAAA,EAAQ,QAzGqC;AAAA;AA8G7C;AAAA;AAAA,IAAAC,aAAA,EAAe,eA9G8B;AAAA,CAA1C,CAXP;AA4HA,SAASf,SAAT,CAAmBgB,QAAnB,EAA6BC,KAA7B,EAAoCC,QAApC,EAA8C;AAAA,IAC1CA,QAAA,CAAS53B,IAAT,CAAc;AAAA,QAAC63B,OAAA,EAAS1B,UAAA,CAAWO,SAArB;AAAA,QAAgChf,IAAA,EAAM;AAAA,YAACggB,QAAD;AAAA,YAAWC,KAAA,CAAMD,QAAN,CAAX;AAAA,SAAtC;AAAA,KAAd,CAD0C,CAAA;AAAA,CA5H9C;AAgIA,SAASf,YAAT,CAAsBe,QAAtB,EAAgCE,QAAhC,EAA0CE,cAA1C,EAA0D;AAAA,IACtDF,QAAA,CAAS53B,IAAT,CAAc;AAAA,QAAC63B,OAAA,EAAS1B,UAAA,CAAWQ,YAArB;AAAA,QAAmCjf,IAAA,EAAM,CAACggB,QAAD,CAAzC;AAAA,KAAd,CADsD,CAAA;AAAA,IAEtDI,cAAA,CAAeJ,QAAf,CAAA,GAA2B,IAA3B,CAFsD;AAAA,CAhI1D;AAqIA,SAASK,YAAT,CAAsBL,QAAtB,EAAgCC,KAAhC,EAAuCC,QAAvC,EAAiDE,cAAjD,EAAiE;AAAA,IAC7DnB,YAAA,CAAae,QAAb,EAAuBE,QAAvB,EAAiCE,cAAjC,CAD6D,CAAA;AAAA,IAE7DpB,SAAA,CAAUgB,QAAV,EAAoBC,KAApB,EAA2BC,QAA3B,CAF6D,CAAA;AAAA,CArIjE;AA0IA,SAASI,gBAAT,CAA0BC,MAA1B,EAAkCN,KAAlC,EAAyCD,QAAzC,EAAmD;AAAA,IAC/C,IAAI9wB,IAAJ,CAD+C;AAAA,IAE/C,KAAKA,IAAL,IAAaqxB,MAAA,CAAOP,QAAP,CAAb,EAA+B;AAAA,QAC3B,IAAI,CAACO,MAAA,CAAOP,QAAP,CAAiBrxB,CAAAA,cAAjB,CAAgCO,IAAhC,CAAL;AAAA,YAA4C,SADjB;AAAA,QAE3B,IAAIA,IAAA,KAAS,MAAT,IAAmB,CAACsxB,SAAA,CAAQD,MAAA,CAAOP,QAAP,EAAiB9wB,IAAjB,CAAR,EAAgC+wB,KAAA,CAAMD,QAAN,CAAgB9wB,CAAAA,IAAhB,CAAhC,CAAxB,EAAgF;AAAA,YAC5E,OAAO,KAAP,CAD4E;AAAA,SAFrD;AAAA,KAFgB;AAAA,IAQ/C,KAAKA,IAAL,IAAa+wB,KAAA,CAAMD,QAAN,CAAb,EAA8B;AAAA,QAC1B,IAAI,CAACC,KAAA,CAAMD,QAAN,CAAgBrxB,CAAAA,cAAhB,CAA+BO,IAA/B,CAAL;AAAA,YAA2C,SADjB;AAAA,QAE1B,IAAIA,IAAA,KAAS,MAAT,IAAmB,CAACsxB,SAAA,CAAQD,MAAA,CAAOP,QAAP,EAAiB9wB,IAAjB,CAAR,EAAgC+wB,KAAA,CAAMD,QAAN,CAAgB9wB,CAAAA,IAAhB,CAAhC,CAAxB,EAAgF;AAAA,YAC5E,OAAO,KAAP,CAD4E;AAAA,SAFtD;AAAA,KARiB;AAAA,IAc/C,OAAO,IAAP,CAd+C;AAAA,CA1InD;AA2JA,SAASuxB,WAAT,CAAqBF,MAArB,EAA6BN,KAA7B,EAAoCC,QAApC,EAA8CE,cAA9C,EAA8D;AAAA,IAC1DG,MAAA,GAASA,MAAA,IAAU,EAAnB,CAD0D;AAAA,IAE1DN,KAAA,GAAQA,KAAA,IAAS,EAAjB,CAF0D;AAAA,IAI1D,IAAID,QAAJ,CAJ0D;AAAA;AAO1D,IAAKA,KAAAA,QAAL,IAAiBO,MAAjB,EAAyB;AAAA,QACrB,IAAI,CAACA,MAAA,CAAO5xB,cAAP,CAAsBqxB,QAAtB,CAAL;AAAA,YAAsC,SADjB;AAAA,QAErB,IAAI,CAACC,KAAA,CAAMtxB,cAAN,CAAqBqxB,QAArB,CAAL,EAAqC;AAAA,YACjCf,YAAA,CAAae,QAAb,EAAuBE,QAAvB,EAAiCE,cAAjC,CADiC,CAAA;AAAA,SAFhB;AAAA,KAPiC;AAAA;AAe1D,IAAKJ,KAAAA,QAAL,IAAiBC,KAAjB,EAAwB;AAAA,QACpB,IAAI,CAACA,KAAA,CAAMtxB,cAAN,CAAqBqxB,QAArB,CAAL;AAAA,YAAqC,SADjB;AAAA,QAEpB,IAAI,CAACO,MAAA,CAAO5xB,cAAP,CAAsBqxB,QAAtB,CAAL,EAAsC;AAAA,YAClChB,SAAA,CAAUgB,QAAV,EAAoBC,KAApB,EAA2BC,QAA3B,CADkC,CAAA;AAAA,SAAtC,MAEO,IAAI,CAACM,SAAA,CAAQD,MAAA,CAAOP,QAAP,CAAR,EAA0BC,KAAA,CAAMD,QAAN,CAA1B,CAAL,EAAiD;AAAA,YACpD,IAAIO,MAAA,CAAOP,QAAP,CAAA,CAAiBz0B,IAAjB,KAA0B,SAA1B,IAAuC00B,KAAA,CAAMD,QAAN,EAAgBz0B,IAAhB,KAAyB,SAAhE,IAA6E+0B,gBAAA,CAAiBC,MAAjB,EAAyBN,KAAzB,EAAgCD,QAAhC,CAAjF,EAA4H;AAAA,gBACxHE,QAAA,CAAS53B,IAAT,CAAc;AAAA,oBAAC63B,OAAA,EAAS1B,UAAA,CAAWS,oBAArB;AAAA,oBAA2Clf,IAAA,EAAM;AAAA,wBAACggB,QAAD;AAAA,wBAAWC,KAAA,CAAMD,QAAN,CAAA,CAAgBU,IAA3B;AAAA,qBAAjD;AAAA,iBAAd,CADwH,CAAA;AAAA,aAA5H,MAEO;AAAA;AAEH,gBAAAL,YAAA,CAAaL,QAAb,EAAuBC,KAAvB,EAA8BC,QAA9B,EAAwCE,cAAxC,CAFG,CAAA;AAAA,aAH6C;AAAA,SAJpC;AAAA,KAfkC;AAAA,CA3J9D;AAyLA,SAASO,wBAAT,CAAkCJ,MAAlC,EAA0CN,KAA1C,EAAiDC,QAAjD,EAA2DU,OAA3D,EAAoEC,KAApE,EAA2EV,OAA3E,EAAoF;AAAA,IAChFI,MAAA,GAASA,MAAA,IAAU,EAAnB,CADgF;AAAA,IAEhFN,KAAA,GAAQA,KAAA,IAAS,EAAjB,CAFgF;AAAA,IAIhF,IAAI/wB,IAAJ,CAJgF;AAAA,IAMhF,KAAKA,IAAL,IAAaqxB,MAAb,EAAqB;AAAA,QACjB,IAAI,CAACA,MAAA,CAAO5xB,cAAP,CAAsBO,IAAtB,CAAL;AAAA,YAAkC,SADjB;AAAA,QAEjB,IAAI,CAACsxB,SAAA,CAAQD,MAAA,CAAOrxB,IAAP,CAAR,EAAsB+wB,KAAA,CAAM/wB,IAAN,CAAtB,CAAL,EAAyC;AAAA,YACrCgxB,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAD;AAAA,gBAAUngB,IAAA,EAAM;AAAA,oBAAC4gB,OAAD;AAAA,oBAAU1xB,IAAV;AAAA,oBAAgB+wB,KAAA,CAAM/wB,IAAN,CAAhB;AAAA,oBAA6B2xB,KAA7B;AAAA,iBAAhB;AAAA,aAAd,CADqC,CAAA;AAAA,SAFxB;AAAA,KAN2D;AAAA,IAYhF,KAAK3xB,IAAL,IAAa+wB,KAAb,EAAoB;AAAA,QAChB,IAAI,CAACA,KAAA,CAAMtxB,cAAN,CAAqBO,IAArB,CAAD,IAA+BqxB,MAAA,CAAO5xB,cAAP,CAAsBO,IAAtB,CAAnC;AAAA,YAAgE,SADhD;AAAA,QAEhB,IAAI,CAACsxB,SAAA,CAAQD,MAAA,CAAOrxB,IAAP,CAAR,EAAsB+wB,KAAA,CAAM/wB,IAAN,CAAtB,CAAL,EAAyC;AAAA,YACrCgxB,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAD;AAAA,gBAAUngB,IAAA,EAAM;AAAA,oBAAC4gB,OAAD;AAAA,oBAAU1xB,IAAV;AAAA,oBAAgB+wB,KAAA,CAAM/wB,IAAN,CAAhB;AAAA,oBAA6B2xB,KAA7B;AAAA,iBAAhB;AAAA,aAAd,CADqC,CAAA;AAAA,SAFzB;AAAA,KAZ4D;AAAA,CAzLpF;AA6MA,SAASC,OAAT,CAAiBx3B,KAAjB,EAAwB;AAAA,IACpB,OAAOA,KAAA,CAAMgO,EAAb,CADoB;AAAA,CA7MxB;AAgNA,SAASypB,SAAT,CAAmBC,KAAnB,EAA0B13B,KAA1B,EAAiC;AAAA,IAC7B03B,KAAA,CAAM13B,KAAA,CAAMgO,EAAZ,CAAA,GAAkBhO,KAAlB,CAD6B;AAAA,IAE7B,OAAO03B,KAAP,CAF6B;AAAA,CAhNjC;AAqNA,SAASC,UAAT,CAAoBV,MAApB,EAA4BN,KAA5B,EAAmCC,QAAnC,EAA6C;AAAA,IACzCK,MAAA,GAASA,MAAA,IAAU,EAAnB,CADyC;AAAA,IAEzCN,KAAA,GAAQA,KAAA,IAAS,EAAjB,CAFyC;AAAA;AAKzC,IAAMiB,MAAAA,WAAA,GAAcX,MAAA,CAAOl3B,GAAP,CAAWy3B,OAAX,CAApB,CALyC;AAAA,IAMzC,MAAMK,UAAA,GAAalB,KAAA,CAAM52B,GAAN,CAAUy3B,OAAV,CAAnB,CANyC;AAAA;AASzC,IAAMM,MAAAA,WAAA,GAAcb,MAAA,CAAOc,MAAP,CAAcN,SAAd,EAAyB,EAAzB,CAApB,CATyC;AAAA,IAUzC,MAAMO,UAAA,GAAarB,KAAA,CAAMoB,MAAN,CAAaN,SAAb,EAAwB,EAAxB,CAAnB,CAVyC;AAAA;AAazC,IAAA,MAAMQ,OAAA,GAAUL,WAAA,CAAYn6B,KAAZ,EAAhB,CAbyC;AAAA;AAgBzC,IAAMy6B,MAAAA,KAAA,GAAQh5B,MAAA,CAAO8tB,MAAP,CAAc,IAAd,CAAd,CAhByC;AAAA,IAkBzC,IAAIlpB,CAAJ,EAAOsa,CAAP,EAAUkZ,OAAV,EAAmBa,WAAnB,EAAgCC,UAAhC,EAA4CC,mBAA5C,EAAiEzyB,IAAjE,CAlByC;AAAA;AAqBzC,IAAA,KAAK9B,CAAA,GAAI,CAAJ,EAAOsa,CAAA,GAAI,CAAhB,EAAmBta,CAAA,GAAI8zB,WAAA,CAAYz5B,MAAnC,EAA2C2F,CAAA,EAA3C,EAAgD;AAAA,QAC5CwzB,OAAA,GAAUM,WAAA,CAAY9zB,CAAZ,CAAV,CAD4C;AAAA,QAE5C,IAAI,CAACk0B,UAAA,CAAW3yB,cAAX,CAA0BiyB,OAA1B,CAAL,EAAyC;AAAA,YACrCV,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWG,WAArB;AAAA,gBAAkC5e,IAAA,EAAM,CAAC4gB,OAAD,CAAxC;AAAA,aAAd,CADqC,CAAA;AAAA,YAErCW,OAAA,CAAQzzB,MAAR,CAAeyzB,OAAA,CAAQ1xB,OAAR,CAAgB+wB,OAAhB,EAAyBlZ,CAAzB,CAAf,EAA4C,CAA5C,CAFqC,CAAA;AAAA,SAAzC,MAGO;AAAA;AAEH,YAAAA,CAAA,EAFG,CAAA;AAAA,SALqC;AAAA,KArBP;AAAA;AAiCzC,IAAA,KAAKta,CAAA,GAAI,CAAJ,EAAOsa,CAAA,GAAI,CAAhB,EAAmBta,CAAA,GAAI+zB,UAAA,CAAW15B,MAAlC,EAA0C2F,CAAA,EAA1C,EAA+C;AAAA;AAE3C,QAAAwzB,OAAA,GAAUO,UAAA,CAAWA,UAAA,CAAW15B,MAAX,GAAoB,CAApB,GAAwB2F,CAAnC,CAAV,CAF2C;AAAA,QAI3C,IAAIm0B,OAAA,CAAQA,OAAA,CAAQ95B,MAAR,GAAiB,CAAjB,GAAqB2F,CAA7B,CAAA,KAAoCwzB,OAAxC;AAAA,YAAiD,SAJN;AAAA,QAM3C,IAAIQ,WAAA,CAAYzyB,cAAZ,CAA2BiyB,OAA3B,CAAJ,EAAyC;AAAA;AAErC,YAAAV,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWG,WAArB;AAAA,gBAAkC5e,IAAA,EAAM,CAAC4gB,OAAD,CAAxC;AAAA,aAAd,CAFqC,CAAA;AAAA,YAGrCW,OAAA,CAAQzzB,MAAR,CAAeyzB,OAAA,CAAQ1zB,WAAR,CAAoB+yB,OAApB,EAA6BW,OAAA,CAAQ95B,MAAR,GAAiBigB,CAA9C,CAAf,EAAiE,CAAjE,CAHqC,CAAA;AAAA,SAAzC,MAIO;AAAA;AAEH,YAAAA,CAAA,EAFG,CAAA;AAAA,SAVoC;AAAA;AAgB3C,QAAAia,mBAAA,GAAsBJ,OAAA,CAAQA,OAAA,CAAQ95B,MAAR,GAAiB2F,CAAzB,CAAtB,CAhB2C;AAAA,QAiB3C8yB,QAAA,CAAS53B,IAAT,CAAc;AAAA,YAAC63B,OAAA,EAAS1B,UAAA,CAAWE,QAArB;AAAA,YAA+B3e,IAAA,EAAM;AAAA,gBAACshB,UAAA,CAAWV,OAAX,CAAD;AAAA,gBAAsBe,mBAAtB;AAAA,aAArC;AAAA,SAAd,CAjB2C,CAAA;AAAA,QAkB3CJ,OAAA,CAAQzzB,MAAR,CAAeyzB,OAAA,CAAQ95B,MAAR,GAAiB2F,CAAhC,EAAmC,CAAnC,EAAsCwzB,OAAtC,CAlB2C,CAAA;AAAA,QAmB3CY,KAAA,CAAMZ,OAAN,CAAA,GAAiB,IAAjB,CAnB2C;AAAA,KAjCN;AAAA;AAwDzC,IAAA,KAAKxzB,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAI+zB,UAAA,CAAW15B,MAA3B,EAAmC2F,CAAA,EAAnC,EAAwC;AAAA,QACpCwzB,OAAA,GAAUO,UAAA,CAAW/zB,CAAX,CAAV,CADoC;AAAA,QAEpCq0B,WAAA,GAAcL,WAAA,CAAYR,OAAZ,CAAd,CAFoC;AAAA,QAGpCc,UAAA,GAAaJ,UAAA,CAAWV,OAAX,CAAb,CAHoC;AAAA;AAMpC,QAAIY,IAAAA,KAAA,CAAMZ,OAAN,CAAA,IAAkBJ,SAAA,CAAQiB,WAAR,EAAqBC,UAArB,CAAtB;AAAA,YAAwD,SANpB;AAAA;AAUpC;AAAA,QAAA,IAAI,CAAClB,SAAA,CAAQiB,WAAA,CAAY1sB,MAApB,EAA4B2sB,UAAA,CAAW3sB,MAAvC,CAAD,IAAmD,CAACyrB,SAAA,CAAQiB,WAAA,CAAY,cAAZ,CAAR,EAAqCC,UAAA,CAAW,cAAX,CAArC,CAApD,IAAwH,CAAClB,SAAA,CAAQiB,WAAA,CAAYl2B,IAApB,EAA0Bm2B,UAAA,CAAWn2B,IAArC,CAA7H,EAAyK;AAAA,YACrK20B,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWG,WAArB;AAAA,gBAAkC5e,IAAA,EAAM,CAAC4gB,OAAD,CAAxC;AAAA,aAAd,CADqK,CAAA;AAAA;AAIrK;AAAA,YAAAe,mBAAA,GAAsBJ,OAAA,CAAQA,OAAA,CAAQ1zB,WAAR,CAAoB+yB,OAApB,CAAA,GAA+B,CAAvC,CAAtB,CAJqK;AAAA,YAKrKV,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWE,QAArB;AAAA,gBAA+B3e,IAAA,EAAM;AAAA,oBAAC0hB,UAAD;AAAA,oBAAaC,mBAAb;AAAA,iBAArC;AAAA,aAAd,CALqK,CAAA;AAAA,YAMrK,SANqK;AAAA,SAVrI;AAAA;AAoBpC,QAAAhB,wBAAA,CAAyBc,WAAA,CAAY9qB,MAArC,EAA6C+qB,UAAA,CAAW/qB,MAAxD,EAAgEupB,QAAhE,EAA0EU,OAA1E,EAAmF,IAAnF,EAAyFnC,UAAA,CAAWK,iBAApG,CApBoC,CAAA;AAAA,QAqBpC6B,wBAAA,CAAyBc,WAAA,CAAY7qB,KAArC,EAA4C8qB,UAAA,CAAW9qB,KAAvD,EAA8DspB,QAA9D,EAAwEU,OAAxE,EAAiF,IAAjF,EAAuFnC,UAAA,CAAWI,gBAAlG,CArBoC,CAAA;AAAA,QAsBpC,IAAI,CAAC2B,SAAA,CAAQiB,WAAA,CAAY1d,MAApB,EAA4B2d,UAAA,CAAW3d,MAAvC,CAAL,EAAqD;AAAA,YACjDmc,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWM,SAArB;AAAA,gBAAgC/e,IAAA,EAAM;AAAA,oBAAC4gB,OAAD;AAAA,oBAAUc,UAAA,CAAW3d,MAArB;AAAA,iBAAtC;AAAA,aAAd,CADiD,CAAA;AAAA,SAtBjB;AAAA,QAyBpC,IAAI,CAACyc,SAAA,CAAQiB,WAAA,CAAYG,OAApB,EAA6BF,UAAA,CAAWE,OAAxC,CAAD,IAAqD,CAACpB,SAAA,CAAQiB,WAAA,CAAYI,OAApB,EAA6BH,UAAA,CAAWG,OAAxC,CAA1D,EAA4G;AAAA,YACxG3B,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWU,iBAArB;AAAA,gBAAwCnf,IAAA,EAAM;AAAA,oBAAC4gB,OAAD;AAAA,oBAAUc,UAAA,CAAWE,OAArB;AAAA,oBAA8BF,UAAA,CAAWG,OAAzC;AAAA,iBAA9C;AAAA,aAAd,CADwG,CAAA;AAAA,SAzBxE;AAAA;AA8BpC,QAAK3yB,KAAAA,IAAL,IAAauyB,WAAb,EAA0B;AAAA,YACtB,IAAI,CAACA,WAAA,CAAY9yB,cAAZ,CAA2BO,IAA3B,CAAL;AAAA,gBAAuC,SADjB;AAAA,YAEtB,IAAIA,IAAA,KAAS,QAAT,IAAqBA,IAAA,KAAS,OAA9B,IAAyCA,IAAA,KAAS,QAAlD,IACAA,IAAA,KAAS,UADT,IACuBA,IAAA,KAAS,SADhC,IAC6CA,IAAA,KAAS,SAD1D;AAAA,gBACqE,SAH/C;AAAA,YAItB,IAAIA,IAAA,CAAKW,OAAL,CAAa,QAAb,CAAA,KAA2B,CAA/B,EAAkC;AAAA,gBAC9B8wB,wBAAA,CAAyBc,WAAA,CAAYvyB,IAAZ,CAAzB,EAA4CwyB,UAAA,CAAWxyB,IAAX,CAA5C,EAA8DgxB,QAA9D,EAAwEU,OAAxE,EAAiF1xB,IAAA,CAAKnI,KAAL,CAAW,CAAX,CAAjF,EAAgG03B,UAAA,CAAWI,gBAA3G,CAD8B,CAAA;AAAA,aAAlC,MAEO,IAAI,CAAC2B,SAAA,CAAQiB,WAAA,CAAYvyB,IAAZ,CAAR,EAA2BwyB,UAAA,CAAWxyB,IAAX,CAA3B,CAAL,EAAmD;AAAA,gBACtDgxB,QAAA,CAAS53B,IAAT,CAAc;AAAA,oBAAC63B,OAAA,EAAS1B,UAAA,CAAWW,gBAArB;AAAA,oBAAuCpf,IAAA,EAAM;AAAA,wBAAC4gB,OAAD;AAAA,wBAAU1xB,IAAV;AAAA,wBAAgBwyB,UAAA,CAAWxyB,IAAX,CAAhB;AAAA,qBAA7C;AAAA,iBAAd,CADsD,CAAA;AAAA,aANpC;AAAA,SA9BU;AAAA,QAwCpC,KAAKA,IAAL,IAAawyB,UAAb,EAAyB;AAAA,YACrB,IAAI,CAACA,UAAA,CAAW/yB,cAAX,CAA0BO,IAA1B,CAAD,IAAoCuyB,WAAA,CAAY9yB,cAAZ,CAA2BO,IAA3B,CAAxC;AAAA,gBAA0E,SADrD;AAAA,YAErB,IAAIA,IAAA,KAAS,QAAT,IAAqBA,IAAA,KAAS,OAA9B,IAAyCA,IAAA,KAAS,QAAlD,IACAA,IAAA,KAAS,UADT,IACuBA,IAAA,KAAS,SADhC,IAC6CA,IAAA,KAAS,SAD1D;AAAA,gBACqE,SAHhD;AAAA,YAIrB,IAAIA,IAAA,CAAKW,OAAL,CAAa,QAAb,CAAA,KAA2B,CAA/B,EAAkC;AAAA,gBAC9B8wB,wBAAA,CAAyBc,WAAA,CAAYvyB,IAAZ,CAAzB,EAA4CwyB,UAAA,CAAWxyB,IAAX,CAA5C,EAA8DgxB,QAA9D,EAAwEU,OAAxE,EAAiF1xB,IAAA,CAAKnI,KAAL,CAAW,CAAX,CAAjF,EAAgG03B,UAAA,CAAWI,gBAA3G,CAD8B,CAAA;AAAA,aAAlC,MAEO,IAAI,CAAC2B,SAAA,CAAQiB,WAAA,CAAYvyB,IAAZ,CAAR,EAA2BwyB,UAAA,CAAWxyB,IAAX,CAA3B,CAAL,EAAmD;AAAA,gBACtDgxB,QAAA,CAAS53B,IAAT,CAAc;AAAA,oBAAC63B,OAAA,EAAS1B,UAAA,CAAWW,gBAArB;AAAA,oBAAuCpf,IAAA,EAAM;AAAA,wBAAC4gB,OAAD;AAAA,wBAAU1xB,IAAV;AAAA,wBAAgBwyB,UAAA,CAAWxyB,IAAX,CAAhB;AAAA,qBAA7C;AAAA,iBAAd,CADsD,CAAA;AAAA,aANrC;AAAA,SAxCW;AAAA,KAxDC;AAAA,CArN7C;AAoVA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAe,SAAS4yB,UAAT,CAAoBvB,MAApB,EAAgDN,KAAhD,EAA2F;AAAA,IACtG,IAAI,CAACM,MAAL;AAAA,QAAa,OAAO,CAAC;AAAA,gBAACJ,OAAA,EAAS1B,UAAA,CAAWC,QAArB;AAAA,gBAA+B1e,IAAA,EAAM,CAACigB,KAAD,CAArC;AAAA,aAAD,CAAP,CADyF;AAAA,IAGtG,IAAIC,QAAA,GAAW,EAAf,CAHsG;AAAA,IAKtG,IAAI;AAAA;AAEA,QAAI,IAAA,CAACM,SAAA,CAAQD,MAAA,CAAOtoB,OAAf,EAAwBgoB,KAAA,CAAMhoB,OAA9B,CAAL,EAA6C;AAAA,YACzC,OAAO,CAAC;AAAA,oBAACkoB,OAAA,EAAS1B,UAAA,CAAWC,QAArB;AAAA,oBAA+B1e,IAAA,EAAM,CAACigB,KAAD,CAArC;AAAA,iBAAD,CAAP,CADyC;AAAA,SAF7C;AAAA,QAKA,IAAI,CAACO,SAAA,CAAQD,MAAA,CAAOvd,MAAf,EAAuBid,KAAA,CAAMjd,MAA7B,CAAL,EAA2C;AAAA,YACvCkd,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWY,SAArB;AAAA,gBAAgCrf,IAAA,EAAM,CAACigB,KAAA,CAAMjd,MAAP,CAAtC;AAAA,aAAd,CADuC,CAAA;AAAA,SAL3C;AAAA,QAQA,IAAI,CAACwd,SAAA,CAAQD,MAAA,CAAO1M,IAAf,EAAqBoM,KAAA,CAAMpM,IAA3B,CAAL,EAAuC;AAAA,YACnCqM,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWa,OAArB;AAAA,gBAA8Btf,IAAA,EAAM,CAACigB,KAAA,CAAMpM,IAAP,CAApC;AAAA,aAAd,CADmC,CAAA;AAAA,SARvC;AAAA,QAWA,IAAI,CAAC2M,SAAA,CAAQD,MAAA,CAAOld,OAAf,EAAwB4c,KAAA,CAAM5c,OAA9B,CAAL,EAA6C;AAAA,YACzC6c,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWc,UAArB;AAAA,gBAAiCvf,IAAA,EAAM,CAACigB,KAAA,CAAM5c,OAAP,CAAvC;AAAA,aAAd,CADyC,CAAA;AAAA,SAX7C;AAAA,QAcA,IAAI,CAACmd,SAAA,CAAQD,MAAA,CAAOzM,KAAf,EAAsBmM,KAAA,CAAMnM,KAA5B,CAAL,EAAyC;AAAA,YACrCoM,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWe,QAArB;AAAA,gBAA+Bxf,IAAA,EAAM,CAACigB,KAAA,CAAMnM,KAAP,CAArC;AAAA,aAAd,CADqC,CAAA;AAAA,SAdzC;AAAA,QAiBA,IAAI,CAAC0M,SAAA,CAAQD,MAAA,CAAOwB,MAAf,EAAuB9B,KAAA,CAAM8B,MAA7B,CAAL,EAA2C;AAAA,YACvC7B,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWgB,SAArB;AAAA,gBAAgCzf,IAAA,EAAM,CAACigB,KAAA,CAAM8B,MAAP,CAAtC;AAAA,aAAd,CADuC,CAAA;AAAA,SAjB3C;AAAA,QAoBA,IAAI,CAACvB,SAAA,CAAQD,MAAA,CAAOxnB,MAAf,EAAuBknB,KAAA,CAAMlnB,MAA7B,CAAL,EAA2C;AAAA,YACvCmnB,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWiB,SAArB;AAAA,gBAAgC1f,IAAA,EAAM,CAACigB,KAAA,CAAMlnB,MAAP,CAAtC;AAAA,aAAd,CADuC,CAAA;AAAA,SApB3C;AAAA,QAuBA,IAAI,CAACynB,SAAA,CAAQD,MAAA,CAAOyB,UAAf,EAA2B/B,KAAA,CAAM+B,UAAjC,CAAL,EAAmD;AAAA,YAC/C9B,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWkB,aAArB;AAAA,gBAAoC3f,IAAA,EAAM,CAACigB,KAAA,CAAM+B,UAAP,CAA1C;AAAA,aAAd,CAD+C,CAAA;AAAA,SAvBnD;AAAA,QA0BA,IAAI,CAACxB,SAAA,CAAQD,MAAA,CAAO0B,KAAf,EAAsBhC,KAAA,CAAMgC,KAA5B,CAAL,EAAyC;AAAA,YACrC/B,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWmB,QAArB;AAAA,gBAA+B5f,IAAA,EAAM,CAACigB,KAAA,CAAMgC,KAAP,CAArC;AAAA,aAAd,CADqC,CAAA;AAAA,SA1BzC;AAAA,QA6BA,IAAI,CAACzB,SAAA,CAAQD,MAAA,CAAO2B,GAAf,EAAoBjC,KAAA,CAAMiC,GAA1B,CAAL,EAAqC;AAAA,YACjChC,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWqB,MAArB;AAAA,gBAA6B9f,IAAA,EAAM,CAACigB,KAAA,CAAMiC,GAAP,CAAnC;AAAA,aAAd,CADiC,CAAA;AAAA,SA7BrC;AAAA,QAgCA,IAAI,CAAC1B,SAAA,CAAQD,MAAA,CAAO4B,UAAf,EAA2BlC,KAAA,CAAMkC,UAAjC,CAAL,EAAmD;AAAA,YAC/CjC,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWsB,aAArB;AAAA,gBAAoC/f,IAAA,EAAM,CAACigB,KAAA,CAAMkC,UAAP,CAA1C;AAAA,aAAd,CAD+C,CAAA;AAAA,SAhCnD;AAAA;AAuCA;AAAA;AAAA,QAAM/B,MAAAA,cAAA,GAAiB,EAAvB,CAvCA;AAAA;AA0CA,QAAMgC,MAAAA,yBAAA,GAA4B,EAAlC,CA1CA;AAAA,QA2CA3B,WAAA,CAAYF,MAAA,CAAOxpB,OAAnB,EAA4BkpB,KAAA,CAAMlpB,OAAlC,EAA2CqrB,yBAA3C,EAAsEhC,cAAtE,CA3CA,CAAA;AAAA;AAkDA;AAAA;AAAA;AAAA;AAAA,QAAMiC,MAAAA,YAAA,GAAe,EAArB,CAlDA;AAAA,QAmDA,IAAI9B,MAAA,CAAOn3B,MAAX,EAAmB;AAAA,YACfm3B,MAAA,CAAOn3B,MAAP,CAAciO,OAAd,CAAuB/N,KAAD,IAAW;AAAA,gBAC7B,IAAIA,KAAA,CAAMyL,MAAN,IAAgBqrB,cAAA,CAAe92B,KAAA,CAAMyL,MAArB,CAApB,EAAkD;AAAA,oBAC9CmrB,QAAA,CAAS53B,IAAT,CAAc;AAAA,wBAAC63B,OAAA,EAAS1B,UAAA,CAAWG,WAArB;AAAA,wBAAkC5e,IAAA,EAAM,CAAC1W,KAAA,CAAMgO,EAAP,CAAxC;AAAA,qBAAd,CAD8C,CAAA;AAAA,iBAAlD,MAEO;AAAA,oBACH+qB,YAAA,CAAa/5B,IAAb,CAAkBgB,KAAlB,CADG,CAAA;AAAA,iBAHsB;AAAA,aAAjC,CADe,CAAA;AAAA,SAnDnB;AAAA;AA8DA,QAAA,IAAIg5B,aAAA,GAAgB/B,MAAA,CAAOgC,OAA3B,CA9DA;AAAA,QA+DA,IAAID,aAAJ,EAAmB;AAAA,YACf,IAAIlC,cAAA,CAAekC,aAAA,CAAcvtB,MAA7B,CAAJ,EAA0C;AAAA,gBACtCmrB,QAAA,CAAS53B,IAAT,CAAc;AAAA,oBAAC63B,OAAA,EAAS1B,UAAA,CAAWoB,UAArB;AAAA,oBAAiC7f,IAAA,EAAM,CAAClZ,SAAD,CAAvC;AAAA,iBAAd,CADsC,CAAA;AAAA,gBAEtCw7B,aAAA,GAAgBx7B,SAAhB,CAFsC;AAAA,aAD3B;AAAA,SA/DnB;AAAA,QAsEAo5B,QAAA,GAAWA,QAAA,CAASjuB,MAAT,CAAgBmwB,yBAAhB,CAAX,CAtEA;AAAA;AA0EA;AAAA,QAAI,IAAA,CAAC5B,SAAA,CAAQ8B,aAAR,EAAuBrC,KAAA,CAAMsC,OAA7B,CAAL,EAA4C;AAAA,YACxCrC,QAAA,CAAS53B,IAAT,CAAc;AAAA,gBAAC63B,OAAA,EAAS1B,UAAA,CAAWoB,UAArB;AAAA,gBAAiC7f,IAAA,EAAM,CAACigB,KAAA,CAAMsC,OAAP,CAAvC;AAAA,aAAd,CADwC,CAAA;AAAA,SA1E5C;AAAA;AA+EA,QAAAtB,UAAA,CAAWoB,YAAX,EAAyBpC,KAAA,CAAM72B,MAA/B,EAAuC82B,QAAvC,CA/EA,CAAA;AAAA,KAAJ,CAiFE,OAAOtjB,CAAP,EAAU;AAAA;AAER,QAAAib,OAAA,CAAQC,IAAR,CAAa,+BAAb,EAA8Clb,CAA9C,CAFQ,CAAA;AAAA,QAGRsjB,QAAA,GAAW,CAAC;AAAA,gBAACC,OAAA,EAAS1B,UAAA,CAAWC,QAArB;AAAA,gBAA+B1e,IAAA,EAAM,CAACigB,KAAD,CAArC;AAAA,aAAD,CAAX,CAHQ;AAAA,KAtF0F;AAAA,IA4FtG,OAAOC,QAAP,CA5FsG;AAAA;;AChV1G;AAAA;AAAe,MAAMsC,eAAN,CAAsB;AAAA,IAKjCjpB,WAAA,CAAY9Q,GAAZ,EAA0BE,KAA1B,EAAwD6Q,OAAxD,EAAyEipB,UAAzE,EAA8F;AAAA,QAC1F,KAAKjpB,OAAL,GAAgB,CAAA/Q,GAAA,GAAM,CAAGA,GAAAA,GAAH,EAAO,EAAP,CAAN,GAAmB,EAAnB,IAAyB+Q,OAAzC,CAD0F;AAAA,QAE1F,IAAIipB,UAAJ;AAAA,YAAgB,IAAKA,CAAAA,UAAL,GAAkBA,UAAlB,CAF0E;AAAA,QAI1F,IAAI95B,KAAA,KAAU,IAAV,IAAkBA,KAAA,KAAU7B,SAA5B,IAAyC6B,KAAA,CAAM+5B,QAAnD,EAA6D;AAAA,YACzD,KAAK1a,IAAL,GAAYrf,KAAA,CAAM+5B,QAAlB,CADyD;AAAA,SAJ6B;AAAA,KAL7D;AAAA;;ACArC;AAAA;AAAe,MAAMppB,YAAN,CAAmB;AAAA,IAK9BC,WAAA,CAAYjO,KAAZ,EAA0B;AAAA,QACtB,IAAKA,CAAAA,KAAL,GAAaA,KAAb,CADsB;AAAA,QAEtB,KAAKkO,OAAL,GAAelO,KAAA,CAAMkO,OAArB,CAFsB;AAAA,QAGtB,MAAM5R,KAAA,GAAQ0D,KAAA,CAAMkO,OAAN,CAAc5R,KAAd,CAAoB,YAApB,CAAd,CAHsB;AAAA,QAItB,KAAKogB,IAAL,GAAYpgB,KAAA,GAAQmU,QAAA,CAASnU,KAAA,CAAM,CAAN,CAAT,EAAmB,EAAnB,CAAR,GAAiC,CAA7C,CAJsB;AAAA,KALI;AAAA;;ACFlC;AAUe,SAAS+6B,cAAT,CAAwBh8B,OAAxB,EAAkE;AAAA,IAC7E,MAAM8B,GAAA,GAAM9B,OAAA,CAAQ8B,GAApB,CAD6E;AAAA,IAE7E,MAAMiY,MAAA,GAAS/Z,OAAA,CAAQgC,KAAvB,CAF6E;AAAA,IAG7E,MAAMi6B,YAAA,GAAej8B,OAAA,CAAQk8B,SAAR,IAAqB,EAA1C,CAH6E;AAAA,IAI7E,MAAMC,iBAAA,GAAoBn8B,OAAA,CAAQo8B,uBAAR,IAAmC,EAA7D,CAJ6E;AAAA,IAK7E,MAAM95B,KAAA,GAAQtC,OAAA,CAAQsC,KAAtB,CAL6E;AAAA,IAM7E,MAAM+5B,SAAA,GAAYr8B,OAAA,CAAQq8B,SAA1B,CAN6E;AAAA,IAO7E,IAAIj4B,MAAA,GAAS,EAAb,CAP6E;AAAA,IAS7E,MAAMQ,IAAA,GAAO4pB,OAAA,CAAQzU,MAAR,CAAb,CAT6E;AAAA,IAU7E,IAAInV,IAAA,KAAS,QAAb,EAAuB;AAAA,QACnB,OAAO,CAAC,IAAIi3B,eAAJ,CAAoB/5B,GAApB,EAAyBiY,MAAzB,EAAiC,CAAC,iBAAD,GAAoBnV,IAApB,EAAyB,MAAzB,CAAjC,CAAD,CAAP,CADmB;AAAA,KAVsD;AAAA,IAc7E,KAAW03B,MAAAA,SAAX,IAAwBviB,MAAxB,EAAgC;AAAA,QAC5B,MAAMwiB,cAAA,GAAiBD,SAAA,CAAUp3B,KAAV,CAAgB,GAAhB,CAAA,CAAqB,CAArB,CAAvB,CAD4B;AAAA;AAE5B,QAAMs3B,MAAAA,WAAA,GAAcP,YAAA,CAAaM,cAAb,KAAgCN,YAAA,CAAa,GAAb,CAApD,CAF4B;AAAA,QAI5B,IAAIQ,eAAJ,CAJ4B;AAAA,QAK5B,IAAIN,iBAAA,CAAkBI,cAAlB,CAAJ,EAAuC;AAAA,YACnCE,eAAA,GAAkBN,iBAAA,CAAkBI,cAAlB,CAAlB,CADmC;AAAA,SAAvC,MAEO,IAAIN,YAAA,CAAaM,cAAb,CAAJ,EAAkC;AAAA,YACrCE,eAAA,GAAkBC,QAAlB,CADqC;AAAA,SAAlC,MAEA,IAAIP,iBAAA,CAAkB,GAAlB,CAAJ,EAA4B;AAAA,YAC/BM,eAAA,GAAkBN,iBAAA,CAAkB,GAAlB,CAAlB,CAD+B;AAAA,SAA5B,MAEA,IAAIF,YAAA,CAAa,GAAb,CAAJ,EAAuB;AAAA,YAC1BQ,eAAA,GAAkBC,QAAlB,CAD0B;AAAA,SAXF;AAAA,QAe5B,IAAI,CAACD,eAAL,EAAsB;AAAA,YAClBr4B,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBiY,MAAA,CAAOuiB,SAAP,CAAzB,EAA4C,CAAC,kBAAD,GAAqBA,SAArB,EAA+B,CAA/B,CAA5C,CAAZ,CADkB,CAAA;AAAA,YAElB,SAFkB;AAAA,SAfM;AAAA,QAoB5Bl4B,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAcmxB,eAAA,CAAgB;AAAA,YACnC36B,GAAA,EAAM,CAAAA,GAAA,GAAM,CAAGA,GAAAA,GAAH,EAAO,CAAP,CAAN,GAAkBA,GAAlB,IAAyBw6B,SADI;AAAA,YAEnCt6B,KAAA,EAAO+X,MAAA,CAAOuiB,SAAP,CAF4B;AAAA,YAGnCJ,SAAA,EAAWM,WAHwB;AAAA,YAInCl6B,KAJmC;AAAA,YAKnC+5B,SALmC;AAAA,YAMnCtiB,MANmC;AAAA,YAOnCuiB,SAAAA;AAPmC,SAAhB,EASpBviB,MAToB,CAAd,CAAT,CApB4B;AAAA,KAd6C;AAAA,IA8C7E,KAAWwiB,MAAAA,cAAX,IAA6BN,YAA7B,EAA2C;AAAA;AAEvC,QAAA,IAAIE,iBAAA,CAAkBI,cAAlB,CAAJ,EAAuC;AAAA,YACnC,SADmC;AAAA,SAFA;AAAA,QAMvC,IAAIN,YAAA,CAAaM,cAAb,EAA6BI,QAA7B,IAAyCV,YAAA,CAAaM,cAAb,EAA6B,SAA7B,CAAA,KAA4Cp8B,SAArF,IAAkG4Z,MAAA,CAAOwiB,cAAP,CAAA,KAA2Bp8B,SAAjI,EAA4I;AAAA,YACxIiE,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBiY,MAAzB,EAAiC,CAAC,2BAAD,GAA8BwiB,cAA9B,EAA6C,CAA7C,CAAjC,CAAZ,CADwI,CAAA;AAAA,SANrG;AAAA,KA9CkC;AAAA,IAyD7E,OAAOn4B,MAAP,CAzD6E;AAAA;;ACVjF;AAUe,SAASw4B,aAAT,CAAuB58B,OAAvB,EAAiE;AAAA,IAC5E,MAAM8E,KAAA,GAAQ9E,OAAA,CAAQgC,KAAtB,CAD4E;AAAA,IAE5E,MAAM66B,SAAA,GAAY78B,OAAA,CAAQk8B,SAA1B,CAF4E;AAAA,IAG5E,MAAM55B,KAAA,GAAQtC,OAAA,CAAQsC,KAAtB,CAH4E;AAAA,IAI5E,MAAM+5B,SAAA,GAAYr8B,OAAA,CAAQq8B,SAA1B,CAJ4E;AAAA,IAK5E,MAAMv6B,GAAA,GAAM9B,OAAA,CAAQ8B,GAApB,CAL4E;AAAA,IAM5E,MAAMg7B,oBAAA,GAAuB98B,OAAA,CAAQ+8B,qBAAR,IAAiCC,QAA9D,CAN4E;AAAA,IAQ5E,IAAIxO,OAAA,CAAQ1pB,KAAR,CAAA,KAAmB,OAAvB,EAAgC;AAAA,QAC5B,OAAO,CAAC,IAAI+2B,eAAJ,CAAoB/5B,GAApB,EAAyBgD,KAAzB,EAAgC,CAAC,gBAAD,GAAmB0pB,OAAA,CAAQ1pB,KAAR,CAAnB,EAAkC,MAAlC,CAAhC,CAAD,CAAP,CAD4B;AAAA,KAR4C;AAAA,IAY5E,IAAI+3B,SAAA,CAAU/7B,MAAV,IAAoBgE,KAAA,CAAMhE,MAAN,KAAiB+7B,SAAA,CAAU/7B,MAAnD,EAA2D;AAAA,QACvD,OAAO,CAAC,IAAI+6B,eAAJ,CAAoB/5B,GAApB,EAAyBgD,KAAzB,EAAgC,CAAC,aAAD,GAAgB+3B,SAAA,CAAU/7B,MAA1B,EAAiC,kBAAjC,GAAqDgE,KAAA,CAAMhE,MAA3D,EAAkE,MAAlE,CAAhC,CAAD,CAAP,CADuD;AAAA,KAZiB;AAAA,IAgB5E,IAAI+7B,SAAA,CAAU,YAAV,CAA2B/3B,IAAAA,KAAA,CAAMhE,MAAN,GAAe+7B,SAAA,CAAU,YAAV,CAA9C,EAAuE;AAAA,QACnE,OAAO,CAAC,IAAIhB,eAAJ,CAAoB/5B,GAApB,EAAyBgD,KAAzB,EAAgC,CAAC,sBAAD,GAAyB+3B,SAAA,CAAU,YAAV,CAAzB,EAAiD,kBAAjD,GAAqE/3B,KAAA,CAAMhE,MAA3E,EAAkF,MAAlF,CAAhC,CAAD,CAAP,CADmE;AAAA,KAhBK;AAAA,IAoB5E,IAAIm8B,gBAAA,GAAmB;AAAA,QACnB,MAAA,EAAQJ,SAAA,CAAU76B,KADC;AAAA,QAEnB,QAAA,EAAU66B,SAAA,CAAUnM,MAFD;AAAA,QAGnB,SAAA,EAAWmM,SAAA,CAAUK,OAHF;AAAA,QAInB,SAAA,EAAWL,SAAA,CAAUM,OAJF;AAAA,QAKnBC,QAAA,EAAUj9B,SALS;AAAA,KAAvB,CApB4E;AAAA,IA4B5E,IAAIk8B,SAAA,CAAUgB,QAAV,GAAqB,CAAzB,EAA4B;AAAA,QACxBJ,gBAAA,CAAiBG,QAAjB,GAA4BP,SAAA,CAAUO,QAAtC,CADwB;AAAA,KA5BgD;AAAA,IAgC5E,IAAI5O,OAAA,CAAQqO,SAAA,CAAU76B,KAAlB,CAAA,KAA6B,QAAjC,EAA2C;AAAA,QACvCi7B,gBAAA,GAAmBJ,SAAA,CAAU76B,KAA7B,CADuC;AAAA,KAhCiC;AAAA,IAoC5E,IAAIoC,MAAA,GAAS,EAAb,CApC4E;AAAA,IAqC5E,KAAK,IAAIqC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI3B,KAAA,CAAMhE,MAA1B,EAAkC2F,CAAA,EAAlC,EAAuC;AAAA,QACnCrC,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAcwxB,oBAAA,CAAqB;AAAA,YACxCh4B,KADwC;AAAA,YAExCw4B,UAAA,EAAY72B,CAF4B;AAAA,YAGxCzE,KAAA,EAAO8C,KAAA,CAAM2B,CAAN,CAHiC;AAAA,YAIxCy1B,SAAA,EAAWe,gBAJ6B;AAAA,YAKxC36B,KALwC;AAAA,YAMxC+5B,SANwC;AAAA,YAOxCv6B,GAAA,EAAK,CAAA,GAAGA,GAAH,EAAO,CAAP,GAAU2E,CAAV,EAAY,CAAZ,CAPmC;AAAA,SAArB,CAAd,CAAT,CADmC;AAAA,KArCqC;AAAA,IAgD5E,OAAOrC,MAAP,CAhD4E;AAAA;;ACVhF;AASe,SAASm5B,cAAT,CAAwBv9B,OAAxB,EAAkE;AAAA,IAC7E,MAAM8B,GAAA,GAAM9B,OAAA,CAAQ8B,GAApB,CAD6E;AAAA,IAE7E,MAAME,KAAA,GAAQhC,OAAA,CAAQgC,KAAtB,CAF6E;AAAA,IAG7E,MAAMk6B,SAAA,GAAYl8B,OAAA,CAAQk8B,SAA1B,CAH6E;AAAA,IAI7E,IAAIt3B,IAAA,GAAO4pB,OAAA,CAAQxsB,KAAR,CAAX,CAJ6E;AAAA;AAO7E,IAAA,IAAI4C,IAAA,KAAS,QAAT,IAAqB5C,KAAA,KAAUA,KAAnC,EAA0C;AAAA,QACtC4C,IAAA,GAAO,KAAP,CADsC;AAAA,KAPmC;AAAA,IAW7E,IAAIA,IAAA,KAAS,QAAb,EAAuB;AAAA,QACnB,OAAO,CAAC,IAAIi3B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAC,iBAAD,GAAoB4C,IAApB,EAAyB,MAAzB,CAAhC,CAAD,CAAP,CADmB;AAAA,KAXsD;AAAA,IAe7E,IAAI,SAAas3B,IAAAA,SAAjB,EAA4B;AAAA,QACxB,IAAIsB,OAAA,GAAUtB,SAAA,CAAUgB,OAAxB,CADwB;AAAA,QAExB,IAAI1O,OAAA,CAAQ0N,SAAA,CAAUgB,OAAlB,CAAA,KAA+B,OAAnC,EAA4C;AAAA,YACxC,MAAMz2B,CAAA,GAAIzG,OAAA,CAAQs9B,UAAlB,CADwC;AAAA,YAExCE,OAAA,GAAUtB,SAAA,CAAUgB,OAAV,CAAkBz2B,CAAlB,CAAV,CAFwC;AAAA,SAFpB;AAAA,QAMxB,IAAIzE,KAAA,GAAQw7B,OAAZ,EAAqB;AAAA,YACjB,OAAO,CAAC,IAAI3B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAGA,GAAAA,KAAH,EAAS,gCAAT,GAA2Cw7B,OAA3C,EAAhC,CAAA,CAAD,CAAP,CADiB;AAAA,SANG;AAAA,KAfiD;AAAA,IA0B7E,IAAI,SAAatB,IAAAA,SAAjB,EAA4B;AAAA,QACxB,IAAIuB,OAAA,GAAUvB,SAAA,CAAUiB,OAAxB,CADwB;AAAA,QAExB,IAAI3O,OAAA,CAAQ0N,SAAA,CAAUiB,OAAlB,CAAA,KAA+B,OAAnC,EAA4C;AAAA,YACxC,MAAM12B,CAAA,GAAIzG,OAAA,CAAQs9B,UAAlB,CADwC;AAAA,YAExCG,OAAA,GAAUvB,SAAA,CAAUiB,OAAV,CAAkB12B,CAAlB,CAAV,CAFwC;AAAA,SAFpB;AAAA,QAMxB,IAAIzE,KAAA,GAAQy7B,OAAZ,EAAqB;AAAA,YACjB,OAAO,CAAC,IAAI5B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAGA,GAAAA,KAAH,EAAS,mCAAT,GAA8Cy7B,OAA9C,EAAhC,CAAA,CAAD,CAAP,CADiB;AAAA,SANG;AAAA,KA1BiD;AAAA,IAqC7E,OAAO,EAAP,CArC6E;AAAA;;ACTjF;AAgBe,SAASC,gBAAT,CAA0B19B,OAA1B,EAA2D;AAAA,IACtE,MAAM29B,iBAAA,GAAoB39B,OAAA,CAAQk8B,SAAlC,CADsE;AAAA,IAEtE,MAAM5I,YAAA,GAAeW,QAAA,CAASj0B,OAAA,CAAQgC,KAAR,CAAc4C,IAAvB,CAArB,CAFsE;AAAA,IAGtE,IAAIg5B,WAAJ,CAHsE;AAAA,IAItE,IAAIC,gBAAA,GAAiD,EAArD,CAJsE;AAAA,IAKtE,IAAIC,uBAAJ,CALsE;AAAA,IAMtE,IAAIC,sBAAJ,CANsE;AAAA,IAQtE,MAAMC,cAAA,GAAiB1K,YAAA,KAAiB,aAAjB,IAAkCtzB,OAAA,CAAQgC,KAAR,CAAc0P,QAAd,KAA2BvR,SAApF,CARsE;AAAA,IAStE,MAAM89B,kBAAA,GAAqB,CAACD,cAA5B,CATsE;AAAA,IAUtE,MAAME,yBAAA,GACF1P,OAAA,CAAQxuB,OAAA,CAAQgC,KAAR,CAAckP,KAAtB,CAAA,KAAiC,OAAjC,IACAsd,OAAA,CAAQxuB,OAAA,CAAQgC,KAAR,CAAckP,KAAd,CAAoB,CAApB,CAAR,CAAoC,KAAA,OADpC,IAEAsd,OAAA,CAAQxuB,OAAA,CAAQgC,KAAR,CAAckP,KAAd,CAAoB,CAApB,CAAA,CAAuB,CAAvB,CAAR,CAAA,KAAuC,QAH3C,CAVsE;AAAA,IAetE,MAAM9M,MAAA,GAAS43B,cAAA,CAAe;AAAA,QAC1Bl6B,GAAA,EAAK9B,OAAA,CAAQ8B,GADa;AAAA,QAE1BE,KAAA,EAAOhC,OAAA,CAAQgC,KAFW;AAAA,QAG1Bk6B,SAAA,EAAWl8B,OAAA,CAAQq8B,SAAR,CAAkBe,QAHH;AAAA,QAI1B96B,KAAA,EAAOtC,OAAA,CAAQsC,KAJW;AAAA,QAK1B+5B,SAAA,EAAWr8B,OAAA,CAAQq8B,SALO;AAAA,QAM1BD,uBAAA,EAAyB;AAAA,YACrBlrB,KAAA,EAAOitB,qBADc;AAAA,YAErBjP,OAAA,EAASkP,uBAFY;AAAA,SANC;AAAA,KAAf,CAAf,CAfsE;AAAA,IA2BtE,IAAI9K,YAAA,KAAiB,UAAjB,IAA+B0K,cAAnC,EAAmD;AAAA,QAC/C55B,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC9B,OAAA,CAAQgC,KAAzC,EAAgD,sCAAhD,CAAZ,CAD+C,CAAA;AAAA,KA3BmB;AAAA,IA+BtE,IAAIsxB,YAAA,KAAiB,UAAjB,IAA+B,CAACtzB,OAAA,CAAQgC,KAAR,CAAckP,KAAlD,EAAyD;AAAA,QACrD9M,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC9B,OAAA,CAAQgC,KAAzC,EAAgD,mCAAhD,CAAZ,CADqD,CAAA;AAAA,KA/Ba;AAAA,IAmCtE,IAAIsxB,YAAA,KAAiB,aAAjB,IAAkCtzB,OAAA,CAAQk8B,SAAR,CAAkBjpB,UAApD,IAAkE,CAACqb,qBAAA,CAAsBtuB,OAAA,CAAQk8B,SAA9B,CAAvE,EAAiH;AAAA,QAC7G93B,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC9B,OAAA,CAAQgC,KAAzC,EAAgD,qCAAhD,CAAZ,CAD6G,CAAA;AAAA,KAnC3C;AAAA,IAuCtE,IAAIhC,OAAA,CAAQq8B,SAAR,CAAkBgB,QAAlB,IAA8B,CAAlC,EAAqC;AAAA,QACjC,IAAIY,kBAAA,IAAsB,CAAC/P,0BAAA,CAA2BluB,OAAA,CAAQk8B,SAAnC,CAA3B,EAA0E;AAAA,YACtE93B,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC9B,OAAA,CAAQgC,KAAzC,EAAgD,kCAAhD,CAAZ,CADsE,CAAA;AAAA,SAA1E,MAEO,IAAIg8B,cAAA,IAAkB,CAAC5P,sBAAA,CAAuBpuB,OAAA,CAAQk8B,SAA/B,CAAvB,EAAkE;AAAA,YACrE93B,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC9B,OAAA,CAAQgC,KAAzC,EAAgD,8BAAhD,CAAZ,CADqE,CAAA;AAAA,SAHxC;AAAA,KAvCiC;AAAA,IA+CtE,IAAK,CAAAsxB,YAAA,KAAiB,aAAjB,IAAkC4K,yBAAlC,KAAgEl+B,OAAA,CAAQgC,KAAR,CAAc0P,QAAd,KAA2BvR,SAAhG,EAA2G;AAAA,QACvGiE,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC9B,OAAA,CAAQgC,KAAzC,EAAgD,iCAAhD,CAAZ,CADuG,CAAA;AAAA,KA/CrC;AAAA,IAmDtE,OAAOoC,MAAP,CAnDsE;AAAA,IAqDtE,SAAS+5B,qBAAT,CAA+Bn+B,OAA/B,EAA2D;AAAA,QACvD,IAAIszB,YAAA,KAAiB,UAArB,EAAiC;AAAA,YAC7B,OAAO,CAAC,IAAIuI,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC9B,OAAA,CAAQgC,KAAzC,EAAgD,mDAAhD,CAAD,CAAP,CAD6B;AAAA,SADsB;AAAA,QAKvD,IAAIoC,MAAA,GAAS,EAAb,CALuD;AAAA,QAMvD,MAAMpC,KAAA,GAAQhC,OAAA,CAAQgC,KAAtB,CANuD;AAAA,QAQvDoC,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAcsxB,aAAA,CAAc;AAAA,YACjC96B,GAAA,EAAK9B,OAAA,CAAQ8B,GADoB;AAAA,YAEjCE,KAFiC;AAAA,YAGjCk6B,SAAA,EAAWl8B,OAAA,CAAQk8B,SAHc;AAAA,YAIjC55B,KAAA,EAAOtC,OAAA,CAAQsC,KAJkB;AAAA,YAKjC+5B,SAAA,EAAWr8B,OAAA,CAAQq8B,SALc;AAAA,YAMjCU,qBAAA,EAAuBsB,oBANU;AAAA,SAAd,CAAd,CAAT,CARuD;AAAA,QAiBvD,IAAI7P,OAAA,CAAQxsB,KAAR,CAAmB,KAAA,OAAnB,IAA8BA,KAAA,CAAMlB,MAAN,KAAiB,CAAnD,EAAsD;AAAA,YAClDsD,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiCE,KAAjC,EAAwC,mCAAxC,CAAZ,CADkD,CAAA;AAAA,SAjBC;AAAA,QAqBvD,OAAOoC,MAAP,CArBuD;AAAA,KArDW;AAAA,IA6EtE,SAASi6B,oBAAT,CAA8Br+B,OAA9B,EAA0D;AAAA,QACtD,IAAIoE,MAAA,GAAS,EAAb,CADsD;AAAA,QAEtD,MAAMpC,KAAA,GAAQhC,OAAA,CAAQgC,KAAtB,CAFsD;AAAA,QAGtD,MAAMF,GAAA,GAAM9B,OAAA,CAAQ8B,GAApB,CAHsD;AAAA,QAKtD,IAAI0sB,OAAA,CAAQxsB,KAAR,CAAA,KAAmB,OAAvB,EAAgC;AAAA,YAC5B,OAAO,CAAC,IAAI65B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAC,gBAAD,GAAmBwsB,OAAA,CAAQxsB,KAAR,CAAnB,EAAkC,MAAlC,CAAhC,CAAD,CAAP,CAD4B;AAAA,SALsB;AAAA,QAStD,IAAIA,KAAA,CAAMlB,MAAN,KAAiB,CAArB,EAAwB;AAAA,YACpB,OAAO,CAAC,IAAI+6B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAC,gCAAD,GAAmCA,KAAA,CAAMlB,MAAzC,EAAgD,MAAhD,CAAhC,CAAD,CAAP,CADoB;AAAA,SAT8B;AAAA,QAatD,IAAIo9B,yBAAJ,EAA+B;AAAA,YAC3B,IAAI1P,OAAA,CAAQxsB,KAAA,CAAM,CAAN,CAAR,CAAsB,KAAA,QAA1B,EAAoC;AAAA,gBAChC,OAAO,CAAC,IAAI65B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAC,iBAAD,GAAoBwsB,OAAA,CAAQxsB,KAAA,CAAM,CAAN,CAAR,CAApB,EAAsC,MAAtC,CAAhC,CAAD,CAAP,CADgC;AAAA,aADT;AAAA,YAI3B,IAAIA,KAAA,CAAM,CAAN,EAASkrB,IAAT,KAAkB/sB,SAAtB,EAAiC;AAAA,gBAC7B,OAAO,CAAC,IAAI07B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,gCAAhC,CAAD,CAAP,CAD6B;AAAA,aAJN;AAAA,YAO3B,IAAIA,KAAA,CAAM,CAAN,EAASA,KAAT,KAAmB7B,SAAvB,EAAkC;AAAA,gBAC9B,OAAO,CAAC,IAAI07B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,iCAAhC,CAAD,CAAP,CAD8B;AAAA,aAPP;AAAA,YAW3B,MAAMs8B,kBAAA,GAAqBrK,QAAA,CAASjyB,KAAA,CAAM,CAAN,CAAA,CAASkrB,IAAlB,CAA3B,CAX2B;AAAA,YAY3B,IAAI,OAAOoR,kBAAP,KAA8B,QAAlC,EAA4C;AAAA,gBACxC,OAAO,CAAC,IAAIzC,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAA,CAAM,CAAN,EAASkrB,IAAlC,EAAwC,kCAAxC,CAAD,CAAP,CADwC;AAAA,aAZjB;AAAA,YAgB3B,IAAI6Q,sBAAA,IAA0BA,sBAAA,GAAyBO,kBAAvD,EAA2E;AAAA,gBACvE,OAAO,CAAC,IAAIzC,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAA,CAAM,CAAN,EAASkrB,IAAlC,EAAwC,iDAAxC,CAAD,CAAP,CADuE;AAAA,aAhBhD;AAAA,YAmB3B,IAAIoR,kBAAA,KAAuBP,sBAA3B,EAAmD;AAAA,gBAC/CA,sBAAA,GAAyBO,kBAAzB,CAD+C;AAAA,gBAE/CR,uBAAA,GAA0B39B,SAA1B,CAF+C;AAAA,gBAG/C09B,gBAAA,GAAmB,EAAnB,CAH+C;AAAA,aAnBxB;AAAA,YAwB3Bz5B,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc0wB,cAAA,CAAe;AAAA,gBAClCl6B,GAAA,EAAK,CAAA,GAAGA,GAAH,EAAO,GAAP,CAD6B;AAAA,gBAElCE,KAAA,EAAOA,KAAA,CAAM,CAAN,CAF2B;AAAA,gBAGlCk6B,SAAA,EAAW,EAAChP,IAAA,EAAM,EAAP,EAHuB;AAAA,gBAIlC5qB,KAAA,EAAOtC,OAAA,CAAQsC,KAJmB;AAAA,gBAKlC+5B,SAAA,EAAWr8B,OAAA,CAAQq8B,SALe;AAAA,gBAMlCD,uBAAA,EAAyB;AAAA,oBAAClP,IAAA,EAAMqQ,cAAP;AAAA,oBAAuBv7B,KAAA,EAAOu8B,uBAA9B;AAAA,iBANS;AAAA,aAAf,CAAd,CAAT,CAxB2B;AAAA,SAA/B,MAgCO;AAAA,YACHn6B,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAcizB,uBAAA,CAAwB;AAAA,gBAC3Cz8B,GAAA,EAAK,CAAA,GAAGA,GAAH,EAAO,GAAP,CADsC;AAAA,gBAE3CE,KAAA,EAAOA,KAAA,CAAM,CAAN,CAFoC;AAAA,gBAG3Ck6B,SAAA,EAAW,EAHgC;AAAA,gBAI3C55B,KAAA,EAAOtC,OAAA,CAAQsC,KAJ4B;AAAA,gBAK3C+5B,SAAA,EAAWr8B,OAAA,CAAQq8B,SALwB;AAAA,aAAxB,EAMpBr6B,KANoB,CAAd,CAAT,CADG;AAAA,SA7C+C;AAAA,QAuDtD,IAAIovB,YAAA,CAAa+C,YAAA,CAAanyB,KAAA,CAAM,CAAN,CAAb,CAAb,CAAJ,EAA0C;AAAA,YACtC,OAAOoC,MAAA,CAAOkH,MAAP,CAAc,CAAC,IAAIuwB,eAAJ,CAAoB,CAAA,GAAG/5B,GAAH,EAAO,GAAP,CAApB,EAAiCE,KAAA,CAAM,CAAN,CAAjC,EAA2C,gDAA3C,CAAD,CAAd,CAAP,CADsC;AAAA,SAvDY;AAAA,QA2DtD,OAAOoC,MAAA,CAAOkH,MAAP,CAAc0xB,QAAA,CAAS;AAAA,YAC1Bl7B,GAAA,EAAK,CAAA,GAAGA,GAAH,EAAO,GAAP,CADqB;AAAA,YAE1BE,KAAA,EAAOA,KAAA,CAAM,CAAN,CAFmB;AAAA,YAG1Bk6B,SAAA,EAAWyB,iBAHe;AAAA,YAI1Br7B,KAAA,EAAOtC,OAAA,CAAQsC,KAJW;AAAA,YAK1B+5B,SAAA,EAAWr8B,OAAA,CAAQq8B,SALO;AAAA,SAAT,CAAd,CAAP,CA3DsD;AAAA,KA7EY;AAAA,IAiJtE,SAASkC,uBAAT,CAAiCv+B,OAAjC,EAA6D2R,IAA7D,EAAmE;AAAA,QAC/D,MAAM/M,IAAA,GAAO4pB,OAAA,CAAQxuB,OAAA,CAAQgC,KAAhB,CAAb,CAD+D;AAAA,QAE/D,MAAMA,KAAA,GAAQiyB,QAAA,CAASj0B,OAAA,CAAQgC,KAAjB,CAAd,CAF+D;AAAA,QAI/D,MAAMw8B,WAAA,GAAcx+B,OAAA,CAAQgC,KAAR,KAAkB,IAAlB,GAAyBhC,OAAA,CAAQgC,KAAjC,GAAyC2P,IAA7D,CAJ+D;AAAA,QAM/D,IAAI,CAACisB,WAAL,EAAkB;AAAA,YACdA,WAAA,GAAch5B,IAAd,CADc;AAAA,SAAlB,MAEO,IAAIA,IAAA,KAASg5B,WAAb,EAA0B;AAAA,YAC7B,OAAO,CAAC,IAAI/B,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC08B,WAAjC,EAA8C,CAAG55B,GAAAA,IAAH,EAAQ,uDAAR,GAAiEg5B,WAAjE,EAA9C,CAAA,CAAD,CAAP,CAD6B;AAAA,SAR8B;AAAA,QAY/D,IAAIh5B,IAAA,KAAS,QAAT,IAAqBA,IAAA,KAAS,QAA9B,IAA0CA,IAAA,KAAS,SAAnD,IAAgE,OAAO5C,KAAP,KAAiB,QAAjF,IAA6F,OAAOA,KAAP,KAAiB,QAA9G,IAA0H,OAAOA,KAAP,KAAiB,SAA/I,EAA0J;AAAA,YACtJ,OAAO,CAAC,IAAI65B,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC08B,WAAjC,EAA8C,wDAA9C,CAAD,CAAP,CADsJ;AAAA,SAZ3F;AAAA,QAgB/D,IAAI55B,IAAA,KAAS,QAAT,IAAqB0uB,YAAA,KAAiB,aAA1C,EAAyD;AAAA,YACrD,IAAIzgB,OAAA,GAAU,CAAC,iBAAD,GAAoBjO,IAApB,EAAyB,MAAzB,CAAd,CADqD;AAAA,YAErD,IAAIspB,0BAAA,CAA2ByP,iBAA3B,KAAiDrK,YAAA,KAAiBnzB,SAAtE,EAAiF;AAAA,gBAC7E0S,OAAA,IAAW,mFAAX,CAD6E;AAAA,aAF5B;AAAA,YAKrD,OAAO,CAAC,IAAIgpB,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC08B,WAAjC,EAA8C3rB,OAA9C,CAAD,CAAP,CALqD;AAAA,SAhBM;AAAA,QAwB/D,IAAIygB,YAAA,KAAiB,aAAjB,IAAkC1uB,IAAA,KAAS,QAA3C,KAAwD,OAAO5C,KAAP,KAAiB,QAAjB,IAA6B,CAACyH,QAAA,CAASzH,KAAT,CAA9B,IAAiDuC,IAAA,CAAKD,KAAL,CAAWtC,KAAX,CAAA,KAAsBA,KAAvE,CAA5D,EAA2I;AAAA,YACvI,OAAO,CAAC,IAAI65B,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC08B,WAAjC,EAA8C,CAAC,wBAAD,GAA2B/5B,MAAA,CAAOzC,KAAP,CAA3B,EAAA,CAA9C,CAAD,CAAP,CADuI;AAAA,SAxB5E;AAAA,QA4B/D,IAAIsxB,YAAA,KAAiB,aAAjB,IAAkC1uB,IAAA,KAAS,QAA3C,IAAuD,OAAO5C,KAAP,KAAiB,QAAxE,IAAoF,OAAO87B,uBAAP,KAAmC,QAAvH,IAAmIA,uBAAA,KAA4B39B,SAA/J,IAA4K6B,KAAA,GAAQ87B,uBAAxL,EAAiN;AAAA,YAC7M,OAAO,CAAC,IAAIjC,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC08B,WAAjC,EAA8C,mDAA9C,CAAD,CAAP,CAD6M;AAAA,SAAjN,MAEO;AAAA,YACHV,uBAAA,GAA0B97B,KAA1B,CADG;AAAA,SA9BwD;AAAA,QAkC/D,IAAIsxB,YAAA,KAAiB,aAAjB,IAAmCtxB,KAAD,IAAgB67B,gBAAtD,EAAwE;AAAA,YACpE,OAAO,CAAC,IAAIhC,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC08B,WAAjC,EAA8C,mCAA9C,CAAD,CAAP,CADoE;AAAA,SAAxE,MAEO;AAAA,YACHX,gBAAA,CAAkB77B,KAAlB,CAAA,GAAiC,IAAjC,CADG;AAAA,SApCwD;AAAA,QAwC/D,OAAO,EAAP,CAxC+D;AAAA,KAjJG;AAAA,IA4LtE,SAASo8B,uBAAT,CAAiCp+B,OAAjC,EAA6D;AAAA,QACzD,OAAOg9B,QAAA,CAAS;AAAA,YACZl7B,GAAA,EAAK9B,OAAA,CAAQ8B,GADD;AAAA,YAEZE,KAAA,EAAOhC,OAAA,CAAQgC,KAFH;AAAA,YAGZk6B,SAAA,EAAWyB,iBAHC;AAAA,YAIZr7B,KAAA,EAAOtC,OAAA,CAAQsC,KAJH;AAAA,YAKZ+5B,SAAA,EAAWr8B,OAAA,CAAQq8B,SALP;AAAA,SAAT,CAAP,CADyD;AAAA,KA5LS;AAAA;;AChB1E;AASe,SAASoC,kBAAT,CAA4Bz+B,OAA5B,EAAkE;AAAA,IAC7E,MAAMiT,UAAA,GAAc,CAAAjT,OAAA,CAAQ0+B,iBAAR,KAA8B,UAA9B,GAA2C9M,wBAA3C,GAAsEP,gBAAtE,EAAwF8C,YAAA,CAAan0B,OAAA,CAAQgC,KAArB,CAAzF,EAAsHhC,OAAA,CAAQk8B,SAA9H,CAAnB,CAD6E;AAAA,IAE7E,IAAIjpB,UAAA,CAAW7Q,MAAX,KAAsB,OAA1B,EAAmC;AAAA,QAC/B,OAAO6Q,UAAA,CAAWjR,KAAX,CAAiBU,GAAjB,CAAsBiC,KAAD,IAAW;AAAA,YACnC,OAAO,IAAIk3B,eAAJ,CAAoB,IAAG77B,OAAA,CAAQ8B,GAAX,EAAA,GAAiB6C,KAAA,CAAM7C,GAAvB,EAApB,CAAA,EAAkD9B,OAAA,CAAQgC,KAA1D,EAAiE2C,KAAA,CAAMkO,OAAvE,CAAP,CADmC;AAAA,SAAhC,CAAP,CAD+B;AAAA,KAF0C;AAAA,IAQ7E,MAAM8rB,aAAA,GAAiB1rB,UAAA,CAAWjR,KAAZ,CAAwBiR,UAAxB,IAAuCA,UAAA,CAAWjR,KAAZ,CAAwByvB,gBAAxB,CAAyCxe,UAArG,CAR6E;AAAA,IAU7E,IAAIjT,OAAA,CAAQ0+B,iBAAR,KAA8B,UAA9B,IAA6C1+B,OAAA,CAAQ4+B,WAAR,KAAwB,WAArE,IACA,CAACD,aAAA,CAAcjlB,aAAd,EADL,EACoC;AAAA,QAChC,OAAO,CAAC,IAAImiB,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC9B,OAAA,CAAQgC,KAAzC,EAAgD,CAAC,6BAAD,GAAgChC,OAAA,CAAQ4+B,WAAxC,EAAoD,qEAApD,CAAhD,CAAD,CAAP,CADgC;AAAA,KAXyC;AAAA,IAe7E,IAAI5+B,OAAA,CAAQ0+B,iBAAR,KAA8B,UAA9B,IAA4C1+B,OAAA,CAAQwQ,YAAR,KAAyB,QAArE,IACC,CAACyS,eAAA,CAAgB0b,aAAhB,CADN,EACuC;AAAA,QACnC,OAAO,CAAC,IAAI9C,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC9B,OAAA,CAAQgC,KAAzC,EAAgD,4EAAhD,CAAD,CAAP,CADmC;AAAA,KAhBsC;AAAA,IAoB7E,IAAIhC,OAAA,CAAQ0+B,iBAAR,KAA8B,QAAlC,EAA4C;AAAA,QACxC,OAAOG,0BAAA,CAA2BF,aAA3B,EAA0C3+B,OAA1C,CAAP,CADwC;AAAA,KApBiC;AAAA,IAwB7E,IAAIA,OAAA,CAAQ0+B,iBAAR,IAA6B1+B,OAAA,CAAQ0+B,iBAAR,CAA0Bx1B,OAA1B,CAAkC,SAAlC,CAAA,KAAiD,CAAlF,EAAqF;AAAA,QACjF,IAAI,CAACga,wBAAA,CAAyByb,aAAzB,EAAwC;AAAA,gBAAC,MAAD;AAAA,gBAAS,eAAT;AAAA,aAAxC,CAAL,EAAyE;AAAA,YACrE,OAAO,CAAC,IAAI9C,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC9B,OAAA,CAAQgC,KAAzC,EAAgD,mFAAhD,CAAD,CAAP,CADqE;AAAA,SADQ;AAAA,QAIjF,IAAIhC,OAAA,CAAQ0+B,iBAAR,KAA8B,iBAA9B,IAAmD,CAAC1b,iBAAA,CAAkB2b,aAAlB,CAAxD,EAA0F;AAAA,YACtF,OAAO,CAAC,IAAI9C,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC9B,OAAA,CAAQgC,KAAzC,EAAgD,gGAAhD,CAAD,CAAP,CADsF;AAAA,SAJT;AAAA,KAxBR;AAAA,IAiC7E,OAAO,EAAP,CAjC6E;AAAA,CAXjF;AA+CO,SAAS68B,0BAAT,CAAoC5oB,CAApC,EAAmDjW,OAAnD,EAAyF;AAAA,IAC5F,MAAM8+B,oBAAA,GAAuB,IAAI9I,GAAJ,CAAQ;AAAA,QACjC,MADiC;AAAA,QAEjC,eAFiC;AAAA,QAGjC,OAHiC;AAAA,QAIjC,sBAJiC;AAAA,KAAR,CAA7B,CAD4F;AAAA,IAQ5F,IAAIh2B,OAAA,CAAQk8B,SAAR,IAAqBl8B,OAAA,CAAQk8B,SAAR,CAAkBjpB,UAA3C,EAAuD;AAAA,QACnD,KAAA,MAAWgjB,KAAX,IAAoBj2B,OAAA,CAAQk8B,SAAR,CAAkBjpB,UAAlB,CAA6Bob,UAAjD,EAA6D;AAAA,YACzDyQ,oBAAA,CAAqBC,MAArB,CAA4B9I,KAA5B,CADyD,CAAA;AAAA,SADV;AAAA,KARqC;AAAA,IAc5F,IAAI6I,oBAAA,CAAqBE,IAArB,KAA8B,CAAlC,EAAqC;AAAA,QACjC,OAAO,EAAP,CADiC;AAAA,KAduD;AAAA,IAiB5F,MAAM56B,MAAA,GAAS,EAAf,CAjB4F;AAAA,IAmB5F,IAAI6R,CAAA,YAAa6G,oBAAjB,EAAqC;AAAA,QACjC,IAAIgiB,oBAAA,CAAqB3rB,GAArB,CAAyB8C,CAAA,CAAEvM,IAA3B,CAAJ,EAAsC;AAAA,YAClC,OAAO,CAAC,IAAImyB,eAAJ,CAAoB77B,OAAA,CAAQ8B,GAA5B,EAAiC9B,OAAA,CAAQgC,KAAzC,EAAgD,CAAC,EAAD,GAAKiU,CAAA,CAAEvM,IAAP,EAAY,iDAAZ,GAA+D1J,OAAA,CAAQ+Z,MAAR,CAAenV,IAA9E,EAAmF,gBAAnF,GAAqG5E,OAAA,CAAQ+Z,MAAR,CAAepJ,EAApH,EAAhD,CAAA,CAAD,CAAP,CADkC;AAAA,SADL;AAAA,KAnBuD;AAAA,IAwB5FsF,CAAA,CAAEwD,SAAF,CAAatR,GAAD,IAAS;AAAA,QACjB/D,MAAA,CAAOzC,IAAP,CAAY,GAAGk9B,0BAAA,CAA2B12B,GAA3B,EAAgCnI,OAAhC,CAAf,CADiB,CAAA;AAAA,KAArB,CAxB4F,CAAA;AAAA,IA4B5F,OAAOoE,MAAP,CA5B4F;AAAA;;AC7ChG;AAKe,SAAS66B,eAAT,CAAyBj/B,OAAzB,EAA6E;AAAA,IACxF,MAAMgC,KAAA,GAAQhC,OAAA,CAAQgC,KAAtB,CADwF;AAAA,IAExF,MAAMF,GAAA,GAAM9B,OAAA,CAAQ8B,GAApB,CAFwF;AAAA,IAGxF,MAAM8C,IAAA,GAAO4pB,OAAA,CAAQxsB,KAAR,CAAb,CAHwF;AAAA,IAKxF,IAAI4C,IAAA,KAAS,SAAb,EAAwB;AAAA,QACpB,OAAO,CAAC,IAAIi3B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAC,kBAAD,GAAqB4C,IAArB,EAA0B,MAA1B,CAAhC,CAAD,CAAP,CADoB;AAAA,KALgE;AAAA,IASxF,OAAO,EAAP,CATwF;AAAA;;ACL5F;AAMe,SAASs6B,aAAT,CAAuBl/B,OAAvB,EAA2E;AAAA,IACtF,MAAM8B,GAAA,GAAM9B,OAAA,CAAQ8B,GAApB,CADsF;AAAA,IAEtF,MAAME,KAAA,GAAQhC,OAAA,CAAQgC,KAAtB,CAFsF;AAAA,IAGtF,MAAM4C,IAAA,GAAO4pB,OAAA,CAAQxsB,KAAR,CAAb,CAHsF;AAAA,IAKtF,IAAI4C,IAAA,KAAS,QAAb,EAAuB;AAAA,QACnB,OAAO,CAAC,IAAIi3B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAC,gBAAD,GAAmB4C,IAAnB,EAAwB,MAAxB,CAAhC,CAAD,CAAP,CADmB;AAAA,KAL+D;AAAA,IAStF,IAAI6Q,eAAA,CAAczT,KAAd,CAAA,KAAyB,IAA7B,EAAmC;AAAA,QAC/B,OAAO,CAAC,IAAI65B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAC,iBAAD,GAAoBA,KAApB,EAA0B,OAA1B,CAAhC,CAAD,CAAP,CAD+B;AAAA,KATmD;AAAA,IAatF,OAAO,EAAP,CAbsF;AAAA;;ACN1F;AAKe,SAASm9B,YAAT,CAAsBn/B,OAAtB,EAA0E;AAAA,IACrF,MAAM8B,GAAA,GAAM9B,OAAA,CAAQ8B,GAApB,CADqF;AAAA,IAErF,MAAME,KAAA,GAAQhC,OAAA,CAAQgC,KAAtB,CAFqF;AAAA,IAGrF,MAAMk6B,SAAA,GAAYl8B,OAAA,CAAQk8B,SAA1B,CAHqF;AAAA,IAIrF,MAAM93B,MAAA,GAAS,EAAf,CAJqF;AAAA,IAMrF,IAAI3C,KAAA,CAAMC,OAAN,CAAcw6B,SAAA,CAAUxL,MAAxB,CAAJ,EAAqC;AAAA;AACjC,QAAA,IAAIwL,SAAA,CAAUxL,MAAV,CAAiBxnB,OAAjB,CAAyB+qB,QAAA,CAASjyB,KAAT,CAAzB,CAA8C,KAAA,CAAC,CAAnD,EAAsD;AAAA,YAClDoC,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAC,iBAAD,GAAoBk6B,SAAA,CAAUxL,MAAV,CAAiBzuB,IAAjB,CAAsB,IAAtB,CAApB,EAAgD,GAAhD,GAAqD/B,IAAA,CAAKJ,SAAL,CAAekC,KAAf,CAArD,EAA2E,MAA3E,CAAhC,CAAZ,CADkD,CAAA;AAAA,SADrB;AAAA,KAArC,MAIO;AAAA;AACH,QAAA,IAAIH,MAAA,CAAOD,IAAP,CAAYs6B,SAAA,CAAUxL,MAAtB,CAAA,CAA8BxnB,OAA9B,CAAsC+qB,QAAA,CAASjyB,KAAT,CAAtC,CAA2D,KAAA,CAAC,CAAhE,EAAmE;AAAA,YAC/DoC,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAC,iBAAD,GAAoBH,MAAA,CAAOD,IAAP,CAAYs6B,SAAA,CAAUxL,MAAtB,EAA8BzuB,IAA9B,CAAmC,IAAnC,CAApB,EAA6D,GAA7D,GAAkE/B,IAAA,CAAKJ,SAAL,CAAekC,KAAf,CAAlE,EAAwF,MAAxF,CAAhC,CAAZ,CAD+D,CAAA;AAAA,SADhE;AAAA,KAV8E;AAAA,IAerF,OAAOoC,MAAP,CAfqF;AAAA;;ACLzF;AAce,SAASg7B,cAAT,CAAwBp/B,OAAxB,EAAkE;AAAA,IAC7E,IAAIq0B,kBAAA,CAAmBF,YAAA,CAAan0B,OAAA,CAAQgC,KAArB,CAAnB,CAAJ,EAAqD;AAAA;AAEjD,QAAA,MAAMuyB,SAAA,GAAYv0B,OAAA,CAAQu0B,SAAR,IAAqB,MAAvC,CAFiD;AAAA,QAIjD,OAAOkK,kBAAA,CAAmBxP,MAAA,CAAO,EAAP,EAAWjvB,OAAX,EAAoB;AAAA,YAC1C0+B,iBAAA,EAAmB,QADuB;AAAA,YAE1CxC,SAAA,EAAWl8B,OAAA,CAAQq8B,SAAR,CAAkB,CAAC,OAAD,GAAU9H,SAAV,EAAA,CAAlB,CAF+B;AAAA,SAApB,CAAnB,CAAP,CAJiD;AAAA,KAArD,MAQO;AAAA,QACH,OAAO8K,2BAAA,CAA4Br/B,OAA5B,CAAP,CADG;AAAA,KATsE;AAAA,CAhBjF;AA8BA,SAASq/B,2BAAT,CAAqCr/B,OAArC,EAA8C;AAAA,IAC1C,MAAMgC,KAAA,GAAQhC,OAAA,CAAQgC,KAAtB,CAD0C;AAAA,IAE1C,MAAMF,GAAA,GAAM9B,OAAA,CAAQ8B,GAApB,CAF0C;AAAA,IAI1C,IAAI0sB,OAAA,CAAQxsB,KAAR,CAAA,KAAmB,OAAvB,EAAgC;AAAA,QAC5B,OAAO,CAAC,IAAI65B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAC,gBAAD,GAAmBwsB,OAAA,CAAQxsB,KAAR,CAAnB,EAAkC,MAAlC,CAAhC,CAAD,CAAP,CAD4B;AAAA,KAJU;AAAA,IAQ1C,MAAMq6B,SAAA,GAAYr8B,OAAA,CAAQq8B,SAA1B,CAR0C;AAAA,IAS1C,IAAIz3B,IAAJ,CAT0C;AAAA,IAW1C,IAAIR,MAAA,GAAS,EAAb,CAX0C;AAAA,IAa1C,IAAIpC,KAAA,CAAMlB,MAAN,GAAe,CAAnB,EAAsB;AAAA,QAClB,OAAO,CAAC,IAAI+6B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,2CAAhC,CAAD,CAAP,CADkB;AAAA,KAboB;AAAA,IAiB1CoC,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc6zB,YAAA,CAAa;AAAA,QAChCr9B,GAAA,EAAK,CAAA,GAAGA,GAAH,EAAO,GAAP,CAD2B;AAAA,QAEhCE,KAAA,EAAOA,KAAA,CAAM,CAAN,CAFyB;AAAA,QAGhCk6B,SAAA,EAAWG,SAAA,CAAUiD,eAHW;AAAA,QAIhCh9B,KAAA,EAAOtC,OAAA,CAAQsC,KAJiB;AAAA,QAKhC+5B,SAAA,EAAWr8B,OAAA,CAAQq8B,SALa;AAAA,KAAb,CAAd,CAAT,CAjB0C;AAAA,IAyB1C,QAAQpI,QAAA,CAASjyB,KAAA,CAAM,CAAN,CAAT,CAAR;AAAA,IACA,KAAK,GAAL,CADA;AAAA,IAEA,KAAK,IAAL,CAFA;AAAA,IAGA,KAAK,GAAL,CAHA;AAAA,IAIA,KAAK,IAAL;AAAA,QACI,IAAIA,KAAA,CAAMlB,MAAN,IAAgB,CAAhB,IAAqBmzB,QAAA,CAASjyB,KAAA,CAAM,CAAN,CAAT,CAAA,KAAuB,OAAhD,EAAyD;AAAA,YACrDoC,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAC,qCAAD,GAAwCA,KAAA,CAAM,CAAN,CAAxC,EAAiD,CAAjD,CAAhC,CAAZ,CADqD,CAAA;AAAA,SAL7D;AAAA;AASA,IAAA,KAAK,IAAL,CATA;AAAA,IAUA,KAAK,IAAL;AAAA,QACI,IAAIA,KAAA,CAAMlB,MAAN,KAAiB,CAArB,EAAwB;AAAA,YACpBsD,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAC,2BAAD,GAA8BA,KAAA,CAAM,CAAN,CAA9B,EAAuC,sBAAvC,CAAhC,CAAZ,CADoB,CAAA;AAAA,SAX5B;AAAA;AAeA,IAAA,KAAK,IAAL,CAfA;AAAA,IAgBA,KAAK,KAAL;AAAA,QACI,IAAIA,KAAA,CAAMlB,MAAN,IAAgB,CAApB,EAAuB;AAAA,YACnB8D,IAAA,GAAO4pB,OAAA,CAAQxsB,KAAA,CAAM,CAAN,CAAR,CAAP,CADmB;AAAA,YAEnB,IAAI4C,IAAA,KAAS,QAAb,EAAuB;AAAA,gBACnBR,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB,CAAG/5B,GAAAA,GAAH,EAAO,GAAP,CAApB,EAAiCE,KAAA,CAAM,CAAN,CAAjC,EAA2C,CAAC,iBAAD,GAAoB4C,IAApB,EAAyB,MAAzB,CAA3C,CAAZ,CADmB,CAAA;AAAA,aAFJ;AAAA,SAD3B;AAAA,QAOI,KAAK,IAAI6B,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIzE,KAAA,CAAMlB,MAA1B,EAAkC2F,CAAA,EAAlC,EAAuC;AAAA,YACnC7B,IAAA,GAAO4pB,OAAA,CAAQxsB,KAAA,CAAMyE,CAAN,CAAR,CAAP,CADmC;AAAA,YAEnC,IAAIwtB,QAAA,CAASjyB,KAAA,CAAM,CAAN,CAAT,CAAuB,KAAA,OAA3B,EAAoC;AAAA,gBAChCoC,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc6zB,YAAA,CAAa;AAAA,oBAChCr9B,GAAA,EAAK,CAAA,GAAGA,GAAH,EAAO,CAAP,GAAU2E,CAAV,EAAY,CAAZ,CAD2B;AAAA,oBAEhCzE,KAAA,EAAOA,KAAA,CAAMyE,CAAN,CAFyB;AAAA,oBAGhCy1B,SAAA,EAAWG,SAAA,CAAUkD,aAHW;AAAA,oBAIhCj9B,KAAA,EAAOtC,OAAA,CAAQsC,KAJiB;AAAA,oBAKhC+5B,SAAA,EAAWr8B,OAAA,CAAQq8B,SALa;AAAA,iBAAb,CAAd,CAAT,CADgC;AAAA,aAApC,MAQO,IAAIz3B,IAAA,KAAS,QAAT,IAAqBA,IAAA,KAAS,QAA9B,IAA0CA,IAAA,KAAS,SAAvD,EAAkE;AAAA,gBACrER,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB,CAAA,GAAG/5B,GAAH,EAAO,CAAP,GAAU2E,CAAV,EAAY,CAAZ,CAApB,EAAoCzE,KAAA,CAAMyE,CAAN,CAApC,EAA8C,CAAC,qCAAD,GAAwC7B,IAAxC,EAA6C,MAA7C,CAA9C,CAAZ,CADqE,CAAA;AAAA,aAVtC;AAAA,SAP3C;AAAA,QAqBI,MArCJ;AAAA,IAuCA,KAAK,KAAL,CAvCA;AAAA,IAwCA,KAAK,KAAL,CAxCA;AAAA,IAyCA,KAAK,MAAL;AAAA,QACI,KAAK,IAAI6B,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIzE,KAAA,CAAMlB,MAA1B,EAAkC2F,CAAA,EAAlC,EAAuC;AAAA,YACnCrC,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc+zB,2BAAA,CAA4B;AAAA,gBAC/Cv9B,GAAA,EAAK,CAAA,GAAGA,GAAH,EAAO,CAAP,GAAU2E,CAAV,EAAY,CAAZ,CAD0C;AAAA,gBAE/CzE,KAAA,EAAOA,KAAA,CAAMyE,CAAN,CAFwC;AAAA,gBAG/CnE,KAAA,EAAOtC,OAAA,CAAQsC,KAHgC;AAAA,gBAI/C+5B,SAAA,EAAWr8B,OAAA,CAAQq8B,SAJ4B;AAAA,aAA5B,CAAd,CAAT,CADmC;AAAA,SAD3C;AAAA,QASI,MAlDJ;AAAA,IAoDA,KAAK,KAAL,CApDA;AAAA,IAqDA,KAAK,MAAL;AAAA,QACIz3B,IAAA,GAAO4pB,OAAA,CAAQxsB,KAAA,CAAM,CAAN,CAAR,CAAP,CADJ;AAAA,QAEI,IAAIA,KAAA,CAAMlB,MAAN,KAAiB,CAArB,EAAwB;AAAA,YACpBsD,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAC,kBAAD,GAAqBA,KAAA,CAAM,CAAN,CAArB,EAA8B,+BAA9B,CAAhC,CAAZ,CADoB,CAAA;AAAA,SAAxB,MAEO,IAAI4C,IAAA,KAAS,QAAb,EAAuB;AAAA,YAC1BR,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB,CAAG/5B,GAAAA,GAAH,EAAO,GAAP,CAApB,EAAiCE,KAAA,CAAM,CAAN,CAAjC,EAA2C,CAAC,iBAAD,GAAoB4C,IAApB,EAAyB,MAAzB,CAA3C,CAAZ,CAD0B,CAAA;AAAA,SAJlC;AAAA,QAOI,MA5DJ;AAAA,IA6DA,KAAK,QAAL;AAAA,QACIA,IAAA,GAAO4pB,OAAA,CAAQxsB,KAAA,CAAM,CAAN,CAAR,CAAP,CADJ;AAAA,QAEI,IAAIA,KAAA,CAAMlB,MAAN,KAAiB,CAArB,EAAwB;AAAA,YACpBsD,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAC,kBAAD,GAAqBA,KAAA,CAAM,CAAN,CAArB,EAA8B,+BAA9B,CAAhC,CAAZ,CADoB,CAAA;AAAA,SAAxB,MAEO,IAAI4C,IAAA,KAAS,QAAb,EAAuB;AAAA,YAC1BR,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB,CAAG/5B,GAAAA,GAAH,EAAO,GAAP,CAApB,EAAiCE,KAAA,CAAM,CAAN,CAAjC,EAA2C,CAAC,iBAAD,GAAoB4C,IAApB,EAAyB,MAAzB,CAA3C,CAAZ,CAD0B,CAAA;AAAA,SAJlC;AAAA,QAOI,MApEJ;AAAA,KAzB0C;AAAA,IA+F1C,OAAOR,MAAP,CA/F0C;AAAA;;AC5B9C;AAce,SAASo7B,gBAAT,CAA0Bx/B,OAA1B,EAA8DwQ,YAA9D,EAA4G;AAAA,IACvH,MAAM1O,GAAA,GAAM9B,OAAA,CAAQ8B,GAApB,CADuH;AAAA,IAEvH,MAAMQ,KAAA,GAAQtC,OAAA,CAAQsC,KAAtB,CAFuH;AAAA,IAGvH,MAAM+5B,SAAA,GAAYr8B,OAAA,CAAQq8B,SAA1B,CAHuH;AAAA,IAIvH,MAAMr6B,KAAA,GAAQhC,OAAA,CAAQgC,KAAtB,CAJuH;AAAA,IAKvH,MAAM48B,WAAA,GAAc5+B,OAAA,CAAQs8B,SAA5B,CALuH;AAAA,IAMvH,MAAMmD,SAAA,GAAYpD,SAAA,CAAU,CAAG7rB,GAAAA,YAAH,EAAgB,CAAhB,GAAmBxQ,OAAA,CAAQu0B,SAA3B,EAAA,CAAV,CAAlB,CANuH;AAAA,IAQvH,IAAI,CAACkL,SAAL;AAAA,QAAgB,OAAO,EAAP,CARuG;AAAA,IAUvH,MAAMC,eAAA,GAAkBd,WAAA,CAAY39B,KAAZ,CAAkB,mBAAlB,CAAxB,CAVuH;AAAA,IAWvH,IAAIuP,YAAA,KAAiB,OAAjB,IAA4BkvB,eAA5B,IAA+CD,SAAA,CAAUC,eAAA,CAAgB,CAAhB,CAAV,CAA/C,IAAgFD,SAAA,CAAUC,eAAA,CAAgB,CAAhB,CAAV,CAA8BrE,CAAAA,UAAlH,EAA8H;AAAA,QAC1H,OAAO2B,QAAA,CAAS;AAAA,YACZl7B,GADY;AAAA,YAEZE,KAFY;AAAA,YAGZk6B,SAAA,EAAWG,SAAA,CAAUhB,UAHT;AAAA,YAIZ/4B,KAJY;AAAA,YAKZ+5B,SALY;AAAA,SAAT,CAAP,CAD0H;AAAA,KAXP;AAAA,IAqBvH,MAAMH,SAAA,GAAYl8B,OAAA,CAAQk8B,SAAR,IAAqBuD,SAAA,CAAUb,WAAV,CAAvC,CArBuH;AAAA,IAsBvH,IAAI,CAAC1C,SAAL,EAAgB;AAAA,QACZ,OAAO,CAAC,IAAIL,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAC,kBAAD,GAAqB48B,WAArB,EAAiC,CAAjC,CAAhC,CAAD,CAAP,CADY;AAAA,KAtBuG;AAAA,IA0BvH,IAAIe,UAAJ,CA1BuH;AAAA,IA2BvH,IAAInR,OAAA,CAAQxsB,KAAR,CAAA,KAAmB,QAAnB,IAA+BksB,0BAAA,CAA2BgO,SAA3B,CAA/B,IAAwE,CAACA,SAAA,CAAUnJ,MAAnF,KAA8F4M,UAAA,GAAa,aAAc/yB,CAAAA,IAAd,CAAmB5K,KAAnB,CAAb,CAAlG,EAA2I;AAAA,QACvI,OAAO,CAAC,IAAI65B,eAAJ,CACJ/5B,GADI,EACCE,KADD,EAEJ,CAAC,CAAD,GAAI48B,WAAJ,EAAgB,yCAAhB,CAAA,GACI,CAAC,+EAAD,GAAkF1+B,IAAA,CAAKJ,SAAL,CAAe6/B,UAAA,CAAW,CAAX,CAAf,CAAlF,EAAgH,KAAhH,CAHA,CAAD,CAAP,CADuI;AAAA,KA3BpB;AAAA,IAkCvH,MAAMv7B,MAAA,GAAS,EAAf,CAlCuH;AAAA,IAoCvH,IAAIpE,OAAA,CAAQu0B,SAAR,KAAsB,QAA1B,EAAoC;AAAA,QAChC,IAAIqK,WAAA,KAAgB,YAAhB,IAAgCt8B,KAAhC,IAAyC,CAACA,KAAA,CAAM8P,MAApD,EAA4D;AAAA,YACxDhO,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,wDAAhC,CAAZ,CADwD,CAAA;AAAA,SAD5B;AAAA,QAIhC,IAAI48B,WAAA,KAAgB,WAAhB,IAA+B3tB,UAAA,CAAWkjB,YAAA,CAAanyB,KAAb,CAAX,CAA/B,IAAkEiyB,QAAA,CAASjyB,KAAA,CAAM4C,IAAf,CAAA,KAAyB,UAA/F,EAA2G;AAAA,YACvGR,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,iDAAhC,CAAZ,CADuG,CAAA;AAAA,SAJ3E;AAAA,KApCmF;AAAA,IA6CvH,OAAOoC,MAAA,CAAOkH,MAAP,CAAc0xB,QAAA,CAAS;AAAA,QAC1Bl7B,GAAA,EAAK9B,OAAA,CAAQ8B,GADa;AAAA,QAE1BE,KAF0B;AAAA,QAG1Bk6B,SAH0B;AAAA,QAI1B55B,KAJ0B;AAAA,QAK1B+5B,SAL0B;AAAA,QAM1BqC,iBAAA,EAAmB,UANO;AAAA,QAO1BluB,YAP0B;AAAA,QAQ1BouB,WAR0B;AAAA,KAAT,CAAd,CAAP,CA7CuH;AAAA;;ACd3H;AAKe,SAASgB,qBAAT,CAA+B5/B,OAA/B,EAA2F;AAAA,IACtG,OAAOw/B,gBAAA,CAAiBx/B,OAAjB,EAA0B,OAA1B,CAAP,CADsG;AAAA;;ACL1G;AAKe,SAAS6/B,sBAAT,CAAgC7/B,OAAhC,EAA4F;AAAA,IACvG,OAAOw/B,gBAAA,CAAiBx/B,OAAjB,EAA0B,QAA1B,CAAP,CADuG;AAAA;;ACL3G;AAiBe,SAAS8/B,aAAT,CAAuB9/B,OAAvB,EAAiE;AAAA,IAC5E,IAAIoE,MAAA,GAAS,EAAb,CAD4E;AAAA,IAG5E,MAAMzB,KAAA,GAAQ3C,OAAA,CAAQgC,KAAtB,CAH4E;AAAA,IAI5E,MAAMF,GAAA,GAAM9B,OAAA,CAAQ8B,GAApB,CAJ4E;AAAA,IAK5E,MAAMQ,KAAA,GAAQtC,OAAA,CAAQsC,KAAtB,CAL4E;AAAA,IAM5E,MAAM+5B,SAAA,GAAYr8B,OAAA,CAAQq8B,SAA1B,CAN4E;AAAA,IAQ5E,IAAI,CAAC15B,KAAA,CAAMiC,IAAP,IAAe,CAACjC,KAAA,CAAMi1B,GAA1B,EAA+B;AAAA,QAC3BxzB,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBa,KAAzB,EAAgC,oCAAhC,CAAZ,CAD2B,CAAA;AAAA,KAR6C;AAAA,IAW5E,IAAIiC,IAAA,GAAOqvB,QAAA,CAAStxB,KAAA,CAAMiC,IAAf,CAAX,CAX4E;AAAA,IAY5E,MAAMgzB,GAAA,GAAM3D,QAAA,CAAStxB,KAAA,CAAMi1B,GAAf,CAAZ,CAZ4E;AAAA,IAc5E,IAAIj1B,KAAA,CAAMgO,EAAV,EAAc;AAAA,QACV,MAAMspB,OAAA,GAAUhG,QAAA,CAAStxB,KAAA,CAAMgO,EAAf,CAAhB,CADU;AAAA,QAEV,KAAK,IAAIlK,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIzG,OAAA,CAAQs9B,UAA5B,EAAwC72B,CAAA,EAAxC,EAA6C;AAAA,YACzC,MAAMs5B,UAAA,GAAaz9B,KAAA,CAAMG,MAAN,CAAagE,CAAb,CAAnB,CADyC;AAAA,YAEzC,IAAIwtB,QAAA,CAAS8L,UAAA,CAAWpvB,EAApB,CAAA,KAA4BspB,OAAhC,EAAyC;AAAA;AAErC,gBAAA71B,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBa,KAAA,CAAMgO,EAA/B,EAAmC,CAAC,oBAAD,GAAuBhO,KAAA,CAAMgO,EAA7B,EAAgC,2BAAhC,GAA6DovB,UAAA,CAAWpvB,EAAX,CAAcorB,QAA3E,EAAA,CAAnC,CAAZ,CAFqC,CAAA;AAAA,aAFA;AAAA,SAFnC;AAAA,KAd8D;AAAA,IAyB5E,IAAI,KAASp5B,IAAAA,KAAb,EAAoB;AAAA,QAChB;AAAA,YAAC,MAAD;AAAA,YAAS,QAAT;AAAA,YAAmB,cAAnB;AAAA,YAAmC,QAAnC;AAAA,YAA6C,QAA7C;AAAA,SAAuD+N,CAAAA,OAAvD,CAAgE9C,CAAD,IAAO;AAAA,YAClE,IAAIA,CAAA,IAAKjL,KAAT,EAAgB;AAAA,gBACZyB,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBa,KAAA,CAAMiL,CAAN,CAAzB,EAAmC,CAAC,CAAD,GAAIA,CAAJ,EAAM,8BAAN,CAAnC,CAAZ,CADY,CAAA;AAAA,aADkD;AAAA,SAAtE,CADgB,CAAA;AAAA,QAOhB,IAAImF,MAAJ,CAPgB;AAAA,QAShBzQ,KAAA,CAAMG,MAAN,CAAaiO,OAAb,CAAsB/N,KAAD,IAAW;AAAA,YAC5B,IAAIsxB,QAAA,CAAStxB,KAAA,CAAMgO,EAAf,MAAuBinB,GAA3B;AAAA,gBAAgC7kB,MAAA,GAASpQ,KAAT,CADJ;AAAA,SAAhC,CATgB,CAAA;AAAA,QAahB,IAAI,CAACoQ,MAAL,EAAa;AAAA,YACT,IAAI,OAAO6kB,GAAP,KAAe,QAAnB;AAAA,gBACIxzB,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBa,KAAA,CAAMi1B,GAA/B,EAAoC,CAAC,WAAD,GAAcA,GAAd,EAAkB,WAAlB,CAApC,CAAZ,CAFK,CAAA;AAAA,SAAb,MAGO,IAAI7kB,MAAA,CAAO6kB,GAAX,EAAgB;AAAA,YACnBxzB,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBa,KAAA,CAAMi1B,GAA/B,EAAoC,wCAApC,CAAZ,CADmB,CAAA;AAAA,SAAhB,MAEA;AAAA,YACHhzB,IAAA,GAAOqvB,QAAA,CAASlhB,MAAA,CAAOnO,IAAhB,CAAP,CADG;AAAA,SAlBS;AAAA,KAApB,MAqBO,IAAI,EAAEA,IAAA,KAAS,YAAT,IAAyBA,IAAA,KAAS,KAAlC,CAAN,EAAgD;AAAA,QACnD,IAAI,CAACjC,KAAA,CAAMyL,MAAX,EAAmB;AAAA,YACfhK,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBa,KAAzB,EAAgC,oCAAhC,CAAZ,CADe,CAAA;AAAA,SAAnB,MAEO;AAAA,YACH,MAAMyL,MAAA,GAAS9L,KAAA,CAAM8N,OAAN,IAAiB9N,KAAA,CAAM8N,OAAN,CAAczN,KAAA,CAAMyL,MAApB,CAAhC,CADG;AAAA,YAEH,MAAM4xB,UAAA,GAAa5xB,MAAA,IAAU6lB,QAAA,CAAS7lB,MAAA,CAAOxJ,IAAhB,CAA7B,CAFG;AAAA,YAGH,IAAI,CAACwJ,MAAL,EAAa;AAAA,gBACThK,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBa,KAAA,CAAMyL,MAA/B,EAAuC,CAAC,QAAD,GAAWzL,KAAA,CAAMyL,MAAjB,EAAwB,WAAxB,CAAvC,CAAZ,CADS,CAAA;AAAA,aAAb,MAEO,IAAI4xB,UAAA,KAAe,QAAf,IAA2Bp7B,IAAA,KAAS,QAAxC,EAAkD;AAAA,gBACrDR,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBa,KAAA,CAAMyL,MAA/B,EAAuC,CAAC,OAAD,GAAUzL,KAAA,CAAMgO,EAAhB,EAAmB,0BAAnB,CAAvC,CAAZ,CADqD,CAAA;AAAA,aAAlD,MAEA,IAAIqvB,UAAA,KAAe,QAAf,IAA2Bp7B,IAAA,KAAS,QAAxC,EAAkD;AAAA,gBACrDR,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBa,KAAA,CAAMyL,MAA/B,EAAuC,CAAC,OAAD,GAAUzL,KAAA,CAAMgO,EAAhB,EAAmB,0BAAnB,CAAvC,CAAZ,CADqD,CAAA;AAAA,aAAlD,MAEA,IAAIqvB,UAAA,KAAe,QAAf,IAA2B,CAACr9B,KAAA,CAAM,cAAN,CAAhC,EAAuD;AAAA,gBAC1DyB,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBa,KAAzB,EAAgC,CAAC,OAAD,GAAUA,KAAA,CAAMgO,EAAhB,EAAmB,+BAAnB,CAAhC,CAAZ,CAD0D,CAAA;AAAA,aAAvD,MAEA,IAAIqvB,UAAA,KAAe,YAAf,IAA+Bp7B,IAAA,KAAS,WAA5C,EAAyD;AAAA,gBAC5DR,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBa,KAAA,CAAMyL,MAA/B,EAAuC,mEAAvC,CAAZ,CAD4D,CAAA;AAAA,aAAzD,MAEA,IAAIxJ,IAAA,KAAS,MAAT,IAAmBjC,KAAA,CAAMsN,KAAzB,KAAmCtN,KAAA,CAAMsN,KAAN,CAAY,eAAZ,CAAA,IAAgCtN,KAAA,CAAMsN,KAAN,CAAY,kBAAZ,CAAhC,CAAnC,KACC+vB,UAAA,KAAe,SAAf,IAA4B,CAAC5xB,MAAA,CAAO6xB,WAApC,CADL,EACuD;AAAA,gBAC1D77B,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBa,KAAzB,EAAgC,CAAC,OAAD,GAAUA,KAAA,CAAMgO,EAAhB,EAAmB,0FAAnB,CAAhC,CAAZ,CAD0D,CAAA;AAAA,aAd3D;AAAA,SAH4C;AAAA,KA9CqB;AAAA,IAqE5EvM,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc0wB,cAAA,CAAe;AAAA,QAClCl6B,GADkC;AAAA,QAElCE,KAAA,EAAOW,KAF2B;AAAA,QAGlCu5B,SAAA,EAAWG,SAAA,CAAU15B,KAHa;AAAA,QAIlCL,KAAA,EAAOtC,OAAA,CAAQsC,KAJmB;AAAA,QAKlC+5B,SAAA,EAAWr8B,OAAA,CAAQq8B,SALe;AAAA,QAMlCD,uBAAA,EAAyB;AAAA,YACrB,GAAM,GAAA;AAAA,gBACF,OAAO,EAAP,CADE;AAAA,aADe;AAAA;AAMrB;AAAA,YAAAx3B,IAAA,GAAO;AAAA,gBACH,OAAO83B,QAAA,CAAa;AAAA,oBAChB56B,GAAA,EAAK,CAAA,GAAGA,GAAH,EAAO,KAAP,CADW;AAAA,oBAEhBE,KAAA,EAAOW,KAAA,CAAMiC,IAFG;AAAA,oBAGhBs3B,SAAA,EAAWG,SAAA,CAAU15B,KAAV,CAAgBiC,IAHX;AAAA,oBAIhBtC,KAAA,EAAOtC,OAAA,CAAQsC,KAJC;AAAA,oBAKhB+5B,SAAA,EAAWr8B,OAAA,CAAQq8B,SALH;AAAA,oBAMhBtiB,MAAA,EAAQpX,KANQ;AAAA,oBAOhB25B,SAAA,EAAW,MAPK;AAAA,iBAAb,CAAP,CADG;AAAA,aANc;AAAA,YAiBrBlf,MAAA,CAAOpd,OAAP,EAAgB;AAAA,gBACZ,OAAOo/B,cAAA,CAAenQ,MAAA,CAAO,EAACsF,SAAA,EAAW3vB,IAAZ,EAAP,EAA0B5E,OAA1B,CAAf,CAAP,CADY;AAAA,aAjBK;AAAA,YAoBrBgQ,MAAA,CAAOhQ,OAAP,EAAgB;AAAA,gBACZ,OAAOg8B,cAAA,CAAe;AAAA,oBAClBr5B,KADkB;AAAA,oBAElBb,GAAA,EAAK9B,OAAA,CAAQ8B,GAFK;AAAA,oBAGlBE,KAAA,EAAOhC,OAAA,CAAQgC,KAHG;AAAA,oBAIlBk6B,SAAA,EAAW,EAJO;AAAA,oBAKlB55B,KAAA,EAAOtC,OAAA,CAAQsC,KALG;AAAA,oBAMlB+5B,SAAA,EAAWr8B,OAAA,CAAQq8B,SAND;AAAA,oBAOlBD,uBAAA,EAAyB;AAAA,wBACrB,GAAA,CAAIp8B,OAAJ,EAAa;AAAA,4BACT,OAAO6/B,sBAAA,CAAuB5Q,MAAA,CAAO,EAACsF,SAAA,EAAW3vB,IAAZ,EAAP,EAA0B5E,OAA1B,CAAvB,CAAP,CADS;AAAA,yBADQ;AAAA,qBAPP;AAAA,iBAAf,CAAP,CADY;AAAA,aApBK;AAAA,YAmCrBiQ,KAAA,CAAMjQ,OAAN,EAAe;AAAA,gBACX,OAAOg8B,cAAA,CAAe;AAAA,oBAClBr5B,KADkB;AAAA,oBAElBb,GAAA,EAAK9B,OAAA,CAAQ8B,GAFK;AAAA,oBAGlBE,KAAA,EAAOhC,OAAA,CAAQgC,KAHG;AAAA,oBAIlBk6B,SAAA,EAAW,EAJO;AAAA,oBAKlB55B,KAAA,EAAOtC,OAAA,CAAQsC,KALG;AAAA,oBAMlB+5B,SAAA,EAAWr8B,OAAA,CAAQq8B,SAND;AAAA,oBAOlBD,uBAAA,EAAyB;AAAA,wBACrB,GAAA,CAAIp8B,OAAJ,EAAa;AAAA,4BACT,OAAO4/B,qBAAA,CAAsB3Q,MAAA,CAAO,EAACsF,SAAA,EAAW3vB,IAAZ,EAAP,EAA0B5E,OAA1B,CAAtB,CAAP,CADS;AAAA,yBADQ;AAAA,qBAPP;AAAA,iBAAf,CAAP,CADW;AAAA,aAnCM;AAAA,SANS;AAAA,KAAf,CAAd,CAAT,CArE4E;AAAA,IAgI5E,OAAOoE,MAAP,CAhI4E;AAAA;;ACjBhF;AAKe,SAAS87B,cAAT,CAAwBlgC,OAAxB,EAAoF;AAAA,IAC/F,MAAMgC,KAAA,GAAQhC,OAAA,CAAQgC,KAAtB,CAD+F;AAAA,IAE/F,MAAMF,GAAA,GAAM9B,OAAA,CAAQ8B,GAApB,CAF+F;AAAA,IAG/F,MAAM8C,IAAA,GAAO4pB,OAAA,CAAQxsB,KAAR,CAAb,CAH+F;AAAA,IAK/F,IAAI4C,IAAA,KAAS,QAAb,EAAuB;AAAA,QACnB,OAAO,CAAC,IAAIi3B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,CAAC,iBAAD,GAAoB4C,IAApB,EAAyB,MAAzB,CAAhC,CAAD,CAAP,CADmB;AAAA,KALwE;AAAA,IAS/F,OAAO,EAAP,CAT+F;AAAA;;ACLnG;AAUA,MAAMw3B,uBAAA,GAA0B,EAC5B+D,SAAA,EAAWC,iBADiB,EAAhC,CAZA;AAgBe,SAASC,cAAT,CAAwBrgC,OAAxB,EAA4E;AAAA,IACvF,MAAMgC,KAAA,GAAQhC,OAAA,CAAQgC,KAAtB,CADuF;AAAA,IAEvF,MAAMF,GAAA,GAAM9B,OAAA,CAAQ8B,GAApB,CAFuF;AAAA,IAGvF,MAAMu6B,SAAA,GAAYr8B,OAAA,CAAQq8B,SAA1B,CAHuF;AAAA,IAIvF,MAAM/5B,KAAA,GAAQtC,OAAA,CAAQsC,KAAtB,CAJuF;AAAA,IAMvF,IAAI,CAACN,KAAA,CAAM4C,IAAX,EAAiB;AAAA,QACb,OAAO,CAAC,IAAIi3B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,oBAAhC,CAAD,CAAP,CADa;AAAA,KANsE;AAAA,IAUvF,MAAM4C,IAAA,GAAOqvB,QAAA,CAASjyB,KAAA,CAAM4C,IAAf,CAAb,CAVuF;AAAA,IAWvF,IAAIR,MAAJ,CAXuF;AAAA,IAavF,QAAQQ,IAAR;AAAA,IACA,KAAK,QAAL,CADA;AAAA,IAEA,KAAK,QAAL,CAFA;AAAA,IAGA,KAAK,YAAL;AAAA,QACIR,MAAA,GAAS43B,cAAA,CAAe;AAAA,YACpBl6B,GADoB;AAAA,YAEpBE,KAFoB;AAAA,YAGpBk6B,SAAA,EAAWG,SAAA,CAAU,CAAC,OAAD,GAAUz3B,IAAA,CAAK5D,OAAL,CAAa,GAAb,EAAkB,GAAlB,CAAV,GAAV,CAHS;AAAA,YAIpBsB,KAAA,EAAOtC,OAAA,CAAQsC,KAJK;AAAA,YAKpB+5B,SALoB;AAAA,YAMpBD,uBANoB;AAAA,SAAf,CAAT,CADJ;AAAA,QASI,OAAOh4B,MAAP,CAZJ;AAAA,IAcA,KAAK,SAAL;AAAA,QACIA,MAAA,GAAS43B,cAAA,CAAe;AAAA,YACpBl6B,GADoB;AAAA,YAEpBE,KAFoB;AAAA,YAGpBk6B,SAAA,EAAWG,SAAA,CAAUiE,cAHD;AAAA,YAIpBh+B,KAJoB;AAAA,YAKpB+5B,SALoB;AAAA,YAMpBD,uBANoB;AAAA,SAAf,CAAT,CADJ;AAAA,QASI,IAAIp6B,KAAA,CAAMu+B,OAAV,EAAmB;AAAA,YACf,WAAWh4B,IAAX,IAAmBvG,KAAA,CAAMw+B,iBAAzB,EAA4C;AAAA,gBACxC,MAAM,CAACvY,QAAD,EAAWwY,OAAX,CAAA,GAAsBz+B,KAAA,CAAMw+B,iBAAN,CAAwBj4B,IAAxB,CAA5B,CADwC;AAAA,gBAExC,MAAMm4B,UAAA,GAAa,OAAOzY,QAAP,KAAoB,QAApB,GAA+B;AAAA,oBAACA,QAAD;AAAA,oBAAW,CAAC,aAAD,CAAX;AAAA,oBAA4B;AAAA,wBAAC,KAAD;AAAA,wBAAQ1f,IAAR;AAAA,qBAA5B;AAAA,iBAA/B,GAA4E0f,QAA/F,CAFwC;AAAA,gBAIxC7jB,MAAA,CAAOzC,IAAP,CAAY,GAAG88B,kBAAA,CAAmB;AAAA,oBAC9B38B,GAAA,EAAK,CAAA,GAAGA,GAAH,EAAO,CAAP,GAAUyG,IAAV,EAAe,IAAf,CADyB;AAAA,oBAE9BvG,KAAA,EAAOy+B,OAFuB;AAAA,oBAG9B/B,iBAAA,EAAmB,aAHW;AAAA,iBAAnB,CAAf,CAJwC,CAAA;AAAA,gBASxCt6B,MAAA,CAAOzC,IAAP,CAAY,GAAG88B,kBAAA,CAAmB;AAAA,oBAC9B38B,GAAA,EAAK,CAAA,GAAGA,GAAH,EAAO,CAAP,GAAUyG,IAAV,EAAe,OAAf,CADyB;AAAA,oBAE9BvG,KAAA,EAAO0+B,UAFuB;AAAA,oBAG9BhC,iBAAA,EAAmB,gBAHW;AAAA,iBAAnB,CAAf,CATwC,CAAA;AAAA,aAD7B;AAAA,SATvB;AAAA,QA0BI,OAAOt6B,MAAP,CAxCJ;AAAA,IA0CA,KAAK,OAAL;AAAA,QACI,OAAO43B,cAAA,CAAe;AAAA,YAClBl6B,GADkB;AAAA,YAElBE,KAFkB;AAAA,YAGlBk6B,SAAA,EAAWG,SAAA,CAAUsE,YAHH;AAAA,YAIlBr+B,KAJkB;AAAA,YAKlB+5B,SALkB;AAAA,SAAf,CAAP,CA3CJ;AAAA,IAmDA,KAAK,OAAL;AAAA,QACI,OAAOL,cAAA,CAAe;AAAA,YAClBl6B,GADkB;AAAA,YAElBE,KAFkB;AAAA,YAGlBk6B,SAAA,EAAWG,SAAA,CAAUuE,YAHH;AAAA,YAIlBt+B,KAJkB;AAAA,YAKlB+5B,SALkB;AAAA,SAAf,CAAP,CApDJ;AAAA,IA4DA,KAAK,QAAL;AAAA,QACI,OAAO,CAAC,IAAIR,eAAJ,CAAoB/5B,GAApB,EAAyB,IAAzB,EAA+B,CAAC,yFAAD,CAA/B,EAA4H,eAA5H,CAAD,CAAP,CA7DJ;AAAA,IA+DA;AAAA,QACI,OAAOq9B,YAAA,CAAa;AAAA,YAChBr9B,GAAA,EAAK,CAAA,GAAGA,GAAH,EAAO,KAAP,CADW;AAAA,YAEhBE,KAAA,EAAOA,KAAA,CAAM4C,IAFG;AAAA,YAGhBs3B,SAAA,EAAW,EAACxL,MAAA,EAAQmQ,mBAAA,CAAoBxE,SAApB,CAAT,EAHK;AAAA,YAIhB/5B,KAJgB;AAAA,YAKhB+5B,SALgB;AAAA,SAAb,CAAP,CAhEJ;AAAA,KAbuF;AAAA,CAhB3F;AAuGA,SAASwE,mBAAT,CAA6BxE,SAA7B,EAAwC;AAAA,IACpC,OAAOA,SAAA,CAAUjuB,MAAV,CAAiBssB,MAAjB,CAAwB,CAACoG,IAAD,EAAO1yB,MAAP,KAAkB;AAAA,QAC7C,MAAM4xB,UAAA,GAAa3D,SAAA,CAAUjuB,MAAV,CAAnB,CAD6C;AAAA,QAE7C,IAAI4xB,UAAA,CAAWp7B,IAAX,CAAgBA,IAAhB,KAAyB,MAA7B,EAAqC;AAAA,YACjCk8B,IAAA,GAAOA,IAAA,CAAKx1B,MAAL,CAAYzJ,MAAA,CAAOD,IAAP,CAAYo+B,UAAA,CAAWp7B,IAAX,CAAgB8rB,MAA5B,CAAZ,CAAP,CADiC;AAAA,SAFQ;AAAA,QAK7C,OAAOoQ,IAAP,CAL6C;AAAA,KAA1C,EAMJ,EANI,CAAP,CADoC;AAAA,CAvGxC;AAiHA,SAASV,iBAAT,CAA2B,CAACt+B,GAAD,EAAME,KAAN,CAA3B,EAAyC;AAAA,IACrC,IAAIwsB,OAAA,CAAQxsB,KAAR,CAAA,KAAmB,QAAvB,EAAiC;AAAA,QAC7B,OAAOk+B,cAAA,CAAe;AAAA,YAACp+B,GAAD;AAAA,YAAME,KAAN;AAAA,SAAf,CAAP,CAD6B;AAAA,KAAjC,MAEO;AAAA,QACH,MAAMoC,MAAA,GAAS,EAAf,CADG;AAAA,QAEH,KAAWmE,MAAAA,IAAX,IAAmBvG,KAAnB,EAA0B;AAAA,YACtBoC,MAAA,CAAOzC,IAAP,CAAY,GAAGu+B,cAAA,CAAe;AAAA,gBAACp+B,GAAA,EAAK,CAAGA,GAAAA,GAAH,EAAO,CAAP,GAAUyG,IAAV,EAAN,CAAA;AAAA,gBAAwBvG,KAAA,EAAOA,KAAA,CAAMuG,IAAN,CAA/B;AAAA,aAAf,CAAf,CADsB,CAAA;AAAA,SAFvB;AAAA,QAKH,OAAOnE,MAAP,CALG;AAAA,KAH8B;AAAA;;AC/GzC;AAMe,SAAS28B,aAAT,CAAuB/gC,OAAvB,EAA2E;AAAA,IACtF,MAAMs7B,KAAA,GAAQt7B,OAAA,CAAQgC,KAAtB,CADsF;AAAA,IAEtF,MAAMq6B,SAAA,GAAYr8B,OAAA,CAAQq8B,SAA1B,CAFsF;AAAA,IAGtF,MAAM2E,SAAA,GAAY3E,SAAA,CAAUf,KAA5B,CAHsF;AAAA,IAItF,MAAMh5B,KAAA,GAAQtC,OAAA,CAAQsC,KAAtB,CAJsF;AAAA,IAMtF,IAAI8B,MAAA,GAAS,EAAb,CANsF;AAAA,IAQtF,MAAM68B,QAAA,GAAWzS,OAAA,CAAQ8M,KAAR,CAAjB,CARsF;AAAA,IAStF,IAAIA,KAAA,KAAUn7B,SAAd,EAAyB;AAAA,QACrB,OAAOiE,MAAP,CADqB;AAAA,KAAzB,MAEO,IAAI68B,QAAA,KAAa,QAAjB,EAA2B;AAAA,QAC9B78B,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc,CAAC,IAAIuwB,eAAJ,CAAoB,OAApB,EAA6BP,KAA7B,EAAoC,CAAC,iBAAD,GAAoB2F,QAApB,EAA6B,MAA7B,CAApC,CAAD,CAAd,CAAT,CAD8B;AAAA,QAE9B,OAAO78B,MAAP,CAF8B;AAAA,KAXoD;AAAA,IAgBtF,KAAWtC,MAAAA,GAAX,IAAkBw5B,KAAlB,EAAyB;AAAA,QACrB,MAAMoE,eAAA,GAAkB59B,GAAA,CAAIb,KAAJ,CAAU,mBAAV,CAAxB,CADqB;AAAA,QAGrB,IAAIy+B,eAAA,IAAmBsB,SAAA,CAAUtB,eAAA,CAAgB,CAAhB,CAAV,CAAnB,IAAoDsB,SAAA,CAAUtB,eAAA,CAAgB,CAAhB,CAAV,CAAA,CAA8BrE,UAAtF,EAAkG;AAAA,YAC9Fj3B,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc0xB,QAAA,CAAS;AAAA,gBAC5Bl7B,GAD4B;AAAA,gBAE5BE,KAAA,EAAOs5B,KAAA,CAAMx5B,GAAN,CAFqB;AAAA,gBAG5Bo6B,SAAA,EAAWG,SAAA,CAAUhB,UAHO;AAAA,gBAI5B/4B,KAJ4B;AAAA,gBAK5B+5B,SAL4B;AAAA,aAAT,CAAd,CAAT,CAD8F;AAAA,SAAlG,MAQO,IAAI2E,SAAA,CAAUl/B,GAAV,CAAJ,EAAoB;AAAA,YACvBsC,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc0xB,QAAA,CAAS;AAAA,gBAC5Bl7B,GAD4B;AAAA,gBAE5BE,KAAA,EAAOs5B,KAAA,CAAMx5B,GAAN,CAFqB;AAAA,gBAG5Bo6B,SAAA,EAAW8E,SAAA,CAAUl/B,GAAV,CAHiB;AAAA,gBAI5BQ,KAJ4B;AAAA,gBAK5B+5B,SAL4B;AAAA,aAAT,CAAd,CAAT,CADuB;AAAA,SAApB,MAQA;AAAA,YACHj4B,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc,CAAC,IAAIuwB,eAAJ,CAAoB/5B,GAApB,EAAyBw5B,KAAA,CAAMx5B,GAAN,CAAzB,EAAqC,CAAC,kBAAD,GAAqBA,GAArB,EAAyB,CAAzB,CAArC,CAAD,CAAd,CAAT,CADG;AAAA,SAnBc;AAAA,KAhB6D;AAAA,IAwCtF,OAAOsC,MAAP,CAxCsF;AAAA;;ACN1F;AAOe,SAAS88B,eAAT,CAAyBlhC,OAAzB,EAA6E;AAAA,IACxF,MAAM47B,OAAA,GAAU57B,OAAA,CAAQgC,KAAxB,CADwF;AAAA,IAExF,MAAMF,GAAA,GAAM9B,OAAA,CAAQ8B,GAApB,CAFwF;AAAA,IAGxF,MAAMQ,KAAA,GAAQtC,OAAA,CAAQsC,KAAtB,CAHwF;AAAA,IAIxF,MAAM+5B,SAAA,GAAYr8B,OAAA,CAAQq8B,SAA1B,CAJwF;AAAA,IAKxF,MAAM8E,WAAA,GAAc9E,SAAA,CAAUT,OAA9B,CALwF;AAAA,IAMxF,IAAIx3B,MAAA,GAAS,EAAb,CANwF;AAAA,IAQxF,MAAM68B,QAAA,GAAWzS,OAAA,CAAQoN,OAAR,CAAjB,CARwF;AAAA,IASxF,IAAIA,OAAA,KAAYz7B,SAAhB,EAA2B;AAAA,QACvB,OAAOiE,MAAP,CADuB;AAAA,KAA3B,MAEO,IAAI68B,QAAA,KAAa,QAAjB,EAA2B;AAAA,QAC9B78B,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc,CAAC,IAAIuwB,eAAJ,CAAoB,SAApB,EAA+BD,OAA/B,EAAwC,CAAC,iBAAD,GAAoBqF,QAApB,EAA6B,MAA7B,CAAxC,CAAD,CAAd,CAAT,CAD8B;AAAA,QAE9B,OAAO78B,MAAP,CAF8B;AAAA,KAXsD;AAAA,IAgBxF,KAAWtC,MAAAA,GAAX,IAAkB85B,OAAlB,EAA2B;AAAA,QACvB,MAAM8D,eAAA,GAAkB59B,GAAA,CAAIb,KAAJ,CAAU,mBAAV,CAAxB,CADuB;AAAA,QAGvB,IAAIy+B,eAAA,IAAmByB,WAAA,CAAYzB,eAAA,CAAgB,CAAhB,CAAZ,CAAnB,IAAsDyB,WAAA,CAAYzB,eAAA,CAAgB,CAAhB,CAAZ,CAAA,CAAgCrE,UAA1F,EAAsG;AAAA,YAClGj3B,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc0xB,QAAA,CAAS;AAAA,gBAC5Bl7B,GAD4B;AAAA,gBAE5BE,KAAA,EAAO45B,OAAA,CAAQ95B,GAAR,CAFqB;AAAA,gBAG5Bo6B,SAAA,EAAWG,SAAA,CAAUhB,UAHO;AAAA,gBAI5B/4B,KAJ4B;AAAA,gBAK5B+5B,SAL4B;AAAA,aAAT,CAAd,CAAT,CADkG;AAAA,SAAtG,MAQO,IAAI8E,WAAA,CAAYr/B,GAAZ,CAAJ,EAAsB;AAAA,YACzBsC,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc0xB,QAAA,CAAS;AAAA,gBAC5Bl7B,GAD4B;AAAA,gBAE5BE,KAAA,EAAO45B,OAAA,CAAQ95B,GAAR,CAFqB;AAAA,gBAG5Bo6B,SAAA,EAAWiF,WAAA,CAAYr/B,GAAZ,CAHiB;AAAA,gBAI5BQ,KAJ4B;AAAA,gBAK5B+5B,SAL4B;AAAA,aAAT,CAAd,CAAT,CADyB;AAAA,SAAtB,MAQA;AAAA,YACHj4B,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc,CAAC,IAAIuwB,eAAJ,CAAoB/5B,GAApB,EAAyB85B,OAAA,CAAQ95B,GAAR,CAAzB,EAAuC,CAAC,kBAAD,GAAqBA,GAArB,EAAyB,CAAzB,CAAvC,CAAD,CAAd,CAAT,CADG;AAAA,SAnBgB;AAAA,KAhB6D;AAAA,IAwCxF,IAAI,CAAC85B,OAAA,CAAQxtB,MAAb,EAAqB;AAAA,QACjBhK,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyB85B,OAAzB,EAAkC,CAAC,6CAAD,CAAlC,CAAZ,CADiB,CAAA;AAAA,KAArB,MAEO;AAAA,QACH,MAAMxtB,MAAA,GAAS9L,KAAA,CAAM8N,OAAN,IAAiB9N,KAAA,CAAM8N,OAAN,CAAcwrB,OAAA,CAAQxtB,MAAtB,CAAhC,CADG;AAAA,QAEH,MAAM4xB,UAAA,GAAa5xB,MAAA,IAAU6lB,QAAA,CAAS7lB,MAAA,CAAOxJ,IAAhB,CAA7B,CAFG;AAAA,QAGH,IAAI,CAACwJ,MAAL,EAAa;AAAA,YACThK,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyB85B,OAAA,CAAQxtB,MAAjC,EAAyC,CAAC,QAAD,GAAWwtB,OAAA,CAAQxtB,MAAnB,EAA0B,WAA1B,CAAzC,CAAZ,CADS,CAAA;AAAA,SAAb,MAEO,IAAI4xB,UAAA,KAAe,YAAnB,EAAiC;AAAA,YACpC57B,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyB85B,OAAA,CAAQxtB,MAAjC,EAAyC,CAAC,6CAAD,GAAgD3J,MAAA,CAAOu7B,UAAP,CAAhD,EAAmE,iDAAnE,CAAzC,CAAZ,CADoC,CAAA;AAAA,SALrC;AAAA,KA1CiF;AAAA,IAoDxF,OAAO57B,MAAP,CApDwF;AAAA;;ACP5F;AAMe,SAASg9B,WAAT,CAAqBphC,OAArB,EAAyE;AAAA,IACpF,MAAMu7B,GAAA,GAAMv7B,OAAA,CAAQgC,KAApB,CADoF;AAAA,IAEpF,MAAMM,KAAA,GAAQtC,OAAA,CAAQsC,KAAtB,CAFoF;AAAA,IAGpF,MAAM+5B,SAAA,GAAYr8B,OAAA,CAAQq8B,SAA1B,CAHoF;AAAA,IAIpF,MAAMgF,OAAA,GAAUhF,SAAA,CAAUd,GAA1B,CAJoF;AAAA,IAKpF,IAAIn3B,MAAA,GAAS,EAAb,CALoF;AAAA,IAOpF,MAAM68B,QAAA,GAAWzS,OAAA,CAAQ+M,GAAR,CAAjB,CAPoF;AAAA,IAQpF,IAAIA,GAAA,KAAQp7B,SAAZ,EAAuB;AAAA,QACnB,OAAOiE,MAAP,CADmB;AAAA,KAAvB,MAEO,IAAI68B,QAAA,KAAa,QAAjB,EAA2B;AAAA,QAC9B78B,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc,CAAC,IAAIuwB,eAAJ,CAAoB,KAApB,EAA2BN,GAA3B,EAAgC,CAAC,iBAAD,GAAoB0F,QAApB,EAA6B,MAA7B,CAAhC,CAAD,CAAd,CAAT,CAD8B;AAAA,QAE9B,OAAO78B,MAAP,CAF8B;AAAA,KAVkD;AAAA,IAepF,KAAWtC,MAAAA,GAAX,IAAkBy5B,GAAlB,EAAuB;AAAA,QACnB,MAAMmE,eAAA,GAAkB59B,GAAA,CAAIb,KAAJ,CAAU,mBAAV,CAAxB,CADmB;AAAA,QAGnB,IAAIy+B,eAAA,IAAmB2B,OAAA,CAAQ3B,eAAA,CAAgB,CAAhB,CAAR,CAAnB,IAAkD2B,OAAA,CAAQ3B,eAAA,CAAgB,CAAhB,CAAR,CAAA,CAA4BrE,UAAlF,EAA8F;AAAA,YAC1Fj3B,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc0xB,QAAA,CAAS;AAAA,gBAC5Bl7B,GAD4B;AAAA,gBAE5BE,KAAA,EAAOu5B,GAAA,CAAIz5B,GAAJ,CAFqB;AAAA,gBAG5Bo6B,SAAA,EAAWG,SAAA,CAAUhB,UAHO;AAAA,gBAI5B/4B,KAJ4B;AAAA,gBAK5B+5B,SAL4B;AAAA,aAAT,CAAd,CAAT,CAD0F;AAAA,SAA9F,MAQO,IAAIgF,OAAA,CAAQv/B,GAAR,CAAJ,EAAkB;AAAA,YACrBsC,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc0xB,QAAA,CAAS;AAAA,gBAC5Bl7B,GAD4B;AAAA,gBAE5BE,KAAA,EAAOu5B,GAAA,CAAIz5B,GAAJ,CAFqB;AAAA,gBAG5Bo6B,SAAA,EAAWmF,OAAA,CAAQv/B,GAAR,CAHiB;AAAA,gBAI5BQ,KAJ4B;AAAA,gBAK5B+5B,SAL4B;AAAA,aAAT,CAAd,CAAT,CADqB;AAAA,SAAlB,MAQA;AAAA,YACHj4B,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc,CAAC,IAAIuwB,eAAJ,CAAoB/5B,GAApB,EAAyBy5B,GAAA,CAAIz5B,GAAJ,CAAzB,EAAmC,CAAC,kBAAD,GAAqBA,GAArB,EAAyB,CAAzB,CAAnC,CAAD,CAAd,CAAT,CADG;AAAA,SAnBY;AAAA,KAf6D;AAAA,IAuCpF,OAAOsC,MAAP,CAvCoF;AAAA;;ACNxF;AAMe,SAASk9B,iBAAT,CAA2BthC,OAA3B,EAA+E;AAAA,IAC1F,IAAIkgC,cAAA,CAAelgC,OAAf,EAAwBc,MAAxB,KAAmC,CAAvC,EAA0C;AAAA,QACtC,OAAO,EAAP,CADsC;AAAA,KADgD;AAAA,IAK1F,OAAO29B,kBAAA,CAAmBz+B,OAAnB,CAAP,CAL0F;AAAA;;ACN9F;AAMe,SAASuhC,aAAT,CAAuBvhC,OAAvB,EAA2E;AAAA,IACtF,IAAIkgC,cAAA,CAAelgC,OAAf,EAAwBc,MAAxB,KAAmC,CAAvC,EAA0C;AAAA,QACtC,OAAO,EAAP,CADsC;AAAA,KAD4C;AAAA,IAKtF,OAAO29B,kBAAA,CAAmBz+B,OAAnB,CAAP,CALsF;AAAA;;ACN1F;AAMe,SAASwhC,kBAAT,CAA4BxhC,OAA5B,EAAgF;AAAA,IAC3F,MAAMw7B,UAAA,GAAax7B,OAAA,CAAQgC,KAA3B,CAD2F;AAAA,IAE3F,MAAMq6B,SAAA,GAAYr8B,OAAA,CAAQq8B,SAA1B,CAF2F;AAAA,IAG3F,MAAMoF,cAAA,GAAiBpF,SAAA,CAAUb,UAAjC,CAH2F;AAAA,IAI3F,MAAMl5B,KAAA,GAAQtC,OAAA,CAAQsC,KAAtB,CAJ2F;AAAA,IAM3F,IAAI8B,MAAA,GAAS,EAAb,CAN2F;AAAA,IAQ3F,MAAM68B,QAAA,GAAWzS,OAAA,CAAQgN,UAAR,CAAjB,CAR2F;AAAA,IAU3F,IAAIyF,QAAA,KAAa,QAAjB,EAA2B;AAAA,QACvB,KAAWn/B,MAAAA,GAAX,IAAkB05B,UAAlB,EAA8B;AAAA,YAC1Bp3B,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc0xB,QAAA,CAAS;AAAA,gBAC5Bl7B,GAD4B;AAAA,gBAE5BE,KAAA,EAAOw5B,UAAA,CAAW15B,GAAX,CAFqB;AAAA,gBAG5Bo6B,SAAA,EAAWuF,cAAA,CAAe3/B,GAAf,CAHiB;AAAA,gBAI5BQ,KAJ4B;AAAA,gBAK5B+5B,SAL4B;AAAA,aAAT,CAAd,CAAT,CAD0B;AAAA,SADP;AAAA,KAA3B,MAUO,IAAI4E,QAAA,KAAa,QAAjB,EAA2B;AAAA,QAC9B78B,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc,CAAC,IAAIuwB,eAAJ,CAAoB,YAApB,EAAkCL,UAAlC,EAA8C,CAAC,2BAAD,GAA8ByF,QAA9B,EAAuC,MAAvC,CAA9C,CAAD,CAAd,CAAT,CAD8B;AAAA,KApByD;AAAA,IAwB3F,OAAO78B,MAAP,CAxB2F;AAAA;;ACN/F;AA4BA,MAAMs9B,UAAA,GAAa;AAAA,IACf,GAAM,GAAA;AAAA,QACF,OAAO,EAAP,CADE;AAAA,KADS;AAAA,IAIf,SAAS9E,aAJM;AAAA,IAKf,WAAWqC,eALI;AAAA,IAMf,UAAU1B,cANK;AAAA,IAOf,SAAS2B,aAPM;AAAA,IAQf,QAAQC,YARO;AAAA,IASf,UAAUC,cATK;AAAA,IAUf,YAAY1B,gBAVG;AAAA,IAWf,SAASoC,aAXM;AAAA,IAYf,UAAU9D,cAZK;AAAA,IAaf,UAAUqE,cAbK;AAAA,IAcf,SAASU,aAdM;AAAA,IAef,WAAWG,eAfI;AAAA,IAgBf,OAAOE,WAhBQ;AAAA,IAiBf,UAAUlB,cAjBK;AAAA,IAkBf,aAAaoB,iBAlBE;AAAA,IAmBf,iBAAiBC,aAnBF;AAAA,IAoBf,cAAcC,kBApBC;AAAA,CAAnB,CA9BA;AAsEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAe,SAASxE,QAAT,CAAkBh9B,OAAlB,EAAsE;AAAA,IACjF,MAAMgC,KAAA,GAAQhC,OAAA,CAAQgC,KAAtB,CADiF;AAAA,IAEjF,MAAMk6B,SAAA,GAAYl8B,OAAA,CAAQk8B,SAA1B,CAFiF;AAAA,IAGjF,MAAMG,SAAA,GAAYr8B,OAAA,CAAQq8B,SAA1B,CAHiF;AAAA,IAKjF,IAAIH,SAAA,CAAUjpB,UAAV,IAAwBhC,UAAA,CAAWgjB,QAAA,CAASjyB,KAAT,CAAX,CAA5B,EAAyD;AAAA,QACrD,OAAO07B,gBAAA,CAAiB19B,OAAjB,CAAP,CADqD;AAAA,KAAzD,MAGO,IAAIk8B,SAAA,CAAUjpB,UAAV,IAAwBme,YAAA,CAAa+C,YAAA,CAAanyB,KAAb,CAAb,CAA5B,EAA+D;AAAA,QAClE,OAAOy8B,kBAAA,CAAmBz+B,OAAnB,CAAP,CADkE;AAAA,KAA/D,MAGA,IAAIk8B,SAAA,CAAUt3B,IAAV,IAAkB88B,UAAA,CAAWxF,SAAA,CAAUt3B,IAArB,CAAtB,EAAkD;AAAA,QACrD,OAAO88B,UAAA,CAAWxF,SAAA,CAAUt3B,IAArB,CAAA,CAA2B5E,OAA3B,CAAP,CADqD;AAAA,KAAlD,MAGA;AAAA,QACH,MAAM2hC,KAAA,GAAQ3F,cAAA,CAAe/M,MAAA,CAAO,EAAP,EAAWjvB,OAAX,EAAoB,EAC7Ck8B,SAAA,EAAWA,SAAA,CAAUt3B,IAAV,GAAiBy3B,SAAA,CAAUH,SAAA,CAAUt3B,IAApB,CAAjB,GAA6Cs3B,SADX,EAApB,CAAf,CAAd,CADG;AAAA,QAIH,OAAOyF,KAAP,CAJG;AAAA,KAd0E;AAAA;;ACpErF;AAKe,0BAAA,EAAS3hC,OAAT,EAA6D;AAAA,IACxE,MAAMgC,KAAA,GAAQhC,OAAA,CAAQgC,KAAtB,CADwE;AAAA,IAExE,MAAMF,GAAA,GAAM9B,OAAA,CAAQ8B,GAApB,CAFwE;AAAA,IAIxE,MAAMsC,MAAA,GAAS87B,cAAA,CAAelgC,OAAf,CAAf,CAJwE;AAAA,IAKxE,IAAIoE,MAAA,CAAOtD,MAAX;AAAA,QAAmB,OAAOsD,MAAP,CALqD;AAAA,IAOxE,IAAIpC,KAAA,CAAMkH,OAAN,CAAc,aAAd,CAAA,KAAiC,CAAC,CAAtC,EAAyC;AAAA,QACrC9E,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,iDAAhC,CAAZ,CADqC,CAAA;AAAA,KAP+B;AAAA,IAWxE,IAAIA,KAAA,CAAMkH,OAAN,CAAc,SAAd,CAAA,KAA6B,CAAC,CAAlC,EAAqC;AAAA,QACjC9E,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB/5B,GAApB,EAAyBE,KAAzB,EAAgC,6CAAhC,CAAZ,CADiC,CAAA;AAAA,KAXmC;AAAA,IAexE,OAAOoC,MAAP,CAfwE;AAAA;;ACN5E;AAsCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAASw9B,eAAT,CAAuBt/B,KAAvB,EAAkD+5B,SAAA,GAAoBwF,EAAtE,EAAyG;AAAA,IAE5G,MAAMz9B,MAAA,GAAS44B,QAAA,CAAS;AAAA,QACpBl7B,GAAA,EAAK,EADe;AAAA,QAEpBE,KAAA,EAAOM,KAFa;AAAA,QAGpB45B,SAAA,EAAWG,SAAA,CAAU75B,KAHD;AAAA,QAIpB65B,SAJoB;AAAA,QAKpB/5B,KALoB;AAAA,QAMpB85B,uBAAA,EAAyB;AAAA,YACrBhqB,MAAA,EAAQ0vB,iBADa;AAAA,YAErB,GAAA,EAAK,MAAM,EAFU;AAAA,SANL;AAAA,KAAT,CAAf,CAF4G;AAAA,IAa5G,OAAOC,UAAA,CAAW39B,MAAX,CAAP,CAb4G;AAAA,CAvChH;AAgEA,SAAS29B,UAAT,CAAoB39B,MAApB,EAA4B;AAAA,IACxB,OAAOA,MAAA,CAAOhE,KAAP,EAAe8pB,CAAAA,IAAf,CAAoB,CAAC5T,CAAD,EAAID,CAAJ,KAAUC,CAAA,CAAE+K,IAAF,IAAUhL,CAAA,CAAEgL,IAAZ,GAAmB/K,CAAA,CAAE+K,IAAF,GAAShL,CAAA,CAAEgL,IAA9B,GAAqC,CAAnE,CAAP,CADwB;AAAA;;;;;;;;;;;ACS5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;CAAA,IAAIiQ,MAAA,GAAU,YAAU;KACxB,IAAI0Q,CAAA,GAAE,UAAS57B,CAAT,EAAWiD,CAAX,EAAa24B,CAAb,EAAe30B,CAAf,EAAiB;aAAC,KAAI20B,CAAA,GAAEA,CAAA,IAAG,EAAL,EAAQ30B,CAAA,GAAEjH,CAAA,CAAEtF,MAAhB,EAAuBuM,CAAA,EAAvB,EAA2B20B,CAAA,CAAE57B,CAAA,CAAEiH,CAAF,CAAF,CAAQhE,GAAAA,CAAnC,CAAD,CAAA;aAAuC,OAAO24B,CAAP,CAAvC;UAAvB,EAAwEC,GAAA,GAAI;AAAA,aAAC,CAAD;AAAA,aAAG,EAAH;UAA5E,EAAmFC,GAAA,GAAI;AAAA,aAAC,CAAD;AAAA,aAAG,EAAH;UAAvF,EAA8FC,GAAA,GAAI;AAAA,aAAC,CAAD;AAAA,aAAG,CAAH;UAAlG,EAAwGC,GAAA,GAAI;AAAA,aAAC,CAAD;AAAA,aAAG,EAAH;UAA5G,EAAmHC,GAAA,GAAI;AAAA,aAAC,CAAD;AAAA,aAAG,EAAH;UAAvH,EAA8HC,GAAA,GAAI;AAAA,aAAC,CAAD;AAAA,aAAG,EAAH;UAAlI,EAAyIC,GAAA,GAAI;AAAA,aAAC,CAAD;AAAA,aAAG,EAAH;UAA7I,EAAoJC,GAAA,GAAI;AAAA,aAAC,EAAD;AAAA,aAAI,EAAJ;AAAA,aAAO,EAAP;AAAA,aAAU,EAAV;UAAxJ,EAAsKC,GAAA,GAAI;AAAA,aAAC,EAAD;AAAA,aAAI,EAAJ;UAA1K,EAAkLC,GAAA,GAAI;AAAA,aAAC,EAAD;AAAA,aAAI,EAAJ;AAAA,UAAtL,CADwB;KAExB,IAAIpR,MAAA,GAAS;AAAA,SAACqR,KAAA,EAAO,SAASA,KAAT,GAAiB;UAAzB;SACbC,EAAA,EAAI,EADS;AAAA,SAEbC,QAAA,EAAU;aAAC,SAAQ,CAAT;aAAW,cAAa,CAAxB;aAA0B,UAAS,CAAnC;aAAqC,cAAa,CAAlD;aAAoD,UAAS,CAA7D;aAA+D,mBAAkB,CAAjF;aAAmF,QAAO,CAA1F;aAA4F,sBAAqB,CAAjH;aAAmH,QAAO,EAA1H;aAA6H,SAAQ,EAArI;aAAwI,YAAW,EAAnJ;aAAsJ,aAAY,EAAlK;aAAqK,OAAM,EAA3K;aAA8K,cAAa,EAA3L;aAA8L,aAAY,EAA1M;aAA6M,KAAI,EAAjN;aAAoN,KAAI,EAAxN;aAA2N,kBAAiB,EAA5O;aAA+O,cAAa,EAA5P;aAA+P,KAAI,EAAnQ;aAAsQ,KAAI,EAA1Q;aAA6Q,KAAI,EAAjR;aAAoR,KAAI,EAAxR;aAA2R,mBAAkB,EAA7S;aAAgT,WAAU,CAA1T;aAA4T,QAAO,CAAnU;UAFG;AAAA,SAGbC,UAAA,EAAY;aAAC,GAAE,OAAH;aAAW,GAAE,QAAb;aAAsB,GAAE,QAAxB;aAAiC,GAAE,MAAnC;aAA0C,IAAG,MAA7C;aAAoD,IAAG,OAAvD;aAA+D,IAAG,KAAlE;aAAwE,IAAG,GAA3E;aAA+E,IAAG,GAAlF;aAAsF,IAAG,GAAzF;aAA6F,IAAG,GAAhG;aAAoG,IAAG,GAAvG;aAA2G,IAAG,GAA9G;UAHC;AAAA,SAIbC,YAAA,EAAc;AAAA,aAAC,CAAD;aAAG;AAAA,iBAAC,CAAD;AAAA,iBAAG,CAAH;cAAH;aAAS;AAAA,iBAAC,CAAD;AAAA,iBAAG,CAAH;cAAT;aAAe;AAAA,iBAAC,CAAD;AAAA,iBAAG,CAAH;cAAf;aAAqB;AAAA,iBAAC,CAAD;AAAA,iBAAG,CAAH;cAArB;aAA2B;AAAA,iBAAC,CAAD;AAAA,iBAAG,CAAH;cAA3B;aAAiC;AAAA,iBAAC,EAAD;AAAA,iBAAI,CAAJ;cAAjC;aAAwC;AAAA,iBAAC,EAAD;AAAA,iBAAI,CAAJ;cAAxC;aAA+C;AAAA,iBAAC,EAAD;AAAA,iBAAI,CAAJ;cAA/C;aAAsD;AAAA,iBAAC,EAAD;AAAA,iBAAI,CAAJ;cAAtD;aAA6D;AAAA,iBAAC,EAAD;AAAA,iBAAI,CAAJ;cAA7D;aAAoE;AAAA,iBAAC,EAAD;AAAA,iBAAI,CAAJ;cAApE;aAA2E;AAAA,iBAAC,EAAD;AAAA,iBAAI,CAAJ;cAA3E;aAAkF;AAAA,iBAAC,EAAD;AAAA,iBAAI,CAAJ;cAAlF;aAAyF;AAAA,iBAAC,EAAD;AAAA,iBAAI,CAAJ;cAAzF;aAAgG;AAAA,iBAAC,EAAD;AAAA,iBAAI,CAAJ;cAAhG;aAAuG;AAAA,iBAAC,EAAD;AAAA,iBAAI,CAAJ;cAAvG;aAA8G;AAAA,iBAAC,EAAD;AAAA,iBAAI,CAAJ;cAA9G;aAAqH;AAAA,iBAAC,EAAD;AAAA,iBAAI,CAAJ;cAArH;aAA4H;AAAA,iBAAC,EAAD;AAAA,iBAAI,CAAJ;cAA5H;aAAmI;AAAA,iBAAC,EAAD;AAAA,iBAAI,CAAJ;cAAnI;aAA0I;AAAA,iBAAC,EAAD;AAAA,iBAAI,CAAJ;cAA1I;UAJD;AAAA,SAKbC,aAAA,EAAe,SAASC,SAAT,CAAmBC,MAAnB,EAA2BC,MAA3B,EAAmCC,QAAnC,EAA6CR,EAA7C,EAAiDS,OAAjD,EAA0EC,EAA1E,EAA2FC,EAA3F,EAA4G;AAAA;aAG3H,IAAIC,EAAA,GAAKF,EAAA,CAAGxiC,MAAH,GAAY,CAArB,CAH2H;AAAA,aAI3H,QAAQuiC,OAAR;AAAA,aACA,KAAK,CAAL;AAAA;AAEU,iBAAKI,IAAAA,CAAAA,CAAL,GAAS,IAAIh/B,MAAJ,CAAWy+B,MAAA,CAAOliC,OAAP,CAAe,WAAf,EAA4B,MAAI,GAAhC,CAAA,CACRA,OADQ,CACA,MADA,EACO,IADP,CAERA,CAAAA,OAFQ,CAEA,MAFA,EAEO,IAFP,EAGRA,OAHQ,CAGA,MAHA,EAGO,IAHP,CAAA,CAIRA,OAJQ,CAIA,MAJA,EAIO,MAJP,CAKRA,CAAAA,OALQ,CAKA,MALA,EAKO,IALP,CAAA,CAMRA,OANQ,CAMA,MANA,EAMO,IANP,CAAX,CAAT,CAFV;iBASU,IAAA,CAAKyiC,CAAL,CAAO1H,QAAP,GAAmB,IAAKwH,CAAAA,EAAL,CAAQG,UAA3B,CATV;AAAA,iBAWA,MAZA;AAAA,aAaA,KAAK,CAAL;iBAEY,IAAA,CAAKD,CAAL,GAAS,IAAItoB,MAAJ,CAAW+nB,MAAX,CAAT,CAFZ;iBAGY,IAAA,CAAKO,CAAL,CAAO1H,QAAP,GAAmB,IAAKwH,CAAAA,EAAL,CAAQG,UAA3B,CAHZ;AAAA,iBAKA,MAlBA;AAAA,aAmBA,KAAK,CAAL;AAAA,iBAEY,IAAKD,CAAAA,CAAL,GAAS,IAAT,CAFZ;AAAA,iBAIA,MAvBA;AAAA,aAwBA,KAAK,CAAL;iBAEY,IAAA,CAAKA,CAAL,GAAS,IAAI1oB,OAAJ,CAAY,IAAZ,CAAT,CAFZ;iBAGY,IAAA,CAAK0oB,CAAL,CAAO1H,QAAP,GAAkB,IAAKwH,CAAAA,EAAL,CAAQG,UAA1B,CAHZ;AAAA,iBAKA,MA7BA;AAAA,aA8BA,KAAK,CAAL;iBAEY,IAAA,CAAKD,CAAL,GAAS,IAAI1oB,OAAJ,CAAY,KAAZ,CAAT,CAFZ;iBAGY,IAAA,CAAK0oB,CAAL,CAAO1H,QAAP,GAAkB,IAAKwH,CAAAA,EAAL,CAAQG,UAA1B,CAHZ;AAAA,iBAKA,MAnCA;AAAA,aAoCA,KAAK,CAAL;iBACA,OAAO,IAAKD,CAAAA,CAAL,GAASH,EAAA,CAAGE,EAAA,GAAG,CAAN,CAAhB,CADA;AApCA,aAuCA,KAAK,EAAL;AAAA,iBACA,IAAKC,CAAAA,CAAL,GAAS,EAAT,CADA;iBACa5hC,MAAA,CAAO8hC,cAAP,CAAsB,KAAKF,CAA3B,EAA8B,UAA9B,EAA0C;AAAA,qBAC3CzhC,KAAA,EAAO,IAAKuhC,CAAAA,EAAL,CAAQG,UAD4B;qBAE3CE,UAAA,EAAY,KAF+B;AAAA,kBAA1C,CADb,CAAA;AAAA,iBAKA,MA5CA;aA6CA,KAAK,EAAL,CA7CA;AAAA,aA6CS,KAAK,EAAL;iBACT,IAAA,CAAKH,CAAL,GAASH,EAAA,CAAGE,EAAA,GAAG,CAAN,CAAT,CADS;iBACU3hC,MAAA,CAAO8hC,cAAP,CAAsB,KAAKF,CAA3B,EAA8B,UAA9B,EAA0C;AAAA,qBACjDzhC,KAAA,EAAO,IAAKuhC,CAAAA,EAAL,CAAQG,UADkC;qBAEjDE,UAAA,EAAY,KAFqC;AAAA,kBAA1C,CADV,CAAA;AAAA,iBAKT,MAlDA;AAAA,aAmDA,KAAK,EAAL;iBACA,IAAA,CAAKH,CAAL,GAAS;AAAA,qBAACH,EAAA,CAAGE,EAAA,GAAG,CAAN,CAAD;qBAAWF,EAAA,CAAGE,EAAH,CAAX;AAAA,kBAAT,CADA;AAAA,iBAEA,MArDA;AAAA,aAsDA,KAAK,EAAL;AAAA,iBACA,IAAKC,CAAAA,CAAL,GAAS,EAAT,CADA;iBACa,KAAKA,CAAL,CAAOH,EAAA,CAAGE,EAAH,CAAO,CAAA,CAAP,CAAP,CAAA,GAAoBF,EAAA,CAAGE,EAAH,CAAO,CAAA,CAAP,CAApB,CADb;AAAA,iBAEA,MAxDA;AAAA,aAyDA,KAAK,EAAL;iBACA,IAAA,CAAKC,CAAL,GAASH,EAAA,CAAGE,EAAA,GAAG,CAAN,CAAT,CADA;iBACmBF,EAAA,CAAGE,EAAA,GAAG,CAAN,CAAA,CAASF,EAAA,CAAGE,EAAH,EAAO,CAAP,CAAT,IAAsBF,EAAA,CAAGE,EAAH,CAAO,CAAA,CAAP,CAAtB,CADnB;AAAA,iBAEA,MA3DA;AAAA,aA4DA,KAAK,EAAL;AAAA,iBACA,IAAKC,CAAAA,CAAL,GAAS,EAAT,CADA;iBACa5hC,MAAA,CAAO8hC,cAAP,CAAsB,KAAKF,CAA3B,EAA8B,UAA9B,EAA0C;AAAA,qBAC3CzhC,KAAA,EAAO,IAAKuhC,CAAAA,EAAL,CAAQG,UAD4B;qBAE3CE,UAAA,EAAY,KAF+B;AAAA,kBAA1C,CADb,CAAA;AAAA,iBAKA,MAjEA;AAAA,aAkEA,KAAK,EAAL;iBACA,IAAA,CAAKH,CAAL,GAAS,CAACH,EAAA,CAAGE,EAAH,CAAD,CAAT,CADA;AAAA,iBAEA,MApEA;AAAA,aAqEA,KAAK,EAAL;iBACA,IAAA,CAAKC,CAAL,GAASH,EAAA,CAAGE,EAAA,GAAG,CAAN,CAAT,CADA;AAAA,iBACmBF,EAAA,CAAGE,EAAA,GAAG,CAAN,CAAA,CAAS7hC,IAAT,CAAc2hC,EAAA,CAAGE,EAAH,CAAd,CADnB,CAAA;AAAA,iBAEA,MAvEA;cAJ2H;UAL9G;AAAA,SAmFbK,KAAA,EAAO;aAAC;iBAAC,GAAE,CAAH;iBAAK,GAAE5B,GAAP;iBAAW,GAAE,CAAb;iBAAe,GAAEC,GAAjB;iBAAqB,GAAE,CAAvB;iBAAyB,GAAEC,GAA3B;iBAA+B,GAAE,CAAjC;iBAAmC,IAAGC,GAAtC;iBAA0C,IAAGC,GAA7C;iBAAiD,IAAG,CAApD;iBAAsD,IAAG,CAAzD;iBAA2D,IAAG,CAA9D;iBAAgE,IAAG,CAAnE;iBAAqE,IAAGC,GAAxE;iBAA4E,IAAGC,GAA/E;cAAD;AAAA,aAAqF,EAAC,CAAA,EAAE,CAAC,CAAD,CAAH,EAArF;aAA6F;AAAA,iBAAC,EAAG,EAAA;AAAA,qBAAC,CAAD;AAAA,qBAAG,EAAH;kBAAJ;cAA7F;aAAyGP,CAAA,CAAEQ,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,CAAH;AAAA,cAAN,CAAzG;aAAsHR,CAAA,CAAEQ,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,CAAH;AAAA,cAAN,CAAtH;aAAmIR,CAAA,CAAEQ,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,CAAH;AAAA,cAAN,CAAnI;aAAgJR,CAAA,CAAEQ,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,EAAH;AAAA,cAAN,CAAhJ;aAA8JR,CAAA,CAAEQ,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,EAAH;AAAA,cAAN,CAA9J;aAA4KR,CAAA,CAAEQ,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,EAAH;AAAA,cAAN,CAA5K;aAA0LR,CAAA,CAAEQ,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,CAAH;AAAA,cAAN,CAA1L;aAAuMR,CAAA,CAAEQ,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,CAAH;AAAA,cAAN,CAAvM;aAAoNR,CAAA,CAAEQ,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,CAAH;AAAA,cAAN,CAApN;AAAA,aAAiOR,CAAA,CAAE;AAAA,iBAAC,EAAD;AAAA,iBAAI,EAAJ;AAAA,iBAAO,EAAP;AAAA,iBAAU,EAAV;AAAA,iBAAa,EAAb;AAAA,cAAF,EAAmB;AAAA,iBAAC,CAAD;AAAA,iBAAG,CAAH;AAAA,cAAnB,CAAjO;aAA2PA,CAAA,CAAEQ,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,CAAH;AAAA,cAAN,CAA3P;aAAwQ;iBAAC,GAAE,EAAH;iBAAM,GAAEP,GAAR;AAAA,iBAAY,EAAG,EAAA;AAAA,qBAAC,CAAD;AAAA,qBAAG,EAAH;kBAAf;iBAAsB,IAAG,EAAzB;iBAA4B,IAAG,EAA/B;cAAxQ;aAA2S;iBAAC,GAAE,CAAH;iBAAK,GAAEA,GAAP;iBAAW,GAAE,CAAb;iBAAe,GAAEC,GAAjB;iBAAqB,GAAE,CAAvB;iBAAyB,GAAEC,GAA3B;iBAA+B,GAAE,CAAjC;iBAAmC,IAAGC,GAAtC;iBAA0C,IAAGC,GAA7C;iBAAiD,IAAG,EAApD;iBAAuD,IAAG,CAA1D;iBAA4D,IAAG,CAA/D;iBAAiE,IAAGC,GAApE;iBAAwE,IAAGC,GAA3E;AAAA,iBAA+E,EAAG,EAAA;AAAA,qBAAC,CAAD;AAAA,qBAAG,EAAH;kBAAlF;iBAAyF,IAAG,EAA5F;cAA3S;aAA2Y;AAAA,iBAAC,CAAE,EAAA;AAAA,qBAAC,CAAD;AAAA,qBAAG,CAAH;kBAAH;cAA3Y;aAAqZP,CAAA,CAAEQ,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,EAAH;AAAA,cAAN,CAArZ;aAAma;AAAA,iBAAC,EAAG,EAAA;AAAA,qBAAC,CAAD;AAAA,qBAAG,EAAH;kBAAJ;AAAA,iBAAW,EAAG,EAAA;AAAA,qBAAC,CAAD;AAAA,qBAAG,EAAH;kBAAd;cAAna;aAAybR,CAAA,CAAES,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,EAAH;AAAA,cAAN,CAAzb;aAAuc;AAAA,iBAAC,EAAG,EAAA;AAAA,qBAAC,CAAD;AAAA,qBAAG,EAAH;kBAAJ;cAAvc;aAAmdT,CAAA,CAAEQ,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,EAAH;AAAA,cAAN,CAAnd;aAAie;AAAA,iBAAC,EAAG,EAAA;AAAA,qBAAC,CAAD;AAAA,qBAAG,EAAH;kBAAJ;AAAA,iBAAW,EAAG,EAAA;AAAA,qBAAC,CAAD;AAAA,qBAAG,EAAH;kBAAd;cAAje;aAAufR,CAAA,CAAEU,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,EAAH;AAAA,cAAN,CAAvf;aAAqgBV,CAAA,CAAEQ,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,EAAH;AAAA,cAAN,CAArgB;aAAmhB;iBAAC,GAAE,EAAH;iBAAM,GAAEP,GAAR;iBAAY,IAAG,EAAf;cAAnhB;aAAsiB;iBAAC,GAAE,CAAH;iBAAK,GAAEA,GAAP;iBAAW,GAAE,CAAb;iBAAe,GAAEC,GAAjB;iBAAqB,GAAE,CAAvB;iBAAyB,GAAEC,GAA3B;iBAA+B,GAAE,CAAjC;iBAAmC,IAAGC,GAAtC;iBAA0C,IAAGC,GAA7C;iBAAiD,IAAG,EAApD;iBAAuD,IAAG,CAA1D;iBAA4D,IAAG,CAA/D;iBAAiE,IAAGC,GAApE;iBAAwE,IAAGC,GAA3E;cAAtiB;aAAsnBP,CAAA,CAAEQ,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,EAAH;AAAA,cAAN,CAAtnB;aAAooB;iBAAC,GAAE,CAAH;iBAAK,GAAEP,GAAP;iBAAW,GAAE,CAAb;iBAAe,GAAEC,GAAjB;iBAAqB,GAAE,CAAvB;iBAAyB,GAAEC,GAA3B;iBAA+B,GAAE,CAAjC;iBAAmC,IAAGC,GAAtC;iBAA0C,IAAGC,GAA7C;iBAAiD,IAAG,EAApD;iBAAuD,IAAG,CAA1D;iBAA4D,IAAG,CAA/D;iBAAiE,IAAGC,GAApE;iBAAwE,IAAGC,GAA3E;cAApoB;aAAotBP,CAAA,CAAES,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,EAAH;AAAA,cAAN,CAAptB;aAAkuBT,CAAA,CAAES,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,EAAH;AAAA,cAAN,CAAluB;aAAgvBT,CAAA,CAAEU,GAAF,EAAM;AAAA,iBAAC,CAAD;AAAA,iBAAG,EAAH;AAAA,cAAN,CAAhvB;UAnFM;AAAA,SAoFboB,cAAA,EAAgB;AAAA,aAAC,EAAG,EAAA;AAAA,iBAAC,CAAD;AAAA,iBAAG,CAAH;cAAJ;UApFH;SAqFbC,UAAA,EAAY,SAASA,UAAT,CAAoB7uB,GAApB,EAAyBvK,IAAzB,EAA+B;AAAA,aACvC,IAAIA,IAAA,CAAKq5B,WAAT,EAAsB;AAAA,iBAClB,IAAKrB,CAAAA,KAAL,CAAWztB,GAAX,CADkB,CAAA;AAAA,cAAtB,MAEO;AAAA,iBACH,MAAM,IAAI/C,KAAJ,CAAU+C,GAAV,CAAN,CADG;cAHgC;UArF9B;AAAA,SA4Fb/T,KAAA,EAAO,SAASA,KAAT,CAAemF,KAAf,EAAsB;aACzB,IAAIhD,IAAA,GAAO,IAAX,CAAA,CAAiB2gC,KAAA,GAAQ,CAAC,CAAD,CAAzB,CAA8BC,CAAaC,MAAA,GAAS,CAAC,IAAD,CAApD,CAAA,CAA4DC,MAAA,GAAS,EAArE,CAAA,CAAyEP,KAAA,GAAQ,IAAKA,CAAAA,KAAtF,CAA6FX,CAAAA,MAAA,GAAS,EAAtG,EAA0GE,QAAA,GAAW,CAArH,CAAA,CAAwHD,MAAA,GAAS,CAAjI,CAAoIkB,CAAgBC,MAAA,GAAS,CAA7J,CAAgKC,CAAAA,GAAA,GAAM,EAD7I;AAAA,aAEzB,IAAIlrB,IAAA,GAAO+qB,MAAA,CAAOhkC,KAAP,CAAaqI,IAAb,CAAkB+7B,SAAlB,EAA6B,CAA7B,CAAX,CAFyB;aAGzB,IAAIC,KAAA,GAAQ5iC,MAAA,CAAO8tB,MAAP,CAAc,IAAA,CAAK8U,KAAnB,CAAZ,CAHyB;aAIzB,IAAIC,WAAA,GAAc,EAAE9B,EAAA,EAAI,EAAN,EAAlB,CAJyB;AAAA,aAKzB,KAASx8B,IAAAA,CAAT,IAAc,IAAA,CAAKw8B,EAAnB,EAAuB;AAAA,iBACnB,IAAI/gC,MAAA,CAAO2G,SAAP,CAAiBR,cAAjB,CAAgCS,IAAhC,CAAqC,IAAKm6B,CAAAA,EAA1C,EAA8Cx8B,CAA9C,CAAJ,EAAsD;AAAA,qBAClDs+B,WAAA,CAAY9B,EAAZ,CAAex8B,CAAf,CAAoB,GAAA,IAAA,CAAKw8B,EAAL,CAAQx8B,CAAR,CAApB,CADkD;kBADnC;cALE;aAUzBq+B,KAAA,CAAME,QAAN,CAAer+B,KAAf,EAAsBo+B,WAAA,CAAY9B,EAAlC,CAVyB,CAAA;AAAA,aAWzB8B,WAAA,CAAY9B,EAAZ,CAAe6B,KAAf,GAAuBA,KAAvB,CAXyB;AAAA,aAYzBC,WAAA,CAAY9B,EAAZ,CAAetR,MAAf,GAAwB,IAAxB,CAZyB;AAAA,aAazB,IAAI,OAAOmT,KAAA,CAAMG,MAAb,IAAuB,WAA3B,EAAwC;AAAA,iBACpCH,KAAA,CAAMG,MAAN,GAAe,EAAf,CADoC;cAbf;AAAA,aAgBzB,IAAIC,KAAA,GAAQJ,KAAA,CAAMG,MAAlB,CAhByB;AAAA,aAiBzBR,MAAA,CAAOziC,IAAP,CAAYkjC,KAAZ,CAjByB,CAAA;AAAA,aAkBzB,IAAIC,MAAA,GAASL,KAAA,CAAMzkC,OAAN,IAAiBykC,KAAA,CAAMzkC,OAAN,CAAc8kC,MAA5C,CAlByB;aAmBzB,IAAI,OAAOJ,WAAA,CAAY9B,EAAZ,CAAemB,UAAtB,KAAqC,UAAzC,EAAqD;iBACjD,IAAA,CAAKA,UAAL,GAAkBW,WAAA,CAAY9B,EAAZ,CAAemB,UAAjC,CADiD;AAAA,cAArD,MAEO;AAAA,iBACH,IAAA,CAAKA,UAAL,GAAkBliC,MAAA,CAAOkjC,cAAP,CAAsB,IAAtB,CAA4BhB,CAAAA,UAA9C,CADG;cArBkB;aA8BrB,SAASiB,GAAT,GAAe;iBACX,IAAIC,KAAJ,CADW;iBAEXA,KAAA,GAAQR,KAAA,CAAMO,GAAN,EAAA,IAAeT,GAAvB,CAFW;AAAA,iBAGX,IAAI,OAAOU,KAAP,KAAiB,QAArB,EAA+B;qBAC3BA,KAAA,GAAQ3hC,IAAA,CAAKu/B,QAAL,CAAcoC,KAAd,CAAwBA,IAAAA,KAAhC,CAD2B;kBAHpB;iBAMX,OAAOA,KAAP,CANW;cA9BM;aAsCzB,IAAIC,MAAJ,CAAA,CAA4BC,KAA5B,CAAmCC,CAAAA,MAAnC,CAA2C9uB,CAAGH,CAA9C,EAAiDkvB,KAAA,GAAQ,EAAzD,CAAA,CAA6Dz3B,CAA7D,CAAA,CAAgE7E,GAAhE,CAAqEu8B,CAAAA,QAArE,CAA+EjxB,CAAAA,SAtCtD;aAuCzB,OAAO,IAAP,EAAa;iBACT8wB,KAAA,GAAQlB,KAAA,CAAMA,KAAA,CAAMnjC,MAAN,GAAe,CAArB,CAAR,CADS;AAAA,iBAET,IAAI,IAAKgjC,CAAAA,cAAL,CAAoBqB,KAApB,CAAJ,EAAgC;qBAC5BC,MAAA,GAAS,IAAA,CAAKtB,cAAL,CAAoBqB,KAApB,CAAT,CAD4B;AAAA,kBAAhC,MAEO;qBACH,IAAID,MAAA,KAAW,IAAX,IAAmB,OAAOA,MAAP,IAAiB,WAAxC,EAAqD;AAAA,yBACjDA,MAAA,GAASF,GAAA,EAAT,CADiD;sBADlD;AAAA,qBAIHI,MAAA,GAASvB,KAAA,CAAMsB,KAAN,CAAA,IAAgBtB,KAAA,CAAMsB,KAAN,CAAA,CAAaD,MAAb,CAAzB,CAJG;kBAJE;AAAA,iBAUG,IAAI,OAAOE,MAAP,KAAkB,WAAlB,IAAiC,CAACA,MAAA,CAAOtkC,MAAzC,IAAmD,CAACskC,MAAA,CAAO,CAAP,CAAxD,EAAmE;AAAA,qBACvE,IAAIG,MAAA,GAAS,EAAb,CADuE;qBAEvElxB,QAAA,GAAW,EAAX,CAFuE;AAAA,qBAGvE,KAAKzG,CAAL,IAAUi2B,KAAA,CAAMsB,KAAN,CAAV,EAAwB;yBACpB,IAAI,KAAKrC,UAAL,CAAgBl1B,CAAhB,CAAsBA,IAAAA,CAAA,GAAI02B,MAA9B,EAAsC;AAAA,6BAClCjwB,QAAA,CAAS1S,IAAT,CAAc,IAAO,GAAA,IAAA,CAAKmhC,UAAL,CAAgBl1B,CAAhB,CAAP,GAA4B,IAA1C,CADkC,CAAA;0BADlB;sBAH+C;AAAA,qBAQvE,IAAI62B,KAAA,CAAMe,YAAV,EAAwB;AAAA,yBACpBD,MAAA,GAAS,sBAAA,IAA0BnC,QAAA,GAAW,CAAX,CAA1B,GAA0C,KAA1C,GAAkDqB,KAAA,CAAMe,YAAN,EAAlD,GAAyE,cAAzE,GAA0FnxB,QAAA,CAASpS,IAAT,CAAc,IAAd,CAA1F,GAAgH,UAAhH,IAA8H,IAAA,CAAK6gC,UAAL,CAAgBoC,MAAhB,CAA2BA,IAAAA,MAA3B,CAA9H,GAAmK,IAA5K,CADoB;AAAA,sBAAxB,MAEO;AAAA,yBACHK,MAAA,GAAS,sBAA0B,IAAAnC,QAAA,GAAW,CAAX,CAA1B,GAA0C,eAA1C,IAA6D8B,MAAA,IAAUX,GAAV,GAAgB,cAAhB,GAAiC,IAAQ,IAAA,IAAA,CAAKzB,UAAL,CAAgBoC,MAAhB,CAAA,IAA2BA,MAA3B,CAAR,GAA6C,IAA9E,CAAtE,CADG;sBAVgE;AAAA,qBAavE,IAAKnB,CAAAA,UAAL,CAAgBwB,MAAhB,EAAwB;AAAA,yBACpBztB,IAAA,EAAM2sB,KAAA,CAAMxjC,KADQ;yBAEpBgkC,KAAA,EAAO,IAAA,CAAKnC,UAAL,CAAgBoC,MAAhB,KAA2BA,MAFd;AAAA,yBAGpB7jB,IAAA,EAAMojB,KAAA,CAAMrB,QAHQ;yBAIpBqC,GAAA,EAAKZ,KAJe;yBAKpBxwB,QAAA,EAAUA,QALU;AAAA,sBAAxB,CAbuE,CAAA;kBAVtE;AAAA,iBA+BT,IAAI+wB,MAAA,CAAO,CAAP,CAAqB3jC,YAAAA,KAArB,IAA8B2jC,MAAA,CAAOtkC,MAAP,GAAgB,CAAlD,EAAqD;AAAA,qBACjD,MAAM,IAAIqR,KAAJ,CAAU,mDAAA,GAAsDgzB,KAAtD,GAA8D,WAA9D,GAA4ED,MAAtF,CAAN,CADiD;kBA/B5C;AAAA,iBAkCT,QAAQE,MAAA,CAAO,CAAP,CAAR;AAAA,iBACA,KAAK,CAAL;AAAA,qBACInB,KAAA,CAAMtiC,IAAN,CAAWujC,MAAX,CADJ,CAAA;qBAEIf,MAAA,CAAOxiC,IAAP,CAAY8iC,KAAA,CAAMvB,MAAlB,CAFJ,CAAA;qBAGIkB,MAAA,CAAOziC,IAAP,CAAY8iC,KAAA,CAAMG,MAAlB,CAHJ,CAAA;qBAIIX,KAAA,CAAMtiC,IAAN,CAAWyjC,MAAA,CAAO,CAAP,CAAX,CAJJ,CAAA;qBAKIF,MAAA,GAAS,IAAT,CALJ;qBAMyB;AAAA,yBACjB/B,MAAA,GAASsB,KAAA,CAAMtB,MAAf,CADiB;AAAA,yBAEjBD,MAAA,GAASuB,KAAA,CAAMvB,MAAf,CAFiB;AAAA,yBAGjBE,QAAA,GAAWqB,KAAA,CAAMrB,QAAjB,CAHiB;AAAA,yBAIjByB,KAAA,GAAQJ,KAAA,CAAMG,MAAd,CAJiB;AAAA,sBANzB;AAAA,qBAkBI,MAnBJ;AAAA,iBAoBA,KAAK,CAAL;AAAA,qBACI77B,GAAA,GAAM,IAAKg6B,CAAAA,YAAL,CAAkBqC,MAAA,CAAO,CAAP,CAAlB,CAAA,CAA6B,CAA7B,CAAN,CADJ;AAAA,qBAEIC,KAAA,CAAM5B,CAAN,GAAUU,MAAA,CAAOA,MAAA,CAAOrjC,MAAP,GAAgBiI,GAAvB,CAAV,CAFJ;qBAGIs8B,KAAA,CAAM9B,EAAN,GAAW;AAAA,yBACPG,UAAA,EAAYU,MAAA,CAAOA,MAAA,CAAOtjC,MAAP,IAAiBiI,GAAA,IAAO,CAAP,CAAxB,EAAmC26B,UADxC;yBAEPgC,SAAA,EAAWtB,MAAA,CAAOA,MAAA,CAAOtjC,MAAP,GAAgB,CAAvB,CAAA,CAA0B4kC,SAF9B;AAAA,yBAGPC,YAAA,EAAcvB,MAAA,CAAOA,MAAA,CAAOtjC,MAAP,IAAiBiI,GAAA,IAAO,CAAP,CAAxB,EAAmC48B,YAH1C;yBAIPC,WAAA,EAAaxB,MAAA,CAAOA,MAAA,CAAOtjC,MAAP,GAAgB,CAAvB,CAAA,CAA0B8kC,WAJhC;AAAA,sBAAX,CAHJ;qBASI,IAAId,MAAJ,EAAY;AAAA,yBACRO,KAAA,CAAM9B,EAAN,CAASsC,KAAT,GAAiB;AAAA,6BACbzB,MAAA,CAAOA,MAAA,CAAOtjC,MAAP,IAAiBiI,GAAA,IAAO,CAAP,CAAxB,CAAA,CAAmC88B,KAAnC,CAAyC,CAAzC,CADa;AAAA,6BAEbzB,MAAA,CAAOA,MAAA,CAAOtjC,MAAP,GAAgB,CAAvB,CAA0B+kC,CAAAA,KAA1B,CAAgC,CAAhC,CAFa;AAAA,0BAAjB,CADQ;sBAThB;qBAeI1vB,CAAA,GAAI,IAAK6sB,CAAAA,aAAL,CAAmBxS,KAAnB,CAAyB6U,KAAzB,EAAgC;AAAA,yBAChCnC,MADgC;AAAA,yBAEhCC,MAFgC;AAAA,yBAGhCC,QAHgC;yBAIhCsB,WAAA,CAAY9B,EAJoB;yBAKhCwC,MAAA,CAAO,CAAP,CALgC;AAAA,yBAMhCjB,MANgC;AAAA,yBAOhCC,MAPgC;AAAA,sBAAA,CAQlC94B,MARkC,CAQ3B+N,IAR2B,CAAhC,CAAJ,CAfJ;AAAA,qBAwBI,IAAI,OAAOlD,CAAP,KAAa,WAAjB,EAA8B;yBAC1B,OAAOA,CAAP,CAD0B;sBAxBlC;qBA2BI,IAAIpN,GAAJ,EAAS;AAAA,yBACLk7B,KAAA,GAAQA,KAAA,CAAM7jC,KAAN,CAAY,CAAZ,EAAe,CAAC,CAAD,GAAK2I,GAAL,GAAW,CAA1B,CAAR,CADK;AAAA,yBAELo7B,MAAA,GAASA,MAAA,CAAO/jC,KAAP,CAAa,CAAb,EAAgB,CAAC,CAAD,GAAK2I,GAArB,CAAT,CAFK;AAAA,yBAGLq7B,MAAA,GAASA,MAAA,CAAOhkC,KAAP,CAAa,CAAb,EAAgB,CAAC,CAAD,GAAK2I,GAArB,CAAT,CAHK;sBA3Bb;AAAA,qBAgCIk7B,KAAA,CAAMtiC,IAAN,CAAW,KAAKohC,YAAL,CAAkBqC,MAAA,CAAO,CAAP,CAAlB,CAA6B,CAAA,CAA7B,CAAX,CAhCJ,CAAA;qBAiCIjB,MAAA,CAAOxiC,IAAP,CAAY0jC,KAAA,CAAM5B,CAAlB,CAjCJ,CAAA;qBAkCIW,MAAA,CAAOziC,IAAP,CAAY0jC,KAAA,CAAM9B,EAAlB,CAlCJ,CAAA;qBAmCI+B,QAAA,GAAWzB,KAAA,CAAMI,KAAA,CAAMA,KAAA,CAAMnjC,MAAN,GAAe,CAArB,CAAN,CAA+BmjC,CAAAA,KAAA,CAAMA,KAAA,CAAMnjC,MAAN,GAAe,CAArB,CAA/B,CAAX,CAnCJ;AAAA,qBAoCImjC,KAAA,CAAMtiC,IAAN,CAAW2jC,QAAX,CApCJ,CAAA;AAAA,qBAqCI,MAzDJ;AAAA,iBA0DA,KAAK,CAAL;qBACI,OAAO,IAAP,CA3DJ;kBAlCS;cAvCY;aAuIzB,OAAO,IAAP,CAvIyB;UA5FhB;AAAA,MAAb,CAFwB;AAAA;KAwOpBb,IAAAA,KAAA,GAAS,YAAU;SACvB,IAAIA,KAAA,GAAS;aAEbF,GAAA,EAAI,CAFS;aAIbR,UAAA,EAAW,SAASA,UAAT,CAAoB7uB,GAApB,EAAyBvK,IAAzB,EAA+B;AAAA,iBAClC,IAAI,IAAA,CAAKi4B,EAAL,CAAQtR,MAAZ,EAAoB;AAAA,qBAChB,IAAA,CAAKsR,EAAL,CAAQtR,MAAR,CAAeyS,UAAf,CAA0B7uB,GAA1B,EAA+BvK,IAA/B,CADgB,CAAA;AAAA,kBAApB,MAEO;AAAA,qBACH,MAAM,IAAIwH,KAAJ,CAAU+C,GAAV,CAAN,CADG;kBAH2B;cAJ7B;AAAA;AAab,aAAAyvB,QAAA,EAAS,UAAUr+B,KAAV,EAAiBs8B,EAAjB,EAAqB;iBACtB,IAAA,CAAKA,EAAL,GAAUA,EAAA,IAAM,IAAKA,CAAAA,EAAX,IAAiB,EAA3B,CADsB;AAAA,iBAEtB,IAAKkD,CAAAA,MAAL,GAAcx/B,KAAd,CAFsB;AAAA,iBAGtB,IAAA,CAAKy/B,KAAL,GAAa,IAAKC,CAAAA,UAAL,GAAkB,IAAKC,CAAAA,IAAL,GAAY,KAA3C,CAHsB;iBAItB,KAAK7C,QAAL,GAAgB,KAAKD,MAAL,GAAc,CAA9B,CAJsB;AAAA,iBAKtB,IAAA,CAAKD,MAAL,GAAc,IAAKgD,CAAAA,OAAL,GAAe,IAAKjlC,CAAAA,KAAL,GAAa,EAA1C,CALsB;AAAA,iBAMtB,KAAKklC,cAAL,GAAsB,CAAC,SAAD,CAAtB,CANsB;iBAOtB,IAAA,CAAKvB,MAAL,GAAc;qBACVlB,UAAA,EAAY,CADF;qBAEViC,YAAA,EAAc,CAFJ;qBAGVD,SAAA,EAAW,CAHD;qBAIVE,WAAA,EAAa,CAJH;AAAA,kBAAd,CAPsB;AAAA,iBAatB,IAAI,IAAA,CAAK5lC,OAAL,CAAa8kC,MAAjB,EAAyB;AAAA,qBACrB,IAAKF,CAAAA,MAAL,CAAYiB,KAAZ,GAAoB;AAAA,yBAAC,CAAD;AAAA,yBAAG,CAAH;AAAA,sBAApB,CADqB;kBAbH;AAAA,iBAgBtB,IAAKO,CAAAA,MAAL,GAAc,CAAd,CAhBsB;iBAiBtB,OAAO,IAAP,CAjBsB;cAbjB;AAAA;aAkCb9/B,KAAA,EAAM,YAAY;iBACV,IAAI+/B,EAAA,GAAK,IAAA,CAAKP,MAAL,CAAY,CAAZ,CAAT,CADU;AAAA,iBAEV,IAAK5C,CAAAA,MAAL,IAAemD,EAAf,CAFU;AAAA,iBAGV,IAAA,CAAKlD,MAAL,EAHU,CAAA;AAAA,iBAIV,IAAA,CAAKiD,MAAL,EAJU,CAAA;AAAA,iBAKV,IAAKnlC,CAAAA,KAAL,IAAcolC,EAAd,CALU;AAAA,iBAMV,IAAKH,CAAAA,OAAL,IAAgBG,EAAhB,CANU;iBAOV,IAAIC,KAAA,GAAQD,EAAA,CAAGplC,KAAH,CAAS,iBAAT,CAAZ,CAPU;iBAQV,IAAIqlC,KAAJ,EAAW;AAAA,qBACP,IAAA,CAAKlD,QAAL,EADO,CAAA;AAAA,qBAEP,IAAKwB,CAAAA,MAAL,CAAYc,SAAZ,EAFO,CAAA;AAAA,kBAAX,MAGO;AAAA,qBACH,IAAKd,CAAAA,MAAL,CAAYgB,WAAZ,EADG,CAAA;kBAXG;AAAA,iBAcV,IAAI,IAAA,CAAK5lC,OAAL,CAAa8kC,MAAjB,EAAyB;qBACrB,KAAKF,MAAL,CAAYiB,KAAZ,CAAkB,CAAlB,CADqB,EAAA,CAAA;kBAdf;AAAA,iBAkBV,IAAA,CAAKC,MAAL,GAAc,IAAKA,CAAAA,MAAL,CAAY1lC,KAAZ,CAAkB,CAAlB,CAAd,CAlBU;iBAmBV,OAAOimC,EAAP,CAnBU;cAlCL;AAAA;AAyDb,aAAAE,KAAA,EAAM,UAAUF,EAAV,EAAc;AAAA,iBACZ,IAAIt9B,GAAA,GAAMs9B,EAAA,CAAGvlC,MAAb,CADY;iBAEZ,IAAIwlC,KAAA,GAAQD,EAAA,CAAGnhC,KAAH,CAAS,eAAT,CAAZ,CAFY;iBAIZ,KAAK4gC,MAAL,GAAcO,EAAA,GAAK,IAAA,CAAKP,MAAxB,CAJY;iBAKZ,KAAK5C,MAAL,GAAc,IAAKA,CAAAA,MAAL,CAAY55B,MAAZ,CAAmB,CAAnB,EAAsB,KAAK45B,MAAL,CAAYpiC,MAAZ,GAAqBiI,GAA3C,CAAd,CALY;AAAA;AAOZ,iBAAKq9B,IAAAA,CAAAA,MAAL,IAAer9B,GAAf,CAPY;iBAQZ,IAAIy9B,QAAA,GAAW,IAAKvlC,CAAAA,KAAL,CAAWiE,KAAX,CAAiB,eAAjB,CAAf,CARY;iBASZ,KAAKjE,KAAL,GAAa,IAAKA,CAAAA,KAAL,CAAWqI,MAAX,CAAkB,CAAlB,EAAqB,KAAKrI,KAAL,CAAWH,MAAX,GAAoB,CAAzC,CAAb,CATY;iBAUZ,KAAKolC,OAAL,GAAe,IAAKA,CAAAA,OAAL,CAAa58B,MAAb,CAAoB,CAApB,EAAuB,KAAK48B,OAAL,CAAaplC,MAAb,GAAsB,CAA7C,CAAf,CAVY;AAAA,iBAYZ,IAAIwlC,KAAA,CAAMxlC,MAAN,GAAe,CAAnB,EAAsB;qBAClB,IAAA,CAAKsiC,QAAL,IAAiBkD,KAAA,CAAMxlC,MAAN,GAAe,CAAhC,CADkB;kBAZV;iBAeZ,IAAIqV,CAAA,GAAI,KAAKyuB,MAAL,CAAYiB,KAApB,CAfY;iBAiBZ,IAAA,CAAKjB,MAAL,GAAc;AAAA,qBACVlB,UAAA,EAAY,IAAKkB,CAAAA,MAAL,CAAYlB,UADd;AAAA,qBAEVgC,SAAA,EAAW,IAAKtC,CAAAA,QAAL,GAAgB,CAFjB;AAAA,qBAGVuC,YAAA,EAAc,IAAKf,CAAAA,MAAL,CAAYe,YAHhB;qBAIVC,WAAA,EAAaU,KAAA,GACR,CAAAA,KAAA,CAAMxlC,MAAN,KAAiB0lC,QAAA,CAAS1lC,MAA1B,GAAmC,KAAK8jC,MAAL,CAAYe,YAA/C,GAA8D,CAA9D,IACEa,QAAA,CAASA,QAAA,CAAS1lC,MAAT,GAAkBwlC,KAAA,CAAMxlC,MAAjC,CAAA,CAAyCA,MAD5C,GACqDwlC,KAAA,CAAM,CAAN,CAAA,CAASxlC,MAFrD,GAGX,IAAA,CAAK8jC,MAAL,CAAYe,YAAZ,GAA2B58B,GAPnB;AAAA,kBAAd,CAjBY;AAAA,iBA2BZ,IAAI,IAAA,CAAK/I,OAAL,CAAa8kC,MAAjB,EAAyB;AAAA,qBACrB,IAAKF,CAAAA,MAAL,CAAYiB,KAAZ,GAAoB;yBAAC1vB,CAAA,CAAE,CAAF,CAAD;yBAAOA,CAAA,CAAE,CAAF,IAAO,IAAKgtB,CAAAA,MAAZ,GAAqBp6B,GAA5B;AAAA,sBAApB,CADqB;kBA3Bb;iBA8BZ,KAAKo6B,MAAL,GAAc,KAAKD,MAAL,CAAYpiC,MAA1B,CA9BY;iBA+BZ,OAAO,IAAP,CA/BY;cAzDP;AAAA;aA4Fb2lC,IAAA,EAAK,YAAY;AAAA,iBACT,IAAKV,CAAAA,KAAL,GAAa,IAAb,CADS;iBAET,OAAO,IAAP,CAFS;cA5FJ;AAAA;aAkGbW,MAAA,EAAO,YAAY;AAAA,iBACX,IAAI,IAAA,CAAK1mC,OAAL,CAAa2mC,eAAjB,EAAkC;AAAA,qBAC9B,IAAKX,CAAAA,UAAL,GAAkB,IAAlB,CAD8B;AAAA,kBAAlC,MAEO;qBACH,OAAO,IAAKjC,CAAAA,UAAL,CAAgB,wBAAA,SAAiCX,QAAL,GAAgB,CAAhB,CAA5B,GAAiD,kIAAjD,GAAsL,IAAKoC,CAAAA,YAAL,EAAtM,EAA2N;yBAC9N1tB,IAAA,EAAM,EADwN;yBAE9NmtB,KAAA,EAAO,IAFuN;AAAA,yBAG9N5jB,IAAA,EAAM,IAAA,CAAK+hB,QAHmN;AAAA,sBAA3N,CAAP,CADG;kBAHI;iBAWX,OAAO,IAAP,CAXW;cAlGN;AAAA;AAiHb,aAAAwD,IAAA,EAAK,UAAUlgC,CAAV,EAAa;AAAA,iBACV,IAAA,CAAK6/B,KAAL,CAAW,IAAKtlC,CAAAA,KAAL,CAAWb,KAAX,CAAiBsG,CAAjB,CAAX,CADU,CAAA;cAjHL;AAAA;aAsHbmgC,SAAA,EAAU,YAAY;iBACd,IAAIC,IAAA,GAAO,IAAA,CAAKZ,OAAL,CAAa58B,MAAb,CAAoB,CAApB,EAAuB,KAAK48B,OAAL,CAAaplC,MAAb,GAAsB,IAAA,CAAKG,KAAL,CAAWH,MAAxD,CAAX,CADc;iBAEd,OAAQ,CAAAgmC,IAAA,CAAKhmC,MAAL,GAAc,EAAd,GAAmB,KAAnB,GAAyB,EAAzB,IAA+BgmC,IAAA,CAAKx9B,MAAL,CAAY,CAAC,EAAb,CAAA,CAAiBtI,OAAjB,CAAyB,KAAzB,EAAgC,EAAhC,CAAvC,CAFc;cAtHT;AAAA;aA4Hb+lC,aAAA,EAAc,YAAY;AAAA,iBAClB,IAAIC,IAAA,GAAO,IAAA,CAAK/lC,KAAhB,CADkB;AAAA,iBAElB,IAAI+lC,IAAA,CAAKlmC,MAAL,GAAc,EAAlB,EAAsB;AAAA,qBAClBkmC,IAAA,IAAQ,IAAKlB,CAAAA,MAAL,CAAYx8B,MAAZ,CAAmB,CAAnB,EAAsB,EAAG09B,GAAAA,IAAA,CAAKlmC,MAA9B,CAAR,CADkB;kBAFJ;AAAA,iBAKlB,OAAQ,CAAAkmC,IAAA,CAAK19B,MAAL,CAAY,CAAZ,EAAc,EAAd,CAAA,IAAqB09B,IAAA,CAAKlmC,MAAL,GAAc,EAAd,GAAmB,KAAnB,GAA2B,EAA3B,CAArB,EAAqDE,OAAtD,CAA8D,KAA9D,EAAqE,EAArE,CAAP,CALkB;cA5Hb;AAAA;aAqIbwkC,YAAA,EAAa,YAAY;AAAA,iBACjB,IAAIyB,GAAA,GAAM,IAAKJ,CAAAA,SAAL,EAAV,CADiB;AAAA,iBAEjB,IAAI7rB,CAAA,GAAI,IAAIvZ,KAAJ,CAAUwlC,GAAA,CAAInmC,MAAJ,GAAa,CAAvB,CAA0BmB,CAAAA,IAA1B,CAA+B,GAA/B,CAAR,CAFiB;AAAA,iBAGjB,OAAOglC,GAAA,GAAM,IAAA,CAAKF,aAAL,EAAN,GAA6B,IAA7B,GAAoC/rB,CAApC,GAAwC,GAA/C,CAHiB;cArIZ;AAAA;AA4Ib,aAAAksB,UAAA,EAAW,UAAUjmC,KAAV,EAAiBkmC,YAAjB,EAA+B;AAAA,iBAClC,IAAIlC,KAAJ,EACIqB,KADJ,EAEIc,MAFJ,CADkC;AAAA,iBAKlC,IAAI,IAAA,CAAKpnC,OAAL,CAAa2mC,eAAjB,EAAkC;AAAA;AAE9B,qBAAAS,MAAA,GAAS;AAAA,yBACLhE,QAAA,EAAU,IAAA,CAAKA,QADV;AAAA,yBAELwB,MAAA,EAAQ;AAAA,6BACJlB,UAAA,EAAY,IAAKkB,CAAAA,MAAL,CAAYlB,UADpB;AAAA,6BAEJgC,SAAA,EAAW,IAAA,CAAKA,SAFZ;AAAA,6BAGJC,YAAA,EAAc,IAAKf,CAAAA,MAAL,CAAYe,YAHtB;AAAA,6BAIJC,WAAA,EAAa,IAAKhB,CAAAA,MAAL,CAAYgB,WAJrB;0BAFH;AAAA,yBAQL1C,MAAA,EAAQ,IAAA,CAAKA,MARR;AAAA,yBASLjiC,KAAA,EAAO,IAAA,CAAKA,KATP;AAAA,yBAULomC,OAAA,EAAS,IAAA,CAAKA,OAVT;AAAA,yBAWLnB,OAAA,EAAS,IAAA,CAAKA,OAXT;AAAA,yBAYL/C,MAAA,EAAQ,IAAA,CAAKA,MAZR;AAAA,yBAaLiD,MAAA,EAAQ,IAAA,CAAKA,MAbR;AAAA,yBAcLL,KAAA,EAAO,IAAA,CAAKA,KAdP;AAAA,yBAeLD,MAAA,EAAQ,IAAA,CAAKA,MAfR;AAAA,yBAgBLlD,EAAA,EAAI,IAAA,CAAKA,EAhBJ;yBAiBLuD,cAAA,EAAgB,IAAKA,CAAAA,cAAL,CAAoB/lC,KAApB,CAA0B,CAA1B,CAjBX;AAAA,yBAkBL6lC,IAAA,EAAM,IAAA,CAAKA,IAlBN;AAAA,sBAAT,CAF8B;AAAA,qBAsB9B,IAAI,IAAA,CAAKjmC,OAAL,CAAa8kC,MAAjB,EAAyB;AAAA,yBACrBsC,MAAA,CAAOxC,MAAP,CAAciB,KAAd,GAAsB,IAAA,CAAKjB,MAAL,CAAYiB,KAAZ,CAAkBzlC,KAAlB,CAAwB,CAAxB,CAAtB,CADqB;sBAtBK;kBALA;iBAgClCkmC,KAAA,GAAQrlC,KAAA,CAAM,CAAN,EAASA,KAAT,CAAe,iBAAf,CAAR,CAhCkC;iBAiClC,IAAIqlC,KAAJ,EAAW;AAAA,qBACP,KAAKlD,QAAL,IAAiBkD,KAAA,CAAMxlC,MAAvB,CADO;kBAjCuB;iBAoClC,IAAA,CAAK8jC,MAAL,GAAc;AAAA,qBACVlB,UAAA,EAAY,IAAKkB,CAAAA,MAAL,CAAYc,SADd;AAAA,qBAEVA,SAAA,EAAW,IAAKtC,CAAAA,QAAL,GAAgB,CAFjB;AAAA,qBAGVuC,YAAA,EAAc,IAAKf,CAAAA,MAAL,CAAYgB,WAHhB;qBAIVA,WAAA,EAAaU,KAAA,GACAA,KAAA,CAAMA,KAAA,CAAMxlC,MAAN,GAAe,CAArB,CAAwBA,CAAAA,MAAxB,GAAiCwlC,KAAA,CAAMA,KAAA,CAAMxlC,MAAN,GAAe,CAArB,EAAwBG,KAAxB,CAA8B,QAA9B,CAAwC,CAAA,CAAxC,EAA2CH,MAD5E,GAEA,IAAK8jC,CAAAA,MAAL,CAAYgB,WAAZ,GAA0B3kC,KAAA,CAAM,CAAN,EAASH,MANtC;AAAA,kBAAd,CApCkC;iBA4ClC,KAAKoiC,MAAL,IAAejiC,KAAA,CAAM,CAAN,CAAf,CA5CkC;iBA6ClC,KAAKA,KAAL,IAAcA,KAAA,CAAM,CAAN,CAAd,CA7CkC;AAAA,iBA8ClC,IAAKomC,CAAAA,OAAL,GAAepmC,KAAf,CA9CkC;iBA+ClC,KAAKkiC,MAAL,GAAc,KAAKD,MAAL,CAAYpiC,MAA1B,CA/CkC;AAAA,iBAgDlC,IAAI,IAAA,CAAKd,OAAL,CAAa8kC,MAAjB,EAAyB;AAAA,qBACrB,IAAKF,CAAAA,MAAL,CAAYiB,KAAZ,GAAoB;yBAAC,KAAKO,MAAN;AAAA,yBAAc,IAAKA,CAAAA,MAAL,IAAe,IAAA,CAAKjD,MAAlC;AAAA,sBAApB,CADqB;kBAhDS;AAAA,iBAmDlC,IAAK4C,CAAAA,KAAL,GAAa,KAAb,CAnDkC;AAAA,iBAoDlC,IAAKC,CAAAA,UAAL,GAAkB,KAAlB,CApDkC;AAAA,iBAqDlC,IAAKF,CAAAA,MAAL,GAAc,IAAA,CAAKA,MAAL,CAAY1lC,KAAZ,CAAkBa,KAAA,CAAM,CAAN,CAASH,CAAAA,MAA3B,CAAd,CArDkC;iBAsDlC,KAAKolC,OAAL,IAAgBjlC,KAAA,CAAM,CAAN,CAAhB,CAtDkC;AAAA,iBAuDlCgkC,KAAA,GAAQ,IAAA,CAAKjC,aAAL,CAAmBv6B,IAAnB,CAAwB,IAAxB,EAA8B,IAAKm6B,CAAAA,EAAnC,EAAuC,IAAvC,EAA6CuE,YAA7C,EAA2D,IAAA,CAAKhB,cAAL,CAAoB,IAAKA,CAAAA,cAAL,CAAoBrlC,MAApB,GAA6B,CAAjD,CAA3D,CAAR,CAvDkC;iBAwDlC,IAAI,IAAKmlC,CAAAA,IAAL,IAAa,IAAA,CAAKH,MAAtB,EAA8B;AAAA,qBAC1B,IAAKG,CAAAA,IAAL,GAAY,KAAZ,CAD0B;kBAxDI;iBA2DlC,IAAIhB,KAAJ,EAAW;qBACP,OAAOA,KAAP,CADO;AAAA,kBAAX,MAEO,IAAI,IAAKe,CAAAA,UAAT,EAAqB;AAAA;AAExB,qBAAS5/B,KAAAA,IAAAA,CAAT,IAAcghC,MAAd,EAAsB;yBAClB,KAAKhhC,CAAL,CAAA,GAAUghC,MAAA,CAAOhhC,CAAP,CAAV,CADkB;sBAFE;qBAKxB,OAAO,KAAP,CAAA;kBAlE8B;iBAoElC,OAAO,KAAP,CApEkC;cA5I7B;AAAA;aAoNb4gC,IAAA,EAAK,YAAY;AAAA,iBACT,IAAI,IAAKf,CAAAA,IAAT,EAAe;AAAA,qBACX,OAAO,IAAK1B,CAAAA,GAAZ,CADW;kBADN;AAAA,iBAIT,IAAI,CAAC,IAAKuB,CAAAA,MAAV,EAAkB;AAAA,qBACd,IAAKG,CAAAA,IAAL,GAAY,IAAZ,CADc;kBAJT;iBAQT,IAAIhB,KAAJ,EACIhkC,KADJ,EAEIqmC,SAFJ,EAGIhmC,KAHJ,CARS;AAAA,iBAYT,IAAI,CAAC,IAAKykC,CAAAA,KAAV,EAAiB;AAAA,qBACb,IAAK7C,CAAAA,MAAL,GAAc,EAAd,CADa;AAAA,qBAEb,IAAKjiC,CAAAA,KAAL,GAAa,EAAb,CAFa;kBAZR;AAAA,iBAgBT,IAAIsmC,KAAA,GAAQ,IAAKC,CAAAA,aAAL,EAAZ,CAhBS;AAAA,iBAiBT,KAAK,IAAI/gC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI8gC,KAAA,CAAMzmC,MAA1B,EAAkC2F,CAAA,EAAlC,EAAuC;AAAA,qBACnC6gC,SAAA,GAAY,IAAA,CAAKxB,MAAL,CAAY7kC,KAAZ,CAAkB,IAAA,CAAKsmC,KAAL,CAAWA,KAAA,CAAM9gC,CAAN,CAAX,CAAlB,CAAZ,CADmC;qBAEnC,IAAI6gC,SAAA,MAAermC,KAAD,IAAUqmC,SAAA,CAAU,CAAV,CAAaxmC,CAAAA,MAAb,GAAsBG,KAAA,CAAM,CAAN,CAASH,CAAAA,MAAzC,CAAlB,EAAoE;yBAChEG,KAAA,GAAQqmC,SAAR,CADgE;yBAEhEhmC,KAAA,GAAQmF,CAAR,CAFgE;AAAA,yBAGhE,IAAI,IAAA,CAAKzG,OAAL,CAAa2mC,eAAjB,EAAkC;AAAA,6BAC9B1B,KAAA,GAAQ,IAAKiC,CAAAA,UAAL,CAAgBI,SAAhB,EAA2BC,KAAA,CAAM9gC,CAAN,CAA3B,CAAR,CAD8B;AAAA,6BAE9B,IAAIw+B,KAAA,KAAU,KAAd,EAAqB;iCACjB,OAAOA,KAAP,CADiB;AAAA,8BAArB,MAEO,IAAI,IAAKe,CAAAA,UAAT,EAAqB;iCACxB/kC,KAAA,GAAQ,KAAR,CADwB;AAAA,iCAExB,SAAA;AAFwB,8BAArB,MAGA;AAAA;iCAEH,OAAO,KAAP,CAFG;8BAPuB;0BAAlC,MAWO,IAAI,CAAC,KAAKjB,OAAL,CAAaynC,IAAlB,EAAwB;AAAA,6BAC3B,MAD2B;0BAdiC;sBAFjC;kBAjB9B;iBAsCT,IAAIxmC,KAAJ,EAAW;AAAA,qBACPgkC,KAAA,GAAQ,IAAKiC,CAAAA,UAAL,CAAgBjmC,KAAhB,EAAuBsmC,KAAA,CAAMjmC,KAAN,CAAvB,CAAR,CADO;AAAA,qBAEP,IAAI2jC,KAAA,KAAU,KAAd,EAAqB;yBACjB,OAAOA,KAAP,CADiB;sBAFd;AAAA;qBAMP,OAAO,KAAP,CANO;kBAtCF;AAAA,iBA8CT,IAAI,IAAA,CAAKa,MAAL,KAAgB,EAApB,EAAwB;AAAA,qBACpB,OAAO,IAAKvB,CAAAA,GAAZ,CADoB;AAAA,kBAAxB,MAEO;qBACH,OAAO,IAAKR,CAAAA,UAAL,CAAgB,wBAAA,SAAiCX,QAAL,GAAgB,CAAhB,CAA5B,GAAiD,wBAAjD,GAA4E,IAAKoC,CAAAA,YAAL,EAA5F,EAAiH;yBACpH1tB,IAAA,EAAM,EAD8G;yBAEpHmtB,KAAA,EAAO,IAF6G;AAAA,yBAGpH5jB,IAAA,EAAM,IAAA,CAAK+hB,QAHyG;AAAA,sBAAjH,CAAP,CADG;kBAhDE;cApNJ;AAAA;AA8Qb,aAAA4B,GAAA,EAAI,SAASA,GAAT,GAAe;AAAA,iBACX,IAAI7uB,CAAA,GAAI,IAAK6wB,CAAAA,IAAL,EAAR,CADW;iBAEX,IAAI7wB,CAAJ,EAAO;qBACH,OAAOA,CAAP,CADG;AAAA,kBAAP,MAEO;AAAA,qBACH,OAAO,IAAA,CAAK6uB,GAAL,EAAP,CADG;kBAJI;cA9QN;AAAA;AAwRb,aAAA0C,KAAA,EAAM,SAASA,KAAT,CAAeC,SAAf,EAA0B;iBACxB,KAAKxB,cAAL,CAAoBxkC,IAApB,CAAyBgmC,SAAzB,CADwB,CAAA;cAxRnB;AAAA;AA6Rb,aAAAC,QAAA,EAAS,SAASA,QAAT,GAAoB;iBACrB,IAAIlhC,CAAA,GAAI,IAAA,CAAKy/B,cAAL,CAAoBrlC,MAApB,GAA6B,CAArC,CADqB;AAAA,iBAErB,IAAI4F,CAAA,GAAI,CAAR,EAAW;AAAA,qBACP,OAAO,IAAKy/B,CAAAA,cAAL,CAAoB52B,GAApB,EAAP,CADO;AAAA,kBAAX,MAEO;AAAA,qBACH,OAAO,IAAK42B,CAAAA,cAAL,CAAoB,CAApB,CAAP,CADG;kBAJc;cA7RhB;AAAA;AAuSb,aAAAqB,aAAA,EAAc,SAASA,aAAT,GAAyB;AAAA,iBAC/B,IAAI,IAAKrB,CAAAA,cAAL,CAAoBrlC,MAApB,IAA8B,IAAKqlC,CAAAA,cAAL,CAAoB,IAAA,CAAKA,cAAL,CAAoBrlC,MAApB,GAA6B,CAAjD,CAAlC,EAAuF;qBACnF,OAAO,IAAKg2B,CAAAA,UAAL,CAAgB,IAAA,CAAKqP,cAAL,CAAoB,IAAA,CAAKA,cAAL,CAAoBrlC,MAApB,GAA6B,CAAjD,CAAhB,CAAA,CAAqEymC,KAA5E,CADmF;AAAA,kBAAvF,MAEO;qBACH,OAAO,IAAKzQ,CAAAA,UAAL,CAAgB,SAAhB,CAAA,CAA2ByQ,KAAlC,CADG;kBAHwB;cAvS1B;AAAA;AAgTb,aAAAM,QAAA,EAAS,SAASA,QAAT,CAAkBnhC,CAAlB,EAAqB;AAAA,iBACtBA,CAAA,GAAI,IAAA,CAAKy/B,cAAL,CAAoBrlC,MAApB,GAA6B,CAA7B,GAAiCyD,IAAA,CAAKqhB,GAAL,CAASlf,CAAA,IAAK,CAAd,CAArC,CADsB;AAAA,iBAEtB,IAAIA,CAAA,IAAK,CAAT,EAAY;AAAA,qBACR,OAAO,IAAKy/B,CAAAA,cAAL,CAAoBz/B,CAApB,CAAP,CADQ;AAAA,kBAAZ,MAEO;qBACH,OAAO,SAAP,CADG;kBAJe;cAhTjB;AAAA;AA0Tb,aAAAohC,SAAA,EAAU,SAASA,SAAT,CAAmBH,SAAnB,EAA8B;AAAA,iBAChC,IAAKD,CAAAA,KAAL,CAAWC,SAAX,CADgC,CAAA;cA1T3B;AAAA;AA+Tb,aAAAI,cAAA,EAAe,SAASA,cAAT,GAA0B;AAAA,iBACjC,OAAO,IAAA,CAAK5B,cAAL,CAAoBrlC,MAA3B,CADiC;cA/T5B;aAkUbd,OAAA,EAAS,EAlUI;AAAA,aAmUbgjC,aAAA,EAAe,SAASC,SAAT,CAAmBL,EAAnB,EAAsBoF,GAAtB,EAA0BC,yBAA1B,EAAoDC,QAApD,EAA8D;AAAA,iBAE7E,QAAOD,yBAAP;AAAA,iBACA,KAAK,CAAL;AAAA;AACA,qBAFA,MAAA;AAAA,iBAGA,KAAK,CAAL;qBAAO,OAAO,CAAP,CAAP;AAHA,iBAKA,KAAK,CAAL;AAAA,qBAAOD,GAAA,CAAI9E,MAAJ,GAAa8E,GAAA,CAAI9E,MAAJ,CAAW55B,MAAX,CAAkB,CAAlB,EAAoB0+B,GAAA,CAAI7E,MAAJ,GAAW,CAA/B,CAAb,CAAP;qBAAuD,OAAO,CAAP,CAAvD;AALA,iBAOA,KAAK,CAAL;qBAAO,OAAO,EAAP,CAAP;AAPA,iBASA,KAAK,CAAL;qBAAO,OAAO,EAAP,CAAP;AATA,iBAWA,KAAK,CAAL;qBAAO,OAAO,EAAP,CAAP;AAXA,iBAaA,KAAK,CAAL;qBAAO,OAAO,EAAP,CAAP;AAbA,iBAeA,KAAK,CAAL;qBAAO,OAAO,EAAP,CAAP;AAfA,iBAiBA,KAAK,CAAL;qBAAO,OAAO,EAAP,CAAP;AAjBA,iBAmBA,KAAK,CAAL;qBAAO,OAAO,EAAP,CAAP;AAnBA,iBAqBA,KAAK,EAAL;qBAAQ,OAAO,EAAP,CAAR;AArBA,iBAuBA,KAAK,EAAL;qBAAQ,OAAO,CAAP,CAAR;AAvBA,iBAyBA,KAAK,EAAL;qBAAQ,OAAO,EAAP,CAAR;AAzBA,iBA2BA,KAAK,EAAL;qBAAQ,OAAO,SAAP,CAAR;kBA7B6E;cAnUhE;AAAA,aAoWboE,KAAA,EAAO;AAAA,iBAAC,UAAD;AAAA,iBAAY,6DAAZ;AAAA,iBAA0E,oEAA1E;AAAA,iBAA+I,SAA/I;AAAA,iBAAyJ,SAAzJ;AAAA,iBAAmK,SAAnK;AAAA,iBAA6K,SAA7K;AAAA,iBAAuL,QAAvL;AAAA,iBAAgM,QAAhM;AAAA,iBAAyM,aAAzM;AAAA,iBAAuN,cAAvN;AAAA,iBAAsO,aAAtO;AAAA,iBAAoP,QAApP;AAAA,iBAA6P,QAA7P;cApWM;AAAA,aAqWbzQ,UAAA,EAAY;AAAA,iBAAC,SAAU,EAAA;AAAA,qBAAC,OAAQ,EAAA;AAAA,yBAAC,CAAD;AAAA,yBAAG,CAAH;AAAA,yBAAK,CAAL;AAAA,yBAAO,CAAP;AAAA,yBAAS,CAAT;AAAA,yBAAW,CAAX;AAAA,yBAAa,CAAb;AAAA,yBAAe,CAAf;AAAA,yBAAiB,CAAjB;AAAA,yBAAmB,CAAnB;AAAA,yBAAqB,EAArB;AAAA,yBAAwB,EAAxB;AAAA,yBAA2B,EAA3B;AAAA,yBAA8B,EAA9B;sBAAT;qBAA2C,aAAY,IAAvD;kBAAX;cArWC;AAAA,UAAb,CADuB;SAwWvB,OAAO2N,KAAP,CAxWuB;AAAA,MAAX,EAAZ,CAxOwB;AAAA,KAklBxBnT,MAAA,CAAOmT,KAAP,GAAeA,KAAf,CAllBwB;KAmlBxB,SAAS0D,MAAT,GAAmB;AAAA,SACjB,IAAKvF,CAAAA,EAAL,GAAU,EAAV,CADiB;MAnlBK;AAAA,KAslBxBuF,MAAA,CAAO3/B,SAAP,GAAmB8oB,MAAnB,CAtlBwB;AAAA,KAslBEA,MAAA,CAAO6W,MAAP,GAAgBA,MAAhB,CAtlBF;AAAA,KAulBxB,OAAO,IAAIA,MAAJ,EAAP,CAvlBwB;AAAA,EAAX,EAAb,CAzEA;CAoqBA,IAAI,OAAOt+B,eAAP,KAAmB,WAAnB,IAAkC,QAAA,KAAmB,WAAzD,EAAsE;KACtE9G,OAAAA,CAAAA,MAAAA,GAAiBuuB,MAAjB,CADsE;AAAA,KAEtEvuB,OAAiBuuB,CAAAA,MAAAA,GAAAA,MAAA,CAAO6W,MAAxB,CAFsE;AAAA,KAGtEplC,gBAAgB,YAAY;SAAE,OAAOuuB,MAAA,CAAOnwB,KAAP,CAAaqvB,KAAb,CAAmBc,MAAnB,EAA2BkT,SAA3B,CAAP,CAAF;AAAA,MAA5B,CAHsE;AAAA,EAAA;;;;;ACjqBvD,SAAS4D,SAAT,CAAmB9lC,KAAnB,EAA0B;AAAA,IACrC,IAAIA,KAAA,YAAiBmC,MAAjB,IAA2B,OAAOnC,KAAP,KAAiB,QAA5C,IAAwDA,KAAA,YAAiB+lC,MAA7E,EAAqF;AAAA,QACjF,IAAI;AAAA,YACA,OAAOC,QAAA,CAASnnC,KAAT,CAAemB,KAAA,CAAM4R,QAAN,EAAf,CAAP,CADA;AAAA,SAAJ,CAEE,OAAO+B,CAAP,EAAU;AAAA,YACR,MAAM,IAAItD,YAAJ,CAAiBsD,CAAjB,CAAN,CADQ;AAAA,SAHqE;AAAA,KADhD;AAAA,IASrC,OAAO3T,KAAP,CATqC;AAAA;;ACFzC;AAuBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAe,SAASs/B,aAAT,CAAuBt/B,KAAvB,EAAoE+5B,SAAA,GAAoBkM,EAAxF,EAA8G;AAAA,IACzH,IAAIr6B,CAAA,GAAI5L,KAAR,CADyH;AAAA,IAGzH,IAAI;AAAA,QACA4L,CAAA,GAAIk6B,SAAA,CAAUl6B,CAAV,CAAJ,CADA;AAAA,KAAJ,CAEE,OAAO+H,CAAP,EAAU;AAAA,QACR,OAAO,CAACA,CAAD,CAAP,CADQ;AAAA,KAL6G;AAAA,IASzH,OAAOuyB,eAAA,CAAiBt6B,CAAjB,EAAoBmuB,SAApB,CAAP,CATyH;AAAA;;ACtB7H;AAQA,MAAMoM,sBAAA,GAAyB,CAA/B,CAVA;AAWA,MAAMC,oBAAA,GAAuB,EAA7B,CAXA;AAaA,SAASC,OAAT,CAAiB3mC,KAAjB,EAAiC4mC,KAAjC,EAAyD;AAAA,IACrD,IAAI,CAAC5mC,KAAD,IAAUwsB,OAAA,CAAQxsB,KAAR,MAAmB,QAAjC;AAAA,QAA2C,OAAO,IAAP,CADU;AAAA,IAErD,OAAO,CAAC,CAACA,KAAA,CAAMf,KAAN,CAAY2nC,KAAZ,CAAT,CAFqD;AAAA,CAbzD;AAkBA,SAASC,cAAT,CAAwBz6B,MAAxB,EAAgD;AAAA,IAC5C,IAAIA,MAAA,CAAOpC,GAAX,EAAgB;AAAA,QACZ,OAAOoC,MAAA,CAAOpC,GAAP,CAAW9G,KAAX,CAAiB,GAAjB,CAAsBpE,CAAAA,MAA7B,CADY;AAAA,KAAhB,MAEO;AAAA,QACH,OAAO,CAAP,CADG;AAAA,KAHqC;AAAA,CAlBhD;AA0BA,SAASgoC,mBAAT,CAA6BroC,GAA7B,EAA0CmB,IAA1C,EAA0DmJ,IAA1D,EAAiG;AAAA,IAC7F,MAAMg+B,OAAA,GAAU,IAAI/S,GAAJ,CAAQp0B,IAAR,CAAhB,CAD6F;AAAA,IAE7F,MAAMwC,MAAA,GAAS,EAAf,CAF6F;AAAA,IAG7FvC,MAAA,CAAOD,IAAP,CAAYnB,GAAZ,CAAiBiQ,CAAAA,OAAjB,CAAyBtK,CAAA,IAAK;AAAA,QAC1B,IAAI,CAAC2iC,OAAA,CAAQ51B,GAAR,CAAY/M,CAAZ,CAAL,EAAqB;AAAA,YACjB,MAAMmC,IAAA,GAAOwC,IAAA,GAAO,CAAGA,GAAAA,IAAH,EAAQ,CAAR,GAAW3E,CAAX,EAAP,CAAA,GAAwB,IAArC,CADiB;AAAA,YAEjBhC,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoBtzB,IAApB,EAA0B9H,GAAA,CAAI2F,CAAJ,CAA1B,EAAkC,CAAC,sBAAD,GAAyBA,CAAzB,EAA2B,CAA3B,CAAlC,CAAZ,CAFiB,CAAA;AAAA,SADK;AAAA,KAA9B,CAH6F,CAAA;AAAA,IAS7F,OAAOhC,MAAP,CAT6F;AAAA,CA1BjG;AAsCA,MAAM4kC,mBAAA,GAAsB,IAAIhT,GAAJ,CAAQ;AAAA,IAAC,QAAD;AAAA,IAAW,QAAX;AAAA,IAAqB,YAArB;AAAA,CAAR,CAA5B,CAtCA;AAuCA,SAASiT,eAAT,CAAyB76B,MAAzB,EAAyC3H,CAAzC,EAA4E;AAAA,IACxE,MAAMrC,MAAA,GAAS,EAAf,CADwE;AAAA;AAOxE;AAAA;AAAA;AAAA,IAAA,MAAM8kC,UAAA,GAAa;AAAA,QAAC,MAAD;AAAA,QAAS,KAAT;AAAA,QAAgB,UAAhB;AAAA,KAAnB,CAPwE;AAAA,IAQxE9kC,MAAA,CAAOzC,IAAP,CAAY,GAAGmnC,mBAAA,CAAoB16B,MAApB,EAA4B86B,UAA5B,EAAwC,QAAxC,CAAf,CARwE,CAAA;AAAA;AAaxE;AAAA;AAAA,IAAA,IAAI,CAACF,mBAAA,CAAoB71B,GAApB,CAAwB1O,MAAA,CAAO2J,MAAA,CAAOxJ,IAAd,CAAxB,CAAL,EAAmD;AAAA,QAC/CR,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB,CAAC,QAAD,GAAWp1B,CAAX,EAAa,MAAb,CAApB,EAA0C2H,MAAA,CAAOxJ,IAAjD,EAAuD,CAAC,iBAAD,GAAoBnD,KAAA,CAAM2P,IAAN,CAAW43B,mBAAX,CAAA,CAAgC/mC,IAAhC,CAAqC,IAArC,CAApB,EAA+D,CAA/D,CAAvD,CAAZ,CAD+C,CAAA;AAAA,KAbqB;AAAA;AAuBxE;AAAA;AAAA;AAAA;AAAA;AAAA,IAAMknC,MAAAA,gBAAA,GAAmB,sBAAzB,CAvBwE;AAAA,IAwBxE,IAAI,CAAC/6B,MAAA,CAAOpC,GAAR,IAAe,CAAC28B,OAAA,CAAQv6B,MAAA,CAAOpC,GAAf,EAAoBm9B,gBAApB,CAApB,EAA2D;AAAA,QACvD/kC,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB,CAAC,QAAD,GAAWp1B,CAAX,EAAa,KAAb,CAApB,EAAyC2H,MAAA,CAAOpC,GAAhD,EAAqD,qCAArD,CAAZ,CADuD,CAAA;AAAA,KAxBa;AAAA,IA4BxE,OAAO5H,MAAP,CA5BwE;AAAA,CAvC5E;AAsEA,SAASglC,gBAAT,CAA0Bh5B,OAA1B,EAAmE;AAAA,IAC/D,MAAMhM,MAAA,GAAS,EAAf,CAD+D;AAAA,IAE/D,IAAIilC,KAAA,GAAQ,CAAZ,CAF+D;AAAA,IAI/DxnC,MAAA,CAAOD,IAAP,CAAYwO,OAAZ,CAAA,CAAqBM,OAArB,CAA6B,CAACxC,CAAD,EAAYzH,CAAZ,KAA0B;AAAA,QACnD,MAAM6iC,YAAA,GAAeL,eAAA,CAAgB74B,OAAA,CAAQlC,CAAR,CAAhB,EAA4BzH,CAA5B,CAArB,CADmD;AAAA;AAInD,QAAA,IAAI,CAAC6iC,YAAA,CAAaxoC,MAAlB,EAA0B;AAAA,YACtBuoC,KAAA,GAAQA,KAAA,GAAQR,cAAA,CAAez4B,OAAA,CAAQlC,CAAR,CAAf,CAAhB,CADsB;AAAA,SAJyB;AAAA,QAQnD9J,MAAA,CAAOzC,IAAP,CAAY,GAAG2nC,YAAf,CARmD,CAAA;AAAA,KAAvD,CAJ+D,CAAA;AAAA,IAe/D,IAAID,KAAA,GAAQX,oBAAZ,EAAkC;AAAA,QAC9BtkC,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB,SAApB,EAA+B,IAA/B,EAAqC,CAAC,oBAAD,GAAuB6M,oBAAvB,EAA4C,iBAA5C,CAArC,CAAZ,CAD8B,CAAA;AAAA,KAf6B;AAAA,IAmB/D,OAAOtkC,MAAP,CAnB+D;AAAA,CAtEnE;AA4FA,SAASmlC,aAAT,CAAuBjnC,KAAvB,EAAsCknC,QAAtC,EAAoF;AAAA,IAChF,MAAMplC,MAAA,GAAS,EAAf,CADgF;AAAA;AAWhF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,MAAMqlC,sBAAA,GAAyB;AAAA,QAC3B,OAD2B;AAAA,QAE3B,IAF2B;AAAA,QAG3B,cAH2B;AAAA,QAI3B,OAJ2B;AAAA,QAK3B,SAL2B;AAAA,QAM3B,UAN2B;AAAA,QAO3B,YAP2B;AAAA,QAQ3B,WAR2B;AAAA,KAA/B,CAXgF;AAAA,IAsBhF,MAAMC,gBAAA,GAAmBZ,mBAAA,CAAoBxmC,KAApB,EAA2B;AAAA,QAAC,GAAGknC,QAAJ;AAAA,QAAc,GAAGC,sBAAjB;AAAA,KAA3B,CAAzB,CAtBgF;AAAA,IAuBhFrlC,MAAA,CAAOzC,IAAP,CAAY,GAAG+nC,gBAAf,CAvBgF,CAAA;AAAA,IAyBhF,IAAIpnC,KAAA,CAAMgP,OAAN,GAAgBm3B,sBAAhB,IAA0CnmC,KAAA,CAAMgP,OAAN,GAAgBm3B,sBAA9D,EAAsF;AAAA,QAClFrkC,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB,SAApB,EAA+Bv5B,KAAA,CAAMgP,OAArC,EAA8C,CAAC,sBAAD,GAAyBm3B,sBAAzB,EAAA,CAA9C,CAAZ,CADkF,CAAA;AAAA,KAzBN;AAAA;AAkChF;AAAA;AAAA;AAAA;AAAA,IAAMkB,MAAAA,eAAA,GAAkB,uDAAxB,CAlCgF;AAAA,IAmChF,IAAI,CAAChB,OAAA,CAAQrmC,KAAA,CAAM8P,MAAd,EAAsBu3B,eAAtB,CAAL,EAA6C;AAAA,QACzCvlC,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB,QAApB,EAA8Bv5B,KAAA,CAAM8P,MAApC,EAA4C,+CAA5C,CAAZ,CADyC,CAAA;AAAA,KAnCmC;AAAA;AA6ChF;AAAA;AAAA;AAAA;AAAA;AAAA,IAAMw3B,MAAAA,gBAAA,GAAmB,mDAAzB,CA7CgF;AAAA,IA8ChF,IAAI,CAACjB,OAAA,CAAQrmC,KAAA,CAAM84B,MAAd,EAAsBwO,gBAAtB,CAAL,EAA8C;AAAA,QAC1CxlC,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB,QAApB,EAA8Bv5B,KAAA,CAAM84B,MAApC,EAA4C,gDAA5C,CAAZ,CAD0C,CAAA;AAAA,KA9CkC;AAAA;AAuDhF;AAAA;AAAA;AAAA;AAAA,IAAMyO,MAAAA,iBAAA,GAAoB,oBAA1B,CAvDgF;AAAA,IAwDhF,IAAI,CAAClB,OAAA,CAAQrmC,KAAA,CAAMwnC,UAAd,EAA0BD,iBAA1B,CAAL,EAAmD;AAAA,QAC/CzlC,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB,YAApB,EAAkCv5B,KAAA,CAAMwnC,UAAxC,EAAoD,4CAApD,CAAZ,CAD+C,CAAA;AAAA,KAxD6B;AAAA,IA4DhF,IAAIxnC,KAAA,CAAMynC,SAAN,KAAoB5pC,SAApB,IAAiCquB,OAAA,CAAQlsB,KAAA,CAAMynC,SAAd,CAAA,KAA6B,SAAlE,EAA6E;AAAA,QACzE3lC,MAAA,CAAOzC,IAAP,CAAY,IAAIk6B,eAAJ,CAAoB,WAApB,EAAiCv5B,KAAA,CAAMynC,SAAvC,EAAkD,wCAAlD,CAAZ,CADyE,CAAA;AAAA,KA5DG;AAAA,IAgEhF,OAAO3lC,MAAP,CAhEgF;AAAA,CA5FpF;AAyKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAe,SAAS4lC,0BAAT,CAAoC1nC,KAApC,EAAmD+5B,SAAA,GAAoBkM,EAAvE,EAA6F;AAAA,IACxG,IAAIr6B,CAAA,GAAI5L,KAAR,CADwG;AAAA,IAExG,IAAI;AAAA,QACA4L,CAAA,GAAIk6B,SAAA,CAAUl6B,CAAV,CAAJ,CADA;AAAA,KAAJ,CAEE,OAAO+H,CAAP,EAAU;AAAA,QACR,OAAO,CAACA,CAAD,CAAP,CADQ;AAAA,KAJ4F;AAAA,IAQxG,IAAI7R,MAAA,GAASw9B,eAAA,CAAc1zB,CAAd,EAAiBmuB,SAAjB,CACR/wB,CAAAA,MADQ,CACDi+B,aAAA,CAAcr7B,CAAd,EAAiBrM,MAAA,CAAOD,IAAP,CAAY2mC,EAAA,CAAG/lC,KAAf,CAAjB,CADC,CAAb,CARwG;AAAA,IAWxG,IAAI0L,CAAA,CAAEkC,OAAN,EAAe;AAAA,QACXhM,MAAA,GAASA,MAAA,CAAOkH,MAAP,CAAc89B,gBAAA,CAAiBl7B,CAAA,CAAEkC,OAAnB,CAAd,CAAT,CADW;AAAA,KAXyF;AAAA,IAexG,OAAOhM,MAAP,CAfwG;AAAA;;ACtG5G;AAqBA,MAAM6O,UAAA,GAAa;AAAA,IACf0d,eADe;AAAA,IAEfS,YAFe;AAAA,IAGfiD,kBAHe;AAAA,IAIfhD,gBAJe;AAAA,IAKfO,wBALe;AAAA,IAMfS,2BANe;AAAA,IAOfb,sBAPe;AAAA,IAQfG,uBARe;AAAA,IASfK,qBATe;AAAA,EAxFnB;AAoGA,MAAMiY,aAAA,GAAgB;AAAA,IAClBpX,eADkB;AAAA,IAElBlE,cAFkB;AAAA,IAGlB1d,UAHkB;AAAA,EApGtB;AA0GA,MAAMi5B,KAAA,GAAQ;AAAA,IAACh6B,UAAD;AAAA,IAAaG,SAAb;AAAA,IAAwBC,YAAxB;AAAA;;;;"}