work.suroh.tk/node_modules/liquidjs/dist/liquid.common.js.map

1 line
157 KiB
Plaintext

{"version":3,"file":"liquid.common.js","sources":["../node_modules/regenerator-runtime/runtime.js","../src/util/underscore.js","../src/lexical.js","../src/util/error.js","../src/util/assert.js","../src/scope.js","../src/util/promise.js","../src/template.js","../src/whitespace-ctrl.js","../src/tokenizer.js","../src/operators.js","../src/syntax.js","../src/render.js","../src/tag.js","../src/filter.js","../src/parser.js","../src/tags/for.js","../src/tags/assign.js","../src/tags/capture.js","../src/tags/case.js","../src/tags/comment.js","../src/tags/include.js","../src/tags/decrement.js","../src/tags/cycle.js","../src/tags/if.js","../src/tags/increment.js","../src/tags/layout.js","../src/tags/raw.js","../src/tags/tablerow.js","../src/tags/unless.js","../src/tags/index.js","../src/util/strftime.js","../src/filters.js","../src/index.js"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n","const toStr = Object.prototype.toString\nconst arrToStr = Array.prototype.toString\n\n/*\n * Checks if value is classified as a String primitive or object.\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is a string, else false.\n */\nexport function isString (value) {\n return toStr.call(value) === '[object String]'\n}\n\nexport function isFunction (value) {\n return typeof value === 'function'\n}\n\nexport function promisify (fn) {\n return function () {\n return new Promise((resolve, reject) => {\n fn(...arguments, (err, result) => {\n err ? reject(err) : resolve(result)\n })\n })\n }\n}\n\nexport function stringify (value) {\n if (isNil(value)) return String(value)\n if (isFunction(value.to_liquid)) return stringify(value.to_liquid())\n if (isFunction(value.toLiquid)) return stringify(value.toLiquid())\n if (isFunction(value.to_s)) return value.to_s()\n if ([toStr, arrToStr].indexOf(value.toString) > -1) return defaultToString(value)\n if (isFunction(value.toString)) return value.toString()\n return toStr.call(value)\n}\n\nfunction defaultToString (value) {\n const cache = []\n return JSON.stringify(value, (key, value) => {\n if (isObject(value)) {\n if (cache.indexOf(value) !== -1) {\n return\n }\n cache.push(value)\n }\n return value\n })\n}\n\nexport function create (proto) {\n return Object.create(proto)\n}\n\nexport function isNil (value) {\n return value === null || value === undefined\n}\n\nexport function isArray (value) {\n // be compatible with IE 8\n return toStr.call(value) === '[object Array]'\n}\n\nexport function isError (value) {\n const signature = toStr.call(value)\n // [object XXXError]\n return signature.substr(-6, 5) === 'Error' ||\n (typeof value.message === 'string' && typeof value.name === 'string')\n}\n\n/*\n * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property.\n * The iteratee is invoked with three arguments: (value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning false.\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @return {Object} Returns object.\n */\nexport function forOwn (object, iteratee) {\n object = object || {}\n for (const k in object) {\n if (object.hasOwnProperty(k)) {\n if (iteratee(object[k], k, object) === false) break\n }\n }\n return object\n}\n\n/*\n * Assigns own enumerable string keyed properties of source objects to the destination object.\n * Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * Note: This method mutates object and is loosely based on Object.assign.\n *\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @return {Object} Returns object.\n */\nexport function assign (object) {\n object = isObject(object) ? object : {}\n const srcs = Array.prototype.slice.call(arguments, 1)\n srcs.forEach((src) => Object.assign(object, src))\n return object\n}\n\nexport function last (arr) {\n return arr[arr.length - 1]\n}\n\nexport function uniq (arr) {\n const u = {}\n const a = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (u.hasOwnProperty(arr[i])) {\n continue\n }\n a.push(arr[i])\n u[arr[i]] = 1\n }\n return a\n}\n\n/*\n * Checks if value is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, new Number(0), and new String(''))\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is an object, else false.\n */\nexport function isObject (value) {\n const type = typeof value\n return value !== null && (type === 'object' || type === 'function')\n}\n\n/*\n * A function to create flexibly-numbered lists of integers,\n * handy for each and map loops. start, if omitted, defaults to 0; step defaults to 1.\n * Returns a list of integers from start (inclusive) to stop (exclusive),\n * incremented (or decremented) by step, exclusive.\n * Note that ranges that stop before they start are considered to be zero-length instead of\n * negative — if you'd like a negative range, use a negative step.\n */\nexport function range (start, stop, step) {\n if (arguments.length === 1) {\n stop = start\n start = 0\n }\n step = step || 1\n\n const arr = []\n for (let i = start; i < stop; i += step) {\n arr.push(i)\n }\n return arr\n}\n","// quote related\nconst singleQuoted = /'[^']*'/\nconst doubleQuoted = /\"[^\"]*\"/\nexport const quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`)\nexport const quoteBalanced = new RegExp(`(?:${quoted.source}|[^'\"])*`)\n\n// basic types\nexport const integer = /-?\\d+/\nexport const number = /-?\\d+\\.?\\d*|\\.?\\d+/\nexport const bool = /true|false/\n\n// property access\nexport const identifier = /[\\w-]+[?]?/\nexport const subscript = new RegExp(`\\\\[(?:${quoted.source}|[\\\\w-\\\\.]+)\\\\]`)\nexport const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)\nexport const variable = new RegExp(`${identifier.source}(?:\\\\.${identifier.source}|${subscript.source})*`)\n\n// range related\nexport const rangeLimit = new RegExp(`(?:${variable.source}|${number.source})`)\nexport const range = new RegExp(`\\\\(${rangeLimit.source}\\\\.\\\\.${rangeLimit.source}\\\\)`)\nexport const rangeCapture = new RegExp(`\\\\((${rangeLimit.source})\\\\.\\\\.(${rangeLimit.source})\\\\)`)\n\nexport const value = new RegExp(`(?:${variable.source}|${literal.source}|${range.source})`)\n\n// hash related\nexport const hash = new RegExp(`(?:${identifier.source})\\\\s*:\\\\s*(?:${value.source})`)\nexport const hashCapture = new RegExp(`(${identifier.source})\\\\s*:\\\\s*(${value.source})`, 'g')\n\n// full match\nexport const tagLine = new RegExp(`^\\\\s*(${identifier.source})\\\\s*([\\\\s\\\\S]*)\\\\s*$`)\nexport const literalLine = new RegExp(`^${literal.source}$`, 'i')\nexport const variableLine = new RegExp(`^${variable.source}$`)\nexport const numberLine = new RegExp(`^${number.source}$`)\nexport const boolLine = new RegExp(`^${bool.source}$`, 'i')\nexport const quotedLine = new RegExp(`^${quoted.source}$`)\nexport const rangeLine = new RegExp(`^${rangeCapture.source}$`)\nexport const integerLine = new RegExp(`^${integer.source}$`)\n\n// filter related\nexport const valueDeclaration = new RegExp(`(?:${identifier.source}\\\\s*:\\\\s*)?${value.source}`)\nexport const valueList = new RegExp(`${valueDeclaration.source}(\\\\s*,\\\\s*${valueDeclaration.source})*`)\nexport const filter = new RegExp(`${identifier.source}(?:\\\\s*:\\\\s*${valueList.source})?`, 'g')\nexport const filterCapture = new RegExp(`(${identifier.source})(?:\\\\s*:\\\\s*(${valueList.source}))?`)\nexport const filterLine = new RegExp(`^${filterCapture.source}$`)\n\nexport const operators = [\n /\\s+or\\s+/,\n /\\s+and\\s+/,\n /==|!=|<=|>=|<|>|\\s+contains\\s+/\n]\n\nexport function isInteger (str) {\n return integerLine.test(str)\n}\n\nexport function isLiteral (str) {\n return literalLine.test(str)\n}\n\nexport function isRange (str) {\n return rangeLine.test(str)\n}\n\nexport function isVariable (str) {\n return variableLine.test(str)\n}\n\nexport function matchValue (str) {\n return value.exec(str)\n}\n\nexport function parseLiteral (str) {\n let res = str.match(numberLine)\n if (res) {\n return Number(str)\n }\n res = str.match(boolLine)\n if (res) {\n return str.toLowerCase() === 'true'\n }\n res = str.match(quotedLine)\n if (res) {\n return str.slice(1, -1)\n }\n throw new TypeError(`cannot parse '${str}' as literal`)\n}\n","import * as _ from './underscore.js'\n\nfunction initError () {\n this.name = this.constructor.name\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\nfunction initLiquidError (err, token) {\n initError.call(this)\n\n this.input = token.input\n this.line = token.line\n this.file = token.file\n\n const context = mkContext(token.input, token.line)\n this.message = mkMessage(err.message, token)\n this.stack = context +\n '\\n' + (this.stack || this.message) +\n (err.stack ? '\\nFrom ' + err.stack : '')\n}\n\nexport function TokenizationError (message, token) {\n initLiquidError.call(this, { message: message }, token)\n}\nTokenizationError.prototype = _.create(Error.prototype)\nTokenizationError.prototype.constructor = TokenizationError\n\nexport function ParseError (e, token) {\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, token)\n}\nParseError.prototype = _.create(Error.prototype)\nParseError.prototype.constructor = ParseError\n\nexport function RenderError (e, tpl) {\n // return the original render error\n if (e instanceof RenderError) {\n return e\n }\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, tpl.token)\n}\nRenderError.prototype = _.create(Error.prototype)\nRenderError.prototype.constructor = RenderError\n\nexport function RenderBreakError (message) {\n initError.call(this)\n this.message = message + ''\n}\nRenderBreakError.prototype = _.create(Error.prototype)\nRenderBreakError.prototype.constructor = RenderBreakError\n\nexport function AssertionError (message) {\n initError.call(this)\n this.message = message + ''\n}\nAssertionError.prototype = _.create(Error.prototype)\nAssertionError.prototype.constructor = AssertionError\n\nfunction mkContext (input, line) {\n const lines = input.split('\\n')\n const begin = Math.max(line - 2, 1)\n const end = Math.min(line + 3, lines.length)\n\n const context = _\n .range(begin, end + 1)\n .map(l => [\n (l === line) ? '>> ' : ' ',\n align(l, end),\n '| ',\n lines[l - 1]\n ].join(''))\n .join('\\n')\n\n return context\n}\n\nfunction align (n, max) {\n const length = (max + '').length\n const str = n + ''\n const blank = Array(length - str.length).join(' ')\n return blank + str\n}\n\nfunction mkMessage (msg, token) {\n msg = msg || ''\n if (token.file) {\n msg += ', file:' + token.file\n }\n if (token.line) {\n msg += ', line:' + token.line\n }\n return msg\n}\n","import { AssertionError } from './error.js'\n\nexport default function (predicate, message) {\n if (!predicate) {\n message = message || `expect ${predicate} to be true`\n throw new AssertionError(message)\n }\n}\n","import * as _ from './util/underscore.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst Scope = {\n getAll: function () {\n return this.contexts.reduce((ctx, val) => _.assign(ctx, val), _.create(null))\n },\n get: function (path) {\n const paths = this.propertyAccessSeq(path)\n const scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n return paths.reduce((value, key) => this.readProperty(value, key), scope)\n },\n set: function (path, v) {\n const paths = this.propertyAccessSeq(path)\n let scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n paths.some((key, i) => {\n if (!_.isObject(scope)) {\n return true\n }\n if (i === paths.length - 1) {\n scope[key] = v\n return true\n }\n if (undefined === scope[key]) {\n scope[key] = {}\n }\n scope = scope[key]\n })\n },\n unshift: function (ctx) {\n return this.contexts.unshift(ctx)\n },\n push: function (ctx) {\n return this.contexts.push(ctx)\n },\n pop: function (ctx) {\n if (!arguments.length) {\n return this.contexts.pop()\n }\n const i = this.contexts.findIndex(scope => scope === ctx)\n if (i === -1) {\n throw new TypeError('scope not found, cannot pop')\n }\n return this.contexts.splice(i, 1)[0]\n },\n findContextFor: function (key, filter) {\n filter = filter || (() => true)\n for (let i = this.contexts.length - 1; i >= 0; i--) {\n const candidate = this.contexts[i]\n if (!filter(candidate)) continue\n if (key in candidate) {\n return candidate\n }\n }\n return null\n },\n readProperty: function (obj, key) {\n let val\n if (_.isNil(obj)) {\n val = undefined\n } else {\n obj = toLiquid(obj)\n val = key === 'size' ? readSize(obj) : obj[key]\n if (_.isFunction(obj.liquid_method_missing)) {\n val = obj.liquid_method_missing(key)\n }\n }\n if (_.isNil(val) && this.opts.strict_variables) {\n throw new TypeError(`undefined variable: ${key}`)\n }\n return val\n },\n\n /*\n * Parse property access sequence from access string\n * @example\n * accessSeq(\"foo.bar\") // ['foo', 'bar']\n * accessSeq(\"foo['bar']\") // ['foo', 'bar']\n * accessSeq(\"foo['b]r']\") // ['foo', 'b]r']\n * accessSeq(\"foo[bar.coo]\") // ['foo', 'bar'], for bar.coo == 'bar'\n */\n propertyAccessSeq: function (str) {\n str = String(str)\n const seq = []\n let name = ''\n let j\n let i = 0\n while (i < str.length) {\n switch (str[i]) {\n case '[':\n push()\n\n const delemiter = str[i + 1]\n if (/['\"]/.test(delemiter)) { // foo[\"bar\"]\n j = str.indexOf(delemiter, i + 2)\n assert(j !== -1, `unbalanced ${delemiter}: ${str}`)\n name = str.slice(i + 2, j)\n push()\n i = j + 2\n } else { // foo[bar.coo]\n j = matchRightBracket(str, i + 1)\n assert(j !== -1, `unbalanced []: ${str}`)\n name = str.slice(i + 1, j)\n if (!lexical.isInteger(name)) { // foo[bar] vs. foo[1]\n name = String(this.get(name))\n }\n push()\n i = j + 1\n }\n break\n case '.':// foo.bar, foo[0].bar\n push()\n i++\n break\n default:// foo.bar\n name += str[i]\n i++\n }\n }\n push()\n\n if (!seq.length) {\n throw new TypeError(`invalid path:\"${str}\"`)\n }\n return seq\n\n function push () {\n if (name.length) seq.push(name)\n name = ''\n }\n }\n}\n\nfunction toLiquid (obj) {\n if (_.isFunction(obj.to_liquid)) {\n return obj.to_liquid()\n }\n if (_.isFunction(obj.toLiquid)) {\n return obj.toLiquid()\n }\n return obj\n}\n\nfunction readSize (obj) {\n if (!_.isNil(obj.size)) return obj.size\n if (_.isArray(obj) || _.isString(obj)) return obj.length\n return obj.size\n}\n\nfunction matchRightBracket (str, begin) {\n let stack = 1 // count of '[' - count of ']'\n for (let i = begin; i < str.length; i++) {\n if (str[i] === '[') {\n stack++\n }\n if (str[i] === ']') {\n stack--\n if (stack === 0) {\n return i\n }\n }\n }\n return -1\n}\n\nexport function factory (ctx, opts) {\n const defaultOptions = {\n dynamicPartials: true,\n strict_variables: false,\n strict_filters: false,\n blocks: {},\n root: []\n }\n const scope = _.create(Scope)\n scope.opts = _.assign(defaultOptions, opts)\n scope.contexts = [ctx || {}]\n return scope\n}\n","/*\n * Call functions in serial until someone resolved.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function anySeries (iterable, iteratee) {\n let ret = Promise.reject(new Error('init'))\n iterable.forEach(function (item, idx) {\n ret = ret.catch(e => iteratee(item, idx, iterable))\n })\n return ret\n}\n\n/*\n * Call functions in serial until someone rejected.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function mapSeries (iterable, iteratee) {\n let ret = Promise.resolve('init')\n const result = []\n iterable.forEach(function (item, idx) {\n ret = ret\n .then(() => iteratee(item, idx, iterable))\n .then(x => result.push(x))\n })\n return ret.then(() => result)\n}\n","import * as _ from './util/underscore.js'\nimport path from 'path'\nimport { anySeries } from './util/promise.js'\nimport fs from 'fs'\n\nconst statFileAsync = _.promisify(fs.stat)\nconst readFileAsync = _.promisify(fs.readFile)\n\nexport async function resolve (filepath, root, options) {\n if (!path.extname(filepath)) {\n filepath += options.extname\n }\n root = options.root.concat(root || [])\n root = _.uniq(root)\n const paths = root.map(root => path.resolve(root, filepath))\n return anySeries(paths, async path => {\n try {\n await statFileAsync(path)\n return path\n } catch (e) {\n e.message = `${e.code}: Failed to lookup ${filepath} in: ${root}`\n throw e\n }\n })\n}\n\nexport async function read (filepath) {\n return readFileAsync(filepath, 'utf8')\n}\n","import { assign } from './util/underscore.js'\n\nexport default function whiteSpaceCtrl (tokens, options) {\n options = assign({ greedy: true }, options)\n let inRaw = false\n\n tokens.forEach((token, i) => {\n if (shouldTrimLeft(token, inRaw, options)) {\n trimLeft(tokens[i - 1], options.greedy)\n }\n\n if (token.type === 'tag' && token.name === 'raw') inRaw = true\n if (token.type === 'tag' && token.name === 'endraw') inRaw = false\n\n if (shouldTrimRight(token, inRaw, options)) {\n trimRight(tokens[i + 1], options.greedy)\n }\n })\n}\n\nfunction shouldTrimLeft (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_left || options.trim_tag_left\n if (token.type === 'value') return token.trim_left || options.trim_value_left\n}\n\nfunction shouldTrimRight (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_right || options.trim_tag_right\n if (token.type === 'value') return token.trim_right || options.trim_value_right\n}\n\nfunction trimLeft (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rLeft = greedy ? /\\s+$/g : /[\\t\\r ]*$/g\n token.value = token.value.replace(rLeft, '')\n}\n\nfunction trimRight (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rRight = greedy ? /^\\s+/g : /^[\\t\\r ]*\\n?/g\n token.value = token.value.replace(rRight, '')\n}\n","import * as lexical from './lexical.js'\nimport { TokenizationError } from './util/error.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport whiteSpaceCtrl from './whitespace-ctrl.js'\n\nexport { default as whiteSpaceCtrl } from './whitespace-ctrl.js'\n\nexport function parse (input, file, options) {\n assert(_.isString(input), 'illegal input')\n\n const rLiquid = /({%-?([\\s\\S]*?)-?%})|({{-?([\\s\\S]*?)-?}})/g\n let currIndent = 0\n const lineNumber = LineNumber(input)\n let lastMatchEnd = 0\n const tokens = []\n\n for (let match; (match = rLiquid.exec(input)); lastMatchEnd = rLiquid.lastIndex) {\n if (match.index > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, match.index))\n }\n tokens.push(match[1]\n ? parseTagToken(match[1], match[2].trim(), match.index)\n : parseValueToken(match[3], match[4].trim(), match.index))\n }\n if (input.length > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, input.length))\n }\n whiteSpaceCtrl(tokens, options)\n return tokens\n\n function parseTagToken (raw, value, pos) {\n const match = value.match(lexical.tagLine)\n const token = {\n type: 'tag',\n indent: currIndent,\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{%-',\n trim_right: raw.slice(-3) === '-%}',\n raw,\n value,\n input,\n file\n }\n if (!match) {\n throw new TokenizationError(`illegal tag syntax`, token)\n }\n token.name = match[1]\n token.args = match[2]\n return token\n }\n\n function parseValueToken (raw, value, pos) {\n return {\n type: 'value',\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{{-',\n trim_right: raw.slice(-3) === '-}}',\n raw,\n value,\n input,\n file\n }\n }\n\n function parseHTMLToken (begin, end) {\n const htmlFragment = input.slice(begin, end)\n currIndent = _.last((htmlFragment).split('\\n')).length\n\n return {\n type: 'html',\n raw: htmlFragment,\n value: htmlFragment\n }\n }\n}\n\nfunction LineNumber (html) {\n let parsedLinesCount = 0\n let lastMatchBegin = -1\n\n return {\n get: function (pos) {\n const lines = html.slice(lastMatchBegin + 1, pos).split('\\n')\n parsedLinesCount += lines.length - 1\n lastMatchBegin = pos\n return parsedLinesCount + 1\n }\n }\n}\n","export default function (isTruthy) {\n return {\n '==': (l, r) => l === r,\n '!=': (l, r) => l !== r,\n '>': (l, r) => l !== null && r !== null && l > r,\n '<': (l, r) => l !== null && r !== null && l < r,\n '>=': (l, r) => l !== null && r !== null && l >= r,\n '<=': (l, r) => l !== null && r !== null && l <= r,\n 'contains': (l, r) => {\n if (!l) return false\n if (typeof l.indexOf !== 'function') return false\n return l.indexOf(r) > -1\n },\n 'and': (l, r) => isTruthy(l) && isTruthy(r),\n 'or': (l, r) => isTruthy(l) || isTruthy(r)\n }\n}\n","import Operators from './operators.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst operators = Operators(isTruthy)\n\nexport function evalExp (exp, scope) {\n assert(scope, 'unable to evalExp: scope undefined')\n const operatorREs = lexical.operators\n let match\n for (let i = 0; i < operatorREs.length; i++) {\n const operatorRE = operatorREs[i]\n const expRE = new RegExp(`^(${lexical.quoteBalanced.source})(${operatorRE.source})(${lexical.quoteBalanced.source})$`)\n if ((match = exp.match(expRE))) {\n const l = evalExp(match[1], scope)\n const op = operators[match[2].trim()]\n const r = evalExp(match[3], scope)\n return op(l, r)\n }\n }\n\n if ((match = exp.match(lexical.rangeLine))) {\n const low = evalValue(match[1], scope)\n const high = evalValue(match[2], scope)\n const range = []\n for (let j = low; j <= high; j++) {\n range.push(j)\n }\n return range\n }\n\n return evalValue(exp, scope)\n}\n\nexport function evalValue (str, scope) {\n str = str && str.trim()\n if (!str) return undefined\n\n if (lexical.isLiteral(str)) {\n return lexical.parseLiteral(str)\n }\n if (lexical.isVariable(str)) {\n return scope.get(str)\n }\n throw new TypeError(`cannot eval '${str}' as value`)\n}\n\nexport function isTruthy (val) {\n return !isFalsy(val)\n}\n\nexport function isFalsy (val) {\n return val === false || undefined === val || val === null\n}\n","import { evalExp } from './syntax.js'\nimport { RenderBreakError, RenderError } from './util/error.js'\nimport { stringify, create } from './util/underscore.js'\nimport assert from './util/assert.js'\n\nconst render = {\n renderTemplates: async function (templates, scope) {\n assert(scope, 'unable to evalTemplates: scope undefined')\n\n let html = ''\n for (const tpl of templates) {\n try {\n html += await renderTemplate.call(this, tpl)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n e.resolvedHTML = html\n throw e\n }\n throw new RenderError(e, tpl)\n }\n }\n return html\n\n async function renderTemplate (template) {\n if (template.type === 'tag') {\n const partial = await this.renderTag(template, scope)\n return partial === undefined ? '' : partial\n }\n if (template.type === 'value') {\n return this.renderValue(template, scope)\n }\n return template.value\n }\n },\n\n renderTag: async function (template, scope) {\n if (template.name === 'continue') {\n throw new RenderBreakError('continue')\n }\n if (template.name === 'break') {\n throw new RenderBreakError('break')\n }\n return template.render(scope)\n },\n\n renderValue: async function (template, scope) {\n const partial = this.evalValue(template, scope)\n return partial === undefined ? '' : stringify(partial)\n },\n\n evalValue: function (template, scope) {\n assert(scope, 'unable to evalValue: scope undefined')\n return template.filters.reduce(\n (prev, filter) => filter.render(prev, scope),\n evalExp(template.initial, scope))\n }\n}\n\nexport default function () {\n const instance = create(render)\n return instance\n}\n","import { hashCapture } from './lexical.js'\nimport { create } from './util/underscore.js'\nimport { evalValue } from './syntax.js'\nimport assert from './util/assert.js'\n\nfunction hash (markup, scope) {\n const obj = {}\n let match\n hashCapture.lastIndex = 0\n while ((match = hashCapture.exec(markup))) {\n const k = match[1]\n const v = match[2]\n obj[k] = evalValue(v, scope)\n }\n return obj\n}\n\nexport default function () {\n let tagImpls = {}\n\n const _tagInstance = {\n render: async function (scope) {\n const obj = hash(this.token.args, scope)\n const impl = this.tagImpl\n if (typeof impl.render !== 'function') {\n return ''\n }\n return impl.render(scope, obj)\n },\n parse: function (token, tokens) {\n this.type = 'tag'\n this.token = token\n this.name = token.name\n\n const tagImpl = tagImpls[this.name]\n assert(tagImpl, `tag ${this.name} not found`)\n this.tagImpl = create(tagImpl)\n if (this.tagImpl.parse) {\n this.tagImpl.parse(token, tokens)\n }\n }\n }\n\n function register (name, tag) {\n tagImpls[name] = tag\n }\n\n function construct (token, tokens) {\n const instance = create(_tagInstance)\n instance.parse(token, tokens)\n return instance\n }\n\n function clear () {\n tagImpls = {}\n }\n\n return {\n construct,\n register,\n clear\n }\n}\n","import * as lexical from './lexical.js'\nimport { evalValue } from './syntax.js'\nimport assert from './util/assert.js'\nimport { assign, create } from './util/underscore.js'\n\nconst valueRE = new RegExp(`${lexical.value.source}`, 'g')\n\nexport default function (options) {\n options = assign({}, options)\n let filters = {}\n\n const _filterInstance = {\n render: function (output, scope) {\n const args = this.args.map(arg => evalValue(arg, scope))\n args.unshift(output)\n return this.filter.apply(null, args)\n },\n parse: function (str) {\n let match = lexical.filterLine.exec(str)\n assert(match, 'illegal filter: ' + str)\n\n const name = match[1]\n const argList = match[2] || ''\n const filter = filters[name]\n if (typeof filter !== 'function') {\n if (options.strict_filters) {\n throw new TypeError(`undefined filter: ${name}`)\n }\n this.name = name\n this.filter = x => x\n this.args = []\n return this\n }\n\n const args = []\n while ((match = valueRE.exec(argList.trim()))) {\n const v = match[0]\n const re = new RegExp(`${v}\\\\s*:`, 'g')\n const keyMatch = re.exec(match.input)\n const currentMatchIsKey = keyMatch && keyMatch.index === match.index\n currentMatchIsKey ? args.push(`'${v}'`) : args.push(v)\n }\n\n this.name = name\n this.filter = filter\n this.args = args\n\n return this\n }\n }\n\n function construct (str) {\n const instance = create(_filterInstance)\n return instance.parse(str)\n }\n\n function register (name, filter) {\n filters[name] = filter\n }\n\n function clear () {\n filters = {}\n }\n\n return {\n construct, register, clear\n }\n}\n","import * as lexical from './lexical.js'\nimport { create } from './util/underscore.js'\nimport { ParseError } from './util/error.js'\nimport assert from './util/assert.js'\n\nexport default function (Tag, Filter) {\n const stream = {\n init: function (tokens) {\n this.tokens = tokens\n this.handlers = {}\n return this\n },\n on: function (name, cb) {\n this.handlers[name] = cb\n return this\n },\n trigger: function (event, arg) {\n const h = this.handlers[event]\n if (typeof h === 'function') {\n h(arg)\n return true\n }\n },\n start: function () {\n this.trigger('start')\n let token\n while (!this.stopRequested && (token = this.tokens.shift())) {\n if (this.trigger('token', token)) continue\n if (token.type === 'tag' &&\n this.trigger(`tag:${token.name}`, token)) {\n continue\n }\n const template = parseToken(token, this.tokens)\n this.trigger('template', template)\n }\n if (!this.stopRequested) this.trigger('end')\n return this\n },\n stop: function () {\n this.stopRequested = true\n return this\n }\n }\n\n function parse (tokens) {\n let token\n const templates = []\n while ((token = tokens.shift())) {\n templates.push(parseToken(token, tokens))\n }\n return templates\n }\n\n function parseToken (token, tokens) {\n try {\n let tpl = null\n if (token.type === 'tag') {\n tpl = parseTag(token, tokens)\n } else if (token.type === 'value') {\n tpl = parseValue(token.value)\n } else { // token.type === 'html'\n tpl = token\n }\n tpl.token = token\n return tpl\n } catch (e) {\n throw new ParseError(e, token)\n }\n }\n\n function parseTag (token, tokens) {\n if (token.name === 'continue' || token.name === 'break') return token\n return Tag.construct(token, tokens)\n }\n\n function parseValue (str) {\n let match = lexical.matchValue(str)\n assert(match, `illegal value string: ${str}`)\n\n const initial = match[0]\n str = str.substr(match.index + match[0].length)\n\n const filters = []\n while ((match = lexical.filter.exec(str))) {\n filters.push([match[0].trim()])\n }\n\n return {\n type: 'value',\n initial: initial,\n filters: filters.map(str => Filter.construct(str))\n }\n }\n\n function parseStream (tokens) {\n const s = create(stream)\n return s.init(tokens)\n }\n\n return {\n parse,\n parseTag,\n parseStream,\n parseValue\n }\n}\n","import { mapSeries } from '../util/promise.js'\nimport { isString, isObject, isArray } from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport { identifier, value, hash } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const RenderBreakError = Liquid.Types.RenderBreakError\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*` +\n `(?:\\\\s+(reversed))?` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('for', { parse, render })\n\n function parse (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n this.variable = match[1]\n this.collection = match[2]\n this.reversed = !!match[3]\n\n this.templates = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endfor', () => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n }\n async function render (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope)\n\n if (!isArray(collection)) {\n if (isString(collection) && collection.length > 0) {\n collection = [collection]\n } else if (isObject(collection)) {\n collection = Object.keys(collection).map((key) => [key, collection[key]])\n }\n }\n if (!isArray(collection) || !collection.length) {\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n if (this.reversed) collection.reverse()\n\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n ctx.forloop = {\n first: i === 0,\n index: i + 1,\n index0: i,\n last: i === collection.length - 1,\n length: collection.length,\n rindex: collection.length - i,\n rindex0: collection.length - i - 1\n }\n return ctx\n })\n\n let html = ''\n let finished = false\n await mapSeries(contexts, async context => {\n if (finished) return\n\n scope.push(context)\n try {\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n html += e.resolvedHTML\n if (e.message === 'break') {\n finished = true\n }\n } else throw e\n }\n scope.pop(context)\n })\n return html\n }\n}\n","import assert from '../util/assert.js'\nimport { identifier } from '../lexical.js'\nimport { create } from '../util/underscore.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})\\\\s*=([^]*)`)\n const { AssignScope } = Liquid.Types\n\n liquid.registerTag('assign', {\n parse: function (token) {\n const match = token.args.match(re)\n assert(match, `illegal token ${token.raw}`)\n this.key = match[1]\n this.value = match[2]\n },\n render: function (scope) {\n const ctx = create(AssignScope)\n ctx[this.key] = liquid.evalValue(this.value, scope)\n scope.push(ctx)\n return Promise.resolve('')\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { create } from '../util/underscore.js'\nimport { identifier } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})`)\n const { CaptureScope } = Liquid.Types\n\n liquid.registerTag('capture', {\n parse: function (tagToken, remainTokens) {\n const match = tagToken.args.match(re)\n assert(match, `${tagToken.args} not valid identifier`)\n\n this.variable = match[1]\n this.templates = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream.on('tag:endcapture', token => stream.stop())\n .on('template', tpl => this.templates.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope, hash) {\n const html = await liquid.renderer.renderTemplates(this.templates, scope)\n const ctx = create(CaptureScope)\n ctx[this.variable] = html\n scope.push(ctx)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('case', {\n\n parse: function (tagToken, remainTokens) {\n this.cond = tagToken.args\n this.cases = []\n this.elseTemplates = []\n\n let p = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:when', token => {\n this.cases.push({\n val: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endcase', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (let i = 0; i < this.cases.length; i++) {\n const branch = this.cases[i]\n const val = Liquid.evalExp(branch.val, scope)\n const cond = Liquid.evalExp(this.cond, scope)\n if (val === cond) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('comment', {\n parse: function (tagToken, remainTokens) {\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endcomment') stream.stop()\n })\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { value, quotedLine } from '../lexical.js'\n\nconst staticFileRE = /[^\\s,]+/\n\nexport default function (liquid, Liquid) {\n const withRE = new RegExp(`with\\\\s+(${value.source})`)\n\n liquid.registerTag('include', {\n parse: function (token) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticValue = match[0]\n }\n\n match = value.exec(token.args)\n if (match) {\n this.value = match[0]\n }\n\n match = withRE.exec(token.args)\n if (match) {\n this.with = match[1]\n }\n },\n render: async function (scope, hash) {\n let filepath\n if (scope.opts.dynamicPartials) {\n if (quotedLine.exec(this.value)) {\n const template = this.value.slice(1, -1)\n filepath = await liquid.parseAndRender(template, scope.getAll(), scope.opts)\n } else {\n filepath = Liquid.evalValue(this.value, scope)\n }\n } else {\n filepath = this.staticValue\n }\n assert(filepath, `cannot include with empty filename`)\n\n const originBlocks = scope.opts.blocks\n const originBlockMode = scope.opts.blockMode\n\n scope.opts.blocks = {}\n scope.opts.blockMode = 'output'\n if (this.with) {\n hash[filepath] = Liquid.evalValue(this.with, scope)\n }\n const templates = await liquid.getTemplate(filepath, scope.opts.root)\n scope.push(hash)\n const html = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n scope.opts.blocks = originBlocks\n scope.opts.blockMode = originBlockMode\n return html\n }\n })\n}\n","import { create } from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport { identifier } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const { CaptureScope, AssignScope, DecrementScope } = Liquid.Types\n\n liquid.registerTag('decrement', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(DecrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n return --context[this.variable]\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { value as rValue } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const groupRE = new RegExp(`^(?:(${rValue.source})\\\\s*:\\\\s*)?(.*)$`)\n const candidatesRE = new RegExp(rValue.source, 'g')\n\n liquid.registerTag('cycle', {\n\n parse: function (tagToken, remainTokens) {\n let match = groupRE.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.group = match[1] || ''\n const candidates = match[2]\n\n this.candidates = []\n\n while ((match = candidatesRE.exec(candidates))) {\n this.candidates.push(match[0])\n }\n assert(this.candidates.length, `empty candidates: ${tagToken.raw}`)\n },\n\n render: function (scope, hash) {\n const group = Liquid.evalValue(this.group, scope)\n const fingerprint = `cycle:${group}:` + this.candidates.join(',')\n\n const groups = scope.opts.groups = scope.opts.groups || {}\n let idx = groups[fingerprint]\n\n if (idx === undefined) {\n idx = groups[fingerprint] = 0\n }\n\n const candidate = this.candidates[idx]\n idx = (idx + 1) % this.candidates.length\n groups[fingerprint] = idx\n\n return Liquid.evalValue(candidate, scope)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('if', {\n\n parse: function (tagToken, remainTokens) {\n this.branches = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => this.branches.push({\n cond: tagToken.args,\n templates: (p = [])\n }))\n .on('tag:elsif', token => {\n this.branches.push({\n cond: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endif', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (const branch of this.branches) {\n const cond = Liquid.evalExp(branch.cond, scope)\n if (Liquid.isTruthy(cond)) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { create } from '../util/underscore.js'\nimport { identifier } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const { CaptureScope, AssignScope, IncrementScope } = Liquid.Types\n\n liquid.registerTag('increment', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(IncrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n const val = context[this.variable]\n context[this.variable]++\n return val\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { value as rValue } from '../lexical.js'\n\n/*\n * blockMode:\n * * \"store\": store rendered html into blocks\n * * \"output\": output rendered html\n */\n\nexport default function (liquid, Liquid) {\n const staticFileRE = /\\S+/\n\n liquid.registerTag('layout', {\n parse: function (token, remainTokens) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticLayout = match[0]\n }\n\n match = rValue.exec(token.args)\n if (match) {\n this.layout = match[0]\n }\n\n this.tpls = liquid.parser.parse(remainTokens)\n },\n render: async function (scope, hash) {\n const layout = scope.opts.dynamicPartials\n ? Liquid.evalValue(this.layout, scope)\n : this.staticLayout\n assert(layout, `cannot apply layout with empty filename`)\n\n // render the remaining tokens immediately\n scope.opts.blockMode = 'store'\n const html = await liquid.renderer.renderTemplates(this.tpls, scope)\n if (scope.opts.blocks[''] === undefined) {\n scope.opts.blocks[''] = html\n }\n const templates = await liquid.getTemplate(layout, scope.opts.root)\n scope.push(hash)\n scope.opts.blockMode = 'output'\n const partial = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n return partial\n }\n })\n\n liquid.registerTag('block', {\n parse: function (token, remainTokens) {\n const match = /\\w+/.exec(token.args)\n this.block = match ? match[0] : ''\n\n this.tpls = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:endblock', () => stream.stop())\n .on('template', tpl => this.tpls.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${token.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope) {\n const childDefined = scope.opts.blocks[this.block]\n const html = childDefined !== undefined\n ? childDefined\n : await liquid.renderer.renderTemplates(this.tpls, scope)\n\n if (scope.opts.blockMode === 'store') {\n scope.opts.blocks[this.block] = html\n return ''\n }\n return html\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('raw', {\n parse: function (tagToken, remainTokens) {\n this.tokens = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endraw') stream.stop()\n else this.tokens.push(token)\n })\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: function (scope, hash) {\n return this.tokens.map(token => token.raw).join('')\n }\n })\n}\n","import { mapSeries } from '../util/promise.js'\nimport assert from '../util/assert.js'\nimport { identifier, value, hash } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('tablerow', {\n\n parse: function (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.variable = match[1]\n this.collection = match[2]\n this.templates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:endtablerow', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: async function (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope) || []\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n const cols = hash.cols || collection.length\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n return ctx\n })\n\n let row\n let html = ''\n await mapSeries(contexts, async (context, idx) => {\n row = Math.floor(idx / cols) + 1\n const col = (idx % cols) + 1\n if (col === 1) {\n if (row !== 1) {\n html += '</tr>'\n }\n html += `<tr class=\"row${row}\">`\n }\n\n html += `<td class=\"col${col}\">`\n scope.push(context)\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n html += '</td>'\n scope.pop(context)\n return html\n })\n if (row > 0) {\n html += '</tr>'\n }\n return html\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('unless', {\n parse: function (tagToken, remainTokens) {\n this.templates = []\n this.elseTemplates = []\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', x => {\n p = this.templates\n this.cond = tagToken.args\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endunless', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n const cond = Liquid.evalExp(this.cond, scope)\n return Liquid.isFalsy(cond)\n ? liquid.renderer.renderTemplates(this.templates, scope)\n : liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import For from './for.js'\nimport Assign from './assign.js'\nimport Capture from './capture.js'\nimport Case from './case.js'\nimport Comment from './comment.js'\nimport Include from './include.js'\nimport Decrement from './decrement.js'\nimport Cycle from './cycle.js'\nimport If from './if.js'\nimport Increment from './increment.js'\nimport Layout from './layout.js'\nimport Raw from './raw.js'\nimport Tablerow from './tablerow.js'\nimport Unless from './unless.js'\n\nexport default function (engine, Liquid) {\n Assign(engine, Liquid)\n Capture(engine, Liquid)\n Case(engine, Liquid)\n Comment(engine, Liquid)\n Cycle(engine, Liquid)\n Decrement(engine, Liquid)\n For(engine, Liquid)\n If(engine, Liquid)\n Include(engine, Liquid)\n Increment(engine, Liquid)\n Layout(engine, Liquid)\n Raw(engine, Liquid)\n Tablerow(engine, Liquid)\n Unless(engine, Liquid)\n}\n","const monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',\n 'September', 'October', 'November', 'December'\n]\nconst dayNames = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\n]\nconst monthNamesShort = monthNames.map(abbr)\nconst dayNamesShort = dayNames.map(abbr)\nconst suffixes = {\n 1: 'st',\n 2: 'nd',\n 3: 'rd',\n 'default': 'th'\n}\n\nfunction abbr (str) {\n return str.slice(0, 3)\n}\n\n// prototype extensions\nconst _date = {\n daysInMonth: function (d) {\n const feb = _date.isLeapYear(d) ? 29 : 28\n return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n },\n\n getDayOfYear: function (d) {\n let num = 0\n for (let i = 0; i < d.getMonth(); ++i) {\n num += _date.daysInMonth(d)[i]\n }\n return num + d.getDate()\n },\n\n // Startday is an integer of which day to start the week measuring from\n // TODO: that comment was retarted. fix it.\n getWeekOfYear: function (d, startDay) {\n // Skip to startDay of this week\n const now = this.getDayOfYear(d) + (startDay - d.getDay())\n // Find the first startDay of the year\n const jan1 = new Date(d.getFullYear(), 0, 1)\n const then = (7 - jan1.getDay() + startDay)\n return _number.pad(Math.floor((now - then) / 7) + 1, 2)\n },\n\n isLeapYear: function (d) {\n const year = d.getFullYear()\n return !!((year & 3) === 0 && (year % 100 || (year % 400 === 0 && year)))\n },\n\n getSuffix: function (d) {\n const str = d.getDate().toString()\n const index = parseInt(str.slice(-1))\n return suffixes[index] || suffixes['default']\n },\n\n century: function (d) {\n return parseInt(d.getFullYear().toString().substring(0, 2), 10)\n }\n}\n\nconst _number = {\n pad: function (value, size, ch) {\n if (!ch) ch = '0'\n let result = value.toString()\n let pad = size - result.length\n\n while (pad-- > 0) {\n result = ch + result\n }\n\n return result\n }\n}\n\nconst formatCodes = {\n a: function (d) {\n return dayNamesShort[d.getDay()]\n },\n A: function (d) {\n return dayNames[d.getDay()]\n },\n b: function (d) {\n return monthNamesShort[d.getMonth()]\n },\n B: function (d) {\n return monthNames[d.getMonth()]\n },\n c: function (d) {\n return d.toLocaleString()\n },\n C: function (d) {\n return _date.century(d)\n },\n d: function (d) {\n return _number.pad(d.getDate(), 2)\n },\n e: function (d) {\n return _number.pad(d.getDate(), 2, ' ')\n },\n H: function (d) {\n return _number.pad(d.getHours(), 2)\n },\n I: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2)\n },\n j: function (d) {\n return _number.pad(_date.getDayOfYear(d), 3)\n },\n k: function (d) {\n return _number.pad(d.getHours(), 2, ' ')\n },\n l: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2, ' ')\n },\n L: function (d) {\n return _number.pad(d.getMilliseconds(), 3)\n },\n m: function (d) {\n return _number.pad(d.getMonth() + 1, 2)\n },\n M: function (d) {\n return _number.pad(d.getMinutes(), 2)\n },\n p: function (d) {\n return (d.getHours() < 12 ? 'AM' : 'PM')\n },\n P: function (d) {\n return (d.getHours() < 12 ? 'am' : 'pm')\n },\n q: function (d) {\n return _date.getSuffix(d)\n },\n s: function (d) {\n return Math.round(d.valueOf() / 1000)\n },\n S: function (d) {\n return _number.pad(d.getSeconds(), 2)\n },\n u: function (d) {\n return d.getDay() || 7\n },\n U: function (d) {\n return _date.getWeekOfYear(d, 0)\n },\n w: function (d) {\n return d.getDay()\n },\n W: function (d) {\n return _date.getWeekOfYear(d, 1)\n },\n x: function (d) {\n return d.toLocaleDateString()\n },\n X: function (d) {\n return d.toLocaleTimeString()\n },\n y: function (d) {\n return d.getFullYear().toString().substring(2, 4)\n },\n Y: function (d) {\n return d.getFullYear()\n },\n z: function (d) {\n const tz = d.getTimezoneOffset() / 60 * 100\n return (tz > 0 ? '-' : '+') + _number.pad(Math.abs(tz), 4)\n },\n '%': function () {\n return '%'\n }\n}\nformatCodes.h = formatCodes.b\nformatCodes.N = formatCodes.L\n\nexport default function (d, format) {\n let output = ''\n let remaining = format\n\n while (true) {\n const r = /%./g\n const results = r.exec(remaining)\n\n // No more format codes. Add the remaining text and return\n if (!results) {\n return output + remaining\n }\n\n // Add the preceding text\n output += remaining.slice(0, r.lastIndex - 2)\n remaining = remaining.slice(r.lastIndex)\n\n // Add the format code\n const ch = results[0].charAt(1)\n const func = formatCodes[ch]\n output += func ? func.call(this, d) : '%' + ch\n }\n}\n","import strftime from './util/strftime.js'\nimport * as _ from './util/underscore.js'\nimport { isTruthy } from './syntax.js'\n\nconst escapeMap = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&#34;',\n \"'\": '&#39;'\n}\nconst unescapeMap = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&#34;': '\"',\n '&#39;': \"'\"\n}\n\nconst filters = {\n 'abs': v => Math.abs(v),\n 'append': (v, arg) => v + arg,\n 'capitalize': str => stringify(str).charAt(0).toUpperCase() + str.slice(1),\n 'ceil': v => Math.ceil(v),\n 'concat': (v, arg) => Array.prototype.concat.call(v, arg),\n 'date': (v, arg) => {\n let date = v\n if (v === 'now') {\n date = new Date()\n } else if (_.isString(v)) {\n date = new Date(v)\n }\n return isValidDate(date) ? strftime(date, arg) : v\n },\n 'default': (v, arg) => isTruthy(v) ? v : arg,\n 'divided_by': (v, arg) => v / arg,\n 'downcase': v => v.toLowerCase(),\n 'escape': escape,\n\n 'escape_once': str => escape(unescape(str)),\n 'first': v => v[0],\n 'floor': v => Math.floor(v),\n 'join': (v, arg) => v.join(arg === undefined ? ' ' : arg),\n 'last': v => _.last(v),\n 'lstrip': v => stringify(v).replace(/^\\s+/, ''),\n 'map': (arr, arg) => arr.map(v => v[arg]),\n 'minus': bindFixed((v, arg) => v - arg),\n 'modulo': bindFixed((v, arg) => v % arg),\n 'newline_to_br': v => v.replace(/\\n/g, '<br />'),\n 'plus': bindFixed((v, arg) => Number(v) + Number(arg)),\n 'prepend': (v, arg) => arg + v,\n 'remove': (v, arg) => v.split(arg).join(''),\n 'remove_first': (v, l) => v.replace(l, ''),\n 'replace': (v, pattern, replacement) =>\n stringify(v).split(pattern).join(replacement),\n 'replace_first': (v, arg1, arg2) => stringify(v).replace(arg1, arg2),\n 'reverse': v => v.reverse(),\n 'round': (v, arg) => {\n const amp = Math.pow(10, arg || 0)\n return Math.round(v * amp, arg) / amp\n },\n 'rstrip': str => stringify(str).replace(/\\s+$/, ''),\n 'size': v => v.length,\n 'slice': (v, begin, length) => {\n if (length === undefined) length = 1\n return v.slice(begin, begin + length)\n },\n 'sort': (v, arg) => v.sort(arg),\n 'split': (v, arg) => stringify(v).split(arg),\n 'strip': (v) => stringify(v).trim(),\n 'strip_html': v => stringify(v).replace(/<script.*?<\\/script>|<!--.*?-->|<style.*?<\\/style>|<.*?>/g, ''),\n 'strip_newlines': v => stringify(v).replace(/\\n/g, ''),\n 'times': (v, arg) => v * arg,\n 'truncate': (v, l, o) => {\n v = stringify(v)\n o = (o === undefined) ? '...' : o\n l = l || 16\n if (v.length <= l) return v\n return v.substr(0, l - o.length) + o\n },\n 'truncatewords': (v, l, o) => {\n if (o === undefined) o = '...'\n const arr = v.split(' ')\n let ret = arr.slice(0, l).join(' ')\n if (arr.length > l) ret += o\n return ret\n },\n 'uniq': function (arr) {\n const u = {}\n return (arr || []).filter(val => {\n if (u.hasOwnProperty(val)) {\n return false\n }\n u[val] = true\n return true\n })\n },\n 'upcase': str => stringify(str).toUpperCase(),\n 'url_decode': x => x.split('+').map(decodeURIComponent).join(' '),\n 'url_encode': x => x.split(' ').map(encodeURIComponent).join('+')\n}\n\nfunction escape (str) {\n return stringify(str).replace(/&|<|>|\"|'/g, m => escapeMap[m])\n}\n\nfunction unescape (str) {\n return stringify(str).replace(/&(amp|lt|gt|#34|#39);/g, m => unescapeMap[m])\n}\n\nfunction getFixed (v) {\n const p = (v + '').split('.')\n return (p.length > 1) ? p[1].length : 0\n}\n\nfunction getMaxFixed (l, r) {\n return Math.max(getFixed(l), getFixed(r))\n}\n\nfunction stringify (obj) {\n return obj + ''\n}\n\nfunction bindFixed (cb) {\n return (l, r) => {\n const f = getMaxFixed(l, r)\n return cb(l, r).toFixed(f)\n }\n}\n\nfunction isValidDate (date) {\n return date instanceof Date && !isNaN(date.getTime())\n}\n\nexport default function registerAll (liquid) {\n return _.forOwn(filters, (func, name) => liquid.registerFilter(name, func))\n}\n\nregisterAll.filters = filters\n","import 'regenerator-runtime/runtime'\nimport * as Scope from './scope'\nimport * as template from './template'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport Render from './render.js'\nimport Tag from './tag.js'\nimport Filter from './filter.js'\nimport Parser from './parser'\nimport { isTruthy, isFalsy, evalExp, evalValue } from './syntax.js'\nimport { ParseError, TokenizationError, RenderBreakError, AssertionError } from './util/error.js'\nimport tags from './tags/index.js'\nimport filters from './filters.js'\n\nconst _engine = {\n init: function (tag, filter, options) {\n if (options.cache) {\n this.cache = {}\n }\n this.options = options\n this.tag = tag\n this.filter = filter\n this.parser = Parser(tag, filter)\n this.renderer = Render()\n\n tags(this, Liquid)\n filters(this, Liquid)\n\n return this\n },\n parse: function (html, filepath) {\n const tokens = tokenizer.parse(html, filepath, this.options)\n return this.parser.parse(tokens)\n },\n render: function (tpl, ctx, opts) {\n opts = _.assign({}, this.options, opts)\n const scope = Scope.factory(ctx, opts)\n return this.renderer.renderTemplates(tpl, scope)\n },\n parseAndRender: async function (html, ctx, opts) {\n const tpl = await this.parse(html)\n return this.render(tpl, ctx, opts)\n },\n getTemplate: async function (file, root) {\n const filepath = await template.resolve(file, root, this.options)\n return this.respectCache(filepath, async () => {\n const str = await template.read(filepath)\n return this.parse(str, filepath)\n })\n },\n renderFile: async function (file, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(file, opts.root)\n return this.render(templates, ctx, opts)\n },\n respectCache: async function (key, getter) {\n const cacheEnabled = this.options.cache\n if (cacheEnabled && this.cache[key]) {\n return this.cache[key]\n }\n const value = await getter()\n if (cacheEnabled) {\n this.cache[key] = value\n }\n return value\n },\n evalValue: function (str, scope) {\n const tpl = this.parser.parseValue(str.trim())\n return this.renderer.evalValue(tpl, scope)\n },\n registerFilter: function (name, filter) {\n return this.filter.register(name, filter)\n },\n registerTag: function (name, tag) {\n return this.tag.register(name, tag)\n },\n plugin: function (plugin) {\n return plugin.call(this, Liquid)\n },\n express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(_.isArray(this.root) || _.isString(this.root),\n 'illegal views root, are you using express.js?')\n opts.root = this.root\n self.renderFile(filePath, ctx, opts).then(html => cb(null, html), cb)\n }\n }\n}\n\nfunction normalizeStringArray (value) {\n if (_.isArray(value)) return value\n if (_.isString(value)) return [value]\n throw new TypeError('illegal root: ' + value)\n}\n\nexport default function Liquid (options) {\n options = _.assign({\n root: ['.'],\n cache: false,\n extname: '',\n dynamicPartials: true,\n trim_tag_right: false,\n trim_tag_left: false,\n trim_value_right: false,\n trim_value_left: false,\n greedy: true,\n strict_filters: false,\n strict_variables: false\n }, options)\n options.root = normalizeStringArray(options.root)\n\n const engine = _.create(_engine)\n engine.init(Tag(), Filter(options), options)\n return engine\n}\n\nLiquid.default = Liquid\nLiquid.isTruthy = isTruthy\nLiquid.isFalsy = isFalsy\nLiquid.evalExp = evalExp\nLiquid.evalValue = evalValue\nLiquid.Types = {\n ParseError,\n TokenizationError,\n RenderBreakError,\n AssertionError,\n AssignScope: {},\n CaptureScope: {},\n IncrementScope: {},\n DecrementScope: {}\n}\n"],"names":["global","Op","Object","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","module","runtime","regeneratorRuntime","exports","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","obj","arg","type","call","err","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","constructor","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","invoke","resolve","reject","record","result","value","Promise","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","iter","next","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","info","resultName","nextLoc","toString","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","key","reverse","length","pop","iterable","iteratorMethod","isNaN","i","skipTempReset","prev","charAt","slice","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","thrown","Function","toStr","arrToStr","Array","isString","isFunction","promisify","arguments","stringify","isNil","String","to_liquid","toLiquid","to_s","indexOf","defaultToString","cache","JSON","isObject","proto","isArray","forOwn","iteratee","k","assign","srcs","src","last","arr","uniq","u","a","l","range","start","stop","step","singleQuoted","doubleQuoted","quoted","RegExp","source","quoteBalanced","integer","number","bool","identifier","subscript","literal","variable","rangeLimit","rangeCapture","hash","hashCapture","tagLine","literalLine","variableLine","numberLine","boolLine","quotedLine","rangeLine","integerLine","valueDeclaration","valueList","filter","filterCapture","filterLine","operators","isInteger","str","test","isLiteral","isVariable","matchValue","exec","parseLiteral","res","match","Number","toLowerCase","initError","captureStackTrace","initLiquidError","token","input","line","file","mkContext","message","mkMessage","stack","TokenizationError","_","ParseError","e","originalError","RenderError","tpl","RenderBreakError","AssertionError","lines","split","begin","Math","max","end","min","map","align","join","n","blank","msg","predicate","Scope","contexts","reduce","ctx","val","path","paths","propertyAccessSeq","scope","findContextFor","readProperty","v","some","unshift","findIndex","splice","candidate","readSize","liquid_method_missing","opts","strict_variables","seq","j","delemiter","matchRightBracket","lexical","get","size","factory","defaultOptions","anySeries","ret","item","idx","catch","mapSeries","x","statFileAsync","fs","stat","readFileAsync","readFile","filepath","root","options","extname","concat","code","read","whiteSpaceCtrl","tokens","greedy","inRaw","shouldTrimLeft","shouldTrimRight","trim_left","trim_tag_left","trim_value_left","trim_right","trim_tag_right","trim_value_right","trimLeft","rLeft","replace","trimRight","rRight","parse","rLiquid","currIndent","lineNumber","LineNumber","lastMatchEnd","lastIndex","index","parseHTMLToken","parseTagToken","trim","parseValueToken","raw","pos","args","htmlFragment","html","parsedLinesCount","lastMatchBegin","isTruthy","r","Operators","evalExp","exp","operatorREs","operatorRE","expRE","op","low","evalValue","high","isFalsy","render","templates","template","renderTag","partial","renderValue","renderTemplate","resolvedHTML","filters","initial","instance","markup","tagImpls","_tagInstance","tagImpl","impl","register","tag","construct","clear","valueRE","_filterInstance","output","apply","argList","strict_filters","re","keyMatch","currentMatchIsKey","Tag","Filter","stream","handlers","cb","event","h","trigger","stopRequested","shift","parseToken","parseTag","parseValue","substr","parseStream","s","init","liquid","Liquid","collection","renderer","renderTemplates","elseTemplates","offset","limit","reversed","forloop","finished","Types","registerTag","tagToken","remainTokens","p","parser","on","AssignScope","CaptureScope","cond","cases","branch","staticFileRE","withRE","staticValue","with","dynamicPartials","parseAndRender","getAll","blocks","blockMode","getTemplate","originBlocks","originBlockMode","DecrementScope","groupRE","rValue","candidatesRE","group","candidates","fingerprint","groups","branches","IncrementScope","staticLayout","layout","tpls","block","childDefined","cols","floor","col","row","engine","monthNames","dayNames","monthNamesShort","abbr","dayNamesShort","suffixes","_date","d","feb","isLeapYear","num","getMonth","daysInMonth","getDate","startDay","now","getDayOfYear","getDay","jan1","Date","getFullYear","_number","pad","year","parseInt","substring","ch","formatCodes","toLocaleString","century","getHours","getMilliseconds","getMinutes","getSuffix","round","valueOf","getSeconds","getWeekOfYear","toLocaleDateString","toLocaleTimeString","tz","getTimezoneOffset","abs","b","N","L","format","remaining","results","func","escapeMap","unescapeMap","toUpperCase","ceil","date","isValidDate","strftime","escape","unescape","bindFixed","pattern","replacement","arg1","arg2","amp","pow","sort","o","decodeURIComponent","encodeURIComponent","m","getFixed","getMaxFixed","f","toFixed","getTime","registerAll","registerFilter","_engine","Parser","Render","tokenizer","respectCache","getter","cacheEnabled","plugin","filePath","renderFile","normalizeStringArray","default"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;AAOA,CAAE,UAASA,MAAT,EAAiB;AACjB;MAEIC,KAAKC,OAAOC,SAAhB;MACIC,SAASH,GAAGI,cAAhB;MACIC,SAAJ,CALiB;MAMbC,UAAU,OAAOC,MAAP,KAAkB,UAAlB,GAA+BA,MAA/B,GAAwC,EAAtD;MACIC,iBAAiBF,QAAQG,QAAR,IAAoB,YAAzC;MACIC,sBAAsBJ,QAAQK,aAAR,IAAyB,iBAAnD;MACIC,oBAAoBN,QAAQO,WAAR,IAAuB,eAA/C;;MAEIC,WAAW,QAAOC,MAAP,yCAAOA,MAAP,OAAkB,QAAjC;MACIC,UAAUjB,OAAOkB,kBAArB;MACID,OAAJ,EAAa;QACPF,QAAJ,EAAc;;;aAGLI,OAAP,GAAiBF,OAAjB;;;;;;;;;YASMjB,OAAOkB,kBAAP,GAA4BH,WAAWC,OAAOG,OAAlB,GAA4B,EAAlE;;WAESC,IAAT,CAAcC,OAAd,EAAuBC,OAAvB,EAAgCC,IAAhC,EAAsCC,WAAtC,EAAmD;;QAE7CC,iBAAiBH,WAAWA,QAAQnB,SAAR,YAA6BuB,SAAxC,GAAoDJ,OAApD,GAA8DI,SAAnF;QACIC,YAAYzB,OAAO0B,MAAP,CAAcH,eAAetB,SAA7B,CAAhB;QACI0B,UAAU,IAAIC,OAAJ,CAAYN,eAAe,EAA3B,CAAd;;;;cAIUO,OAAV,GAAoBC,iBAAiBX,OAAjB,EAA0BE,IAA1B,EAAgCM,OAAhC,CAApB;;WAEOF,SAAP;;UAEMP,IAAR,GAAeA,IAAf;;;;;;;;;;;;WAYSa,QAAT,CAAkBC,EAAlB,EAAsBC,GAAtB,EAA2BC,GAA3B,EAAgC;QAC1B;aACK,EAAEC,MAAM,QAAR,EAAkBD,KAAKF,GAAGI,IAAH,CAAQH,GAAR,EAAaC,GAAb,CAAvB,EAAP;KADF,CAEE,OAAOG,GAAP,EAAY;aACL,EAAEF,MAAM,OAAR,EAAiBD,KAAKG,GAAtB,EAAP;;;;MAIAC,yBAAyB,gBAA7B;MACIC,yBAAyB,gBAA7B;MACIC,oBAAoB,WAAxB;MACIC,oBAAoB,WAAxB;;;;MAIIC,mBAAmB,EAAvB;;;;;;WAMSlB,SAAT,GAAqB;WACZmB,iBAAT,GAA6B;WACpBC,0BAAT,GAAsC;;;;MAIlCC,oBAAoB,EAAxB;oBACkBtC,cAAlB,IAAoC,YAAY;WACvC,IAAP;GADF;;MAIIuC,WAAW9C,OAAO+C,cAAtB;MACIC,0BAA0BF,YAAYA,SAASA,SAASG,OAAO,EAAP,CAAT,CAAT,CAA1C;MACID,2BACAA,4BAA4BjD,EAD5B,IAEAG,OAAOkC,IAAP,CAAYY,uBAAZ,EAAqCzC,cAArC,CAFJ,EAE0D;;;wBAGpCyC,uBAApB;;;MAGEE,KAAKN,2BAA2B3C,SAA3B,GACPuB,UAAUvB,SAAV,GAAsBD,OAAO0B,MAAP,CAAcmB,iBAAd,CADxB;oBAEkB5C,SAAlB,GAA8BiD,GAAGC,WAAH,GAAiBP,0BAA/C;6BAC2BO,WAA3B,GAAyCR,iBAAzC;6BAC2BhC,iBAA3B,IACEgC,kBAAkBS,WAAlB,GAAgC,mBADlC;;;;WAKSC,qBAAT,CAA+BpD,SAA/B,EAA0C;KACvC,MAAD,EAAS,OAAT,EAAkB,QAAlB,EAA4BqD,OAA5B,CAAoC,UAASC,MAAT,EAAiB;gBACzCA,MAAV,IAAoB,UAASrB,GAAT,EAAc;eACzB,KAAKL,OAAL,CAAa0B,MAAb,EAAqBrB,GAArB,CAAP;OADF;KADF;;;UAOMsB,mBAAR,GAA8B,UAASC,MAAT,EAAiB;QACzCC,OAAO,OAAOD,MAAP,KAAkB,UAAlB,IAAgCA,OAAON,WAAlD;WACOO,OACHA,SAASf,iBAAT;;;KAGCe,KAAKN,WAAL,IAAoBM,KAAKC,IAA1B,MAAoC,mBAJjC,GAKH,KALJ;GAFF;;UAUQC,IAAR,GAAe,UAASH,MAAT,EAAiB;QAC1BzD,OAAO6D,cAAX,EAA2B;aAClBA,cAAP,CAAsBJ,MAAtB,EAA8Bb,0BAA9B;KADF,MAEO;aACEkB,SAAP,GAAmBlB,0BAAnB;UACI,EAAEjC,qBAAqB8C,MAAvB,CAAJ,EAAoC;eAC3B9C,iBAAP,IAA4B,mBAA5B;;;WAGGV,SAAP,GAAmBD,OAAO0B,MAAP,CAAcwB,EAAd,CAAnB;WACOO,MAAP;GAVF;;;;;;UAiBQM,KAAR,GAAgB,UAAS7B,GAAT,EAAc;WACrB,EAAE8B,SAAS9B,GAAX,EAAP;GADF;;WAIS+B,aAAT,CAAuBxC,SAAvB,EAAkC;aACvByC,MAAT,CAAgBX,MAAhB,EAAwBrB,GAAxB,EAA6BiC,OAA7B,EAAsCC,MAAtC,EAA8C;UACxCC,SAAStC,SAASN,UAAU8B,MAAV,CAAT,EAA4B9B,SAA5B,EAAuCS,GAAvC,CAAb;UACImC,OAAOlC,IAAP,KAAgB,OAApB,EAA6B;eACpBkC,OAAOnC,GAAd;OADF,MAEO;YACDoC,SAASD,OAAOnC,GAApB;YACIqC,QAAQD,OAAOC,KAAnB;YACIA,SACA,QAAOA,KAAP,yCAAOA,KAAP,OAAiB,QADjB,IAEArE,OAAOkC,IAAP,CAAYmC,KAAZ,EAAmB,SAAnB,CAFJ,EAEmC;iBAC1BC,QAAQL,OAAR,CAAgBI,MAAMP,OAAtB,EAA+BS,IAA/B,CAAoC,UAASF,KAAT,EAAgB;mBAClD,MAAP,EAAeA,KAAf,EAAsBJ,OAAtB,EAA+BC,MAA/B;WADK,EAEJ,UAAS/B,GAAT,EAAc;mBACR,OAAP,EAAgBA,GAAhB,EAAqB8B,OAArB,EAA8BC,MAA9B;WAHK,CAAP;;;eAOKI,QAAQL,OAAR,CAAgBI,KAAhB,EAAuBE,IAAvB,CAA4B,UAASC,SAAT,EAAoB;;;;iBAI9CH,KAAP,GAAeG,SAAf;kBACQJ,MAAR;SALK,EAMJ,UAASK,KAAT,EAAgB;;;iBAGVT,OAAO,OAAP,EAAgBS,KAAhB,EAAuBR,OAAvB,EAAgCC,MAAhC,CAAP;SATK,CAAP;;;;QAcAQ,eAAJ;;aAESC,OAAT,CAAiBtB,MAAjB,EAAyBrB,GAAzB,EAA8B;eACnB4C,0BAAT,GAAsC;eAC7B,IAAIN,OAAJ,CAAY,UAASL,OAAT,EAAkBC,MAAlB,EAA0B;iBACpCb,MAAP,EAAerB,GAAf,EAAoBiC,OAApB,EAA6BC,MAA7B;SADK,CAAP;;;aAKKQ;;;;;;;;;;;;;wBAaaA,gBAAgBH,IAAhB,CAChBK,0BADgB;;;gCAAA,CAAlB,GAKIA,4BAlBN;;;;;SAuBGjD,OAAL,GAAegD,OAAf;;;wBAGoBZ,cAAchE,SAApC;gBACcA,SAAd,CAAwBQ,mBAAxB,IAA+C,YAAY;WAClD,IAAP;GADF;UAGQwD,aAAR,GAAwBA,aAAxB;;;;;UAKQc,KAAR,GAAgB,UAAS5D,OAAT,EAAkBC,OAAlB,EAA2BC,IAA3B,EAAiCC,WAAjC,EAA8C;QACxD0D,OAAO,IAAIf,aAAJ,CACT/C,KAAKC,OAAL,EAAcC,OAAd,EAAuBC,IAAvB,EAA6BC,WAA7B,CADS,CAAX;;WAIOP,QAAQyC,mBAAR,CAA4BpC,OAA5B,IACH4D,IADG;MAEHA,KAAKC,IAAL,GAAYR,IAAZ,CAAiB,UAASH,MAAT,EAAiB;aACzBA,OAAOY,IAAP,GAAcZ,OAAOC,KAArB,GAA6BS,KAAKC,IAAL,EAApC;KADF,CAFJ;GALF;;WAYSnD,gBAAT,CAA0BX,OAA1B,EAAmCE,IAAnC,EAAyCM,OAAzC,EAAkD;QAC5CwD,QAAQ7C,sBAAZ;;WAEO,SAAS4B,MAAT,CAAgBX,MAAhB,EAAwBrB,GAAxB,EAA6B;UAC9BiD,UAAU3C,iBAAd,EAAiC;cACzB,IAAI4C,KAAJ,CAAU,8BAAV,CAAN;;;UAGED,UAAU1C,iBAAd,EAAiC;YAC3Bc,WAAW,OAAf,EAAwB;gBAChBrB,GAAN;;;;;eAKKmD,YAAP;;;cAGM9B,MAAR,GAAiBA,MAAjB;cACQrB,GAAR,GAAcA,GAAd;;aAEO,IAAP,EAAa;YACPoD,WAAW3D,QAAQ2D,QAAvB;YACIA,QAAJ,EAAc;cACRC,iBAAiBC,oBAAoBF,QAApB,EAA8B3D,OAA9B,CAArB;cACI4D,cAAJ,EAAoB;gBACdA,mBAAmB7C,gBAAvB,EAAyC;mBAClC6C,cAAP;;;;YAIA5D,QAAQ4B,MAAR,KAAmB,MAAvB,EAA+B;;;kBAGrBkC,IAAR,GAAe9D,QAAQ+D,KAAR,GAAgB/D,QAAQO,GAAvC;SAHF,MAKO,IAAIP,QAAQ4B,MAAR,KAAmB,OAAvB,EAAgC;cACjC4B,UAAU7C,sBAAd,EAAsC;oBAC5BG,iBAAR;kBACMd,QAAQO,GAAd;;;kBAGMyD,iBAAR,CAA0BhE,QAAQO,GAAlC;SANK,MAQA,IAAIP,QAAQ4B,MAAR,KAAmB,QAAvB,EAAiC;kBAC9BqC,MAAR,CAAe,QAAf,EAAyBjE,QAAQO,GAAjC;;;gBAGMM,iBAAR;;YAEI6B,SAAStC,SAASZ,OAAT,EAAkBE,IAAlB,EAAwBM,OAAxB,CAAb;YACI0C,OAAOlC,IAAP,KAAgB,QAApB,EAA8B;;;kBAGpBR,QAAQuD,IAAR,GACJzC,iBADI,GAEJF,sBAFJ;;cAII8B,OAAOnC,GAAP,KAAeQ,gBAAnB,EAAqC;;;;iBAI9B;mBACE2B,OAAOnC,GADT;kBAECP,QAAQuD;WAFhB;SAXF,MAgBO,IAAIb,OAAOlC,IAAP,KAAgB,OAApB,EAA6B;kBAC1BM,iBAAR;;;kBAGQc,MAAR,GAAiB,OAAjB;kBACQrB,GAAR,GAAcmC,OAAOnC,GAArB;;;KArEN;;;;;;;WA+EOsD,mBAAT,CAA6BF,QAA7B,EAAuC3D,OAAvC,EAAgD;QAC1C4B,SAAS+B,SAAS9E,QAAT,CAAkBmB,QAAQ4B,MAA1B,CAAb;QACIA,WAAWnD,SAAf,EAA0B;;;cAGhBkF,QAAR,GAAmB,IAAnB;;UAEI3D,QAAQ4B,MAAR,KAAmB,OAAvB,EAAgC;YAC1B+B,SAAS9E,QAAT,CAAkBqF,MAAtB,EAA8B;;;kBAGpBtC,MAAR,GAAiB,QAAjB;kBACQrB,GAAR,GAAc9B,SAAd;8BACoBkF,QAApB,EAA8B3D,OAA9B;;cAEIA,QAAQ4B,MAAR,KAAmB,OAAvB,EAAgC;;;mBAGvBb,gBAAP;;;;gBAIIa,MAAR,GAAiB,OAAjB;gBACQrB,GAAR,GAAc,IAAI4D,SAAJ,CACZ,gDADY,CAAd;;;aAIKpD,gBAAP;;;QAGE2B,SAAStC,SAASwB,MAAT,EAAiB+B,SAAS9E,QAA1B,EAAoCmB,QAAQO,GAA5C,CAAb;;QAEImC,OAAOlC,IAAP,KAAgB,OAApB,EAA6B;cACnBoB,MAAR,GAAiB,OAAjB;cACQrB,GAAR,GAAcmC,OAAOnC,GAArB;cACQoD,QAAR,GAAmB,IAAnB;aACO5C,gBAAP;;;QAGEqD,OAAO1B,OAAOnC,GAAlB;;QAEI,CAAE6D,IAAN,EAAY;cACFxC,MAAR,GAAiB,OAAjB;cACQrB,GAAR,GAAc,IAAI4D,SAAJ,CAAc,kCAAd,CAAd;cACQR,QAAR,GAAmB,IAAnB;aACO5C,gBAAP;;;QAGEqD,KAAKb,IAAT,EAAe;;;cAGLI,SAASU,UAAjB,IAA+BD,KAAKxB,KAApC;;;cAGQU,IAAR,GAAeK,SAASW,OAAxB;;;;;;;;UAQItE,QAAQ4B,MAAR,KAAmB,QAAvB,EAAiC;gBACvBA,MAAR,GAAiB,MAAjB;gBACQrB,GAAR,GAAc9B,SAAd;;KAhBJ,MAmBO;;aAEE2F,IAAP;;;;;YAKMT,QAAR,GAAmB,IAAnB;WACO5C,gBAAP;;;;;wBAKoBQ,EAAtB;;KAEGvC,iBAAH,IAAwB,WAAxB;;;;;;;KAOGJ,cAAH,IAAqB,YAAW;WACvB,IAAP;GADF;;KAIG2F,QAAH,GAAc,YAAW;WAChB,oBAAP;GADF;;WAISC,YAAT,CAAsBC,IAAtB,EAA4B;QACtBC,QAAQ,EAAEC,QAAQF,KAAK,CAAL,CAAV,EAAZ;;QAEI,KAAKA,IAAT,EAAe;YACPG,QAAN,GAAiBH,KAAK,CAAL,CAAjB;;;QAGE,KAAKA,IAAT,EAAe;YACPI,UAAN,GAAmBJ,KAAK,CAAL,CAAnB;YACMK,QAAN,GAAiBL,KAAK,CAAL,CAAjB;;;SAGGM,UAAL,CAAgBC,IAAhB,CAAqBN,KAArB;;;WAGOO,aAAT,CAAuBP,KAAvB,EAA8B;QACxBhC,SAASgC,MAAMQ,UAAN,IAAoB,EAAjC;WACO1E,IAAP,GAAc,QAAd;WACOkC,OAAOnC,GAAd;UACM2E,UAAN,GAAmBxC,MAAnB;;;WAGOzC,OAAT,CAAiBN,WAAjB,EAA8B;;;;SAIvBoF,UAAL,GAAkB,CAAC,EAAEJ,QAAQ,MAAV,EAAD,CAAlB;gBACYhD,OAAZ,CAAoB6C,YAApB,EAAkC,IAAlC;SACKW,KAAL,CAAW,IAAX;;;UAGMC,IAAR,GAAe,UAASC,MAAT,EAAiB;QAC1BD,OAAO,EAAX;SACK,IAAIE,GAAT,IAAgBD,MAAhB,EAAwB;WACjBL,IAAL,CAAUM,GAAV;;SAEGC,OAAL;;;;WAIO,SAASjC,IAAT,GAAgB;aACd8B,KAAKI,MAAZ,EAAoB;YACdF,MAAMF,KAAKK,GAAL,EAAV;YACIH,OAAOD,MAAX,EAAmB;eACZzC,KAAL,GAAa0C,GAAb;eACK/B,IAAL,GAAY,KAAZ;iBACOD,IAAP;;;;;;;WAOCC,IAAL,GAAY,IAAZ;aACOD,IAAP;KAdF;GATF;;WA2BShC,MAAT,CAAgBoE,QAAhB,EAA0B;QACpBA,QAAJ,EAAc;UACRC,iBAAiBD,SAAS9G,cAAT,CAArB;UACI+G,cAAJ,EAAoB;eACXA,eAAelF,IAAf,CAAoBiF,QAApB,CAAP;;;UAGE,OAAOA,SAASpC,IAAhB,KAAyB,UAA7B,EAAyC;eAChCoC,QAAP;;;UAGE,CAACE,MAAMF,SAASF,MAAf,CAAL,EAA6B;YACvBK,IAAI,CAAC,CAAT;YAAYvC,OAAO,SAASA,IAAT,GAAgB;iBAC1B,EAAEuC,CAAF,GAAMH,SAASF,MAAtB,EAA8B;gBACxBjH,OAAOkC,IAAP,CAAYiF,QAAZ,EAAsBG,CAAtB,CAAJ,EAA8B;mBACvBjD,KAAL,GAAa8C,SAASG,CAAT,CAAb;mBACKtC,IAAL,GAAY,KAAZ;qBACOD,IAAP;;;;eAICV,KAAL,GAAanE,SAAb;eACK8E,IAAL,GAAY,IAAZ;;iBAEOD,IAAP;SAZF;;eAeOA,KAAKA,IAAL,GAAYA,IAAnB;;;;;WAKG,EAAEA,MAAMI,UAAR,EAAP;;UAEMpC,MAAR,GAAiBA,MAAjB;;WAESoC,UAAT,GAAsB;WACb,EAAEd,OAAOnE,SAAT,EAAoB8E,MAAM,IAA1B,EAAP;;;UAGMjF,SAAR,GAAoB;iBACL2B,OADK;;WAGX,eAAS6F,aAAT,EAAwB;WACxBC,IAAL,GAAY,CAAZ;WACKzC,IAAL,GAAY,CAAZ;;;WAGKQ,IAAL,GAAY,KAAKC,KAAL,GAAatF,SAAzB;WACK8E,IAAL,GAAY,KAAZ;WACKI,QAAL,GAAgB,IAAhB;;WAEK/B,MAAL,GAAc,MAAd;WACKrB,GAAL,GAAW9B,SAAX;;WAEKsG,UAAL,CAAgBpD,OAAhB,CAAwBsD,aAAxB;;UAEI,CAACa,aAAL,EAAoB;aACb,IAAI9D,IAAT,IAAiB,IAAjB,EAAuB;;cAEjBA,KAAKgE,MAAL,CAAY,CAAZ,MAAmB,GAAnB,IACAzH,OAAOkC,IAAP,CAAY,IAAZ,EAAkBuB,IAAlB,CADA,IAEA,CAAC4D,MAAM,CAAC5D,KAAKiE,KAAL,CAAW,CAAX,CAAP,CAFL,EAE4B;iBACrBjE,IAAL,IAAavD,SAAb;;;;KAvBU;;UA6BZ,gBAAW;WACV8E,IAAL,GAAY,IAAZ;;UAEI2C,YAAY,KAAKnB,UAAL,CAAgB,CAAhB,CAAhB;UACIoB,aAAaD,UAAUhB,UAA3B;UACIiB,WAAW3F,IAAX,KAAoB,OAAxB,EAAiC;cACzB2F,WAAW5F,GAAjB;;;aAGK,KAAK6F,IAAZ;KAtCgB;;uBAyCC,2BAASC,SAAT,EAAoB;UACjC,KAAK9C,IAAT,EAAe;cACP8C,SAAN;;;UAGErG,UAAU,IAAd;eACSsG,MAAT,CAAgBC,GAAhB,EAAqBC,MAArB,EAA6B;eACpBhG,IAAP,GAAc,OAAd;eACOD,GAAP,GAAa8F,SAAb;gBACQ/C,IAAR,GAAeiD,GAAf;;YAEIC,MAAJ,EAAY;;;kBAGF5E,MAAR,GAAiB,MAAjB;kBACQrB,GAAR,GAAc9B,SAAd;;;eAGK,CAAC,CAAE+H,MAAV;;;WAGG,IAAIX,IAAI,KAAKd,UAAL,CAAgBS,MAAhB,GAAyB,CAAtC,EAAyCK,KAAK,CAA9C,EAAiD,EAAEA,CAAnD,EAAsD;YAChDnB,QAAQ,KAAKK,UAAL,CAAgBc,CAAhB,CAAZ;YACInD,SAASgC,MAAMQ,UAAnB;;YAEIR,MAAMC,MAAN,KAAiB,MAArB,EAA6B;;;;iBAIpB2B,OAAO,KAAP,CAAP;;;YAGE5B,MAAMC,MAAN,IAAgB,KAAKoB,IAAzB,EAA+B;cACzBU,WAAWlI,OAAOkC,IAAP,CAAYiE,KAAZ,EAAmB,UAAnB,CAAf;cACIgC,aAAanI,OAAOkC,IAAP,CAAYiE,KAAZ,EAAmB,YAAnB,CAAjB;;cAEI+B,YAAYC,UAAhB,EAA4B;gBACtB,KAAKX,IAAL,GAAYrB,MAAME,QAAtB,EAAgC;qBACvB0B,OAAO5B,MAAME,QAAb,EAAuB,IAAvB,CAAP;aADF,MAEO,IAAI,KAAKmB,IAAL,GAAYrB,MAAMG,UAAtB,EAAkC;qBAChCyB,OAAO5B,MAAMG,UAAb,CAAP;;WAJJ,MAOO,IAAI4B,QAAJ,EAAc;gBACf,KAAKV,IAAL,GAAYrB,MAAME,QAAtB,EAAgC;qBACvB0B,OAAO5B,MAAME,QAAb,EAAuB,IAAvB,CAAP;;WAFG,MAKA,IAAI8B,UAAJ,EAAgB;gBACjB,KAAKX,IAAL,GAAYrB,MAAMG,UAAtB,EAAkC;qBACzByB,OAAO5B,MAAMG,UAAb,CAAP;;WAFG,MAKA;kBACC,IAAIpB,KAAJ,CAAU,wCAAV,CAAN;;;;KA/FU;;YAqGV,gBAASjD,IAAT,EAAeD,GAAf,EAAoB;WACrB,IAAIsF,IAAI,KAAKd,UAAL,CAAgBS,MAAhB,GAAyB,CAAtC,EAAyCK,KAAK,CAA9C,EAAiD,EAAEA,CAAnD,EAAsD;YAChDnB,QAAQ,KAAKK,UAAL,CAAgBc,CAAhB,CAAZ;YACInB,MAAMC,MAAN,IAAgB,KAAKoB,IAArB,IACAxH,OAAOkC,IAAP,CAAYiE,KAAZ,EAAmB,YAAnB,CADA,IAEA,KAAKqB,IAAL,GAAYrB,MAAMG,UAFtB,EAEkC;cAC5B8B,eAAejC,KAAnB;;;;;UAKAiC,iBACCnG,SAAS,OAAT,IACAA,SAAS,UAFV,KAGAmG,aAAahC,MAAb,IAAuBpE,GAHvB,IAIAA,OAAOoG,aAAa9B,UAJxB,EAIoC;;;uBAGnB,IAAf;;;UAGEnC,SAASiE,eAAeA,aAAazB,UAA5B,GAAyC,EAAtD;aACO1E,IAAP,GAAcA,IAAd;aACOD,GAAP,GAAaA,GAAb;;UAEIoG,YAAJ,EAAkB;aACX/E,MAAL,GAAc,MAAd;aACK0B,IAAL,GAAYqD,aAAa9B,UAAzB;eACO9D,gBAAP;;;aAGK,KAAK6F,QAAL,CAAclE,MAAd,CAAP;KApIgB;;cAuIR,kBAASA,MAAT,EAAiBoC,QAAjB,EAA2B;UAC/BpC,OAAOlC,IAAP,KAAgB,OAApB,EAA6B;cACrBkC,OAAOnC,GAAb;;;UAGEmC,OAAOlC,IAAP,KAAgB,OAAhB,IACAkC,OAAOlC,IAAP,KAAgB,UADpB,EACgC;aACzB8C,IAAL,GAAYZ,OAAOnC,GAAnB;OAFF,MAGO,IAAImC,OAAOlC,IAAP,KAAgB,QAApB,EAA8B;aAC9B4F,IAAL,GAAY,KAAK7F,GAAL,GAAWmC,OAAOnC,GAA9B;aACKqB,MAAL,GAAc,QAAd;aACK0B,IAAL,GAAY,KAAZ;OAHK,MAIA,IAAIZ,OAAOlC,IAAP,KAAgB,QAAhB,IAA4BsE,QAAhC,EAA0C;aAC1CxB,IAAL,GAAYwB,QAAZ;;;aAGK/D,gBAAP;KAvJgB;;YA0JV,gBAAS8D,UAAT,EAAqB;WACtB,IAAIgB,IAAI,KAAKd,UAAL,CAAgBS,MAAhB,GAAyB,CAAtC,EAAyCK,KAAK,CAA9C,EAAiD,EAAEA,CAAnD,EAAsD;YAChDnB,QAAQ,KAAKK,UAAL,CAAgBc,CAAhB,CAAZ;YACInB,MAAMG,UAAN,KAAqBA,UAAzB,EAAqC;eAC9B+B,QAAL,CAAclC,MAAMQ,UAApB,EAAgCR,MAAMI,QAAtC;wBACcJ,KAAd;iBACO3D,gBAAP;;;KAhKY;;aAqKT,gBAAS4D,MAAT,EAAiB;WACnB,IAAIkB,IAAI,KAAKd,UAAL,CAAgBS,MAAhB,GAAyB,CAAtC,EAAyCK,KAAK,CAA9C,EAAiD,EAAEA,CAAnD,EAAsD;YAChDnB,QAAQ,KAAKK,UAAL,CAAgBc,CAAhB,CAAZ;YACInB,MAAMC,MAAN,KAAiBA,MAArB,EAA6B;cACvBjC,SAASgC,MAAMQ,UAAnB;cACIxC,OAAOlC,IAAP,KAAgB,OAApB,EAA6B;gBACvBqG,SAASnE,OAAOnC,GAApB;0BACcmE,KAAd;;iBAEKmC,MAAP;;;;;;YAME,IAAIpD,KAAJ,CAAU,uBAAV,CAAN;KApLgB;;mBAuLH,uBAASiC,QAAT,EAAmBrB,UAAnB,EAA+BC,OAA/B,EAAwC;WAChDX,QAAL,GAAgB;kBACJrC,OAAOoE,QAAP,CADI;oBAEFrB,UAFE;iBAGLC;OAHX;;UAMI,KAAK1C,MAAL,KAAgB,MAApB,EAA4B;;;aAGrBrB,GAAL,GAAW9B,SAAX;;;aAGKsC,gBAAP;;GApMJ;CA3fD;;;;AAssBE,YAAW;SACH,QAAS,QAAOrB,IAAP,yCAAOA,IAAP,OAAgB,QAAhB,IAA4BA,IAA5C;CADF,MAEQoH,SAAS,aAAT,GAxsBT,CAAD;;ACPA,IAAMC,QAAQ1I,OAAOC,SAAP,CAAiBiG,QAA/B;AACA,IAAMyC,WAAWC,MAAM3I,SAAN,CAAgBiG,QAAjC;;;;;;;AAOA,AAAO,SAAS2C,QAAT,CAAmBtE,KAAnB,EAA0B;SACxBmE,MAAMtG,IAAN,CAAWmC,KAAX,MAAsB,iBAA7B;;;AAGF,AAAO,SAASuE,UAAT,CAAqBvE,KAArB,EAA4B;SAC1B,OAAOA,KAAP,KAAiB,UAAxB;;;AAGF,AAAO,SAASwE,SAAT,CAAoB/G,EAApB,EAAwB;SACtB,YAAY;;;WACV,IAAIwC,OAAJ,CAAY,UAACL,OAAD,EAAUC,MAAV,EAAqB;qDAChC4E,UAAN,UAAiB,UAAC3G,GAAD,EAAMiC,MAAN,EAAiB;cAC1BF,OAAO/B,GAAP,CAAN,GAAoB8B,QAAQG,MAAR,CAApB;OADF;KADK,CAAP;GADF;;;AASF,AAAO,SAAS2E,SAAT,CAAoB1E,KAApB,EAA2B;MAC5B2E,MAAM3E,KAAN,CAAJ,EAAkB,OAAO4E,OAAO5E,KAAP,CAAP;MACduE,WAAWvE,MAAM6E,SAAjB,CAAJ,EAAiC,OAAOH,UAAU1E,MAAM6E,SAAN,EAAV,CAAP;MAC7BN,WAAWvE,MAAM8E,QAAjB,CAAJ,EAAgC,OAAOJ,UAAU1E,MAAM8E,QAAN,EAAV,CAAP;MAC5BP,WAAWvE,MAAM+E,IAAjB,CAAJ,EAA4B,OAAO/E,MAAM+E,IAAN,EAAP;MACxB,CAACZ,KAAD,EAAQC,QAAR,EAAkBY,OAAlB,CAA0BhF,MAAM2B,QAAhC,IAA4C,CAAC,CAAjD,EAAoD,OAAOsD,gBAAgBjF,KAAhB,CAAP;MAChDuE,WAAWvE,MAAM2B,QAAjB,CAAJ,EAAgC,OAAO3B,MAAM2B,QAAN,EAAP;SACzBwC,MAAMtG,IAAN,CAAWmC,KAAX,CAAP;;;AAGF,SAASiF,eAAT,CAA0BjF,KAA1B,EAAiC;MACzBkF,QAAQ,EAAd;SACOC,KAAKT,SAAL,CAAe1E,KAAf,EAAsB,UAAC0C,GAAD,EAAM1C,KAAN,EAAgB;QACvCoF,SAASpF,KAAT,CAAJ,EAAqB;UACfkF,MAAMF,OAAN,CAAchF,KAAd,MAAyB,CAAC,CAA9B,EAAiC;;;YAG3BoC,IAAN,CAAWpC,KAAX;;WAEKA,KAAP;GAPK,CAAP;;;AAWF,AAAO,SAAS7C,MAAT,CAAiBkI,KAAjB,EAAwB;SACtB5J,OAAO0B,MAAP,CAAckI,KAAd,CAAP;;;AAGF,AAAO,SAASV,KAAT,CAAgB3E,KAAhB,EAAuB;SACrBA,UAAU,IAAV,IAAkBA,UAAUnE,SAAnC;;;AAGF,AAAO,SAASyJ,OAAT,CAAkBtF,KAAlB,EAAyB;;SAEvBmE,MAAMtG,IAAN,CAAWmC,KAAX,MAAsB,gBAA7B;;;;;;;;;;;AAkBF,AAAO,SAASuF,MAAT,CAAiB9C,MAAjB,EAAyB+C,QAAzB,EAAmC;WAC/B/C,UAAU,EAAnB;OACK,IAAMgD,CAAX,IAAgBhD,MAAhB,EAAwB;QAClBA,OAAO7G,cAAP,CAAsB6J,CAAtB,CAAJ,EAA8B;UACxBD,SAAS/C,OAAOgD,CAAP,CAAT,EAAoBA,CAApB,EAAuBhD,MAAvB,MAAmC,KAAvC,EAA8C;;;SAG3CA,MAAP;;;;;;;;;;;;;;AAcF,AAAO,SAASiD,MAAT,CAAiBjD,MAAjB,EAAyB;WACrB2C,SAAS3C,MAAT,IAAmBA,MAAnB,GAA4B,EAArC;MACMkD,OAAOtB,MAAM3I,SAAN,CAAgB2H,KAAhB,CAAsBxF,IAAtB,CAA2B4G,SAA3B,EAAsC,CAAtC,CAAb;OACK1F,OAAL,CAAa,UAAC6G,GAAD;WAASnK,OAAOiK,MAAP,CAAcjD,MAAd,EAAsBmD,GAAtB,CAAT;GAAb;SACOnD,MAAP;;;AAGF,AAAO,SAASoD,IAAT,CAAeC,GAAf,EAAoB;SAClBA,IAAIA,IAAIlD,MAAJ,GAAa,CAAjB,CAAP;;;AAGF,AAAO,SAASmD,IAAT,CAAeD,GAAf,EAAoB;MACnBE,IAAI,EAAV;MACMC,IAAI,EAAV;OACK,IAAIhD,IAAI,CAAR,EAAWiD,IAAIJ,IAAIlD,MAAxB,EAAgCK,IAAIiD,CAApC,EAAuC,EAAEjD,CAAzC,EAA4C;QACtC+C,EAAEpK,cAAF,CAAiBkK,IAAI7C,CAAJ,CAAjB,CAAJ,EAA8B;;;MAG5Bb,IAAF,CAAO0D,IAAI7C,CAAJ,CAAP;MACE6C,IAAI7C,CAAJ,CAAF,IAAY,CAAZ;;SAEKgD,CAAP;;;;;;;;;AASF,AAAO,SAASb,QAAT,CAAmBpF,KAAnB,EAA0B;MACzBpC,cAAcoC,KAAd,yCAAcA,KAAd,CAAN;SACOA,UAAU,IAAV,KAAmBpC,SAAS,QAAT,IAAqBA,SAAS,UAAjD,CAAP;;;;;;;;;;;AAWF,AAAO,SAASuI,KAAT,CAAgBC,KAAhB,EAAuBC,IAAvB,EAA6BC,IAA7B,EAAmC;MACpC7B,UAAU7B,MAAV,KAAqB,CAAzB,EAA4B;WACnBwD,KAAP;YACQ,CAAR;;SAEKE,QAAQ,CAAf;;MAEMR,MAAM,EAAZ;OACK,IAAI7C,IAAImD,KAAb,EAAoBnD,IAAIoD,IAAxB,EAA8BpD,KAAKqD,IAAnC,EAAyC;QACnClE,IAAJ,CAASa,CAAT;;SAEK6C,GAAP;;;ACxJF;AACA,IAAMS,eAAe,SAArB;AACA,IAAMC,eAAe,SAArB;AACA,AAAO,IAAMC,SAAS,IAAIC,MAAJ,CAAcH,aAAaI,MAA3B,SAAqCH,aAAaG,MAAlD,CAAf;AACP,AAAO,IAAMC,gBAAgB,IAAIF,MAAJ,SAAiBD,OAAOE,MAAxB,eAAtB;;;AAGP,AAAO,IAAME,UAAU,OAAhB;AACP,AAAO,IAAMC,SAAS,oBAAf;AACP,AAAO,IAAMC,OAAO,YAAb;;;AAGP,AAAO,IAAMC,aAAa,YAAnB;AACP,AAAO,IAAMC,YAAY,IAAIP,MAAJ,YAAoBD,OAAOE,MAA3B,qBAAlB;AACP,AAAO,IAAMO,UAAU,IAAIR,MAAJ,SAAiBD,OAAOE,MAAxB,SAAkCI,KAAKJ,MAAvC,SAAiDG,OAAOH,MAAxD,OAAhB;AACP,AAAO,IAAMQ,WAAW,IAAIT,MAAJ,CAAcM,WAAWL,MAAzB,cAAwCK,WAAWL,MAAnD,SAA6DM,UAAUN,MAAvE,QAAjB;;;AAGP,AAAO,IAAMS,aAAa,IAAIV,MAAJ,SAAiBS,SAASR,MAA1B,SAAoCG,OAAOH,MAA3C,OAAnB;AACP,AAAO,IAAMR,UAAQ,IAAIO,MAAJ,SAAiBU,WAAWT,MAA5B,cAA2CS,WAAWT,MAAtD,SAAd;AACP,AAAO,IAAMU,eAAe,IAAIX,MAAJ,UAAkBU,WAAWT,MAA7B,gBAA8CS,WAAWT,MAAzD,UAArB;;AAEP,AAAO,IAAM3G,QAAQ,IAAI0G,MAAJ,SAAiBS,SAASR,MAA1B,SAAoCO,QAAQP,MAA5C,SAAsDR,QAAMQ,MAA5D,OAAd;;;AAGP,AAAO,IAAMW,OAAO,IAAIZ,MAAJ,SAAiBM,WAAWL,MAA5B,qBAAkD3G,MAAM2G,MAAxD,OAAb;AACP,AAAO,IAAMY,cAAc,IAAIb,MAAJ,OAAeM,WAAWL,MAA1B,mBAA8C3G,MAAM2G,MAApD,QAA+D,GAA/D,CAApB;;;AAGP,AAAO,IAAMa,UAAU,IAAId,MAAJ,YAAoBM,WAAWL,MAA/B,2BAAhB;AACP,AAAO,IAAMc,cAAc,IAAIf,MAAJ,OAAeQ,QAAQP,MAAvB,QAAkC,GAAlC,CAApB;AACP,AAAO,IAAMe,eAAe,IAAIhB,MAAJ,OAAeS,SAASR,MAAxB,OAArB;AACP,AAAO,IAAMgB,aAAa,IAAIjB,MAAJ,OAAeI,OAAOH,MAAtB,OAAnB;AACP,AAAO,IAAMiB,WAAW,IAAIlB,MAAJ,OAAeK,KAAKJ,MAApB,QAA+B,GAA/B,CAAjB;AACP,AAAO,IAAMkB,aAAa,IAAInB,MAAJ,OAAeD,OAAOE,MAAtB,OAAnB;AACP,AAAO,IAAMmB,YAAY,IAAIpB,MAAJ,OAAeW,aAAaV,MAA5B,OAAlB;AACP,AAAO,IAAMoB,cAAc,IAAIrB,MAAJ,OAAeG,QAAQF,MAAvB,OAApB;;;AAGP,AAAO,IAAMqB,mBAAmB,IAAItB,MAAJ,SAAiBM,WAAWL,MAA5B,mBAAgD3G,MAAM2G,MAAtD,CAAzB;AACP,AAAO,IAAMsB,YAAY,IAAIvB,MAAJ,CAAcsB,iBAAiBrB,MAA/B,kBAAkDqB,iBAAiBrB,MAAnE,QAAlB;AACP,AAAO,IAAMuB,SAAS,IAAIxB,MAAJ,CAAcM,WAAWL,MAAzB,oBAA8CsB,UAAUtB,MAAxD,SAAoE,GAApE,CAAf;AACP,AAAO,IAAMwB,gBAAgB,IAAIzB,MAAJ,OAAeM,WAAWL,MAA1B,sBAAiDsB,UAAUtB,MAA3D,SAAtB;AACP,AAAO,IAAMyB,aAAa,IAAI1B,MAAJ,OAAeyB,cAAcxB,MAA7B,OAAnB;;AAEP,AAAO,IAAM0B,YAAY,CACvB,UADuB,EAEvB,WAFuB,EAGvB,gCAHuB,CAAlB;;AAMP,AAAO,SAASC,SAAT,CAAoBC,GAApB,EAAyB;SACvBR,YAAYS,IAAZ,CAAiBD,GAAjB,CAAP;;;AAGF,AAAO,SAASE,SAAT,CAAoBF,GAApB,EAAyB;SACvBd,YAAYe,IAAZ,CAAiBD,GAAjB,CAAP;;;AAOF,AAAO,SAASG,UAAT,CAAqBH,GAArB,EAA0B;SACxBb,aAAac,IAAb,CAAkBD,GAAlB,CAAP;;;AAGF,AAAO,SAASI,UAAT,CAAqBJ,GAArB,EAA0B;SACxBvI,MAAM4I,IAAN,CAAWL,GAAX,CAAP;;;AAGF,AAAO,SAASM,YAAT,CAAuBN,GAAvB,EAA4B;MAC7BO,MAAMP,IAAIQ,KAAJ,CAAUpB,UAAV,CAAV;MACImB,GAAJ,EAAS;WACAE,OAAOT,GAAP,CAAP;;QAEIA,IAAIQ,KAAJ,CAAUnB,QAAV,CAAN;MACIkB,GAAJ,EAAS;WACAP,IAAIU,WAAJ,OAAsB,MAA7B;;QAEIV,IAAIQ,KAAJ,CAAUlB,UAAV,CAAN;MACIiB,GAAJ,EAAS;WACAP,IAAIlF,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd,CAAP;;QAEI,IAAI9B,SAAJ,qBAA+BgH,GAA/B,mBAAN;;;AClFF,SAASW,SAAT,GAAsB;OACf9J,IAAL,GAAY,KAAKR,WAAL,CAAiBQ,IAA7B;MACIyB,MAAMsI,iBAAV,EAA6B;UACrBA,iBAAN,CAAwB,IAAxB,EAA8B,KAAKvK,WAAnC;;;;AAIJ,SAASwK,eAAT,CAA0BtL,GAA1B,EAA+BuL,KAA/B,EAAsC;YAC1BxL,IAAV,CAAe,IAAf;;OAEKyL,KAAL,GAAaD,MAAMC,KAAnB;OACKC,IAAL,GAAYF,MAAME,IAAlB;OACKC,IAAL,GAAYH,MAAMG,IAAlB;;MAEMpM,UAAUqM,UAAUJ,MAAMC,KAAhB,EAAuBD,MAAME,IAA7B,CAAhB;OACKG,OAAL,GAAeC,UAAU7L,IAAI4L,OAAd,EAAuBL,KAAvB,CAAf;OACKO,KAAL,GAAaxM,UACX,IADW,IACH,KAAKwM,KAAL,IAAc,KAAKF,OADhB,KAER5L,IAAI8L,KAAJ,GAAY,YAAY9L,IAAI8L,KAA5B,GAAoC,EAF5B,CAAb;;;AAKF,AAAO,SAASC,iBAAT,CAA4BH,OAA5B,EAAqCL,KAArC,EAA4C;kBACjCxL,IAAhB,CAAqB,IAArB,EAA2B,EAAE6L,SAASA,OAAX,EAA3B,EAAiDL,KAAjD;;AAEFQ,kBAAkBnO,SAAlB,GAA8BoO,MAAA,CAASjJ,MAAMnF,SAAf,CAA9B;AACAmO,kBAAkBnO,SAAlB,CAA4BkD,WAA5B,GAA0CiL,iBAA1C;;AAEA,AAAO,SAASE,UAAT,CAAqBC,CAArB,EAAwBX,KAAxB,EAA+B;QACpC,CAAS,IAAT,EAAeW,CAAf;OACKC,aAAL,GAAqBD,CAArB;;kBAEgBnM,IAAhB,CAAqB,IAArB,EAA2BmM,CAA3B,EAA8BX,KAA9B;;AAEFU,WAAWrO,SAAX,GAAuBoO,MAAA,CAASjJ,MAAMnF,SAAf,CAAvB;AACAqO,WAAWrO,SAAX,CAAqBkD,WAArB,GAAmCmL,UAAnC;;AAEA,AAAO,SAASG,WAAT,CAAsBF,CAAtB,EAAyBG,GAAzB,EAA8B;;MAE/BH,aAAaE,WAAjB,EAA8B;WACrBF,CAAP;;QAEF,CAAS,IAAT,EAAeA,CAAf;OACKC,aAAL,GAAqBD,CAArB;;kBAEgBnM,IAAhB,CAAqB,IAArB,EAA2BmM,CAA3B,EAA8BG,IAAId,KAAlC;;AAEFa,YAAYxO,SAAZ,GAAwBoO,MAAA,CAASjJ,MAAMnF,SAAf,CAAxB;AACAwO,YAAYxO,SAAZ,CAAsBkD,WAAtB,GAAoCsL,WAApC;;AAEA,AAAO,SAASE,gBAAT,CAA2BV,OAA3B,EAAoC;YAC/B7L,IAAV,CAAe,IAAf;OACK6L,OAAL,GAAeA,UAAU,EAAzB;;AAEFU,iBAAiB1O,SAAjB,GAA6BoO,MAAA,CAASjJ,MAAMnF,SAAf,CAA7B;AACA0O,iBAAiB1O,SAAjB,CAA2BkD,WAA3B,GAAyCwL,gBAAzC;;AAEA,AAAO,SAASC,cAAT,CAAyBX,OAAzB,EAAkC;YAC7B7L,IAAV,CAAe,IAAf;OACK6L,OAAL,GAAeA,UAAU,EAAzB;;AAEFW,eAAe3O,SAAf,GAA2BoO,MAAA,CAASjJ,MAAMnF,SAAf,CAA3B;AACA2O,eAAe3O,SAAf,CAAyBkD,WAAzB,GAAuCyL,cAAvC;;AAEA,SAASZ,SAAT,CAAoBH,KAApB,EAA2BC,IAA3B,EAAiC;MACzBe,QAAQhB,MAAMiB,KAAN,CAAY,IAAZ,CAAd;MACMC,QAAQC,KAAKC,GAAL,CAASnB,OAAO,CAAhB,EAAmB,CAAnB,CAAd;MACMoB,MAAMF,KAAKG,GAAL,CAASrB,OAAO,CAAhB,EAAmBe,MAAM1H,MAAzB,CAAZ;;MAEMxF,UAAU0M,KAAA,CACPU,KADO,EACAG,MAAM,CADN,EAEbE,GAFa,CAET;WAAK,CACP3E,MAAMqD,IAAP,GAAe,KAAf,GAAuB,KADf,EAERuB,MAAM5E,CAAN,EAASyE,GAAT,CAFQ,EAGR,IAHQ,EAIRL,MAAMpE,IAAI,CAAV,CAJQ,EAKR6E,IALQ,CAKH,EALG,CAAL;GAFS,EAQbA,IARa,CAQR,IARQ,CAAhB;;SAUO3N,OAAP;;;AAGF,SAAS0N,KAAT,CAAgBE,CAAhB,EAAmBN,GAAnB,EAAwB;MAChB9H,SAAS,CAAC8H,MAAM,EAAP,EAAW9H,MAA1B;MACM2F,MAAMyC,IAAI,EAAhB;MACMC,QAAQ5G,MAAMzB,SAAS2F,IAAI3F,MAAnB,EAA2BmI,IAA3B,CAAgC,GAAhC,CAAd;SACOE,QAAQ1C,GAAf;;;AAGF,SAASoB,SAAT,CAAoBuB,GAApB,EAAyB7B,KAAzB,EAAgC;QACxB6B,OAAO,EAAb;MACI7B,MAAMG,IAAV,EAAgB;WACP,YAAYH,MAAMG,IAAzB;;MAEEH,MAAME,IAAV,EAAgB;WACP,YAAYF,MAAME,IAAzB;;SAEK2B,GAAP;;;AChGa,iBAAUC,SAAV,EAAqBzB,OAArB,EAA8B;MACvC,CAACyB,SAAL,EAAgB;cACJzB,uBAAqByB,SAArB,gBAAV;UACM,IAAId,cAAJ,CAAmBX,OAAnB,CAAN;;;;ACDJ,IAAM0B,QAAQ;UACJ,kBAAY;WACX,KAAKC,QAAL,CAAcC,MAAd,CAAqB,UAACC,GAAD,EAAMC,GAAN;aAAc1B,MAAA,CAASyB,GAAT,EAAcC,GAAd,CAAd;KAArB,EAAuD1B,MAAA,CAAS,IAAT,CAAvD,CAAP;GAFU;OAIP,aAAU2B,OAAV,EAAgB;;;QACbC,QAAQ,KAAKC,iBAAL,CAAuBF,OAAvB,CAAd;QACMG,QAAQ,KAAKC,cAAL,CAAoBH,MAAM,CAAN,CAApB,KAAiC5B,IAAA,CAAO,KAAKuB,QAAZ,CAA/C;WACOK,MAAMJ,MAAN,CAAa,UAACtL,QAAD,EAAQ0C,GAAR;aAAgB,MAAKoJ,YAAL,CAAkB9L,QAAlB,EAAyB0C,GAAzB,CAAhB;KAAb,EAA4DkJ,KAA5D,CAAP;GAPU;OASP,aAAUH,OAAV,EAAgBM,CAAhB,EAAmB;QAChBL,QAAQ,KAAKC,iBAAL,CAAuBF,OAAvB,CAAd;QACIG,QAAQ,KAAKC,cAAL,CAAoBH,MAAM,CAAN,CAApB,KAAiC5B,IAAA,CAAO,KAAKuB,QAAZ,CAA7C;UACMW,IAAN,CAAW,UAACtJ,GAAD,EAAMO,CAAN,EAAY;UACjB,CAAC6G,QAAA,CAAW8B,KAAX,CAAL,EAAwB;eACf,IAAP;;UAEE3I,MAAMyI,MAAM9I,MAAN,GAAe,CAAzB,EAA4B;cACpBF,GAAN,IAAaqJ,CAAb;eACO,IAAP;;UAEElQ,cAAc+P,MAAMlJ,GAAN,CAAlB,EAA8B;cACtBA,GAAN,IAAa,EAAb;;cAEMkJ,MAAMlJ,GAAN,CAAR;KAXF;GAZU;WA0BH,iBAAU6I,GAAV,EAAe;WACf,KAAKF,QAAL,CAAcY,OAAd,CAAsBV,GAAtB,CAAP;GA3BU;QA6BN,cAAUA,GAAV,EAAe;WACZ,KAAKF,QAAL,CAAcjJ,IAAd,CAAmBmJ,GAAnB,CAAP;GA9BU;OAgCP,aAAUA,GAAV,EAAe;QACd,CAAC9G,UAAU7B,MAAf,EAAuB;aACd,KAAKyI,QAAL,CAAcxI,GAAd,EAAP;;QAEII,IAAI,KAAKoI,QAAL,CAAca,SAAd,CAAwB;aAASN,UAAUL,GAAnB;KAAxB,CAAV;QACItI,MAAM,CAAC,CAAX,EAAc;YACN,IAAI1B,SAAJ,CAAc,6BAAd,CAAN;;WAEK,KAAK8J,QAAL,CAAcc,MAAd,CAAqBlJ,CAArB,EAAwB,CAAxB,EAA2B,CAA3B,CAAP;GAxCU;kBA0CI,wBAAUP,GAAV,EAAewF,SAAf,EAAuB;gBAC5BA,aAAW;aAAM,IAAN;KAApB;SACK,IAAIjF,IAAI,KAAKoI,QAAL,CAAczI,MAAd,GAAuB,CAApC,EAAuCK,KAAK,CAA5C,EAA+CA,GAA/C,EAAoD;UAC5CmJ,YAAY,KAAKf,QAAL,CAAcpI,CAAd,CAAlB;UACI,CAACiF,UAAOkE,SAAP,CAAL,EAAwB;UACpB1J,OAAO0J,SAAX,EAAsB;eACbA,SAAP;;;WAGG,IAAP;GAnDU;gBAqDE,sBAAU1O,GAAV,EAAegF,GAAf,EAAoB;QAC5B8I,YAAJ;QACI1B,KAAA,CAAQpM,GAAR,CAAJ,EAAkB;YACV7B,SAAN;KADF,MAEO;YACCiJ,SAASpH,GAAT,CAAN;YACMgF,QAAQ,MAAR,GAAiB2J,SAAS3O,GAAT,CAAjB,GAAiCA,IAAIgF,GAAJ,CAAvC;UACIoH,UAAA,CAAapM,IAAI4O,qBAAjB,CAAJ,EAA6C;cACrC5O,IAAI4O,qBAAJ,CAA0B5J,GAA1B,CAAN;;;QAGAoH,KAAA,CAAQ0B,GAAR,KAAgB,KAAKe,IAAL,CAAUC,gBAA9B,EAAgD;YACxC,IAAIjL,SAAJ,0BAAqCmB,GAArC,CAAN;;WAEK8I,GAAP;GAnEU;;;;;;;;;;qBA8EO,2BAAUjD,GAAV,EAAe;UAC1B3D,OAAO2D,GAAP,CAAN;QACMkE,MAAM,EAAZ;QACIrN,OAAO,EAAX;QACIsN,UAAJ;QACIzJ,IAAI,CAAR;WACOA,IAAIsF,IAAI3F,MAAf,EAAuB;cACb2F,IAAItF,CAAJ,CAAR;aACO,GAAL;;;cAGQ0J,YAAYpE,IAAItF,IAAI,CAAR,CAAlB;cACI,OAAOuF,IAAP,CAAYmE,SAAZ,CAAJ,EAA4B;;gBACtBpE,IAAIvD,OAAJ,CAAY2H,SAAZ,EAAuB1J,IAAI,CAA3B,CAAJ;mBACOyJ,MAAM,CAAC,CAAd,kBAA+BC,SAA/B,UAA6CpE,GAA7C;mBACOA,IAAIlF,KAAJ,CAAUJ,IAAI,CAAd,EAAiByJ,CAAjB,CAAP;;gBAEIA,IAAI,CAAR;WALF,MAMO;;gBACDE,kBAAkBrE,GAAlB,EAAuBtF,IAAI,CAA3B,CAAJ;mBACOyJ,MAAM,CAAC,CAAd,sBAAmCnE,GAAnC;mBACOA,IAAIlF,KAAJ,CAAUJ,IAAI,CAAd,EAAiByJ,CAAjB,CAAP;gBACI,CAACG,SAAA,CAAkBzN,IAAlB,CAAL,EAA8B;;qBACrBwF,OAAO,KAAKkI,GAAL,CAAS1N,IAAT,CAAP,CAAP;;;gBAGEsN,IAAI,CAAR;;;aAGC,GAAL;;;;;;;kBAKUnE,IAAItF,CAAJ,CAAR;;;;;;QAMF,CAACwJ,IAAI7J,MAAT,EAAiB;YACT,IAAIrB,SAAJ,oBAA+BgH,GAA/B,OAAN;;WAEKkE,GAAP;;aAESrK,IAAT,GAAiB;UACXhD,KAAKwD,MAAT,EAAiB6J,IAAIrK,IAAJ,CAAShD,IAAT;aACV,EAAP;;;CA7HN;;AAkIA,SAAS0F,QAAT,CAAmBpH,GAAnB,EAAwB;MAClBoM,UAAA,CAAapM,IAAImH,SAAjB,CAAJ,EAAiC;WACxBnH,IAAImH,SAAJ,EAAP;;MAEEiF,UAAA,CAAapM,IAAIoH,QAAjB,CAAJ,EAAgC;WACvBpH,IAAIoH,QAAJ,EAAP;;SAEKpH,GAAP;;;AAGF,SAAS2O,QAAT,CAAmB3O,GAAnB,EAAwB;MAClB,CAACoM,KAAA,CAAQpM,IAAIqP,IAAZ,CAAL,EAAwB,OAAOrP,IAAIqP,IAAX;MACpBjD,OAAA,CAAUpM,GAAV,KAAkBoM,QAAA,CAAWpM,GAAX,CAAtB,EAAuC,OAAOA,IAAIkF,MAAX;SAChClF,IAAIqP,IAAX;;;AAGF,SAASH,iBAAT,CAA4BrE,GAA5B,EAAiCiC,KAAjC,EAAwC;MAClCZ,QAAQ,CAAZ,CADsC;OAEjC,IAAI3G,IAAIuH,KAAb,EAAoBvH,IAAIsF,IAAI3F,MAA5B,EAAoCK,GAApC,EAAyC;QACnCsF,IAAItF,CAAJ,MAAW,GAAf,EAAoB;;;QAGhBsF,IAAItF,CAAJ,MAAW,GAAf,EAAoB;;UAEd2G,UAAU,CAAd,EAAiB;eACR3G,CAAP;;;;SAIC,CAAC,CAAR;;;AAGF,AAAO,SAAS+J,OAAT,CAAkBzB,GAAlB,EAAuBgB,IAAvB,EAA6B;MAC5BU,iBAAiB;qBACJ,IADI;sBAEH,KAFG;oBAGL,KAHK;YAIb,EAJa;UAKf;GALR;MAOMrB,QAAQ9B,MAAA,CAASsB,KAAT,CAAd;QACMmB,IAAN,GAAazC,MAAA,CAASmD,cAAT,EAAyBV,IAAzB,CAAb;QACMlB,QAAN,GAAiB,CAACE,OAAO,EAAR,CAAjB;SACOK,KAAP;;;ACjLF;;;;;;AAMA,AAAO,SAASsB,SAAT,CAAoBpK,QAApB,EAA8B0C,QAA9B,EAAwC;MACzC2H,MAAMlN,QAAQJ,MAAR,CAAe,IAAIgB,KAAJ,CAAU,MAAV,CAAf,CAAV;WACS9B,OAAT,CAAiB,UAAUqO,IAAV,EAAgBC,GAAhB,EAAqB;UAC9BF,IAAIG,KAAJ,CAAU;aAAK9H,SAAS4H,IAAT,EAAeC,GAAf,EAAoBvK,QAApB,CAAL;KAAV,CAAN;GADF;SAGOqK,GAAP;;;;;;;;;AASF,AAAO,SAASI,SAAT,CAAoBzK,QAApB,EAA8B0C,QAA9B,EAAwC;MACzC2H,MAAMlN,QAAQL,OAAR,CAAgB,MAAhB,CAAV;MACMG,SAAS,EAAf;WACShB,OAAT,CAAiB,UAAUqO,IAAV,EAAgBC,GAAhB,EAAqB;UAC9BF,IACHjN,IADG,CACE;aAAMsF,SAAS4H,IAAT,EAAeC,GAAf,EAAoBvK,QAApB,CAAN;KADF,EAEH5C,IAFG,CAEE;aAAKH,OAAOqC,IAAP,CAAYoL,CAAZ,CAAL;KAFF,CAAN;GADF;SAKOL,IAAIjN,IAAJ,CAAS;WAAMH,MAAN;GAAT,CAAP;;;ACvBF,IAAM0N,gBAAgB3D,SAAA,CAAY4D,GAAGC,IAAf,CAAtB;AACA,IAAMC,gBAAgB9D,SAAA,CAAY4D,GAAGG,QAAf,CAAtB;;AAEA;oEAAO,kBAAwBC,QAAxB,EAAkCC,IAAlC,EAAwCC,OAAxC;;;;;;;;gBACD,CAACvC,KAAKwC,OAAL,CAAaH,QAAb,CAAL,EAA6B;0BACfE,QAAQC,OAApB;;mBAEKD,QAAQD,IAAR,CAAaG,MAAb,CAAoBH,QAAQ,EAA5B,CAAP;mBACOjE,IAAA,CAAOiE,IAAP,CAAP;iBALK,GAMSA,KAAKlD,GAAL,CAAS;qBAAQY,KAAK7L,OAAL,CAAamO,IAAb,EAAmBD,QAAnB,CAAR;aAAT,CANT;8CAOEZ,UAAUxB,KAAV;iFAAiB,iBAAMD,OAAN;;;;;;;+BAEdgC,cAAchC,OAAd,CAFc;;;yDAGbA,OAHa;;;;;;oCAKlB/B,OAAF,GAAe,YAAEyE,IAAjB,2BAA2CL,QAA3C,aAA2DC,IAA3D;;;;;;;;;eALG;;;;;gBAPF;;;;;;;;GAAP;;kBAAsBnO,OAAtB;;;;;AAkBA;qEAAO,kBAAqBkO,QAArB;;;;;8CACEF,cAAcE,QAAd,EAAwB,MAAxB,CADF;;;;;;;;GAAP;;kBAAsBM,IAAtB;;;;;ACxBe,SAASC,cAAT,CAAyBC,MAAzB,EAAiCN,OAAjC,EAA0C;YAC7CtI,OAAO,EAAE6I,QAAQ,IAAV,EAAP,EAAyBP,OAAzB,CAAV;MACIQ,QAAQ,KAAZ;;SAEOzP,OAAP,CAAe,UAACsK,KAAD,EAAQpG,CAAR,EAAc;QACvBwL,eAAepF,KAAf,EAAsBmF,KAAtB,EAA6BR,OAA7B,CAAJ,EAA2C;eAChCM,OAAOrL,IAAI,CAAX,CAAT,EAAwB+K,QAAQO,MAAhC;;;QAGElF,MAAMzL,IAAN,KAAe,KAAf,IAAwByL,MAAMjK,IAAN,KAAe,KAA3C,EAAkDoP,QAAQ,IAAR;QAC9CnF,MAAMzL,IAAN,KAAe,KAAf,IAAwByL,MAAMjK,IAAN,KAAe,QAA3C,EAAqDoP,QAAQ,KAAR;;QAEjDE,gBAAgBrF,KAAhB,EAAuBmF,KAAvB,EAA8BR,OAA9B,CAAJ,EAA4C;gBAChCM,OAAOrL,IAAI,CAAX,CAAV,EAAyB+K,QAAQO,MAAjC;;GATJ;;;AAcF,SAASE,cAAT,CAAyBpF,KAAzB,EAAgCmF,KAAhC,EAAuCR,OAAvC,EAAgD;MAC1CQ,KAAJ,EAAW,OAAO,KAAP;MACPnF,MAAMzL,IAAN,KAAe,KAAnB,EAA0B,OAAOyL,MAAMsF,SAAN,IAAmBX,QAAQY,aAAlC;MACtBvF,MAAMzL,IAAN,KAAe,OAAnB,EAA4B,OAAOyL,MAAMsF,SAAN,IAAmBX,QAAQa,eAAlC;;;AAG9B,SAASH,eAAT,CAA0BrF,KAA1B,EAAiCmF,KAAjC,EAAwCR,OAAxC,EAAiD;MAC3CQ,KAAJ,EAAW,OAAO,KAAP;MACPnF,MAAMzL,IAAN,KAAe,KAAnB,EAA0B,OAAOyL,MAAMyF,UAAN,IAAoBd,QAAQe,cAAnC;MACtB1F,MAAMzL,IAAN,KAAe,OAAnB,EAA4B,OAAOyL,MAAMyF,UAAN,IAAoBd,QAAQgB,gBAAnC;;;AAG9B,SAASC,QAAT,CAAmB5F,KAAnB,EAA0BkF,MAA1B,EAAkC;MAC5B,CAAClF,KAAD,IAAUA,MAAMzL,IAAN,KAAe,MAA7B,EAAqC;;MAE/BsR,QAAQX,SAAS,OAAT,GAAmB,YAAjC;QACMvO,KAAN,GAAcqJ,MAAMrJ,KAAN,CAAYmP,OAAZ,CAAoBD,KAApB,EAA2B,EAA3B,CAAd;;;AAGF,SAASE,SAAT,CAAoB/F,KAApB,EAA2BkF,MAA3B,EAAmC;MAC7B,CAAClF,KAAD,IAAUA,MAAMzL,IAAN,KAAe,MAA7B,EAAqC;;MAE/ByR,SAASd,SAAS,OAAT,GAAmB,eAAlC;QACMvO,KAAN,GAAcqJ,MAAMrJ,KAAN,CAAYmP,OAAZ,CAAoBE,MAApB,EAA4B,EAA5B,CAAd;;;ACnCK,SAASC,KAAT,CAAgBhG,KAAhB,EAAuBE,IAAvB,EAA6BwE,OAA7B,EAAsC;SACpClE,QAAA,CAAWR,KAAX,CAAP,EAA0B,eAA1B;;MAEMiG,UAAU,4CAAhB;MACIC,aAAa,CAAjB;MACMC,aAAaC,WAAWpG,KAAX,CAAnB;MACIqG,eAAe,CAAnB;MACMrB,SAAS,EAAf;;OAEK,IAAIvF,KAAT,EAAiBA,QAAQwG,QAAQ3G,IAAR,CAAaU,KAAb,CAAzB,EAA+CqG,eAAeJ,QAAQK,SAAtE,EAAiF;QAC3E7G,MAAM8G,KAAN,GAAcF,YAAlB,EAAgC;aACvBvN,IAAP,CAAY0N,eAAeH,YAAf,EAA6B5G,MAAM8G,KAAnC,CAAZ;;WAEKzN,IAAP,CAAY2G,MAAM,CAAN,IACRgH,cAAchH,MAAM,CAAN,CAAd,EAAwBA,MAAM,CAAN,EAASiH,IAAT,EAAxB,EAAyCjH,MAAM8G,KAA/C,CADQ,GAERI,gBAAgBlH,MAAM,CAAN,CAAhB,EAA0BA,MAAM,CAAN,EAASiH,IAAT,EAA1B,EAA2CjH,MAAM8G,KAAjD,CAFJ;;MAIEvG,MAAM1G,MAAN,GAAe+M,YAAnB,EAAiC;WACxBvN,IAAP,CAAY0N,eAAeH,YAAf,EAA6BrG,MAAM1G,MAAnC,CAAZ;;iBAEa0L,MAAf,EAAuBN,OAAvB;SACOM,MAAP;;WAESyB,aAAT,CAAwBG,GAAxB,EAA6BlQ,QAA7B,EAAoCmQ,GAApC,EAAyC;QACjCpH,QAAQ/I,SAAM+I,KAAN,CAAY8D,OAAZ,CAAd;QACMxD,QAAQ;YACN,KADM;cAEJmG,UAFI;YAGNC,WAAW3C,GAAX,CAAeqD,GAAf,CAHM;iBAIDD,IAAI7M,KAAJ,CAAU,CAAV,EAAa,CAAb,MAAoB,KAJnB;kBAKA6M,IAAI7M,KAAJ,CAAU,CAAC,CAAX,MAAkB,KALlB;cAAA;qBAAA;kBAAA;;KAAd;QAWI,CAAC0F,KAAL,EAAY;YACJ,IAAIc,iBAAJ,uBAA4CR,KAA5C,CAAN;;UAEIjK,IAAN,GAAa2J,MAAM,CAAN,CAAb;UACMqH,IAAN,GAAarH,MAAM,CAAN,CAAb;WACOM,KAAP;;;WAGO4G,eAAT,CAA0BC,GAA1B,EAA+BlQ,QAA/B,EAAsCmQ,GAAtC,EAA2C;WAClC;YACC,OADD;YAECV,WAAW3C,GAAX,CAAeqD,GAAf,CAFD;iBAGMD,IAAI7M,KAAJ,CAAU,CAAV,EAAa,CAAb,MAAoB,KAH1B;kBAIO6M,IAAI7M,KAAJ,CAAU,CAAC,CAAX,MAAkB,KAJzB;cAAA;qBAAA;kBAAA;;KAAP;;;WAYOyM,cAAT,CAAyBtF,KAAzB,EAAgCG,GAAhC,EAAqC;QAC7B0F,eAAe/G,MAAMjG,KAAN,CAAYmH,KAAZ,EAAmBG,GAAnB,CAArB;iBACab,IAAA,CAAQuG,YAAD,CAAe9F,KAAf,CAAqB,IAArB,CAAP,EAAmC3H,MAAhD;;WAEO;YACC,MADD;WAEAyN,YAFA;aAGEA;KAHT;;;;AAQJ,SAASX,UAAT,CAAqBY,IAArB,EAA2B;MACrBC,mBAAmB,CAAvB;MACIC,iBAAiB,CAAC,CAAtB;;SAEO;SACA,aAAUL,GAAV,EAAe;UACZ7F,QAAQgG,KAAKjN,KAAL,CAAWmN,iBAAiB,CAA5B,EAA+BL,GAA/B,EAAoC5F,KAApC,CAA0C,IAA1C,CAAd;0BACoBD,MAAM1H,MAAN,GAAe,CAAnC;uBACiBuN,GAAjB;aACOI,mBAAmB,CAA1B;;GALJ;;;ACjFa,oBAAUE,QAAV,EAAoB;SAC1B;UACC,WAACvK,CAAD,EAAIwK,CAAJ;aAAUxK,MAAMwK,CAAhB;KADD;UAEC,WAACxK,CAAD,EAAIwK,CAAJ;aAAUxK,MAAMwK,CAAhB;KAFD;SAGA,WAACxK,CAAD,EAAIwK,CAAJ;aAAUxK,MAAM,IAAN,IAAcwK,MAAM,IAApB,IAA4BxK,IAAIwK,CAA1C;KAHA;SAIA,WAACxK,CAAD,EAAIwK,CAAJ;aAAUxK,MAAM,IAAN,IAAcwK,MAAM,IAApB,IAA4BxK,IAAIwK,CAA1C;KAJA;UAKC,WAACxK,CAAD,EAAIwK,CAAJ;aAAUxK,MAAM,IAAN,IAAcwK,MAAM,IAApB,IAA4BxK,KAAKwK,CAA3C;KALD;UAMC,WAACxK,CAAD,EAAIwK,CAAJ;aAAUxK,MAAM,IAAN,IAAcwK,MAAM,IAApB,IAA4BxK,KAAKwK,CAA3C;KAND;gBAOO,kBAACxK,CAAD,EAAIwK,CAAJ,EAAU;UAChB,CAACxK,CAAL,EAAQ,OAAO,KAAP;UACJ,OAAOA,EAAElB,OAAT,KAAqB,UAAzB,EAAqC,OAAO,KAAP;aAC9BkB,EAAElB,OAAF,CAAU0L,CAAV,IAAe,CAAC,CAAvB;KAVG;WAYE,aAACxK,CAAD,EAAIwK,CAAJ;aAAUD,SAASvK,CAAT,KAAeuK,SAASC,CAAT,CAAzB;KAZF;UAaC,YAACxK,CAAD,EAAIwK,CAAJ;aAAUD,SAASvK,CAAT,KAAeuK,SAASC,CAAT,CAAzB;;GAbR;;;ACGF,IAAMrI,cAAYsI,UAAUF,QAAV,CAAlB;;AAEA,AAAO,SAASG,OAAT,CAAkBC,GAAlB,EAAuBjF,KAAvB,EAA8B;SAC5BA,KAAP,EAAc,oCAAd;MACMkF,cAAcjE,SAApB;MACI9D,cAAJ;OACK,IAAI9F,IAAI,CAAb,EAAgBA,IAAI6N,YAAYlO,MAAhC,EAAwCK,GAAxC,EAA6C;QACrC8N,aAAaD,YAAY7N,CAAZ,CAAnB;QACM+N,QAAQ,IAAItK,MAAJ,QAAgBmG,aAAA,CAAsBlG,MAAtC,UAAiDoK,WAAWpK,MAA5D,UAAuEkG,aAAA,CAAsBlG,MAA7F,QAAd;QACKoC,QAAQ8H,IAAI9H,KAAJ,CAAUiI,KAAV,CAAb,EAAgC;UACxB9K,IAAI0K,QAAQ7H,MAAM,CAAN,CAAR,EAAkB6C,KAAlB,CAAV;UACMqF,KAAK5I,YAAUU,MAAM,CAAN,EAASiH,IAAT,EAAV,CAAX;UACMU,IAAIE,QAAQ7H,MAAM,CAAN,CAAR,EAAkB6C,KAAlB,CAAV;aACOqF,GAAG/K,CAAH,EAAMwK,CAAN,CAAP;;;;MAIC3H,QAAQ8H,IAAI9H,KAAJ,CAAU8D,SAAV,CAAb,EAA4C;QACpCqE,MAAMC,UAAUpI,MAAM,CAAN,CAAV,EAAoB6C,KAApB,CAAZ;QACMwF,OAAOD,UAAUpI,MAAM,CAAN,CAAV,EAAoB6C,KAApB,CAAb;QACMzF,QAAQ,EAAd;SACK,IAAIuG,IAAIwE,GAAb,EAAkBxE,KAAK0E,IAAvB,EAA6B1E,GAA7B,EAAkC;YAC1BtK,IAAN,CAAWsK,CAAX;;WAEKvG,KAAP;;;SAGKgL,UAAUN,GAAV,EAAejF,KAAf,CAAP;;;AAGF,AAAO,SAASuF,SAAT,CAAoB5I,GAApB,EAAyBqD,KAAzB,EAAgC;QAC/BrD,OAAOA,IAAIyH,IAAJ,EAAb;MACI,CAACzH,GAAL,EAAU,OAAO1M,SAAP;;MAENgR,SAAA,CAAkBtE,GAAlB,CAAJ,EAA4B;WACnBsE,YAAA,CAAqBtE,GAArB,CAAP;;MAEEsE,UAAA,CAAmBtE,GAAnB,CAAJ,EAA6B;WACpBqD,MAAMkB,GAAN,CAAUvE,GAAV,CAAP;;QAEI,IAAIhH,SAAJ,oBAA8BgH,GAA9B,iBAAN;;;AAGF,AAAO,SAASkI,QAAT,CAAmBjF,GAAnB,EAAwB;SACtB,CAAC6F,QAAQ7F,GAAR,CAAR;;;AAGF,AAAO,SAAS6F,OAAT,CAAkB7F,GAAlB,EAAuB;SACrBA,QAAQ,KAAR,IAAiB3P,cAAc2P,GAA/B,IAAsCA,QAAQ,IAArD;;;AC/CF,IAAM8F,SAAS;;sEACI,kBAAgBC,SAAhB,EAA2B3F,KAA3B;;2EAiBf,iBAA+B4F,QAA/B;;;;;;wBACMA,SAAS5T,IAAT,KAAkB,KADxB;;;;;;yBAE0B,KAAK6T,SAAL,CAAeD,QAAf,EAAyB5F,KAAzB,CAF1B;;;yBAAA;mDAGW8F,YAAY7V,SAAZ,GAAwB,EAAxB,GAA6B6V,OAHxC;;;wBAKMF,SAAS5T,IAAT,KAAkB,OALxB;;;;;mDAMW,KAAK+T,WAAL,CAAiBH,QAAjB,EAA2B5F,KAA3B,CANX;;;mDAQS4F,SAASxR,KARlB;;;;;;;;SAjBe;;wBAiBA4R,cAjBA;;;;;;;;;;;qBACRhG,KAAP,EAAc,0CAAd;;kBADe,GAGJ,EAHI;;;;;0BAIG2F,SAJH;;;;;;;;iBAAA;;;qBAMGK,eAAe/T,IAAf,CAAoB,IAApB,EAA0BsM,GAA1B,CANH;;;kBAAA;;;;;;;;oBAQP,wBAAaC,gBARN;;;;;2BASPyH,YAAF,GAAiBvB,IAAjB;;;;oBAGI,IAAIpG,WAAJ,eAAmBC,GAAnB,CAZK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDAeRmG,IAfQ;;;;;;;;KAAjB;;;;;;;KADa;;;uEA8BF,kBAAgBkB,QAAhB,EAA0B5F,KAA1B;;;;;oBACL4F,SAASpS,IAAT,KAAkB,UADb;;;;;oBAED,IAAIgL,gBAAJ,CAAqB,UAArB,CAFC;;;oBAILoH,SAASpS,IAAT,KAAkB,OAJb;;;;;oBAKD,IAAIgL,gBAAJ,CAAqB,OAArB,CALC;;;gDAOFoH,SAASF,MAAT,CAAgB1F,KAAhB,CAPE;;;;;;;;KAAX;;;;;;;KA9Ba;;;uEAwCA,kBAAgB4F,QAAhB,EAA0B5F,KAA1B;;;;;;qBAAA,GACK,KAAKuF,SAAL,CAAeK,QAAf,EAAyB5F,KAAzB,CADL;gDAEJ8F,YAAY7V,SAAZ,GAAwB,EAAxB,GAA6B6I,UAAUgN,OAAV,CAFzB;;;;;;;;KAAb;;;;;;;KAxCa;;aA6CF,sBAAUF,QAAV,EAAoB5F,KAApB,EAA2B;WAC7BA,KAAP,EAAc,sCAAd;WACO4F,SAASM,OAAT,CAAiBxG,MAAjB,CACL,UAACnI,IAAD,EAAO+E,MAAP;aAAkBA,OAAOoJ,MAAP,CAAcnO,IAAd,EAAoByI,KAApB,CAAlB;KADK,EAELgF,QAAQY,SAASO,OAAjB,EAA0BnG,KAA1B,CAFK,CAAP;;CA/CJ;;AAqDA,AAAe,mBAAY;MACnBoG,WAAW7U,OAAOmU,MAAP,CAAjB;SACOU,QAAP;;;ACvDF,SAAS1K,MAAT,CAAe2K,MAAf,EAAuBrG,KAAvB,EAA8B;MACtBlO,MAAM,EAAZ;MACIqL,cAAJ;cACY6G,SAAZ,GAAwB,CAAxB;SACQ7G,QAAQxB,YAAYqB,IAAZ,CAAiBqJ,MAAjB,CAAhB,EAA2C;QACnCxM,IAAIsD,MAAM,CAAN,CAAV;QACMgD,IAAIhD,MAAM,CAAN,CAAV;QACItD,CAAJ,IAAS0L,UAAUpF,CAAV,EAAaH,KAAb,CAAT;;SAEKlO,GAAP;;;AAGF,AAAe,gBAAY;MACrBwU,WAAW,EAAf;;MAEMC,eAAe;;wEACX,iBAAgBvG,KAAhB;;;;;;mBAAA,GACMtE,OAAK,KAAK+B,KAAL,CAAW+G,IAAhB,EAAsBxE,KAAtB,CADN;oBAAA,GAEO,KAAKwG,OAFZ;;sBAGF,OAAOC,KAAKf,MAAZ,KAAuB,UAHrB;;;;;iDAIG,EAJH;;;iDAMCe,KAAKf,MAAL,CAAY1F,KAAZ,EAAmBlO,GAAnB,CAND;;;;;;;;OAAR;;;;;;;OADmB;WASZ,eAAU2L,KAAV,EAAiBiF,MAAjB,EAAyB;WACzB1Q,IAAL,GAAY,KAAZ;WACKyL,KAAL,GAAaA,KAAb;WACKjK,IAAL,GAAYiK,MAAMjK,IAAlB;;UAEMgT,UAAUF,SAAS,KAAK9S,IAAd,CAAhB;aACOgT,OAAP,WAAuB,KAAKhT,IAA5B;WACKgT,OAAL,GAAejV,OAAOiV,OAAP,CAAf;UACI,KAAKA,OAAL,CAAa9C,KAAjB,EAAwB;aACjB8C,OAAL,CAAa9C,KAAb,CAAmBjG,KAAnB,EAA0BiF,MAA1B;;;GAlBN;;WAuBSgE,QAAT,CAAmBlT,IAAnB,EAAyBmT,GAAzB,EAA8B;aACnBnT,IAAT,IAAiBmT,GAAjB;;;WAGOC,SAAT,CAAoBnJ,KAApB,EAA2BiF,MAA3B,EAAmC;QAC3B0D,WAAW7U,OAAOgV,YAAP,CAAjB;aACS7C,KAAT,CAAejG,KAAf,EAAsBiF,MAAtB;WACO0D,QAAP;;;WAGOS,KAAT,GAAkB;eACL,EAAX;;;SAGK;wBAAA;sBAAA;;GAAP;;;ACpDF,IAAMC,UAAU,IAAIhM,MAAJ,MAAcmG,KAAA,CAAclG,MAA5B,EAAsC,GAAtC,CAAhB;;AAEA,AAAe,iBAAUqH,OAAV,EAAmB;YACtBtI,OAAO,EAAP,EAAWsI,OAAX,CAAV;MACI8D,UAAU,EAAd;;MAEMa,kBAAkB;YACd,gBAAUC,MAAV,EAAkBhH,KAAlB,EAAyB;UACzBwE,OAAO,KAAKA,IAAL,CAAUvF,GAAV,CAAc;eAAOsG,UAAUxT,GAAV,EAAeiO,KAAf,CAAP;OAAd,CAAb;WACKK,OAAL,CAAa2G,MAAb;aACO,KAAK1K,MAAL,CAAY2K,KAAZ,CAAkB,IAAlB,EAAwBzC,IAAxB,CAAP;KAJoB;WAMf,eAAU7H,GAAV,EAAe;UAChBQ,QAAQ8D,UAAA,CAAmBjE,IAAnB,CAAwBL,GAAxB,CAAZ;aACOQ,KAAP,EAAc,qBAAqBR,GAAnC;;UAEMnJ,OAAO2J,MAAM,CAAN,CAAb;UACM+J,UAAU/J,MAAM,CAAN,KAAY,EAA5B;UACMb,YAAS4J,QAAQ1S,IAAR,CAAf;UACI,OAAO8I,SAAP,KAAkB,UAAtB,EAAkC;YAC5B8F,QAAQ+E,cAAZ,EAA4B;gBACpB,IAAIxR,SAAJ,wBAAmCnC,IAAnC,CAAN;;aAEGA,IAAL,GAAYA,IAAZ;aACK8I,MAAL,GAAc;iBAAKsF,CAAL;SAAd;aACK4C,IAAL,GAAY,EAAZ;eACO,IAAP;;;UAGIA,OAAO,EAAb;aACQrH,QAAQ2J,QAAQ9J,IAAR,CAAakK,QAAQ9C,IAAR,EAAb,CAAhB,EAA+C;YACvCjE,IAAIhD,MAAM,CAAN,CAAV;YACMiK,KAAK,IAAItM,MAAJ,CAAcqF,CAAd,YAAwB,GAAxB,CAAX;YACMkH,WAAWD,GAAGpK,IAAH,CAAQG,MAAMO,KAAd,CAAjB;YACM4J,oBAAoBD,YAAYA,SAASpD,KAAT,KAAmB9G,MAAM8G,KAA/D;4BACoBO,KAAKhO,IAAL,QAAc2J,CAAd,QAApB,GAA0CqE,KAAKhO,IAAL,CAAU2J,CAAV,CAA1C;;;WAGG3M,IAAL,GAAYA,IAAZ;WACK8I,MAAL,GAAcA,SAAd;WACKkI,IAAL,GAAYA,IAAZ;;aAEO,IAAP;;GApCJ;;WAwCSoC,SAAT,CAAoBjK,GAApB,EAAyB;QACjByJ,WAAW7U,OAAOwV,eAAP,CAAjB;WACOX,SAAS1C,KAAT,CAAe/G,GAAf,CAAP;;;WAGO+J,QAAT,CAAmBlT,IAAnB,EAAyB8I,SAAzB,EAAiC;YACvB9I,IAAR,IAAgB8I,SAAhB;;;WAGOuK,KAAT,GAAkB;cACN,EAAV;;;SAGK;wBAAA,EACMH,kBADN,EACgBG;GADvB;;;AC3Da,iBAAUU,GAAV,EAAeC,MAAf,EAAuB;MAC9BC,SAAS;UACP,cAAU/E,MAAV,EAAkB;WACjBA,MAAL,GAAcA,MAAd;WACKgF,QAAL,GAAgB,EAAhB;aACO,IAAP;KAJW;QAMT,YAAUlU,IAAV,EAAgBmU,EAAhB,EAAoB;WACjBD,QAAL,CAAclU,IAAd,IAAsBmU,EAAtB;aACO,IAAP;KARW;aAUJ,iBAAUC,KAAV,EAAiB7V,GAAjB,EAAsB;UACvB8V,IAAI,KAAKH,QAAL,CAAcE,KAAd,CAAV;UACI,OAAOC,CAAP,KAAa,UAAjB,EAA6B;UACzB9V,GAAF;eACO,IAAP;;KAdS;WAiBN,iBAAY;WACZ+V,OAAL,CAAa,OAAb;UACIrK,cAAJ;aACO,CAAC,KAAKsK,aAAN,KAAwBtK,QAAQ,KAAKiF,MAAL,CAAYsF,KAAZ,EAAhC,CAAP,EAA6D;YACvD,KAAKF,OAAL,CAAa,OAAb,EAAsBrK,KAAtB,CAAJ,EAAkC;YAC9BA,MAAMzL,IAAN,KAAe,KAAf,IACA,KAAK8V,OAAL,UAAoBrK,MAAMjK,IAA1B,EAAkCiK,KAAlC,CADJ,EAC8C;;;YAGxCmI,WAAWqC,WAAWxK,KAAX,EAAkB,KAAKiF,MAAvB,CAAjB;aACKoF,OAAL,CAAa,UAAb,EAAyBlC,QAAzB;;UAEE,CAAC,KAAKmC,aAAV,EAAyB,KAAKD,OAAL,CAAa,KAAb;aAClB,IAAP;KA9BW;UAgCP,gBAAY;WACXC,aAAL,GAAqB,IAArB;aACO,IAAP;;GAlCJ;;WAsCSrE,KAAT,CAAgBhB,MAAhB,EAAwB;QAClBjF,cAAJ;QACMkI,YAAY,EAAlB;WACQlI,QAAQiF,OAAOsF,KAAP,EAAhB,EAAiC;gBACrBxR,IAAV,CAAeyR,WAAWxK,KAAX,EAAkBiF,MAAlB,CAAf;;WAEKiD,SAAP;;;WAGOsC,UAAT,CAAqBxK,KAArB,EAA4BiF,MAA5B,EAAoC;QAC9B;UACEnE,MAAM,IAAV;UACId,MAAMzL,IAAN,KAAe,KAAnB,EAA0B;cAClBkW,SAASzK,KAAT,EAAgBiF,MAAhB,CAAN;OADF,MAEO,IAAIjF,MAAMzL,IAAN,KAAe,OAAnB,EAA4B;cAC3BmW,WAAW1K,MAAMrJ,KAAjB,CAAN;OADK,MAEA;;cACCqJ,KAAN;;UAEEA,KAAJ,GAAYA,KAAZ;aACOc,GAAP;KAVF,CAWE,OAAOH,CAAP,EAAU;YACJ,IAAID,UAAJ,CAAeC,CAAf,EAAkBX,KAAlB,CAAN;;;;WAIKyK,QAAT,CAAmBzK,KAAnB,EAA0BiF,MAA1B,EAAkC;QAC5BjF,MAAMjK,IAAN,KAAe,UAAf,IAA6BiK,MAAMjK,IAAN,KAAe,OAAhD,EAAyD,OAAOiK,KAAP;WAClD8J,IAAIX,SAAJ,CAAcnJ,KAAd,EAAqBiF,MAArB,CAAP;;;WAGOyF,UAAT,CAAqBxL,GAArB,EAA0B;QACpBQ,QAAQ8D,UAAA,CAAmBtE,GAAnB,CAAZ;WACOQ,KAAP,6BAAuCR,GAAvC;;QAEMwJ,UAAUhJ,MAAM,CAAN,CAAhB;UACMR,IAAIyL,MAAJ,CAAWjL,MAAM8G,KAAN,GAAc9G,MAAM,CAAN,EAASnG,MAAlC,CAAN;;QAEMkP,UAAU,EAAhB;WACQ/I,QAAQ8D,MAAA,CAAejE,IAAf,CAAoBL,GAApB,CAAhB,EAA2C;cACjCnG,IAAR,CAAa,CAAC2G,MAAM,CAAN,EAASiH,IAAT,EAAD,CAAb;;;WAGK;YACC,OADD;eAEI+B,OAFJ;eAGID,QAAQjH,GAAR,CAAY;eAAOuI,OAAOZ,SAAP,CAAiBjK,GAAjB,CAAP;OAAZ;KAHX;;;WAOO0L,WAAT,CAAsB3F,MAAtB,EAA8B;QACtB4F,IAAI/W,OAAOkW,MAAP,CAAV;WACOa,EAAEC,IAAF,CAAO7F,MAAP,CAAP;;;SAGK;gBAAA;sBAAA;4BAAA;;GAAP;;;AC9Fa,cAAU8F,MAAV,EAAkBC,MAAlB,EAA0B;;sEAgCvC,kBAAuBzI,KAAvB,EAA8BtE,OAA9B;;;;;;;;wBAAA,GACmB+M,OAAOzD,OAAP,CAAe,KAAK0D,UAApB,EAAgC1I,KAAhC,CADnB;;;kBAGM,CAACtG,QAAQgP,UAAR,CAAL,EAA0B;oBACpBhQ,SAASgQ,UAAT,KAAwBA,WAAW1R,MAAX,GAAoB,CAAhD,EAAmD;+BACpC,CAAC0R,UAAD,CAAb;iBADF,MAEO,IAAIlP,SAASkP,UAAT,CAAJ,EAA0B;+BAClB7Y,OAAO+G,IAAP,CAAY8R,UAAZ,EAAwBzJ,GAAxB,CAA4B,UAACnI,GAAD;2BAAS,CAACA,GAAD,EAAM4R,WAAW5R,GAAX,CAAN,CAAT;mBAA5B,CAAb;;;;oBAGA,CAAC4C,QAAQgP,UAAR,CAAD,IAAwB,CAACA,WAAW1R,MAV1C;;;;;gDAWWwR,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,KAAKC,aAArC,EAAoD7I,KAApD,CAXX;;;oBAAA,GAciBtE,QAAKoN,MAAL,IAAe,CAdhC;mBAAA,GAeiBpN,QAAKqN,KAAL,KAAe9Y,SAAhB,GAA6ByY,WAAW1R,MAAxC,GAAiD0E,QAAKqN,KAftE;;;2BAiBeL,WAAWjR,KAAX,CAAiBqR,MAAjB,EAAyBA,SAASC,KAAlC,CAAb;kBACI,KAAKC,QAAT,EAAmBN,WAAW3R,OAAX;;sBAlBrB,GAoBmB2R,WAAWzJ,GAAX,CAAe,UAACuC,IAAD,EAAOnK,CAAP,EAAa;oBACrCsI,MAAM,EAAZ;oBACI,OAAKpE,QAAT,IAAqBiG,IAArB;oBACIyH,OAAJ,GAAc;yBACL5R,MAAM,CADD;yBAELA,IAAI,CAFC;0BAGJA,CAHI;wBAINA,MAAMqR,WAAW1R,MAAX,GAAoB,CAJpB;0BAKJ0R,WAAW1R,MALP;0BAMJ0R,WAAW1R,MAAX,GAAoBK,CANhB;2BAOHqR,WAAW1R,MAAX,GAAoBK,CAApB,GAAwB;iBAPnC;uBASOsI,GAAP;eAZe,CApBnB;kBAAA,GAmCa,EAnCb;sBAAA,GAoCiB,KApCjB;;qBAqCQgC,UAAUlC,QAAV;mFAAoB,iBAAMjO,OAAN;;;;;+BACpB0X,QADoB;;;;;;;;;gCAGlB1S,IAAN,CAAWhF,OAAX;;;iCAEgBgX,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,OAAKjD,SAArC,EAAgD3F,KAAhD,CALQ;;;8BAAA;;;;;;;;gCAOlB,uBAAaxB,gBAPK;;;;;kCAQZ,YAAEyH,YAAV;8BACI,YAAEnI,OAAF,KAAc,OAAlB,EAA2B;uCACd,IAAX;;;;;;;;;gCAIA7G,GAAN,CAAUzF,OAAV;;;;;;;;iBAdI;;;;;kBArCR;;;gDAqDSkT,IArDT;;;;;;;;KAhCuC;;oBAgCxBgB,MAhCwB;;;;;MACjClH,mBAAmBiK,OAAOU,KAAP,CAAa3K,gBAAtC;MACM4I,KAAK,IAAItM,MAAJ,CAAW,OAAKM,WAAWL,MAAhB,0BACd3G,MAAM2G,MADQ,uBAERW,KAAKX,MAFG,gDAIRW,KAAKX,MAJG,SAAX,CAAX;;SAMOqO,WAAP,CAAmB,KAAnB,EAA0B,EAAE1F,YAAF,EAASgC,cAAT,EAA1B;;WAEShC,KAAT,CAAgB2F,QAAhB,EAA0BC,YAA1B,EAAwC;;;QAChCnM,QAAQiK,GAAGpK,IAAH,CAAQqM,SAAS7E,IAAjB,CAAd;WACOrH,KAAP,oBAA8BkM,SAAS/E,GAAvC;SACK/I,QAAL,GAAgB4B,MAAM,CAAN,CAAhB;SACKuL,UAAL,GAAkBvL,MAAM,CAAN,CAAlB;SACK6L,QAAL,GAAgB,CAAC,CAAC7L,MAAM,CAAN,CAAlB;;SAEKwI,SAAL,GAAiB,EAAjB;SACKkD,aAAL,GAAqB,EAArB;;QAEIU,UAAJ;QACM9B,SAASe,OAAOgB,MAAP,CAAcnB,WAAd,CAA0BiB,YAA1B,EACZG,EADY,CACT,OADS,EACA;aAAOF,IAAI,MAAK5D,SAAhB;KADA,EAEZ8D,EAFY,CAET,UAFS,EAEG;aAAOF,IAAI,MAAKV,aAAhB;KAFH,EAGZY,EAHY,CAGT,YAHS,EAGK;aAAMhC,OAAOhN,IAAP,EAAN;KAHL,EAIZgP,EAJY,CAIT,UAJS,EAIG;aAAOF,EAAE/S,IAAF,CAAO+H,GAAP,CAAP;KAJH,EAKZkL,EALY,CAKT,KALS,EAKF,YAAM;YACT,IAAIxU,KAAJ,UAAiBoU,SAAS/E,GAA1B,iBAAN;KANW,CAAf;;WASO9J,KAAP;;;;AC/BW,iBAAUgO,MAAV,EAAkBC,MAAlB,EAA0B;MACjCrB,KAAK,IAAItM,MAAJ,OAAeM,WAAWL,MAA1B,kBAAX;MACQ2O,WAF+B,GAEfjB,OAAOU,KAFQ,CAE/BO,WAF+B;;;SAIhCN,WAAP,CAAmB,QAAnB,EAA6B;WACpB,eAAU3L,KAAV,EAAiB;UAChBN,QAAQM,MAAM+G,IAAN,CAAWrH,KAAX,CAAiBiK,EAAjB,CAAd;aACOjK,KAAP,qBAA+BM,MAAM6G,GAArC;WACKxN,GAAL,GAAWqG,MAAM,CAAN,CAAX;WACK/I,KAAL,GAAa+I,MAAM,CAAN,CAAb;KALyB;YAOnB,gBAAU6C,KAAV,EAAiB;UACjBL,MAAMpO,OAAOmY,WAAP,CAAZ;UACI,KAAK5S,GAAT,IAAgB0R,OAAOjD,SAAP,CAAiB,KAAKnR,KAAtB,EAA6B4L,KAA7B,CAAhB;YACMxJ,IAAN,CAAWmJ,GAAX;aACOtL,QAAQL,OAAR,CAAgB,EAAhB,CAAP;;GAXJ;;;ACJa,kBAAUwU,MAAV,EAAkBC,MAAlB,EAA0B;MACjCrB,KAAK,IAAItM,MAAJ,OAAeM,WAAWL,MAA1B,OAAX;MACQ4O,YAF+B,GAEdlB,OAAOU,KAFO,CAE/BQ,YAF+B;;;SAIhCP,WAAP,CAAmB,SAAnB,EAA8B;WACrB,eAAUC,QAAV,EAAoBC,YAApB,EAAkC;;;UACjCnM,QAAQkM,SAAS7E,IAAT,CAAcrH,KAAd,CAAoBiK,EAApB,CAAd;aACOjK,KAAP,EAAiBkM,SAAS7E,IAA1B;;WAEKjJ,QAAL,GAAgB4B,MAAM,CAAN,CAAhB;WACKwI,SAAL,GAAiB,EAAjB;;UAEM8B,SAASe,OAAOgB,MAAP,CAAcnB,WAAd,CAA0BiB,YAA1B,CAAf;aACOG,EAAP,CAAU,gBAAV,EAA4B;eAAShC,OAAOhN,IAAP,EAAT;OAA5B,EACGgP,EADH,CACM,UADN,EACkB;eAAO,MAAK9D,SAAL,CAAenP,IAAf,CAAoB+H,GAApB,CAAP;OADlB,EAEGkL,EAFH,CAEM,KAFN,EAEa,aAAK;cACR,IAAIxU,KAAJ,UAAiBoU,SAAS/E,GAA1B,iBAAN;OAHJ;aAKO9J,KAAP;KAd0B;;wEAgBpB,iBAAgBwF,KAAhB,EAAuBtE,OAAvB;;;;;;;uBACa8M,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,KAAKjD,SAArC,EAAgD3F,KAAhD,CADb;;;oBAAA;mBAAA,GAEMzO,OAAOoY,YAAP,CAFN;;oBAGF,KAAKpO,QAAT,IAAqBmJ,IAArB;sBACMlO,IAAN,CAAWmJ,GAAX;;;;;;;;OAJF;;;;;;;;GAhBF;;;ACRa,eAAU6I,MAAV,EAAkBC,MAAlB,EAA0B;SAChCW,WAAP,CAAmB,MAAnB,EAA2B;;WAElB,eAAUC,QAAV,EAAoBC,YAApB,EAAkC;;;WAClCM,IAAL,GAAYP,SAAS7E,IAArB;WACKqF,KAAL,GAAa,EAAb;WACKhB,aAAL,GAAqB,EAArB;;UAEIU,IAAI,EAAR;UACM9B,SAASe,OAAOgB,MAAP,CAAcnB,WAAd,CAA0BiB,YAA1B,EACZG,EADY,CACT,UADS,EACG,iBAAS;cAClBI,KAAL,CAAWrT,IAAX,CAAgB;eACTiH,MAAM+G,IADG;qBAEH+E,IAAI;SAFjB;OAFW,EAOZE,EAPY,CAOT,UAPS,EAOG;eAAOF,IAAI,MAAKV,aAAhB;OAPH,EAQZY,EARY,CAQT,aARS,EAQM;eAAShC,OAAOhN,IAAP,EAAT;OARN,EASZgP,EATY,CAST,UATS,EASG;eAAOF,EAAE/S,IAAF,CAAO+H,GAAP,CAAP;OATH,EAUZkL,EAVY,CAUT,KAVS,EAUF,aAAK;cACR,IAAIxU,KAAJ,UAAiBoU,SAAS/E,GAA1B,iBAAN;OAXW,CAAf;;aAcO9J,KAAP;KAtBuB;;YAyBjB,gBAAUwF,KAAV,EAAiBtE,IAAjB,EAAuB;WACxB,IAAIrE,IAAI,CAAb,EAAgBA,IAAI,KAAKwS,KAAL,CAAW7S,MAA/B,EAAuCK,GAAvC,EAA4C;YACpCyS,SAAS,KAAKD,KAAL,CAAWxS,CAAX,CAAf;YACMuI,MAAM6I,OAAOzD,OAAP,CAAe8E,OAAOlK,GAAtB,EAA2BI,KAA3B,CAAZ;YACM4J,OAAOnB,OAAOzD,OAAP,CAAe,KAAK4E,IAApB,EAA0B5J,KAA1B,CAAb;YACIJ,QAAQgK,IAAZ,EAAkB;iBACTpB,OAAOG,QAAP,CAAgBC,eAAhB,CAAgCkB,OAAOnE,SAAvC,EAAkD3F,KAAlD,CAAP;;;aAGGwI,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,KAAKC,aAArC,EAAoD7I,KAApD,CAAP;;GAlCJ;;;ACDa,kBAAUwI,MAAV,EAAkB;SACxBY,WAAP,CAAmB,SAAnB,EAA8B;WACrB,eAAUC,QAAV,EAAoBC,YAApB,EAAkC;UACjC7B,SAASe,OAAOgB,MAAP,CAAcnB,WAAd,CAA0BiB,YAA1B,CAAf;aAEGG,EADH,CACM,OADN,EACe,iBAAS;YAChBhM,MAAMjK,IAAN,KAAe,YAAnB,EAAiCiU,OAAOhN,IAAP;OAFrC,EAIGgP,EAJH,CAIM,KAJN,EAIa,aAAK;cACR,IAAIxU,KAAJ,UAAiBoU,SAAS/E,GAA1B,iBAAN;OALJ;aAOO9J,KAAP;;GAVJ;;;ACEF,IAAMuP,eAAe,SAArB;;AAEA,AAAe,kBAAUvB,MAAV,EAAkBC,MAAlB,EAA0B;MACjCuB,SAAS,IAAIlP,MAAJ,eAAuB1G,MAAM2G,MAA7B,OAAf;;SAEOqO,WAAP,CAAmB,SAAnB,EAA8B;WACrB,eAAU3L,KAAV,EAAiB;UAClBN,QAAQ4M,aAAa/M,IAAb,CAAkBS,MAAM+G,IAAxB,CAAZ;UACIrH,KAAJ,EAAW;aACJ8M,WAAL,GAAmB9M,MAAM,CAAN,CAAnB;;;cAGM/I,MAAM4I,IAAN,CAAWS,MAAM+G,IAAjB,CAAR;UACIrH,KAAJ,EAAW;aACJ/I,KAAL,GAAa+I,MAAM,CAAN,CAAb;;;cAGM6M,OAAOhN,IAAP,CAAYS,MAAM+G,IAAlB,CAAR;UACIrH,KAAJ,EAAW;aACJ+M,IAAL,GAAY/M,MAAM,CAAN,CAAZ;;KAdwB;;wEAiBpB,iBAAgB6C,KAAhB,EAAuBtE,OAAvB;;;;;;wBAAA;;qBAEFsE,MAAMW,IAAN,CAAWwJ,eAFT;;;;;qBAGAlO,WAAWe,IAAX,CAAgB,KAAK5I,KAArB,CAHA;;;;;wBAAA,GAIe,KAAKA,KAAL,CAAWqD,KAAX,CAAiB,CAAjB,EAAoB,CAAC,CAArB,CAJf;;uBAKe+Q,OAAO4B,cAAP,CAAsBxE,QAAtB,EAAgC5F,MAAMqK,MAAN,EAAhC,EAAgDrK,MAAMW,IAAtD,CALf;;;wBAAA;;;;;2BAOS8H,OAAOlD,SAAP,CAAiB,KAAKnR,KAAtB,EAA6B4L,KAA7B,CAAX;;;;;;;2BAGS,KAAKiK,WAAhB;;;uBAEK/H,QAAP;;4BAZM,GAcelC,MAAMW,IAAN,CAAW2J,MAd1B;+BAAA,GAekBtK,MAAMW,IAAN,CAAW4J,SAf7B;;;sBAiBA5J,IAAN,CAAW2J,MAAX,GAAoB,EAApB;sBACM3J,IAAN,CAAW4J,SAAX,GAAuB,QAAvB;oBACI,KAAKL,IAAT,EAAe;0BACRhI,QAAL,IAAiBuG,OAAOlD,SAAP,CAAiB,KAAK2E,IAAtB,EAA4BlK,KAA5B,CAAjB;;;uBAEsBwI,OAAOgC,WAAP,CAAmBtI,QAAnB,EAA6BlC,MAAMW,IAAN,CAAWwB,IAAxC,CAtBlB;;;yBAAA;;sBAuBA3L,IAAN,CAAWkF,OAAX;;uBACmB8M,OAAOG,QAAP,CAAgBC,eAAhB,CAAgCjD,SAAhC,EAA2C3F,KAA3C,CAxBb;;;oBAAA;;sBAyBA/I,GAAN,CAAUyE,OAAV;sBACMiF,IAAN,CAAW2J,MAAX,GAAoBG,YAApB;sBACM9J,IAAN,CAAW4J,SAAX,GAAuBG,eAAvB;iDACOhG,IA5BD;;;;;;;;OAAR;;;;;;;;GAjBF;;;ACJa,oBAAU8D,MAAV,EAAkBC,MAAlB,EAA0B;sBACeA,OAAOU,KADtB;MAC/BQ,YAD+B,iBAC/BA,YAD+B;MACjBD,WADiB,iBACjBA,WADiB;MACJiB,cADI,iBACJA,cADI;;;SAGhCvB,WAAP,CAAmB,WAAnB,EAAgC;WACvB,eAAU3L,KAAV,EAAiB;UAChBN,QAAQM,MAAM+G,IAAN,CAAWrH,KAAX,CAAiB/B,UAAjB,CAAd;aACO+B,KAAP,0BAAoCM,MAAM+G,IAA1C;WACKjJ,QAAL,GAAgB4B,MAAM,CAAN,CAAhB;KAJ4B;YAMtB,gBAAU6C,KAAV,EAAiBtE,OAAjB,EAAuB;UACzBlK,UAAUwO,MAAMC,cAAN,CACZ,KAAK1E,QADO,EAEZ,eAAO;YACC9B,QAAQ5J,OAAO+C,cAAP,CAAsB+M,GAAtB,CAAd;eACOlG,UAAUkQ,YAAV,IAA0BlQ,UAAUiQ,WAA3C;OAJU,CAAd;UAOI,CAAClY,OAAL,EAAc;kBACFD,OAAOoZ,cAAP,CAAV;cACMtK,OAAN,CAAc7O,OAAd;;UAEE,OAAOA,QAAQ,KAAK+J,QAAb,CAAP,KAAkC,QAAtC,EAAgD;gBACtC,KAAKA,QAAb,IAAyB,CAAzB;;aAEK,EAAE/J,QAAQ,KAAK+J,QAAb,CAAT;;GArBJ;;;ACJa,gBAAUiN,MAAV,EAAkBC,MAAlB,EAA0B;MACjCmC,UAAU,IAAI9P,MAAJ,WAAmB+P,MAAO9P,MAA1B,uBAAhB;MACM+P,eAAe,IAAIhQ,MAAJ,CAAW+P,MAAO9P,MAAlB,EAA0B,GAA1B,CAArB;;SAEOqO,WAAP,CAAmB,OAAnB,EAA4B;;WAEnB,eAAUC,QAAV,EAAoBC,YAApB,EAAkC;UACnCnM,QAAQyN,QAAQ5N,IAAR,CAAaqM,SAAS7E,IAAtB,CAAZ;aACOrH,KAAP,oBAA8BkM,SAAS/E,GAAvC;;WAEKyG,KAAL,GAAa5N,MAAM,CAAN,KAAY,EAAzB;UACM6N,aAAa7N,MAAM,CAAN,CAAnB;;WAEK6N,UAAL,GAAkB,EAAlB;;aAEQ7N,QAAQ2N,aAAa9N,IAAb,CAAkBgO,UAAlB,CAAhB,EAAgD;aACzCA,UAAL,CAAgBxU,IAAhB,CAAqB2G,MAAM,CAAN,CAArB;;aAEK,KAAK6N,UAAL,CAAgBhU,MAAvB,yBAAoDqS,SAAS/E,GAA7D;KAdwB;;YAiBlB,gBAAUtE,KAAV,EAAiBtE,OAAjB,EAAuB;UACvBqP,QAAQtC,OAAOlD,SAAP,CAAiB,KAAKwF,KAAtB,EAA6B/K,KAA7B,CAAd;UACMiL,cAAc,WAASF,KAAT,SAAoB,KAAKC,UAAL,CAAgB7L,IAAhB,CAAqB,GAArB,CAAxC;;UAEM+L,SAASlL,MAAMW,IAAN,CAAWuK,MAAX,GAAoBlL,MAAMW,IAAN,CAAWuK,MAAX,IAAqB,EAAxD;UACIzJ,MAAMyJ,OAAOD,WAAP,CAAV;;UAEIxJ,QAAQxR,SAAZ,EAAuB;cACfib,OAAOD,WAAP,IAAsB,CAA5B;;;UAGIzK,YAAY,KAAKwK,UAAL,CAAgBvJ,GAAhB,CAAlB;YACM,CAACA,MAAM,CAAP,IAAY,KAAKuJ,UAAL,CAAgBhU,MAAlC;aACOiU,WAAP,IAAsBxJ,GAAtB;;aAEOgH,OAAOlD,SAAP,CAAiB/E,SAAjB,EAA4BR,KAA5B,CAAP;;GAhCJ;;;ACPa,aAAUwI,MAAV,EAAkBC,MAAlB,EAA0B;SAChCW,WAAP,CAAmB,IAAnB,EAAyB;;WAEhB,eAAUC,QAAV,EAAoBC,YAApB,EAAkC;;;WAClC6B,QAAL,GAAgB,EAAhB;WACKtC,aAAL,GAAqB,EAArB;;UAEIU,UAAJ;UACM9B,SAASe,OAAOgB,MAAP,CAAcnB,WAAd,CAA0BiB,YAA1B,EACZG,EADY,CACT,OADS,EACA;eAAM,MAAK0B,QAAL,CAAc3U,IAAd,CAAmB;gBAC9B6S,SAAS7E,IADqB;qBAExB+E,IAAI;SAFC,CAAN;OADA,EAKZE,EALY,CAKT,WALS,EAKI,iBAAS;cACnB0B,QAAL,CAAc3U,IAAd,CAAmB;gBACXiH,MAAM+G,IADK;qBAEN+E,IAAI;SAFjB;OANW,EAWZE,EAXY,CAWT,UAXS,EAWG;eAAOF,IAAI,MAAKV,aAAhB;OAXH,EAYZY,EAZY,CAYT,WAZS,EAYI;eAAShC,OAAOhN,IAAP,EAAT;OAZJ,EAaZgP,EAbY,CAaT,UAbS,EAaG;eAAOF,EAAE/S,IAAF,CAAO+H,GAAP,CAAP;OAbH,EAcZkL,EAdY,CAcT,KAdS,EAcF,aAAK;cACR,IAAIxU,KAAJ,UAAiBoU,SAAS/E,GAA1B,iBAAN;OAfW,CAAf;;aAkBO9J,KAAP;KAzBqB;;YA4Bf,gBAAUwF,KAAV,EAAiBtE,IAAjB,EAAuB;;;;;;6BACR,KAAKyP,QAA1B,8HAAoC;cAAzBrB,MAAyB;;cAC5BF,OAAOnB,OAAOzD,OAAP,CAAe8E,OAAOF,IAAtB,EAA4B5J,KAA5B,CAAb;cACIyI,OAAO5D,QAAP,CAAgB+E,IAAhB,CAAJ,EAA2B;mBAClBpB,OAAOG,QAAP,CAAgBC,eAAhB,CAAgCkB,OAAOnE,SAAvC,EAAkD3F,KAAlD,CAAP;;;;;;;;;;;;;;;;;;aAGGwI,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,KAAKC,aAArC,EAAoD7I,KAApD,CAAP;;GAnCJ;;;ACGa,oBAAUwI,MAAV,EAAkBC,MAAlB,EAA0B;sBACeA,OAAOU,KADtB;MAC/BQ,YAD+B,iBAC/BA,YAD+B;MACjBD,WADiB,iBACjBA,WADiB;MACJ0B,cADI,iBACJA,cADI;;;SAGhChC,WAAP,CAAmB,WAAnB,EAAgC;WACvB,eAAU3L,KAAV,EAAiB;UAChBN,QAAQM,MAAM+G,IAAN,CAAWrH,KAAX,CAAiB/B,UAAjB,CAAd;aACO+B,KAAP,0BAAoCM,MAAM+G,IAA1C;WACKjJ,QAAL,GAAgB4B,MAAM,CAAN,CAAhB;KAJ4B;YAMtB,gBAAU6C,KAAV,EAAiBtE,OAAjB,EAAuB;UACzBlK,UAAUwO,MAAMC,cAAN,CACZ,KAAK1E,QADO,EAEZ,eAAO;YACC9B,QAAQ5J,OAAO+C,cAAP,CAAsB+M,GAAtB,CAAd;eACOlG,UAAUkQ,YAAV,IAA0BlQ,UAAUiQ,WAA3C;OAJU,CAAd;UAOI,CAAClY,OAAL,EAAc;kBACFD,OAAO6Z,cAAP,CAAV;cACM/K,OAAN,CAAc7O,OAAd;;UAEE,OAAOA,QAAQ,KAAK+J,QAAb,CAAP,KAAkC,QAAtC,EAAgD;gBACtC,KAAKA,QAAb,IAAyB,CAAzB;;UAEIqE,MAAMpO,QAAQ,KAAK+J,QAAb,CAAZ;cACQ,KAAKA,QAAb;aACOqE,GAAP;;GAvBJ;;;ACJF;;;;;;AAMA,AAAe,iBAAU4I,MAAV,EAAkBC,MAAlB,EAA0B;MACjCsB,eAAe,KAArB;;SAEOX,WAAP,CAAmB,QAAnB,EAA6B;WACpB,eAAU3L,KAAV,EAAiB6L,YAAjB,EAA+B;UAChCnM,QAAQ4M,aAAa/M,IAAb,CAAkBS,MAAM+G,IAAxB,CAAZ;UACIrH,KAAJ,EAAW;aACJkO,YAAL,GAAoBlO,MAAM,CAAN,CAApB;;;cAGM0N,MAAO7N,IAAP,CAAYS,MAAM+G,IAAlB,CAAR;UACIrH,KAAJ,EAAW;aACJmO,MAAL,GAAcnO,MAAM,CAAN,CAAd;;;WAGGoO,IAAL,GAAY/C,OAAOgB,MAAP,CAAc9F,KAAd,CAAoB4F,YAApB,CAAZ;KAZyB;;wEAcnB,iBAAgBtJ,KAAhB,EAAuBtE,OAAvB;;;;;;sBAAA,GACSsE,MAAMW,IAAN,CAAWwJ,eAAX,GACX1B,OAAOlD,SAAP,CAAiB,KAAK+F,MAAtB,EAA8BtL,KAA9B,CADW,GAEX,KAAKqL,YAHH;;uBAICC,MAAP;;;sBAGM3K,IAAN,CAAW4J,SAAX,GAAuB,OAAvB;;uBACmB/B,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,KAAK2C,IAArC,EAA2CvL,KAA3C,CARb;;;oBAAA;;oBASFA,MAAMW,IAAN,CAAW2J,MAAX,CAAkB,EAAlB,MAA0Bra,SAA9B,EAAyC;wBACjC0Q,IAAN,CAAW2J,MAAX,CAAkB,EAAlB,IAAwB5F,IAAxB;;;uBAEsB8D,OAAOgC,WAAP,CAAmBc,MAAnB,EAA2BtL,MAAMW,IAAN,CAAWwB,IAAtC,CAZlB;;;yBAAA;;sBAaA3L,IAAN,CAAWkF,OAAX;sBACMiF,IAAN,CAAW4J,SAAX,GAAuB,QAAvB;;uBACsB/B,OAAOG,QAAP,CAAgBC,eAAhB,CAAgCjD,SAAhC,EAA2C3F,KAA3C,CAfhB;;;uBAAA;;sBAgBA/I,GAAN,CAAUyE,OAAV;iDACOoK,OAjBD;;;;;;;;OAAR;;;;;;;;GAdF;;SAmCOsD,WAAP,CAAmB,OAAnB,EAA4B;WACnB,eAAU3L,KAAV,EAAiB6L,YAAjB,EAA+B;;;UAC9BnM,QAAQ,MAAMH,IAAN,CAAWS,MAAM+G,IAAjB,CAAd;WACKgH,KAAL,GAAarO,QAAQA,MAAM,CAAN,CAAR,GAAmB,EAAhC;;WAEKoO,IAAL,GAAY,EAAZ;UACM9D,SAASe,OAAOgB,MAAP,CAAcnB,WAAd,CAA0BiB,YAA1B,EACZG,EADY,CACT,cADS,EACO;eAAMhC,OAAOhN,IAAP,EAAN;OADP,EAEZgP,EAFY,CAET,UAFS,EAEG;eAAO,MAAK8B,IAAL,CAAU/U,IAAV,CAAe+H,GAAf,CAAP;OAFH,EAGZkL,EAHY,CAGT,KAHS,EAGF,YAAM;cACT,IAAIxU,KAAJ,UAAiBwI,MAAM6G,GAAvB,iBAAN;OAJW,CAAf;aAMO9J,KAAP;KAZwB;;yEAclB,kBAAgBwF,KAAhB;;;;;;4BAAA,GACeA,MAAMW,IAAN,CAAW2J,MAAX,CAAkB,KAAKkB,KAAvB,CADf;;sBAEOC,iBAAiBxb,SAFxB;;;;;+BAGFwb,YAHE;;;;;;uBAIIjD,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,KAAK2C,IAArC,EAA2CvL,KAA3C,CAJJ;;;;;;oBAAA;;sBAMFA,MAAMW,IAAN,CAAW4J,SAAX,KAAyB,OANvB;;;;;sBAOE5J,IAAN,CAAW2J,MAAX,CAAkB,KAAKkB,KAAvB,IAAgC9G,IAAhC;kDACO,EARH;;;kDAUCA,IAVD;;;;;;;;OAAR;;;;;;;;GAdF;;;AC/Ca,cAAU8D,MAAV,EAAkB;SACxBY,WAAP,CAAmB,KAAnB,EAA0B;WACjB,eAAUC,QAAV,EAAoBC,YAApB,EAAkC;;;WAClC5G,MAAL,GAAc,EAAd;;UAEM+E,SAASe,OAAOgB,MAAP,CAAcnB,WAAd,CAA0BiB,YAA1B,CAAf;aAEGG,EADH,CACM,OADN,EACe,iBAAS;YAChBhM,MAAMjK,IAAN,KAAe,QAAnB,EAA6BiU,OAAOhN,IAAP,GAA7B,KACK,MAAKiI,MAAL,CAAYlM,IAAZ,CAAiBiH,KAAjB;OAHT,EAKGgM,EALH,CAKM,KALN,EAKa,YAAM;cACT,IAAIxU,KAAJ,UAAiBoU,SAAS/E,GAA1B,iBAAN;OANJ;aAQO9J,KAAP;KAbsB;YAehB,gBAAUwF,KAAV,EAAiBtE,IAAjB,EAAuB;aACtB,KAAKgH,MAAL,CAAYzD,GAAZ,CAAgB;eAASxB,MAAM6G,GAAf;OAAhB,EAAoCnF,IAApC,CAAyC,EAAzC,CAAP;;GAhBJ;;;ACGa,mBAAUqJ,MAAV,EAAkBC,MAAlB,EAA0B;MACjCrB,KAAK,IAAItM,MAAJ,CAAW,OAAKM,WAAWL,MAAhB,0BAChB3G,MAAM2G,MADU,uBAEVW,KAAKX,MAFK,SAAX,CAAX;;SAIOqO,WAAP,CAAmB,UAAnB,EAA+B;;WAEtB,eAAUC,QAAV,EAAoBC,YAApB,EAAkC;;;UACjCnM,QAAQiK,GAAGpK,IAAH,CAAQqM,SAAS7E,IAAjB,CAAd;aACOrH,KAAP,oBAA8BkM,SAAS/E,GAAvC;;WAEK/I,QAAL,GAAgB4B,MAAM,CAAN,CAAhB;WACKuL,UAAL,GAAkBvL,MAAM,CAAN,CAAlB;WACKwI,SAAL,GAAiB,EAAjB;;UAEI4D,UAAJ;UACM9B,SAASe,OAAOgB,MAAP,CAAcnB,WAAd,CAA0BiB,YAA1B,EACZG,EADY,CACT,OADS,EACA;eAAOF,IAAI,MAAK5D,SAAhB;OADA,EAEZ8D,EAFY,CAET,iBAFS,EAEU;eAAShC,OAAOhN,IAAP,EAAT;OAFV,EAGZgP,EAHY,CAGT,UAHS,EAGG;eAAOF,EAAE/S,IAAF,CAAO+H,GAAP,CAAP;OAHH,EAIZkL,EAJY,CAIT,KAJS,EAIF,YAAM;cACT,IAAIxU,KAAJ,UAAiBoU,SAAS/E,GAA1B,iBAAN;OALW,CAAf;;aAQO9J,KAAP;KAnB2B;;;wEAsBrB,kBAAgBwF,KAAhB,EAAuBtE,OAAvB;;;;;;;;0BAAA,GACW+M,OAAOzD,OAAP,CAAe,KAAK0D,UAApB,EAAgC1I,KAAhC,KAA0C,EADrD;sBAAA,GAEStE,QAAKoN,MAAL,IAAe,CAFxB;qBAAA,GAGSpN,QAAKqN,KAAL,KAAe9Y,SAAhB,GAA6ByY,WAAW1R,MAAxC,GAAiD0E,QAAKqN,KAH9D;;;6BAKOL,WAAWjR,KAAX,CAAiBqR,MAAjB,EAAyBA,SAASC,KAAlC,CAAb;oBALM,GAMOrN,QAAKgQ,IAAL,IAAahD,WAAW1R,MAN/B;wBAAA,GAOW0R,WAAWzJ,GAAX,CAAe,UAACuC,IAAD,EAAOnK,CAAP,EAAa;sBACrCsI,MAAM,EAAZ;sBACI,OAAKpE,QAAT,IAAqBiG,IAArB;yBACO7B,GAAP;iBAHe,CAPX;mBAAA;oBAAA,GAcK,EAdL;;uBAeAgC,UAAUlC,QAAV;qFAAoB,iBAAOjO,OAAP,EAAgBiQ,GAAhB;;;;;;kCAClB5C,KAAK8M,KAAL,CAAWlK,MAAMiK,IAAjB,IAAyB,CAA/B;+BADwB,GAEXjK,MAAMiK,IAAP,GAAe,CAFH;;gCAGpBE,QAAQ,CAAZ,EAAe;kCACTC,QAAQ,CAAZ,EAAe;wCACL,OAAR;;yDAEuBA,GAAzB;;;uDAGuBD,GAAzB;kCACMpV,IAAN,CAAWhF,OAAX;;mCACcgX,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,OAAKjD,SAArC,EAAgD3F,KAAhD,CAZU;;;gCAAA;;oCAahB,OAAR;kCACM/I,GAAN,CAAUzF,OAAV;6DACOkT,IAfiB;;;;;;;;mBAApB;;;;;oBAfA;;;oBAgCFmH,MAAM,CAAV,EAAa;0BACH,OAAR;;kDAEKnH,IAnCD;;;;;;;;OAAR;;;;;;;;GAtBF;;;ACTa,iBAAU8D,MAAV,EAAkBC,MAAlB,EAA0B;SAChCW,WAAP,CAAmB,QAAnB,EAA6B;WACpB,eAAUC,QAAV,EAAoBC,YAApB,EAAkC;;;WAClC3D,SAAL,GAAiB,EAAjB;WACKkD,aAAL,GAAqB,EAArB;UACIU,UAAJ;UACM9B,SAASe,OAAOgB,MAAP,CAAcnB,WAAd,CAA0BiB,YAA1B,EACZG,EADY,CACT,OADS,EACA,aAAK;YACZ,MAAK9D,SAAT;cACKiE,IAAL,GAAYP,SAAS7E,IAArB;OAHW,EAKZiF,EALY,CAKT,UALS,EAKG;eAAOF,IAAI,MAAKV,aAAhB;OALH,EAMZY,EANY,CAMT,eANS,EAMQ;eAAShC,OAAOhN,IAAP,EAAT;OANR,EAOZgP,EAPY,CAOT,UAPS,EAOG;eAAOF,EAAE/S,IAAF,CAAO+H,GAAP,CAAP;OAPH,EAQZkL,EARY,CAQT,KARS,EAQF,aAAK;cACR,IAAIxU,KAAJ,UAAiBoU,SAAS/E,GAA1B,iBAAN;OATW,CAAf;;aAYO9J,KAAP;KAjByB;;YAoBnB,gBAAUwF,KAAV,EAAiBtE,IAAjB,EAAuB;UACvBkO,OAAOnB,OAAOzD,OAAP,CAAe,KAAK4E,IAApB,EAA0B5J,KAA1B,CAAb;aACOyI,OAAOhD,OAAP,CAAemE,IAAf,IACHpB,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,KAAKjD,SAArC,EAAgD3F,KAAhD,CADG,GAEHwI,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,KAAKC,aAArC,EAAoD7I,KAApD,CAFJ;;GAtBJ;;;ACca,eAAU8L,MAAV,EAAkBrD,MAAlB,EAA0B;SAChCqD,MAAP,EAAerD,MAAf;UACQqD,MAAR,EAAgBrD,MAAhB;OACKqD,MAAL,EAAarD,MAAb;UACQqD,MAAR,EAAgBrD,MAAhB;QACMqD,MAAN,EAAcrD,MAAd;YACUqD,MAAV,EAAkBrD,MAAlB;MACIqD,MAAJ,EAAYrD,MAAZ;KACGqD,MAAH,EAAWrD,MAAX;UACQqD,MAAR,EAAgBrD,MAAhB;YACUqD,MAAV,EAAkBrD,MAAlB;SACOqD,MAAP,EAAerD,MAAf;MACIqD,MAAJ,EAAYrD,MAAZ;WACSqD,MAAT,EAAiBrD,MAAjB;SACOqD,MAAP,EAAerD,MAAf;;;AC7BF,IAAMsD,aAAa,CACjB,SADiB,EACN,UADM,EACM,OADN,EACe,OADf,EACwB,KADxB,EAC+B,MAD/B,EACuC,MADvC,EAC+C,QAD/C,EAEjB,WAFiB,EAEJ,SAFI,EAEO,UAFP,EAEmB,UAFnB,CAAnB;AAIA,IAAMC,WAAW,CACf,QADe,EACL,QADK,EACK,SADL,EACgB,WADhB,EAC6B,UAD7B,EACyC,QADzC,EACmD,UADnD,CAAjB;AAGA,IAAMC,kBAAkBF,WAAW9M,GAAX,CAAeiN,IAAf,CAAxB;AACA,IAAMC,gBAAgBH,SAAS/M,GAAT,CAAaiN,IAAb,CAAtB;AACA,IAAME,WAAW;KACZ,IADY;KAEZ,IAFY;KAGZ,IAHY;aAIJ;CAJb;;AAOA,SAASF,IAAT,CAAevP,GAAf,EAAoB;SACXA,IAAIlF,KAAJ,CAAU,CAAV,EAAa,CAAb,CAAP;;;;AAIF,IAAM4U,QAAQ;eACC,qBAAUC,CAAV,EAAa;QAClBC,MAAMF,MAAMG,UAAN,CAAiBF,CAAjB,IAAsB,EAAtB,GAA2B,EAAvC;WACO,CAAC,EAAD,EAAKC,GAAL,EAAU,EAAV,EAAc,EAAd,EAAkB,EAAlB,EAAsB,EAAtB,EAA0B,EAA1B,EAA8B,EAA9B,EAAkC,EAAlC,EAAsC,EAAtC,EAA0C,EAA1C,EAA8C,EAA9C,CAAP;GAHU;;gBAME,sBAAUD,CAAV,EAAa;QACrBG,MAAM,CAAV;SACK,IAAIpV,IAAI,CAAb,EAAgBA,IAAIiV,EAAEI,QAAF,EAApB,EAAkC,EAAErV,CAApC,EAAuC;aAC9BgV,MAAMM,WAAN,CAAkBL,CAAlB,EAAqBjV,CAArB,CAAP;;WAEKoV,MAAMH,EAAEM,OAAF,EAAb;GAXU;;;;iBAgBG,uBAAUN,CAAV,EAAaO,QAAb,EAAuB;;QAE9BC,MAAM,KAAKC,YAAL,CAAkBT,CAAlB,KAAwBO,WAAWP,EAAEU,MAAF,EAAnC,CAAZ;;QAEMC,OAAO,IAAIC,IAAJ,CAASZ,EAAEa,WAAF,EAAT,EAA0B,CAA1B,EAA6B,CAA7B,CAAb;QACM7Y,OAAQ,IAAI2Y,KAAKD,MAAL,EAAJ,GAAoBH,QAAlC;WACOO,QAAQC,GAAR,CAAYxO,KAAK8M,KAAL,CAAW,CAACmB,MAAMxY,IAAP,IAAe,CAA1B,IAA+B,CAA3C,EAA8C,CAA9C,CAAP;GAtBU;;cAyBA,oBAAUgY,CAAV,EAAa;QACjBgB,OAAOhB,EAAEa,WAAF,EAAb;WACO,CAAC,EAAE,CAACG,OAAO,CAAR,MAAe,CAAf,KAAqBA,OAAO,GAAP,IAAeA,OAAO,GAAP,KAAe,CAAf,IAAoBA,IAAxD,CAAF,CAAR;GA3BU;;aA8BD,mBAAUhB,CAAV,EAAa;QAChB3P,MAAM2P,EAAEM,OAAF,GAAY7W,QAAZ,EAAZ;QACMkO,QAAQsJ,SAAS5Q,IAAIlF,KAAJ,CAAU,CAAC,CAAX,CAAT,CAAd;WACO2U,SAASnI,KAAT,KAAmBmI,SAAS,SAAT,CAA1B;GAjCU;;WAoCH,iBAAUE,CAAV,EAAa;WACbiB,SAASjB,EAAEa,WAAF,GAAgBpX,QAAhB,GAA2ByX,SAA3B,CAAqC,CAArC,EAAwC,CAAxC,CAAT,EAAqD,EAArD,CAAP;;CArCJ;;AAyCA,IAAMJ,UAAU;OACT,aAAUhZ,KAAV,EAAiB+M,IAAjB,EAAuBsM,EAAvB,EAA2B;QAC1B,CAACA,EAAL,EAASA,KAAK,GAAL;QACLtZ,SAASC,MAAM2B,QAAN,EAAb;QACIsX,MAAMlM,OAAOhN,OAAO6C,MAAxB;;WAEOqW,QAAQ,CAAf,EAAkB;eACPI,KAAKtZ,MAAd;;;WAGKA,MAAP;;CAVJ;;AAcA,IAAMuZ,cAAc;KACf,WAAUpB,CAAV,EAAa;WACPH,cAAcG,EAAEU,MAAF,EAAd,CAAP;GAFgB;KAIf,WAAUV,CAAV,EAAa;WACPN,SAASM,EAAEU,MAAF,EAAT,CAAP;GALgB;KAOf,WAAUV,CAAV,EAAa;WACPL,gBAAgBK,EAAEI,QAAF,EAAhB,CAAP;GARgB;KAUf,WAAUJ,CAAV,EAAa;WACPP,WAAWO,EAAEI,QAAF,EAAX,CAAP;GAXgB;KAaf,WAAUJ,CAAV,EAAa;WACPA,EAAEqB,cAAF,EAAP;GAdgB;KAgBf,WAAUrB,CAAV,EAAa;WACPD,MAAMuB,OAAN,CAActB,CAAd,CAAP;GAjBgB;KAmBf,WAAUA,EAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,GAAEM,OAAF,EAAZ,EAAyB,CAAzB,CAAP;GApBgB;KAsBf,WAAUN,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAEM,OAAF,EAAZ,EAAyB,CAAzB,EAA4B,GAA5B,CAAP;GAvBgB;KAyBf,WAAUN,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAEuB,QAAF,EAAZ,EAA0B,CAA1B,CAAP;GA1BgB;KA4Bf,WAAUvB,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAEuB,QAAF,KAAe,EAAf,IAAqB,EAAjC,EAAqC,CAArC,CAAP;GA7BgB;KA+Bf,WAAUvB,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYhB,MAAMU,YAAN,CAAmBT,CAAnB,CAAZ,EAAmC,CAAnC,CAAP;GAhCgB;KAkCf,WAAUA,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAEuB,QAAF,EAAZ,EAA0B,CAA1B,EAA6B,GAA7B,CAAP;GAnCgB;KAqCf,WAAUvB,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAEuB,QAAF,KAAe,EAAf,IAAqB,EAAjC,EAAqC,CAArC,EAAwC,GAAxC,CAAP;GAtCgB;KAwCf,WAAUvB,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAEwB,eAAF,EAAZ,EAAiC,CAAjC,CAAP;GAzCgB;KA2Cf,WAAUxB,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAEI,QAAF,KAAe,CAA3B,EAA8B,CAA9B,CAAP;GA5CgB;KA8Cf,WAAUJ,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAEyB,UAAF,EAAZ,EAA4B,CAA5B,CAAP;GA/CgB;KAiDf,WAAUzB,CAAV,EAAa;WACNA,EAAEuB,QAAF,KAAe,EAAf,GAAoB,IAApB,GAA2B,IAAnC;GAlDgB;KAoDf,WAAUvB,CAAV,EAAa;WACNA,EAAEuB,QAAF,KAAe,EAAf,GAAoB,IAApB,GAA2B,IAAnC;GArDgB;KAuDf,WAAUvB,CAAV,EAAa;WACPD,MAAM2B,SAAN,CAAgB1B,CAAhB,CAAP;GAxDgB;KA0Df,WAAUA,CAAV,EAAa;WACPzN,KAAKoP,KAAL,CAAW3B,EAAE4B,OAAF,KAAc,IAAzB,CAAP;GA3DgB;KA6Df,WAAU5B,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAE6B,UAAF,EAAZ,EAA4B,CAA5B,CAAP;GA9DgB;KAgEf,WAAU7B,CAAV,EAAa;WACPA,EAAEU,MAAF,MAAc,CAArB;GAjEgB;KAmEf,WAAUV,CAAV,EAAa;WACPD,MAAM+B,aAAN,CAAoB9B,CAApB,EAAuB,CAAvB,CAAP;GApEgB;KAsEf,WAAUA,CAAV,EAAa;WACPA,EAAEU,MAAF,EAAP;GAvEgB;KAyEf,WAAUV,CAAV,EAAa;WACPD,MAAM+B,aAAN,CAAoB9B,CAApB,EAAuB,CAAvB,CAAP;GA1EgB;KA4Ef,WAAUA,CAAV,EAAa;WACPA,EAAE+B,kBAAF,EAAP;GA7EgB;KA+Ef,WAAU/B,CAAV,EAAa;WACPA,EAAEgC,kBAAF,EAAP;GAhFgB;KAkFf,WAAUhC,CAAV,EAAa;WACPA,EAAEa,WAAF,GAAgBpX,QAAhB,GAA2ByX,SAA3B,CAAqC,CAArC,EAAwC,CAAxC,CAAP;GAnFgB;KAqFf,WAAUlB,CAAV,EAAa;WACPA,EAAEa,WAAF,EAAP;GAtFgB;KAwFf,WAAUb,CAAV,EAAa;QACRiC,KAAKjC,EAAEkC,iBAAF,KAAwB,EAAxB,GAA6B,GAAxC;WACO,CAACD,KAAK,CAAL,GAAS,GAAT,GAAe,GAAhB,IAAuBnB,QAAQC,GAAR,CAAYxO,KAAK4P,GAAL,CAASF,EAAT,CAAZ,EAA0B,CAA1B,CAA9B;GA1FgB;OA4Fb,aAAY;WACR,GAAP;;CA7FJ;AAgGAb,YAAY7F,CAAZ,GAAgB6F,YAAYgB,CAA5B;AACAhB,YAAYiB,CAAZ,GAAgBjB,YAAYkB,CAA5B;;AAEA,AAAe,mBAAUtC,CAAV,EAAauC,MAAb,EAAqB;MAC9B7H,SAAS,EAAb;MACI8H,YAAYD,MAAhB;;SAEO,IAAP,EAAa;QACL/J,IAAI,KAAV;QACMiK,UAAUjK,EAAE9H,IAAF,CAAO8R,SAAP,CAAhB;;;QAGI,CAACC,OAAL,EAAc;aACL/H,SAAS8H,SAAhB;;;;cAIQA,UAAUrX,KAAV,CAAgB,CAAhB,EAAmBqN,EAAEd,SAAF,GAAc,CAAjC,CAAV;gBACY8K,UAAUrX,KAAV,CAAgBqN,EAAEd,SAAlB,CAAZ;;;QAGMyJ,KAAKsB,QAAQ,CAAR,EAAWvX,MAAX,CAAkB,CAAlB,CAAX;QACMwX,OAAOtB,YAAYD,EAAZ,CAAb;cACUuB,OAAOA,KAAK/c,IAAL,CAAU,IAAV,EAAgBqa,CAAhB,CAAP,GAA4B,MAAMmB,EAA5C;;;;AC/LJ,IAAMwB,YAAY;OACX,OADW;OAEX,MAFW;OAGX,MAHW;OAIX,OAJW;OAKX;CALP;AAOA,IAAMC,cAAc;WACT,GADS;UAEV,GAFU;UAGV,GAHU;WAIT,GAJS;WAKT;CALX;;AAQA,IAAMhJ,UAAU;SACP;WAAKrH,KAAK4P,GAAL,CAAStO,CAAT,CAAL;GADO;YAEJ,gBAACA,CAAD,EAAIpO,GAAJ;WAAYoO,IAAIpO,GAAhB;GAFI;gBAGA;WAAO+G,YAAU6D,GAAV,EAAenF,MAAf,CAAsB,CAAtB,EAAyB2X,WAAzB,KAAyCxS,IAAIlF,KAAJ,CAAU,CAAV,CAAhD;GAHA;UAIN;WAAKoH,KAAKuQ,IAAL,CAAUjP,CAAV,CAAL;GAJM;YAKJ,gBAACA,CAAD,EAAIpO,GAAJ;WAAY0G,MAAM3I,SAAN,CAAgBwS,MAAhB,CAAuBrQ,IAAvB,CAA4BkO,CAA5B,EAA+BpO,GAA/B,CAAZ;GALI;UAMN,cAACoO,CAAD,EAAIpO,GAAJ,EAAY;QACdsd,OAAOlP,CAAX;QACIA,MAAM,KAAV,EAAiB;aACR,IAAI+M,IAAJ,EAAP;KADF,MAEO,IAAIhP,QAAA,CAAWiC,CAAX,CAAJ,EAAmB;aACjB,IAAI+M,IAAJ,CAAS/M,CAAT,CAAP;;WAEKmP,YAAYD,IAAZ,IAAoBE,SAASF,IAAT,EAAetd,GAAf,CAApB,GAA0CoO,CAAjD;GAbY;aAeH,kBAACA,CAAD,EAAIpO,GAAJ;WAAY8S,SAAS1E,CAAT,IAAcA,CAAd,GAAkBpO,GAA9B;GAfG;gBAgBA,oBAACoO,CAAD,EAAIpO,GAAJ;WAAYoO,IAAIpO,GAAhB;GAhBA;cAiBF;WAAKoO,EAAE9C,WAAF,EAAL;GAjBE;YAkBJmS,MAlBI;;iBAoBC;WAAOA,OAAOC,SAAS9S,GAAT,CAAP,CAAP;GApBD;WAqBL;WAAKwD,EAAE,CAAF,CAAL;GArBK;WAsBL;WAAKtB,KAAK8M,KAAL,CAAWxL,CAAX,CAAL;GAtBK;UAuBN,cAACA,CAAD,EAAIpO,GAAJ;WAAYoO,EAAEhB,IAAF,CAAOpN,QAAQ9B,SAAR,GAAoB,GAApB,GAA0B8B,GAAjC,CAAZ;GAvBM;UAwBN;WAAKmM,IAAA,CAAOiC,CAAP,CAAL;GAxBM;YAyBJ;WAAKrH,YAAUqH,CAAV,EAAaoD,OAAb,CAAqB,MAArB,EAA6B,EAA7B,CAAL;GAzBI;SA0BP,aAACrJ,GAAD,EAAMnI,GAAN;WAAcmI,IAAI+E,GAAJ,CAAQ;aAAKkB,EAAEpO,GAAF,CAAL;KAAR,CAAd;GA1BO;WA2BL2d,UAAU,UAACvP,CAAD,EAAIpO,GAAJ;WAAYoO,IAAIpO,GAAhB;GAAV,CA3BK;YA4BJ2d,UAAU,UAACvP,CAAD,EAAIpO,GAAJ;WAAYoO,IAAIpO,GAAhB;GAAV,CA5BI;mBA6BG;WAAKoO,EAAEoD,OAAF,CAAU,KAAV,EAAiB,QAAjB,CAAL;GA7BH;UA8BNmM,UAAU,UAACvP,CAAD,EAAIpO,GAAJ;WAAYqL,OAAO+C,CAAP,IAAY/C,OAAOrL,GAAP,CAAxB;GAAV,CA9BM;aA+BH,iBAACoO,CAAD,EAAIpO,GAAJ;WAAYA,MAAMoO,CAAlB;GA/BG;YAgCJ,gBAACA,CAAD,EAAIpO,GAAJ;WAAYoO,EAAExB,KAAF,CAAQ5M,GAAR,EAAaoN,IAAb,CAAkB,EAAlB,CAAZ;GAhCI;kBAiCE,sBAACgB,CAAD,EAAI7F,CAAJ;WAAU6F,EAAEoD,OAAF,CAAUjJ,CAAV,EAAa,EAAb,CAAV;GAjCF;aAkCH,iBAAC6F,CAAD,EAAIwP,OAAJ,EAAaC,WAAb;WACT9W,YAAUqH,CAAV,EAAaxB,KAAb,CAAmBgR,OAAnB,EAA4BxQ,IAA5B,CAAiCyQ,WAAjC,CADS;GAlCG;mBAoCG,uBAACzP,CAAD,EAAI0P,IAAJ,EAAUC,IAAV;WAAmBhX,YAAUqH,CAAV,EAAaoD,OAAb,CAAqBsM,IAArB,EAA2BC,IAA3B,CAAnB;GApCH;aAqCH;WAAK3P,EAAEpJ,OAAF,EAAL;GArCG;WAsCL,eAACoJ,CAAD,EAAIpO,GAAJ,EAAY;QACbge,MAAMlR,KAAKmR,GAAL,CAAS,EAAT,EAAaje,OAAO,CAApB,CAAZ;WACO8M,KAAKoP,KAAL,CAAW9N,IAAI4P,GAAf,EAAoBhe,GAApB,IAA2Bge,GAAlC;GAxCY;YA0CJ;WAAOjX,YAAU6D,GAAV,EAAe4G,OAAf,CAAuB,MAAvB,EAA+B,EAA/B,CAAP;GA1CI;UA2CN;WAAKpD,EAAEnJ,MAAP;GA3CM;WA4CL,eAACmJ,CAAD,EAAIvB,KAAJ,EAAW5H,MAAX,EAAsB;QACzBA,WAAW/G,SAAf,EAA0B+G,SAAS,CAAT;WACnBmJ,EAAE1I,KAAF,CAAQmH,KAAR,EAAeA,QAAQ5H,MAAvB,CAAP;GA9CY;UAgDN,cAACmJ,CAAD,EAAIpO,GAAJ;WAAYoO,EAAE8P,IAAF,CAAOle,GAAP,CAAZ;GAhDM;WAiDL,eAACoO,CAAD,EAAIpO,GAAJ;WAAY+G,YAAUqH,CAAV,EAAaxB,KAAb,CAAmB5M,GAAnB,CAAZ;GAjDK;WAkDL,eAACoO,CAAD;WAAOrH,YAAUqH,CAAV,EAAaiE,IAAb,EAAP;GAlDK;gBAmDA;WAAKtL,YAAUqH,CAAV,EAAaoD,OAAb,CAAqB,2DAArB,EAAkF,EAAlF,CAAL;GAnDA;oBAoDI;WAAKzK,YAAUqH,CAAV,EAAaoD,OAAb,CAAqB,KAArB,EAA4B,EAA5B,CAAL;GApDJ;WAqDL,eAACpD,CAAD,EAAIpO,GAAJ;WAAYoO,IAAIpO,GAAhB;GArDK;cAsDF,kBAACoO,CAAD,EAAI7F,CAAJ,EAAO4V,CAAP,EAAa;QACnBpX,YAAUqH,CAAV,CAAJ;QACK+P,MAAMjgB,SAAP,GAAoB,KAApB,GAA4BigB,CAAhC;QACI5V,KAAK,EAAT;QACI6F,EAAEnJ,MAAF,IAAYsD,CAAhB,EAAmB,OAAO6F,CAAP;WACZA,EAAEiI,MAAF,CAAS,CAAT,EAAY9N,IAAI4V,EAAElZ,MAAlB,IAA4BkZ,CAAnC;GA3DY;mBA6DG,uBAAC/P,CAAD,EAAI7F,CAAJ,EAAO4V,CAAP,EAAa;QACxBA,MAAMjgB,SAAV,EAAqBigB,IAAI,KAAJ;QACfhW,MAAMiG,EAAExB,KAAF,CAAQ,GAAR,CAAZ;QACI4C,MAAMrH,IAAIzC,KAAJ,CAAU,CAAV,EAAa6C,CAAb,EAAgB6E,IAAhB,CAAqB,GAArB,CAAV;QACIjF,IAAIlD,MAAJ,GAAasD,CAAjB,EAAoBiH,OAAO2O,CAAP;WACb3O,GAAP;GAlEY;UAoEN,iBAAUrH,GAAV,EAAe;QACfE,IAAI,EAAV;WACO,CAACF,OAAO,EAAR,EAAYoC,MAAZ,CAAmB,eAAO;UAC3BlC,EAAEpK,cAAF,CAAiB4P,GAAjB,CAAJ,EAA2B;eAClB,KAAP;;QAEAA,GAAF,IAAS,IAAT;aACO,IAAP;KALK,CAAP;GAtEY;YA8EJ;WAAO9G,YAAU6D,GAAV,EAAewS,WAAf,EAAP;GA9EI;gBA+EA;WAAKvN,EAAEjD,KAAF,CAAQ,GAAR,EAAaM,GAAb,CAAiBkR,kBAAjB,EAAqChR,IAArC,CAA0C,GAA1C,CAAL;GA/EA;gBAgFA;WAAKyC,EAAEjD,KAAF,CAAQ,GAAR,EAAaM,GAAb,CAAiBmR,kBAAjB,EAAqCjR,IAArC,CAA0C,GAA1C,CAAL;;CAhFhB;;AAmFA,SAASqQ,MAAT,CAAiB7S,GAAjB,EAAsB;SACb7D,YAAU6D,GAAV,EAAe4G,OAAf,CAAuB,YAAvB,EAAqC;WAAK0L,UAAUoB,CAAV,CAAL;GAArC,CAAP;;;AAGF,SAASZ,QAAT,CAAmB9S,GAAnB,EAAwB;SACf7D,YAAU6D,GAAV,EAAe4G,OAAf,CAAuB,wBAAvB,EAAiD;WAAK2L,YAAYmB,CAAZ,CAAL;GAAjD,CAAP;;;AAGF,SAASC,QAAT,CAAmBnQ,CAAnB,EAAsB;MACdoJ,IAAI,CAACpJ,IAAI,EAAL,EAASxB,KAAT,CAAe,GAAf,CAAV;SACQ4K,EAAEvS,MAAF,GAAW,CAAZ,GAAiBuS,EAAE,CAAF,EAAKvS,MAAtB,GAA+B,CAAtC;;;AAGF,SAASuZ,WAAT,CAAsBjW,CAAtB,EAAyBwK,CAAzB,EAA4B;SACnBjG,KAAKC,GAAL,CAASwR,SAAShW,CAAT,CAAT,EAAsBgW,SAASxL,CAAT,CAAtB,CAAP;;;AAGF,SAAShM,WAAT,CAAoBhH,GAApB,EAAyB;SAChBA,MAAM,EAAb;;;AAGF,SAAS4d,SAAT,CAAoB/H,EAApB,EAAwB;SACf,UAACrN,CAAD,EAAIwK,CAAJ,EAAU;QACT0L,IAAID,YAAYjW,CAAZ,EAAewK,CAAf,CAAV;WACO6C,GAAGrN,CAAH,EAAMwK,CAAN,EAAS2L,OAAT,CAAiBD,CAAjB,CAAP;GAFF;;;AAMF,SAASlB,WAAT,CAAsBD,IAAtB,EAA4B;SACnBA,gBAAgBnC,IAAhB,IAAwB,CAAC9V,MAAMiY,KAAKqB,OAAL,EAAN,CAAhC;;;AAGF,AAAe,SAASC,WAAT,CAAsBnI,MAAtB,EAA8B;SACpCtK,MAAA,CAASgI,OAAT,EAAkB,UAAC8I,IAAD,EAAOxb,IAAP;WAAgBgV,OAAOoI,cAAP,CAAsBpd,IAAtB,EAA4Bwb,IAA5B,CAAhB;GAAlB,CAAP;;;AAGF2B,YAAYzK,OAAZ,GAAsBA,OAAtB;;AC3HA,IAAM2K,UAAU;QACR,cAAUlK,GAAV,EAAerK,MAAf,EAAuB8F,OAAvB,EAAgC;QAChCA,QAAQ9I,KAAZ,EAAmB;WACZA,KAAL,GAAa,EAAb;;SAEG8I,OAAL,GAAeA,OAAf;SACKuE,GAAL,GAAWA,GAAX;SACKrK,MAAL,GAAcA,MAAd;SACKkN,MAAL,GAAcsH,OAAOnK,GAAP,EAAYrK,MAAZ,CAAd;SACKqM,QAAL,GAAgBoI,QAAhB;;SAEK,IAAL,EAAWtI,MAAX;gBACQ,IAAR,EAAcA,MAAd;;WAEO,IAAP;GAdY;SAgBP,kBAAU/D,IAAV,EAAgBxC,QAAhB,EAA0B;QACzBQ,SAASsO,KAAA,CAAgBtM,IAAhB,EAAsBxC,QAAtB,EAAgC,KAAKE,OAArC,CAAf;WACO,KAAKoH,MAAL,CAAY9F,KAAZ,CAAkBhB,MAAlB,CAAP;GAlBY;UAoBN,gBAAUnE,GAAV,EAAeoB,GAAf,EAAoBgB,IAApB,EAA0B;WACzBzC,MAAA,CAAS,EAAT,EAAa,KAAKkE,OAAlB,EAA2BzB,IAA3B,CAAP;QACMX,QAAQR,OAAA,CAAcG,GAAd,EAAmBgB,IAAnB,CAAd;WACO,KAAKgI,QAAL,CAAcC,eAAd,CAA8BrK,GAA9B,EAAmCyB,KAAnC,CAAP;GAvBY;;sEAyBE,iBAAgB0E,IAAhB,EAAsB/E,GAAtB,EAA2BgB,IAA3B;;;;;;;qBACI,KAAK+C,KAAL,CAAWgB,IAAX,CADJ;;;iBAAA;+CAEP,KAAKgB,MAAL,CAAYnH,GAAZ,EAAiBoB,GAAjB,EAAsBgB,IAAtB,CAFO;;;;;;;;KAAhB;;;;;;;KAzBc;;uEA6BD,kBAAgB/C,IAAhB,EAAsBuE,IAAtB;;;;;;;;;qBACYyD,OAAA,CAAiBhI,IAAjB,EAAuBuE,IAAvB,EAA6B,KAAKC,OAAlC,CADZ;;;sBAAA;gDAEJ,KAAK6O,YAAL,CAAkB/O,QAAlB,yDAA4B;;;;;;;+BACf0D,IAAA,CAAc1D,QAAd,CADe;;;2BAAA;0DAE1B,MAAKwB,KAAL,CAAW/G,GAAX,EAAgBuF,QAAhB,CAF0B;;;;;;;;eAA5B,GAFI;;;;;;;;KAAb;;;;;;;KA7Bc;;uEAoCF,kBAAgBtE,IAAhB,EAAsB+B,GAAtB,EAA2BgB,IAA3B;;;;;;qBACHzC,MAAA,CAAS,EAAT,EAAayC,IAAb,CAAP;;qBACwB,KAAK6J,WAAL,CAAiB5M,IAAjB,EAAuB+C,KAAKwB,IAA5B,CAFd;;;uBAAA;gDAGH,KAAKuD,MAAL,CAAYC,SAAZ,EAAuBhG,GAAvB,EAA4BgB,IAA5B,CAHG;;;;;;;;KAAZ;;;;;;;KApCc;;uEAyCA,kBAAgB7J,GAAhB,EAAqBoa,MAArB;;;;;;0BAAA,GACS,KAAK9O,OAAL,CAAa9I,KADtB;;oBAER6X,gBAAgB,KAAK7X,KAAL,CAAWxC,GAAX,CAFR;;;;;gDAGH,KAAKwC,KAAL,CAAWxC,GAAX,CAHG;;;;qBAKQoa,QALR;;;mBAAA;;kBAMRC,YAAJ,EAAkB;qBACX7X,KAAL,CAAWxC,GAAX,IAAkB1C,KAAlB;;gDAEKA,KATK;;;;;;;;KAAd;;;;;;;KAzCc;aAoDH,sBAAUuI,GAAV,EAAeqD,KAAf,EAAsB;QACzBzB,MAAM,KAAKiL,MAAL,CAAYrB,UAAZ,CAAuBxL,IAAIyH,IAAJ,EAAvB,CAAZ;WACO,KAAKuE,QAAL,CAAcpD,SAAd,CAAwBhH,GAAxB,EAA6ByB,KAA7B,CAAP;GAtDY;kBAwDE,wBAAUxM,IAAV,EAAgB8I,MAAhB,EAAwB;WAC/B,KAAKA,MAAL,CAAYoK,QAAZ,CAAqBlT,IAArB,EAA2B8I,MAA3B,CAAP;GAzDY;eA2DD,qBAAU9I,IAAV,EAAgBmT,GAAhB,EAAqB;WACzB,KAAKA,GAAL,CAASD,QAAT,CAAkBlT,IAAlB,EAAwBmT,GAAxB,CAAP;GA5DY;UA8DN,gBAAUyK,OAAV,EAAkB;WACjBA,QAAOnf,IAAP,CAAY,IAAZ,EAAkBwW,MAAlB,CAAP;GA/DY;WAiEL,iBAAU9H,IAAV,EAAgB;WAChBA,QAAQ,EAAf;QACMzP,OAAO,IAAb;WACO,UAAUmgB,QAAV,EAAoB1R,GAApB,EAAyBgI,EAAzB,EAA6B;aAC3BzJ,OAAA,CAAU,KAAKiE,IAAf,KAAwBjE,QAAA,CAAW,KAAKiE,IAAhB,CAA/B,EACE,+CADF;WAEKA,IAAL,GAAY,KAAKA,IAAjB;WACKmP,UAAL,CAAgBD,QAAhB,EAA0B1R,GAA1B,EAA+BgB,IAA/B,EAAqCrM,IAArC,CAA0C;eAAQqT,GAAG,IAAH,EAASjD,IAAT,CAAR;OAA1C,EAAkEiD,EAAlE;KAJF;;CApEJ;;AA6EA,SAAS4J,oBAAT,CAA+Bnd,KAA/B,EAAsC;MAChC8J,OAAA,CAAU9J,KAAV,CAAJ,EAAsB,OAAOA,KAAP;MAClB8J,QAAA,CAAW9J,KAAX,CAAJ,EAAuB,OAAO,CAACA,KAAD,CAAP;QACjB,IAAIuB,SAAJ,CAAc,mBAAmBvB,KAAjC,CAAN;;;AAGF,AAAe,SAASqU,MAAT,CAAiBrG,OAAjB,EAA0B;YAC7BlE,MAAA,CAAS;UACX,CAAC,GAAD,CADW;WAEV,KAFU;aAGR,EAHQ;qBAIA,IAJA;oBAKD,KALC;mBAMF,KANE;sBAOC,KAPD;qBAQA,KARA;YAST,IATS;oBAUD,KAVC;sBAWC;GAXV,EAYPkE,OAZO,CAAV;UAaQD,IAAR,GAAeoP,qBAAqBnP,QAAQD,IAA7B,CAAf;;MAEM2J,SAAS5N,MAAA,CAAS2S,OAAT,CAAf;SACOtI,IAAP,CAAYhB,KAAZ,EAAmBC,OAAOpF,OAAP,CAAnB,EAAoCA,OAApC;SACO0J,MAAP;;;AAGFrD,OAAO+I,OAAP,GAAiB/I,MAAjB;AACAA,OAAO5D,QAAP,GAAkBA,QAAlB;AACA4D,OAAOhD,OAAP,GAAiBA,OAAjB;AACAgD,OAAOzD,OAAP,GAAiBA,OAAjB;AACAyD,OAAOlD,SAAP,GAAmBA,SAAnB;AACAkD,OAAOU,KAAP,GAAe;wBAAA;sCAAA;oCAAA;gCAAA;eAKA,EALA;gBAMC,EAND;kBAOG,EAPH;kBAQG;CARlB;;;;"}