{"version":3,"file":"i18n-b6dd88e2.js","sources":["../../../node_modules/flatpickr/dist/l10n/es.js","../../../app/assets/javascripts/packs/controllers/helpers/pub_sub.js","../../../node_modules/nanoevents/index.js","../../../node_modules/@anycable/core/protocol/index.js","../../../node_modules/@anycable/core/stringify-params/index.js","../../../node_modules/@anycable/core/channel/index.js","../../../node_modules/@anycable/core/hub/index.js","../../../node_modules/@anycable/core/logger/index.js","../../../node_modules/@anycable/core/encoder/index.js","../../../node_modules/@anycable/core/action_cable/index.js","../../../node_modules/@anycable/core/cable/index.js","../../../node_modules/@anycable/core/monitor/index.js","../../../node_modules/@anycable/core/websocket/index.js","../../../node_modules/@anycable/core/create-cable/index.js","../../../node_modules/@anycable/web/logger/index.js","../../../node_modules/@anycable/web/monitor/index.js","../../../node_modules/@anycable/web/index.js","../../../app/assets/javascripts/packs/channels/base_channel.js","../../../app/assets/javascripts/packs/channels/helpers/cable.js","../../../app/assets/javascripts/packs/channels/initial_payment_event_channel.js","../../../node_modules/lodash/isArray.js","../../../node_modules/lodash/_freeGlobal.js","../../../node_modules/lodash/_root.js","../../../node_modules/lodash/_Symbol.js","../../../node_modules/lodash/_getRawTag.js","../../../node_modules/lodash/_objectToString.js","../../../node_modules/lodash/_baseGetTag.js","../../../node_modules/lodash/isObjectLike.js","../../../node_modules/lodash/isSymbol.js","../../../node_modules/lodash/_isKey.js","../../../node_modules/lodash/isObject.js","../../../node_modules/lodash/isFunction.js","../../../node_modules/lodash/_coreJsData.js","../../../node_modules/lodash/_isMasked.js","../../../node_modules/lodash/_toSource.js","../../../node_modules/lodash/_baseIsNative.js","../../../node_modules/lodash/_getValue.js","../../../node_modules/lodash/_getNative.js","../../../node_modules/lodash/_nativeCreate.js","../../../node_modules/lodash/_hashClear.js","../../../node_modules/lodash/_hashDelete.js","../../../node_modules/lodash/_hashGet.js","../../../node_modules/lodash/_hashHas.js","../../../node_modules/lodash/_hashSet.js","../../../node_modules/lodash/_Hash.js","../../../node_modules/lodash/_listCacheClear.js","../../../node_modules/lodash/eq.js","../../../node_modules/lodash/_assocIndexOf.js","../../../node_modules/lodash/_listCacheDelete.js","../../../node_modules/lodash/_listCacheGet.js","../../../node_modules/lodash/_listCacheHas.js","../../../node_modules/lodash/_listCacheSet.js","../../../node_modules/lodash/_ListCache.js","../../../node_modules/lodash/_Map.js","../../../node_modules/lodash/_mapCacheClear.js","../../../node_modules/lodash/_isKeyable.js","../../../node_modules/lodash/_getMapData.js","../../../node_modules/lodash/_mapCacheDelete.js","../../../node_modules/lodash/_mapCacheGet.js","../../../node_modules/lodash/_mapCacheHas.js","../../../node_modules/lodash/_mapCacheSet.js","../../../node_modules/lodash/_MapCache.js","../../../node_modules/lodash/memoize.js","../../../node_modules/lodash/_memoizeCapped.js","../../../node_modules/lodash/_stringToPath.js","../../../node_modules/lodash/_arrayMap.js","../../../node_modules/lodash/_baseToString.js","../../../node_modules/lodash/toString.js","../../../node_modules/lodash/_castPath.js","../../../node_modules/lodash/_toKey.js","../../../node_modules/lodash/_baseGet.js","../../../node_modules/lodash/get.js","../../../node_modules/lodash/_baseHas.js","../../../node_modules/lodash/_baseIsArguments.js","../../../node_modules/lodash/isArguments.js","../../../node_modules/lodash/_isIndex.js","../../../node_modules/lodash/isLength.js","../../../node_modules/lodash/_hasPath.js","../../../node_modules/lodash/has.js","../../../node_modules/lodash/_defineProperty.js","../../../node_modules/lodash/_baseAssignValue.js","../../../node_modules/lodash/_assignValue.js","../../../node_modules/lodash/_baseSet.js","../../../node_modules/lodash/set.js","../../../node_modules/lodash/_setCacheAdd.js","../../../node_modules/lodash/_setCacheHas.js","../../../node_modules/lodash/_SetCache.js","../../../node_modules/lodash/_baseFindIndex.js","../../../node_modules/lodash/_baseIsNaN.js","../../../node_modules/lodash/_strictIndexOf.js","../../../node_modules/lodash/_baseIndexOf.js","../../../node_modules/lodash/_arrayIncludes.js","../../../node_modules/lodash/_arrayIncludesWith.js","../../../node_modules/lodash/_cacheHas.js","../../../node_modules/lodash/_Set.js","../../../node_modules/lodash/noop.js","../../../node_modules/lodash/_setToArray.js","../../../node_modules/lodash/_createSet.js","../../../node_modules/lodash/_baseUniq.js","../../../node_modules/lodash/uniq.js","../../../node_modules/i18n-js/dist/import/Locales.js","../../../node_modules/i18n-js/dist/import/Pluralization.js","../../../node_modules/lodash/_baseSlice.js","../../../node_modules/lodash/_castSlice.js","../../../node_modules/lodash/_hasUnicode.js","../../../node_modules/lodash/_asciiToArray.js","../../../node_modules/lodash/_unicodeToArray.js","../../../node_modules/lodash/_stringToArray.js","../../../node_modules/lodash/_createCaseFirst.js","../../../node_modules/lodash/upperFirst.js","../../../node_modules/lodash/capitalize.js","../../../node_modules/lodash/_arrayReduce.js","../../../node_modules/lodash/_basePropertyOf.js","../../../node_modules/lodash/_deburrLetter.js","../../../node_modules/lodash/deburr.js","../../../node_modules/lodash/_asciiWords.js","../../../node_modules/lodash/_hasUnicodeWord.js","../../../node_modules/lodash/_unicodeWords.js","../../../node_modules/lodash/words.js","../../../node_modules/lodash/_createCompounder.js","../../../node_modules/lodash/camelCase.js","../../../node_modules/i18n-js/dist/import/helpers/camelCaseKeys.js","../../../node_modules/i18n-js/dist/import/helpers/isSet.js","../../../node_modules/i18n-js/dist/import/helpers/createTranslationOptions.js","../../../node_modules/bignumber.js/bignumber.mjs","../../../node_modules/i18n-js/dist/import/helpers/expandRoundMode.js","../../../node_modules/lodash/_baseRepeat.js","../../../node_modules/lodash/isArrayLike.js","../../../node_modules/lodash/_isIterateeCall.js","../../../node_modules/lodash/_trimmedEndIndex.js","../../../node_modules/lodash/_baseTrim.js","../../../node_modules/lodash/toNumber.js","../../../node_modules/lodash/toFinite.js","../../../node_modules/lodash/toInteger.js","../../../node_modules/lodash/repeat.js","../../../node_modules/i18n-js/dist/import/helpers/roundNumber.js","../../../node_modules/i18n-js/dist/import/helpers/formatNumber.js","../../../node_modules/i18n-js/dist/import/helpers/getFullScope.js","../../../node_modules/i18n-js/dist/import/helpers/inferType.js","../../../node_modules/i18n-js/dist/import/helpers/interpolate.js","../../../node_modules/i18n-js/dist/import/helpers/lookup.js","../../../node_modules/i18n-js/dist/import/helpers/numberToDelimited.js","../../../node_modules/lodash/_arrayPush.js","../../../node_modules/lodash/_isFlattenable.js","../../../node_modules/lodash/_baseFlatten.js","../../../node_modules/lodash/_stackClear.js","../../../node_modules/lodash/_stackDelete.js","../../../node_modules/lodash/_stackGet.js","../../../node_modules/lodash/_stackHas.js","../../../node_modules/lodash/_stackSet.js","../../../node_modules/lodash/_Stack.js","../../../node_modules/lodash/_arraySome.js","../../../node_modules/lodash/_equalArrays.js","../../../node_modules/lodash/_Uint8Array.js","../../../node_modules/lodash/_mapToArray.js","../../../node_modules/lodash/_equalByTag.js","../../../node_modules/lodash/_baseGetAllKeys.js","../../../node_modules/lodash/_arrayFilter.js","../../../node_modules/lodash/stubArray.js","../../../node_modules/lodash/_getSymbols.js","../../../node_modules/lodash/_baseTimes.js","../../../node_modules/lodash/stubFalse.js","../../../node_modules/lodash/isBuffer.js","../../../node_modules/lodash/_baseIsTypedArray.js","../../../node_modules/lodash/_baseUnary.js","../../../node_modules/lodash/_nodeUtil.js","../../../node_modules/lodash/isTypedArray.js","../../../node_modules/lodash/_arrayLikeKeys.js","../../../node_modules/lodash/_isPrototype.js","../../../node_modules/lodash/_overArg.js","../../../node_modules/lodash/_nativeKeys.js","../../../node_modules/lodash/_baseKeys.js","../../../node_modules/lodash/keys.js","../../../node_modules/lodash/_getAllKeys.js","../../../node_modules/lodash/_equalObjects.js","../../../node_modules/lodash/_DataView.js","../../../node_modules/lodash/_Promise.js","../../../node_modules/lodash/_WeakMap.js","../../../node_modules/lodash/_getTag.js","../../../node_modules/lodash/_baseIsEqualDeep.js","../../../node_modules/lodash/_baseIsEqual.js","../../../node_modules/lodash/_baseIsMatch.js","../../../node_modules/lodash/_isStrictComparable.js","../../../node_modules/lodash/_getMatchData.js","../../../node_modules/lodash/_matchesStrictComparable.js","../../../node_modules/lodash/_baseMatches.js","../../../node_modules/lodash/_baseHasIn.js","../../../node_modules/lodash/hasIn.js","../../../node_modules/lodash/_baseMatchesProperty.js","../../../node_modules/lodash/identity.js","../../../node_modules/lodash/_baseProperty.js","../../../node_modules/lodash/_basePropertyDeep.js","../../../node_modules/lodash/property.js","../../../node_modules/lodash/_baseIteratee.js","../../../node_modules/lodash/_createBaseFor.js","../../../node_modules/lodash/_baseFor.js","../../../node_modules/lodash/_baseForOwn.js","../../../node_modules/lodash/_createBaseEach.js","../../../node_modules/lodash/_baseEach.js","../../../node_modules/lodash/_baseMap.js","../../../node_modules/lodash/_baseSortBy.js","../../../node_modules/lodash/_compareAscending.js","../../../node_modules/lodash/_compareMultiple.js","../../../node_modules/lodash/_baseOrderBy.js","../../../node_modules/lodash/_apply.js","../../../node_modules/lodash/_overRest.js","../../../node_modules/lodash/constant.js","../../../node_modules/lodash/_baseSetToString.js","../../../node_modules/lodash/_shortOut.js","../../../node_modules/lodash/_setToString.js","../../../node_modules/lodash/_baseRest.js","../../../node_modules/lodash/sortBy.js","../../../node_modules/lodash/_baseZipObject.js","../../../node_modules/lodash/zipObject.js","../../../node_modules/i18n-js/dist/import/helpers/numberToHuman.js","../../../node_modules/i18n-js/dist/import/helpers/numberToHumanSize.js","../../../node_modules/i18n-js/dist/import/helpers/parseDate.js","../../../node_modules/i18n-js/dist/import/helpers/pluralize.js","../../../node_modules/lodash/flattenDeep.js","../../../node_modules/i18n-js/dist/import/helpers/propertyFlatList.js","../../../node_modules/i18n-js/dist/import/helpers/strftime.js","../../../node_modules/lodash/_baseRange.js","../../../node_modules/lodash/_createRange.js","../../../node_modules/lodash/range.js","../../../node_modules/i18n-js/dist/import/helpers/timeAgoInWords.js","../../../node_modules/i18n-js/dist/import/MissingTranslation.js","../../../node_modules/i18n-js/dist/import/I18n.js","../../../app/assets/javascripts/packs/i18n.js"],"sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.es = {}));\n}(this, (function (exports) { 'use strict';\n\n var fp = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {},\n };\n var Spanish = {\n weekdays: {\n shorthand: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"],\n longhand: [\n \"Domingo\",\n \"Lunes\",\n \"Martes\",\n \"Miércoles\",\n \"Jueves\",\n \"Viernes\",\n \"Sábado\",\n ],\n },\n months: {\n shorthand: [\n \"Ene\",\n \"Feb\",\n \"Mar\",\n \"Abr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Ago\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dic\",\n ],\n longhand: [\n \"Enero\",\n \"Febrero\",\n \"Marzo\",\n \"Abril\",\n \"Mayo\",\n \"Junio\",\n \"Julio\",\n \"Agosto\",\n \"Septiembre\",\n \"Octubre\",\n \"Noviembre\",\n \"Diciembre\",\n ],\n },\n ordinal: function () {\n return \"º\";\n },\n firstDayOfWeek: 1,\n rangeSeparator: \" a \",\n time_24hr: true,\n };\n fp.l10ns.es = Spanish;\n var es = fp.l10ns;\n\n exports.Spanish = Spanish;\n exports.default = es;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","/**\n * Simple pubsub pattern for coordinating between controllers\n */\n\nconst SUBSCRIBER_REGISTRY = {};\n\n/**\n * Publishes event\n *\n * @param {string} eventName - event to publish\n * @param {Object} data - data bag to act on as part of the event, shape varies\n */\nexport function publish(eventName, data) {\n if (!SUBSCRIBER_REGISTRY[eventName]) {\n return;\n }\n\n SUBSCRIBER_REGISTRY[eventName].forEach((callback) => callback(data));\n}\n\n/**\n * Subscribes to event\n *\n * @param {string} eventName - name of the event to subscribe to\n * @param {function} callback - function to call on event publish\n */\nexport function subscribe(eventName, callback) {\n if (!SUBSCRIBER_REGISTRY[eventName]) {\n SUBSCRIBER_REGISTRY[eventName] = [];\n }\n\n SUBSCRIBER_REGISTRY[eventName].push(callback);\n}\n\n/**\n * Unsubscribes from event\n *\n * @param {string} eventName - name of the event subscribed to\n * @param {function} callback - function to unsubscribe from\n */\nexport function unsubscribe(eventName, callback) {\n if (!SUBSCRIBER_REGISTRY[eventName]) {\n return;\n }\n\n SUBSCRIBER_REGISTRY[eventName] = SUBSCRIBER_REGISTRY[eventName].filter((f) => f.toString() != callback.toString());\n}\n","export let createNanoEvents = () => ({\n events: {},\n emit(event, ...args) {\n let callbacks = this.events[event] || []\n for (let i = 0, length = callbacks.length; i < length; i++) {\n callbacks[i](...args)\n }\n },\n on(event, cb) {\n this.events[event]?.push(cb) || (this.events[event] = [cb])\n return () => {\n this.events[event] = this.events[event]?.filter(i => cb !== i)\n }\n }\n})\n","export class ReasonError extends Error {\n constructor(msg, reason) {\n if (msg instanceof Error) {\n super(msg.message)\n this.cause = msg\n } else {\n super(msg)\n }\n\n this.reason = reason\n this.name = 'ReasonError'\n }\n}\n\nexport class SubscriptionRejectedError extends ReasonError {\n constructor(reason) {\n super('Rejected', reason)\n this.name = 'SubscriptionRejectedError'\n }\n}\n\nexport class SubscriptionTimeoutError extends ReasonError {\n constructor(msg) {\n super(msg || 'Timed out to receive subscription ack')\n this.name = 'SubscriptionTimeoutError'\n }\n}\n\nexport class DisconnectedError extends ReasonError {\n constructor(error, reason) {\n if (reason) {\n super(error, reason)\n } else {\n super('Disconnected', error)\n }\n this.name = 'DisconnectedError'\n }\n}\n\nexport class CommandError extends Error {\n constructor(msg) {\n super(msg)\n this.name = 'CommandError'\n }\n}\n\nexport class StaleConnectionError extends DisconnectedError {\n constructor(msg) {\n super(msg, 'stale_connection')\n this.name = 'StaleConnectionError'\n }\n}\n","export function stringifyParams(params) {\n if (!params) return ''\n\n let parts = Object.keys(params)\n .sort()\n .map(k => {\n let v = JSON.stringify(params[k])\n return `${JSON.stringify(k)}:${v}`\n })\n\n return `{${parts.join(',')}}`\n}\n","/*eslint n/no-unsupported-features/es-syntax: [\"error\", {version: \"14.0\"}] */\nimport { createNanoEvents } from 'nanoevents'\n\nimport { ReasonError } from '../protocol/index.js'\nimport { stringifyParams } from '../stringify-params/index.js'\n\nconst STATE = Symbol('state')\n\nexport class Channel {\n // Unique channel identifier\n // static identifier = ''\n\n constructor(params = {}) {\n this.emitter = createNanoEvents()\n this.params = Object.freeze(params)\n\n this.initialConnect = true\n\n this[STATE] = 'idle'\n }\n\n get identifier() {\n if (this._identifier) return this._identifier\n\n // Use Action Cable identifiers as internal identifiers for channels\n this._identifier = stringifyParams({\n channel: this.channelId,\n ...this.params\n })\n\n return this._identifier\n }\n\n get channelId() {\n return this.constructor.identifier\n }\n\n get state() {\n return this[STATE]\n }\n\n attached(receiver) {\n if (this.receiver) {\n if (this.receiver !== receiver) {\n throw Error('Already connected to a different receiver')\n }\n\n return false\n }\n\n this.receiver = receiver\n return true\n }\n\n connecting() {\n this[STATE] = 'connecting'\n }\n\n connected() {\n if (this.state === 'connected') return\n if (this.state === 'closed') return\n\n this[STATE] = 'connected'\n\n let restored = false\n\n if (this.initialConnect) {\n this.initialConnect = false\n this.emit('connect', { reconnect: false, restored })\n } else {\n this.emit('connect', { reconnect: true, restored })\n }\n }\n\n restored() {\n if (this.state === 'connected') throw Error('Already connected')\n if (this.state !== 'connecting') throw Error('Must be connecting')\n\n this[STATE] = 'connected'\n\n let restored = true\n let reconnect = true\n\n this.initialConnect = false\n\n this.emit('connect', { reconnect, restored })\n }\n\n disconnected(err) {\n if (this.state === 'disconnected' || this.state === 'closed') return\n\n this[STATE] = 'disconnected'\n\n this.emit('disconnect', err)\n }\n\n closed(err) {\n if (this.state === 'closed') return\n\n this[STATE] = 'closed'\n delete this.receiver\n\n this.initialConnect = true\n\n this.emit('close', err)\n }\n\n disconnect() {\n if (this.state === 'idle' || this.state === 'closed') {\n return\n }\n\n this.receiver.unsubscribe(this)\n }\n\n async perform(action, payload) {\n if (this.state === 'idle' || this.state === 'closed') {\n throw Error('Channel is not subscribed')\n }\n\n return this.receiver.perform(this.identifier, action, payload)\n }\n\n async send(payload) {\n return this.perform(undefined, payload)\n }\n\n receive(msg, meta) {\n this.emit('message', msg, meta)\n }\n\n on(event, callback) {\n return this.emitter.on(event, callback)\n }\n\n once(event, callback) {\n let unbind = this.emitter.on(event, (...args) => {\n unbind()\n callback(...args)\n })\n return unbind\n }\n\n emit(event, ...args) {\n return this.emitter.emit(event, ...args)\n }\n\n ensureSubscribed() {\n if (this.state === 'connected') return Promise.resolve()\n\n if (this.state === 'closed') {\n return Promise.reject(Error('Channel is unsubscribed'))\n }\n\n return this.pendingSubscribe()\n }\n\n // This promise resolves when subscription is confirmed\n // and rejects when rejected or closed.\n // It ignores disconnect events.\n pendingSubscribe() {\n if (this._pendingSubscribe) return this._pendingSubscribe\n\n this._pendingSubscribe = new Promise((resolve, reject) => {\n let unbind = [() => delete this._pendingSubscribe]\n\n unbind.push(\n this.on('connect', () => {\n unbind.forEach(clbk => clbk())\n resolve()\n })\n )\n unbind.push(\n this.on('close', err => {\n unbind.forEach(clbk => clbk())\n reject(\n err ||\n new ReasonError(\n 'Channel was disconnected before subscribing',\n 'canceled'\n )\n )\n })\n )\n })\n\n return this._pendingSubscribe\n }\n}\n","export class Subscription {\n constructor(id) {\n this.id = id\n this.intent = 'unsubscribed'\n this.state = 'idle'\n this.channels = []\n this.disposed = false\n this._pendings = []\n }\n\n add(channel) {\n if (this.channels.includes(channel)) return\n\n this.channels.push(channel)\n }\n\n remove(channel) {\n let ind = this.channels.indexOf(channel)\n\n if (ind > -1) this.channels.splice(ind, 1)\n }\n\n notify(state, ...args) {\n this.state = state\n\n if (args.length === 1) {\n this.channels.forEach(channel => channel[state](args[0]))\n } else {\n this.channels.forEach(channel => channel[state]())\n }\n }\n\n pending(intent) {\n this._checkIntent(intent)\n\n let nextPending = this._pendings[0]\n\n if (!nextPending || nextPending.intent !== intent) return Promise.resolve()\n\n return nextPending.promise\n }\n\n ensureResubscribed() {\n if (this.disposed) return\n\n this.intent = undefined\n\n this.ensureSubscribed()\n }\n\n ensureSubscribed() {\n if (this.intent === 'subscribed') return\n if (this.disposed) throw Error('Subscription is disposed')\n\n this.intent = 'subscribed'\n\n let merged = this._mergeWithPending('unsubscribed')\n if (merged) return\n\n this.subscriber(this)\n }\n\n maybeUnsubscribe() {\n if (this.disposed) return\n if (this.intent === 'unsubscribed') return\n\n if (this.channels.length > 0) return\n\n this.intent = 'unsubscribed'\n\n let merged = this._mergeWithPending('subscribed')\n if (merged) return\n\n this.unsubscriber(this)\n }\n\n async acquire(intent) {\n this._checkIntent(intent)\n\n let resolver\n let promise = new Promise(resolve => {\n resolver = resolve\n })\n\n let lock = {\n promise,\n intent,\n release: () => {\n this._pendings.splice(this._pendings.indexOf(lock), 1)\n resolver(lock)\n },\n canceled: false,\n acquired: false\n }\n\n let top = this._pendingTop\n\n this._pendings.push(lock)\n\n if (top) {\n await top.promise\n }\n\n lock.acquired = true\n return lock\n }\n\n close(err) {\n this.disposed = true\n this.intent = undefined\n this.notify('closed', err)\n }\n\n _checkIntent(event) {\n if (event === 'unsubscribed' || event === 'subscribed') return\n\n throw Error(`Unknown subscription intent: ${event}`)\n }\n\n get _pendingTop() {\n return this._pendings.length\n ? this._pendings[this._pendings.length - 1]\n : undefined\n }\n\n _mergeWithPending(intent) {\n let top = this._pendingTop\n if (!top) return false\n if (top.acquired) return false\n if (top.intent !== intent) return false\n\n this._pendings.pop()\n top.canceled = true\n return true\n }\n}\n\nexport class Subscriptions {\n constructor() {\n this._subscriptions = {}\n this._localToRemote = {}\n }\n\n all() {\n return Object.values(this._subscriptions)\n }\n\n get(id) {\n return this._subscriptions[id]\n }\n\n create(id, { subscribe, unsubscribe }) {\n let sub = (this._subscriptions[id] = new Subscription(id))\n sub.remoteId = this._localToRemote[id]\n sub.subscriber = subscribe\n sub.unsubscriber = unsubscribe\n\n return sub\n }\n\n remove(id) {\n delete this._subscriptions[id]\n delete this._localToRemote[id]\n }\n\n storeRemoteId(localId, remoteId) {\n this._localToRemote[localId] = remoteId\n\n let sub = this.get(localId)\n if (sub) sub.remoteId = remoteId\n }\n}\n\nexport class Hub {\n constructor() {\n this.subscriptions = new Subscriptions()\n this._pendingMessages = []\n this._remoteToLocal = {}\n }\n\n subscribe(localId, remoteId) {\n this._remoteToLocal[remoteId] = localId\n\n this.subscriptions.storeRemoteId(localId, remoteId)\n\n this.flush(remoteId)\n }\n\n unsubscribe(localId) {\n let sub = this.subscriptions.get(localId)\n if (!sub) return\n\n let remoteId = sub.remoteId\n if (remoteId) delete this._remoteToLocal[remoteId]\n\n this.subscriptions.remove(localId)\n }\n\n transmit(id, msg, meta) {\n let localId = this._remoteToLocal[id]\n\n if (!localId) {\n this._pendingMessages.push([id, msg, meta])\n return\n }\n\n let sub = this.subscriptions.get(localId)\n\n if (!sub) return\n\n sub.channels.forEach(channel => {\n channel.receive(msg, meta)\n })\n }\n\n close() {\n this._pendingMessages.length = 0\n }\n\n get size() {\n return this.channels.length\n }\n\n get channels() {\n return this.subscriptions.all().flatMap(sub => sub.channels)\n }\n\n flush(id) {\n let left = []\n\n for (let item of this._pendingMessages) {\n if (item[0] === id) this.transmit(item[0], item[1], item[2])\n else left.push(item)\n }\n\n this._pendingMessages = left\n }\n}\n","const LEVEL_TO_NAME = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3\n}\n\nexport class BaseLogger {\n constructor(level) {\n this.level = level || 'warn'\n }\n\n log(level, msg, details) {\n if (LEVEL_TO_NAME[level] < LEVEL_TO_NAME[this.level]) return\n\n this.writeLogEntry(level, msg, details)\n }\n\n writeLogEntry() {\n throw Error('Not implemented')\n }\n\n debug(msg, details) {\n this.log('debug', msg, details)\n }\n\n info(msg, details) {\n this.log('info', msg, details)\n }\n\n warn(msg, details) {\n this.log('warn', msg, details)\n }\n\n error(msg, details) {\n this.log('error', msg, details)\n }\n}\n\nexport class NoopLogger extends BaseLogger {\n writeLogEntry() {}\n}\n","/* eslint-disable consistent-return */\n\nexport class JSONEncoder {\n encode(msg) {\n return JSON.stringify(msg)\n }\n\n decode(raw) {\n try {\n return JSON.parse(raw)\n } catch (_e) {}\n }\n}\n","import {\n SubscriptionRejectedError,\n SubscriptionTimeoutError,\n DisconnectedError\n} from '../protocol/index.js'\nimport { stringifyParams } from '../stringify-params/index.js'\nimport { NoopLogger } from '../logger/index.js'\n\nlet commandID = 0\n\nexport class ActionCableProtocol {\n constructor(opts = {}) {\n let { logger } = opts\n this.logger = logger || new NoopLogger()\n this.pendingSubscriptions = {}\n this.pendingUnsubscriptions = {}\n // For how long to wait before sending `subscribe` command\n // in case `unsubscribe` was sent for the same identifier\n this.subscribeCooldownInterval = opts.subscribeCooldownInterval || 250\n // For how long to wait for subscription acknoledgement before trying again\n // (just once).\n this.subscribeRetryInterval = opts.subscribeRetryInterval || 5000\n }\n\n attached(cable) {\n this.cable = cable\n }\n\n subscribe(channel, params) {\n let subscriptionPayload = { channel }\n if (params) {\n Object.assign(subscriptionPayload, params)\n }\n\n let identifier = stringifyParams(subscriptionPayload)\n\n if (this.pendingUnsubscriptions[identifier]) {\n let cooldown = this.subscribeCooldownInterval * 1.5\n this.logger.debug(\n `unsubscribed recently, cooldown for ${cooldown}`,\n identifier\n )\n return new Promise(resolve => {\n setTimeout(() => {\n resolve(this.subscribe(channel, params))\n }, cooldown)\n })\n }\n\n if (this.pendingSubscriptions[identifier]) {\n this.logger.warn('subscription is already pending, skipping', identifier)\n return Promise.reject(Error('Already subscribing'))\n }\n\n let retryInterval = this.subscribeRetryInterval\n\n return new Promise((resolve, reject) => {\n let id = ++commandID\n this.pendingSubscriptions[identifier] = {\n resolve,\n reject,\n id\n }\n\n this.cable.send({\n command: 'subscribe',\n identifier\n })\n\n this.maybeRetrySubscribe(id, identifier, retryInterval)\n })\n }\n\n maybeRetrySubscribe(id, identifier, retryInterval) {\n setTimeout(() => {\n let sub = this.pendingSubscriptions[identifier]\n if (!sub) return\n if (sub.id !== id) return\n\n this.logger.warn(\n `no subscription ack received in ${retryInterval}ms, retrying subscribe`,\n identifier\n )\n\n this.cable.send({\n command: 'subscribe',\n identifier\n })\n\n this.maybeExpireSubscribe(id, identifier, retryInterval)\n }, retryInterval)\n }\n\n maybeExpireSubscribe(id, identifier, retryInterval) {\n setTimeout(() => {\n let sub = this.pendingSubscriptions[identifier]\n if (!sub) return\n if (sub.id !== id) return\n\n delete this.pendingSubscriptions[identifier]\n\n sub.reject(\n new SubscriptionTimeoutError(\n `Haven't received subscription ack in ${\n retryInterval * 2\n }ms for ${identifier}`\n )\n )\n }, retryInterval)\n }\n\n unsubscribe(identifier) {\n this.cable.send({\n command: 'unsubscribe',\n identifier\n })\n\n this.pendingUnsubscriptions[identifier] = true\n\n setTimeout(() => {\n delete this.pendingUnsubscriptions[identifier]\n }, this.subscribeCooldownInterval)\n\n return Promise.resolve()\n }\n\n perform(identifier, action, payload) {\n if (!payload) {\n payload = {}\n }\n\n payload.action = action\n\n this.cable.send({\n command: 'message',\n identifier,\n data: JSON.stringify(payload)\n })\n\n return Promise.resolve()\n }\n\n receive(msg) {\n /* eslint-disable consistent-return */\n if (typeof msg !== 'object') {\n this.logger.error('unsupported message format', { message: msg })\n return\n }\n\n let { type, identifier, message, reason, reconnect } = msg\n\n if (type === 'ping') return this.cable.keepalive(msg.message)\n\n if (type === 'welcome') {\n return this.cable.connected()\n }\n\n if (type === 'disconnect') {\n let err = new DisconnectedError(reason)\n this.reset(err)\n\n if (reconnect === false) {\n this.cable.closed(err)\n } else {\n this.cable.disconnected(err)\n }\n return\n }\n\n if (type === 'confirm_subscription') {\n let subscription = this.pendingSubscriptions[identifier]\n if (!subscription) {\n this.logger.error('subscription not found, unsubscribing', {\n type,\n identifier\n })\n this.unsubscribe(identifier)\n return\n }\n\n delete this.pendingSubscriptions[identifier]\n\n return subscription.resolve(identifier)\n }\n\n if (type === 'reject_subscription') {\n let subscription = this.pendingSubscriptions[identifier]\n if (!subscription) {\n return this.logger.error('subscription not found', { type, identifier })\n }\n\n delete this.pendingSubscriptions[identifier]\n\n return subscription.reject(new SubscriptionRejectedError())\n }\n\n if (message) {\n return { identifier, message }\n }\n\n this.logger.warn(`unknown message type: ${type}`, { message: msg })\n }\n\n reset(err) {\n // Reject pending subscriptions\n for (let identifier in this.pendingSubscriptions) {\n this.pendingSubscriptions[identifier].reject(err)\n }\n\n this.pendingSubscriptions = {}\n }\n\n recoverableClosure() {\n return false\n }\n}\n","/*eslint n/no-unsupported-features/es-syntax: [\"error\", {version: \"14.0\"}] */\nimport { createNanoEvents } from 'nanoevents'\n\nimport { Hub } from '../hub/index.js'\nimport {\n ReasonError,\n DisconnectedError,\n SubscriptionRejectedError\n} from '../protocol/index.js'\nimport { NoopLogger } from '../logger/index.js'\nimport { Channel } from '../channel/index.js'\n\nexport class NoConnectionError extends ReasonError {\n constructor() {\n super('No connection', 'closed')\n this.name = 'NoConnectionError'\n }\n}\n\nexport class GhostChannel extends Channel {\n static identifier = '__ghost__'\n constructor(channelId, params) {\n super(params)\n this.channelId = channelId\n }\n\n set channelId(val) {\n this._channelId = val\n }\n\n get channelId() {\n return this._channelId\n }\n}\n\nconst STATE = Symbol('state')\n\nexport class Cable {\n constructor({ transport, protocol, encoder, logger, lazy }) {\n this.emitter = createNanoEvents()\n this.transport = transport\n this.encoder = encoder\n this.logger = logger || new NoopLogger()\n this.protocol = protocol\n\n this.protocol.attached(this)\n\n this.hub = new Hub()\n\n this[STATE] = 'idle'\n\n this.handleClose = this.handleClose.bind(this)\n this.handleIncoming = this.handleIncoming.bind(this)\n\n this.transport.on('close', this.handleClose)\n this.transport.on('data', this.handleIncoming)\n\n this.initialConnect = true\n this.recovering = false\n\n if (lazy === false) {\n this.connect().catch(() => {})\n }\n }\n\n get state() {\n return this[STATE]\n }\n\n async connect() {\n if (this.state === 'connected') return Promise.resolve()\n if (this.state === 'connecting') {\n return this.pendingConnect()\n }\n\n this[STATE] = 'connecting'\n let promise = this.pendingConnect()\n\n this.logger.debug('connecting')\n\n try {\n await this.transport.open()\n } catch (err) {\n this.handleClose(err)\n }\n\n return promise\n }\n\n connected() {\n if (this.state === 'connected') return\n\n this.logger.info('connected')\n\n this[STATE] = 'connected'\n\n if (this.recovering) {\n // Make sure channels moved to disconnect state\n this.hub.subscriptions\n .all()\n .forEach(subscription =>\n subscription.notify(\n 'disconnected',\n new DisconnectedError('recovery_failed')\n )\n )\n }\n\n // Re-subscribe channels\n this.hub.subscriptions\n .all()\n .forEach(subscription => this._resubscribe(subscription))\n\n let restored = false\n this.recovering = false\n\n if (this.initialConnect) {\n this.initialConnect = false\n this.emit('connect', { reconnect: false, restored })\n } else {\n this.emit('connect', { reconnect: true, restored })\n }\n }\n\n restored(remoteIds) {\n if (!this.recovering) {\n this.connected()\n return\n }\n\n this.logger.info('connection recovered', { remoteIds })\n\n this[STATE] = 'connected'\n\n this.hub.subscriptions.all().forEach(subscription => {\n if (\n remoteIds &&\n subscription.remoteId &&\n remoteIds.includes(subscription.remoteId)\n ) {\n subscription.notify('restored')\n } else {\n subscription.notify(\n 'disconnected',\n new DisconnectedError('recovery_failed')\n )\n this._resubscribe(subscription)\n }\n })\n\n let reconnect = !this.initialConnect\n let restored = true\n\n this.recovering = false\n this.initialConnect = false\n\n this.emit('connect', { reconnect, restored })\n }\n\n handleClose(err) {\n this.logger.debug('transport closed', { error: err })\n\n this.disconnected(new DisconnectedError(err, 'transport_closed'))\n }\n\n disconnected(err) {\n if (!(this.state === 'connected' || this.state === 'connecting')) {\n return\n }\n\n this.logger.info('disconnected', { reason: err })\n\n this[STATE] = 'disconnected'\n\n this.recovering = this.protocol.recoverableClosure(err)\n\n if (this.recovering) {\n this.hub.subscriptions\n .all()\n .forEach(subscription => subscription.notify('connecting'))\n } else {\n this.hub.subscriptions.all().forEach(subscription => {\n subscription.notify('disconnected', err)\n })\n }\n\n this.protocol.reset(err)\n this.hub.close()\n this.transport.close()\n\n this.emit('disconnect', err)\n }\n\n closed(reason) {\n if (this.state === 'closed' || this.state === 'idle') return\n\n let err\n\n if (reason) {\n err =\n reason instanceof DisconnectedError\n ? reason\n : new DisconnectedError(reason, undefined)\n }\n\n this.logger.info('closed', { reason: reason || 'user' })\n\n this[STATE] = 'closed'\n\n // Channels must transition to the disconnected phase,\n // since they got reconnected as soon as cable reconnects\n let channelErr = err || new DisconnectedError('cable_closed')\n this.hub.subscriptions\n .all()\n .forEach(subscription => subscription.notify('disconnected', channelErr))\n\n this.hub.close()\n this.protocol.reset()\n this.transport.close()\n\n this.initialConnect = true\n\n this.emit('close', err)\n }\n\n disconnect() {\n this.closed()\n }\n\n handleIncoming(raw) {\n if (this.state === 'closed' || this.state === 'idle') {\n return\n }\n\n let data = this.encoder.decode(raw)\n\n if (data === undefined) {\n this.logger.error('failed to decode message', { message: raw })\n return\n }\n\n this.logger.debug('incoming data', data)\n\n let processed = this.protocol.receive(data)\n\n if (processed) {\n this.logger.debug('processed incoming message', processed)\n\n let { identifier, message, meta } = processed\n\n this.hub.transmit(identifier, message, meta)\n }\n }\n\n send(msg) {\n if (this.state === 'closed') {\n throw Error('Cable is closed')\n }\n\n let data = this.encoder.encode(msg)\n\n if (data === undefined) {\n this.logger.error('failed to encode message', { message: msg })\n return\n }\n\n this.logger.debug('outgoing message', msg)\n\n this.transport.send(data)\n }\n\n keepalive(msg) {\n this.emit('keepalive', msg)\n }\n\n subscribeTo(ChannelClass, params) {\n let channel\n let ghostName\n\n if (typeof ChannelClass === 'string') {\n ghostName = ChannelClass\n ChannelClass = GhostChannel\n }\n\n channel = ghostName\n ? new ChannelClass(ghostName, params)\n : new ChannelClass(params)\n\n return this.subscribe(channel)\n }\n\n subscribe(channel) {\n // Return if channel has been already attached to the cable\n if (!channel.attached(this)) return channel\n\n let identifier = channel.identifier\n\n channel.connecting()\n\n let subscription =\n this.hub.subscriptions.get(identifier) ||\n this.hub.subscriptions.create(identifier, {\n subscribe: sub => {\n return this._subscribe(sub, channel.channelId, channel.params)\n },\n unsubscribe: sub => this._unsubscribe(sub)\n })\n\n subscription.add(channel)\n\n if (\n subscription.intent === 'subscribed' &&\n subscription.state === 'connected'\n ) {\n channel.connected()\n }\n\n subscription.ensureSubscribed()\n\n return channel\n }\n\n async _resubscribe(subscription) {\n if (subscription.intent !== 'subscribed') return\n\n let channel = subscription.channels[0]\n\n if (!channel) return\n\n subscription.notify('connecting')\n subscription.ensureResubscribed()\n }\n\n async _subscribe(subscription, channelId, params) {\n let identifier = subscription.id\n\n if (this.state === 'idle') {\n // Trigger connection initialization if it is lazy\n this.connect().catch(() => {})\n }\n\n // We will call _subscribe again as soon as cable connected\n if (this.state !== 'connected') {\n this.logger.debug('cancel subscribe, no connection', { identifier })\n return\n }\n\n this.logger.debug('acquiring subscribe lock', { identifier })\n\n let lock = await subscription.acquire('subscribed')\n if (lock.canceled) {\n this.logger.debug('subscribe lock has been canceled', { identifier })\n lock.release()\n return\n }\n\n this.logger.debug('subscribe lock has been acquired', { identifier })\n\n if (subscription.intent !== 'subscribed') {\n this.logger.debug('cancel subscribe request, already unsubscribed')\n lock.release()\n return\n }\n\n // We need to check one more time after a lock has been acquired\n if (this.state !== 'connected') {\n this.logger.debug('cancel subscribe, no connection', { identifier })\n lock.release()\n return\n }\n\n // Finally, check whether we already connected — then we can skip the action\n if (subscription.state === 'connected') {\n this.logger.debug('already connected, skip subscribe command', {\n identifier\n })\n subscription.notify('connected')\n lock.release()\n return\n }\n\n let channelMeta = {\n identifier: channelId,\n params\n }\n\n this.logger.debug('subscribing', channelMeta)\n\n try {\n let remoteId = await this.protocol.subscribe(channelId, params)\n\n this.hub.subscribe(identifier, remoteId)\n\n this.logger.debug('subscribed', { ...channelMeta, remoteId })\n subscription.notify('connected')\n } catch (err) {\n if (err) {\n if (err instanceof SubscriptionRejectedError) {\n this.logger.warn('rejected', channelMeta)\n }\n\n if (err instanceof DisconnectedError) {\n this.logger.debug(\n 'disconnected during subscription; will retry on connect',\n channelMeta\n )\n lock.release()\n return\n }\n\n this.logger.error('failed to subscribe', {\n error: err,\n ...channelMeta\n })\n }\n\n subscription.close(err)\n this.hub.unsubscribe(identifier)\n }\n\n lock.release()\n }\n\n unsubscribe(channel) {\n let identifier = channel.identifier\n\n let subscription = this.hub.subscriptions.get(identifier)\n\n if (!subscription) {\n throw Error(`Subscription not found: ${identifier}`)\n }\n\n subscription.remove(channel)\n channel.closed()\n\n subscription.maybeUnsubscribe()\n }\n\n async _unsubscribe(subscription) {\n let identifier = subscription.id\n\n this.logger.debug('acquiring unsubscribe lock', { identifier })\n\n let lock = await subscription.acquire('unsubscribed')\n if (lock.canceled) {\n this.logger.debug('unsubscribe lock has been canceled', { identifier })\n lock.release()\n return\n }\n\n this.logger.debug('unsubscribe lock has been acquired', { identifier })\n\n // Check if we still want to unsubscribe\n if (subscription.intent !== 'unsubscribed') {\n this.logger.debug('cancel unsubscribe, no longer needed', {\n identifier,\n intent: subscription.intent\n })\n lock.release()\n return\n }\n\n // Finally, check whether we already disconnected — then we can skip the action\n if (\n subscription.state === 'disconnected' ||\n subscription.state === 'closed'\n ) {\n this.logger.debug(\n `already ${subscription.state} connected, skip unsubscribe command`,\n { identifier }\n )\n lock.release()\n return\n }\n\n let remoteId = subscription.remoteId\n\n this.logger.debug('unsubscribing...', { remoteId })\n\n if (this.state !== 'connected') {\n this.logger.debug('unsubscribe skipped (cable is not connected)', {\n id: identifier\n })\n subscription.close()\n this.hub.unsubscribe(identifier)\n lock.release()\n return\n }\n\n try {\n await this.protocol.unsubscribe(remoteId)\n this.logger.debug('unsubscribed remotely', { id: identifier })\n } catch (err) {\n if (err) {\n // We assume that server unsubscribes subscriptions on disconnect,\n // So we can mark it as closed locally.\n if (err instanceof DisconnectedError) {\n this.logger.debug(\n 'cable disconnected during the unsubscribe command execution',\n { id: identifier, error: err }\n )\n } else {\n this.logger.error('unsubscribe failed', {\n id: identifier,\n error: err\n })\n }\n }\n }\n\n if (subscription.intent === 'unsubscribed') {\n subscription.close()\n this.hub.unsubscribe(identifier)\n } else {\n // We rely on state when performing commands,\n // make sure it's set to closed here (it shouldn't stay connected)\n subscription.state = 'closed'\n }\n\n lock.release()\n }\n\n async perform(identifier, action, payload) {\n if (this.state === 'connecting') {\n await this.pendingConnect()\n }\n\n if (this.state === 'closed' || this.state === 'disconnected') {\n throw new NoConnectionError()\n }\n\n let subscription = this.hub.subscriptions.get(identifier)\n\n if (!subscription) {\n throw Error(`Subscription not found: ${identifier}`)\n }\n\n await subscription.pending('subscribed')\n\n if (subscription.intent !== 'subscribed') {\n throw Error(`Subscription is closed: ${identifier}`)\n }\n\n let remoteId = subscription.remoteId\n\n let performMeta = {\n id: remoteId,\n action,\n payload\n }\n\n this.logger.debug('perform', performMeta)\n\n try {\n let res = await this.protocol.perform(remoteId, action, payload)\n\n if (res) {\n this.logger.debug('perform result', {\n message: res,\n request: performMeta\n })\n }\n\n return res\n } catch (err) {\n this.logger.error('perform failed', {\n error: err,\n request: performMeta\n })\n\n throw err\n }\n }\n\n on(event, callback) {\n return this.emitter.on(event, callback)\n }\n\n once(event, callback) {\n let unbind = this.emitter.on(event, (...args) => {\n unbind()\n callback(...args)\n })\n return unbind\n }\n\n emit(event, ...args) {\n return this.emitter.emit(event, ...args)\n }\n\n pendingConnect() {\n if (this._pendingConnect) return this._pendingConnect\n\n this._pendingConnect = new Promise((resolve, reject) => {\n let unbind = [() => delete this._pendingConnect]\n\n unbind.push(\n this.on('connect', () => {\n unbind.forEach(clbk => clbk())\n resolve()\n })\n )\n unbind.push(\n this.on('close', err => {\n unbind.forEach(clbk => clbk())\n reject(err)\n })\n )\n unbind.push(\n this.on('disconnect', err => {\n unbind.forEach(clbk => clbk())\n reject(err)\n })\n )\n })\n\n return this._pendingConnect\n }\n}\n","/*eslint n/no-unsupported-features/es-syntax: [\"error\", {version: \"14.0\"}] */\nimport { StaleConnectionError } from '../protocol/index.js'\nimport { NoopLogger } from '../logger/index.js'\n\nconst defaults = {\n maxMissingPings: 2,\n maxReconnectAttempts: Infinity\n}\n\nconst now = () => Date.now()\n\nexport const backoffWithJitter = (interval, opts) => {\n opts = opts || {}\n let { backoffRate, jitterRatio, maxInterval } = opts\n backoffRate = backoffRate || 2\n if (jitterRatio === undefined) jitterRatio = 0.5\n\n return attempts => {\n let left = interval * backoffRate ** attempts\n let right = left * backoffRate\n\n let delay = left + (right - left) * Math.random()\n\n let deviation = 2 * (Math.random() - 0.5) * jitterRatio\n\n delay = delay * (1 + deviation)\n\n if (maxInterval && maxInterval < delay) delay = maxInterval\n\n return delay\n }\n}\n\nexport class Monitor {\n constructor({ pingInterval, ...opts }) {\n this.pingInterval = pingInterval\n\n if (!this.pingInterval) {\n throw Error(`Incorrect pingInterval is provided: ${pingInterval}`)\n }\n\n opts = Object.assign({}, defaults, opts)\n\n this.strategy = opts.reconnectStrategy\n if (!this.strategy) {\n throw Error('Reconnect strategy must be provided')\n }\n\n this.maxMissingPings = opts.maxMissingPings\n this.maxReconnectAttempts = opts.maxReconnectAttempts\n this.logger = opts.logger || new NoopLogger()\n\n this.state = 'pending_connect'\n this.attempts = 0\n this.disconnectedAt = now()\n }\n\n watch(target) {\n this.target = target\n this.initListeners()\n }\n\n reconnectNow() {\n if (\n this.state === 'connected' ||\n this.state === 'pending_connect' ||\n this.state === 'closed'\n ) {\n return false\n }\n\n this.cancelReconnect()\n\n this.state = 'pending_connect'\n this.target.connect().catch(err => {\n this.logger.info('Failed at reconnecting: ' + err)\n })\n\n return true\n }\n\n initListeners() {\n this.unbind = []\n\n this.unbind.push(\n this.target.on('connect', () => {\n this.attempts = 0\n this.pingedAt = now()\n this.state = 'connected'\n\n this.cancelReconnect()\n this.startPolling()\n })\n )\n\n this.unbind.push(\n this.target.on('disconnect', () => {\n this.disconnectedAt = now()\n this.state = 'disconnected'\n\n this.stopPolling()\n this.scheduleReconnect()\n })\n )\n\n this.unbind.push(\n this.target.on('close', () => {\n this.disconnectedAt = now()\n this.state = 'closed'\n\n this.cancelReconnect()\n this.stopPolling()\n })\n )\n\n this.unbind.push(\n this.target.on('keepalive', () => {\n this.pingedAt = now()\n })\n )\n\n this.unbind.push(() => {\n this.cancelReconnect()\n this.stopPolling()\n })\n }\n\n dispose() {\n delete this.target\n if (this.unbind) {\n this.unbind.forEach(clbk => clbk())\n }\n delete this.unbind\n }\n\n startPolling() {\n if (this.pollId) {\n clearTimeout(this.pollId)\n }\n\n let pollDelay =\n this.pingInterval + (Math.random() - 0.5) * this.pingInterval * 0.5\n\n this.pollId = setTimeout(() => {\n this.checkStale()\n if (this.state === 'connected') this.startPolling()\n }, pollDelay)\n }\n\n stopPolling() {\n if (this.pollId) {\n clearTimeout(this.pollId)\n }\n }\n\n checkStale() {\n let diff = now() - this.pingedAt\n\n if (diff > this.maxMissingPings * this.pingInterval) {\n this.logger.warn(`Stale connection: ${diff}ms without pings`)\n this.state = 'pending_disconnect'\n this.target.disconnected(new StaleConnectionError())\n }\n }\n\n scheduleReconnect() {\n if (this.attempts >= this.maxReconnectAttempts) {\n this.target.close()\n return\n }\n\n let delay = this.strategy(this.attempts)\n\n this.attempts++\n\n this.logger.info(`Reconnecting in ${delay}ms (${this.attempts} attempt)`)\n\n this.state = 'pending_reconnect'\n\n this.reconnnectId = setTimeout(() => this.reconnectNow(), delay)\n }\n\n cancelReconnect() {\n if (this.reconnnectId) {\n clearTimeout(this.reconnnectId)\n delete this.reconnnectId\n }\n }\n}\n","import { createNanoEvents } from 'nanoevents'\n\nexport class WebSocketTransport {\n constructor(url, opts = {}) {\n this.url = url\n\n let Impl = opts.websocketImplementation\n\n if (Impl) {\n this.Impl = Impl\n } else if (typeof WebSocket !== 'undefined') {\n this.Impl = WebSocket\n } else {\n throw new Error('No WebSocket support')\n }\n\n this.connected = false\n this.emitter = createNanoEvents()\n\n let { format, subprotocol } = opts\n\n this.format = format || 'text'\n this.connectionOptions = opts.websocketOptions\n this.subprotocol = subprotocol\n }\n\n open() {\n if (this.connectionOptions) {\n this.ws = new this.Impl(\n this.url,\n this.subprotocol,\n this.connectionOptions\n )\n } else {\n this.ws = new this.Impl(this.url, this.subprotocol)\n }\n this.ws.binaryType = 'arraybuffer'\n this.initListeners()\n\n return new Promise((resolve, reject) => {\n let unbind = []\n\n unbind.push(\n this.once('open', () => {\n unbind.forEach(clbk => clbk())\n resolve()\n })\n )\n\n unbind.push(\n this.once('close', () => {\n unbind.forEach(clbk => clbk())\n reject(Error('WS connection closed'))\n })\n )\n })\n }\n\n setURL(url) {\n this.url = url\n }\n\n setParam() {}\n\n send(data) {\n if (!this.ws || !this.connected) {\n throw Error('WebSocket is not connected')\n } else {\n this.ws.send(data)\n }\n }\n\n close() {\n if (this.ws && this.connected) {\n this.onclose()\n }\n }\n\n on(event, callback) {\n return this.emitter.on(event, callback)\n }\n\n once(event, callback) {\n let unbind = this.emitter.on(event, (...args) => {\n unbind()\n callback(...args)\n })\n return unbind\n }\n\n initListeners() {\n this.ws.onerror = event => {\n this.emitter.emit('error', event.error || new Error('WS Error'))\n }\n\n this.ws.onclose = () => {\n this.onclose()\n }\n\n this.ws.onmessage = event => {\n let data = event.data\n if (this.format === 'binary') {\n data = new Uint8Array(data)\n }\n\n this.emitter.emit('data', data)\n }\n\n this.ws.onopen = () => {\n this.connected = true\n this.emitter.emit('open')\n }\n }\n\n onclose() {\n this.ws.onclose = undefined\n this.ws.close()\n delete this.ws\n this.connected = false\n\n this.emitter.emit('close')\n }\n}\n","import { Cable, GhostChannel } from '../cable/index.js'\nimport { ActionCableProtocol } from '../action_cable/index.js'\nimport { JSONEncoder } from '../encoder/index.js'\nimport { NoopLogger } from '../logger/index.js'\nimport { WebSocketTransport } from '../websocket/index.js'\nimport { Monitor, backoffWithJitter } from '../monitor/index.js'\nimport { SubscriptionRejectedError } from '../protocol/index.js'\n\nexport const DEFAULT_OPTIONS = {\n protocol: 'actioncable-v1-json',\n pingInterval: 3000,\n maxReconnectAttempts: Infinity,\n maxMissingPings: 2,\n logLevel: 'warn',\n lazy: true\n}\n\nexport function createCable(url, opts) {\n if (typeof url === 'object' && typeof opts === 'undefined') {\n opts = url\n url = undefined\n }\n\n opts = opts || {}\n\n if (!url && !opts.transport) throw Error('URL or transport must be specified')\n\n opts = Object.assign({}, DEFAULT_OPTIONS, opts)\n\n let {\n protocol,\n websocketImplementation,\n websocketFormat,\n websocketOptions,\n logLevel,\n logger,\n transport,\n encoder,\n lazy,\n monitor,\n pingInterval,\n reconnectStrategy,\n maxMissingPings,\n maxReconnectAttempts,\n subprotocol,\n tokenRefresher\n } = opts\n\n logger = logger || new NoopLogger(logLevel)\n\n if (typeof protocol === 'string') subprotocol = subprotocol || protocol\n\n if (protocol === 'actioncable-v1-json') {\n protocol = new ActionCableProtocol({ logger })\n encoder = encoder || new JSONEncoder()\n websocketFormat = websocketFormat || 'text'\n } else if (protocol === 'actioncable-v1-msgpack') {\n protocol = new ActionCableProtocol({ logger })\n websocketFormat = 'binary'\n if (!encoder) {\n throw Error(\n 'Msgpack encoder must be specified explicitly. Use `@anycable/msgpack-encoder` package or build your own'\n )\n }\n } else if (protocol === 'actioncable-v1-protobuf') {\n protocol = new ActionCableProtocol({ logger })\n websocketFormat = websocketFormat || 'binary'\n if (!encoder) {\n throw Error(\n 'Protobuf encoder must be specified explicitly. Use `@anycable/protobuf-encoder` package or build your own'\n )\n }\n } else if (typeof protocol === 'string') {\n throw Error(`Protocol is not supported yet: ${protocol}`)\n }\n\n if (!protocol) throw Error('Protocol must be specified')\n\n transport =\n transport ||\n new WebSocketTransport(url, {\n websocketImplementation,\n websocketOptions,\n subprotocol,\n format: websocketFormat\n })\n\n reconnectStrategy = reconnectStrategy || backoffWithJitter(pingInterval)\n\n if (monitor !== false) {\n monitor =\n monitor ||\n new Monitor({\n pingInterval,\n reconnectStrategy,\n maxMissingPings,\n maxReconnectAttempts,\n logger\n })\n }\n\n let cable = new Cable({\n protocol,\n transport,\n encoder,\n logger,\n lazy\n })\n\n if (monitor) {\n monitor.watch(cable)\n cable.monitor = monitor\n }\n\n if (tokenRefresher) {\n watchForExpiredToken(cable, async () => {\n try {\n await tokenRefresher(transport)\n } catch (err) {\n logger.error('Failed to refresh authentication token: ' + err)\n return false\n }\n\n // Initiate cable connection.\n // No need to wait for it to complete, it could\n // fail due to network errors (which is not our responsibility)\n cable.connect().catch(() => {})\n\n return true\n })\n }\n\n return cable\n}\n\nfunction watchForExpiredToken(cable, callback) {\n let attempted = false\n\n cable.on('connect', () => (attempted = false))\n\n cable.on('close', async ev => {\n if (!ev) return\n\n // If we closed by server two times in a row\n if (attempted) {\n cable.logger.warn('Token auto-refresh is disabled', ev)\n return\n }\n\n if (ev.reason === 'token_expired') {\n attempted = true\n\n await callback()\n }\n })\n}\n\n// Wrapper over ActionCableChannel that acts like an Action Cable subscription object\nclass ActionCableSubscription {\n constructor(channel) {\n this.channel = channel\n }\n\n notify(callback, ...args) {\n if (typeof this[callback] !== 'function') return\n\n this[callback](...args)\n }\n\n perform(action, data = {}) {\n this.channel.perform(action, data)\n }\n\n send(data) {\n this.channel.send(data)\n }\n\n get identifier() {\n return this.channel.identifier\n }\n\n unsubscribe() {\n return this.channel.disconnect()\n }\n}\n\nclass ActionCableChannel extends GhostChannel {\n constructor(channelName, params, mixin) {\n super(channelName, params)\n\n this.subscription = new ActionCableSubscription(this)\n Object.assign(this.subscription, mixin)\n\n this.on('connect', () => this.subscription.notify('connected'))\n this.on('disconnect', () =>\n this.subscription.notify('disconnected', { allowReconnect: true })\n )\n this.on('message', val => this.subscription.notify('received', val))\n this.on('close', err => {\n if (err && err instanceof SubscriptionRejectedError) {\n this.subscription.notify('rejected')\n } else {\n this.subscription.notify('disconnected', { allowReconnect: false })\n }\n })\n }\n}\n\nexport class ActionCableSubscriptions {\n constructor(cable) {\n this.cable = cable\n }\n\n create(channel, mixin) {\n let channelName\n let params\n\n if (typeof channel === 'object') {\n channelName = channel.channel\n delete channel.channel\n params = channel\n } else {\n channelName = channel\n params = {}\n }\n\n let cableChannel = new ActionCableChannel(channelName, params, mixin)\n cableChannel.subscription.notify('initialized')\n\n this.cable.subscribe(cableChannel)\n\n return cableChannel.subscription\n }\n}\n\nexport class ActionCableConsumer {\n constructor(cable) {\n this.cable = cable\n this.subscriptions = new ActionCableSubscriptions(cable)\n }\n}\n\nexport function createConsumer(url, opts) {\n let cable = createCable(url, opts)\n\n return new ActionCableConsumer(cable)\n}\n","import { BaseLogger } from '@anycable/core'\n\n/* eslint-disable no-console */\nexport class Logger extends BaseLogger {\n writeLogEntry(level, msg, details) {\n if (details) {\n console[level](msg, details)\n } else {\n console[level](msg)\n }\n }\n}\n","import { Monitor as BaseMonitor, DisconnectedError } from '@anycable/core'\n\nexport class Monitor extends BaseMonitor {\n watch(cable) {\n super.watch(cable)\n\n this.initActivityListeners()\n }\n\n initActivityListeners() {\n if (\n typeof document !== 'undefined' &&\n typeof window !== 'undefined' &&\n document.addEventListener &&\n window.addEventListener\n ) {\n let visibility = () => {\n if (!document.hidden) {\n if (this.reconnectNow()) {\n this.logger.debug('Trigger reconnect due to visibility change')\n }\n }\n }\n let connect = event => {\n if (this.reconnectNow()) {\n this.logger.debug('Trigger reconnect', { event })\n }\n }\n let disconnectFrozen = () =>\n this.disconnect(new DisconnectedError('page_frozen'))\n\n document.addEventListener('visibilitychange', visibility, false)\n window.addEventListener('focus', connect, false)\n window.addEventListener('online', connect, false)\n window.addEventListener('resume', connect, false)\n window.addEventListener('freeze', disconnectFrozen, false)\n\n this.unbind.push(() => {\n document.removeEventListener('visibilitychange', visibility, false)\n window.removeEventListener('focus', connect, false)\n window.removeEventListener('online', connect, false)\n window.removeEventListener('resume', connect, false)\n window.removeEventListener('freeze', disconnectFrozen, false)\n })\n }\n }\n\n disconnect(err) {\n if (this.state === 'disconnected' || this.state === 'closed') return\n\n this.logger.info('Disconnecting', { reason: err.message })\n\n this.cancelReconnect()\n this.stopPolling()\n\n this.state = 'pending_disconnect'\n this.target.disconnected(err)\n }\n}\n","import {\n createCable as coreCreateCable,\n backoffWithJitter,\n DEFAULT_OPTIONS as DEFAULTS,\n ActionCableConsumer\n} from '@anycable/core'\n\nimport { Logger } from './logger/index.js'\nimport { Monitor } from './monitor/index.js'\n\nexport { Channel } from '@anycable/core'\n\nconst metaPrefixes = ['cable', 'action-cable']\n\nconst defaultUrl = '/cable'\n\n/* eslint-disable consistent-return */\nconst fetchMeta = (doc, key) => {\n for (let prefix of metaPrefixes) {\n let element = doc.head.querySelector(`meta[name='${prefix}-${key}']`)\n\n if (element) {\n return element.getAttribute('content')\n }\n }\n}\n\nconst absoluteWSUrl = path => {\n if (path.match(/wss?:\\/\\//)) return path\n\n if (typeof window !== 'undefined') {\n let proto = window.location.protocol.replace('http', 'ws')\n\n return `${proto}//${window.location.host}${path}`\n }\n\n return path\n}\n\n/* eslint-disable consistent-return */\nconst generateUrlFromDOM = () => {\n if (typeof document !== 'undefined' && document.head) {\n let url = fetchMeta(document, 'url')\n if (url) {\n return absoluteWSUrl(url)\n }\n }\n\n return absoluteWSUrl(defaultUrl)\n}\n\nexport function createCable(url, opts) {\n if (typeof url === 'object' && typeof opts === 'undefined') {\n opts = url\n url = undefined\n }\n\n url = url || generateUrlFromDOM()\n opts = opts || {}\n\n opts = Object.assign({}, DEFAULTS, opts)\n\n let {\n logLevel,\n logger,\n pingInterval,\n reconnectStrategy,\n maxMissingPings,\n maxReconnectAttempts\n } = opts\n\n logger = opts.logger = opts.logger || new Logger(logLevel)\n reconnectStrategy = opts.reconnectStrategy =\n opts.reconnectStrategy || backoffWithJitter(pingInterval)\n\n if (opts.monitor !== false) {\n opts.monitor =\n opts.monitor ||\n new Monitor({\n pingInterval,\n reconnectStrategy,\n maxMissingPings,\n maxReconnectAttempts,\n logger\n })\n }\n\n return coreCreateCable(url, opts)\n}\n\nexport function createConsumer(url, opts) {\n let cable = createCable(url, opts)\n\n return new ActionCableConsumer(cable)\n}\n\nexport function fetchTokenFromHTML(opts) {\n let url = opts ? opts.url : undefined\n\n if (!url) {\n if (typeof window !== 'undefined') {\n url = window.location.href\n } else {\n throw Error('An URL to fetch the HTML with a token MUST be specified')\n }\n }\n\n return async transport => {\n let response = await fetch(url, {\n credentials: 'same-origin',\n cache: 'no-cache',\n headers: {\n 'Accept': 'text/html, application/xhtml+xml',\n 'X-ANYCABLE-OPERATION': 'token-refresh'\n }\n })\n\n if (!response.ok) {\n throw Error(\n 'Failed to fetch a page to refresh a token: ' + response.status\n )\n }\n\n let html = await response.text()\n\n let doc = new DOMParser().parseFromString(html, 'text/html')\n\n let newURL = fetchMeta(doc, 'url')\n\n if (newURL) {\n transport.setURL(newURL)\n } else {\n throw Error(\"Couldn't find a token on the page\")\n }\n }\n}\n","import { Channel } from \"@anycable/web\";\n\nexport default class BaseChannel extends Channel {\n receive(data) {\n super.receive(data);\n const { event } = data\n\n if (event === 'session_expired') {\n window.location.reload\n }\n }\n\n connected(){\n super.connected();\n }\n}\n","import { createCable } from \"@anycable/web\";\n\nconst buildWebSocketUrl = () => {\n if (window.location.host === \"localhost:3000\"){\n return `ws://localhost:3334/cable?referrer=${window.location.pathname}`;\n } else {\n return `wss://${window.location.host}/cable?referrer=${window.location.pathname}`;\n }\n};\n\nconst cable = createCable(buildWebSocketUrl());\n\nexport default cable;\n","import BaseChannel from \"./base_channel\";\n\nexport default class InitialPaymentEventChannel extends BaseChannel {\n static identifier = \"InitialPaymentEventChannel\";\n\n receive(data) {\n super.receive(data);\n const { event, message } = data;\n this.emit(event, message);\n }\n}\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","import uniq from \"lodash/uniq\";\nexport const defaultLocaleResolver = (i18n, locale) => {\n const locales = [];\n const list = [];\n locales.push(locale);\n if (!locale) {\n locales.push(i18n.locale);\n }\n if (i18n.enableFallback) {\n locales.push(i18n.defaultLocale);\n }\n locales\n .filter(Boolean)\n .map((entry) => entry.toString())\n .forEach(function (currentLocale) {\n if (!list.includes(currentLocale)) {\n list.push(currentLocale);\n }\n if (!i18n.enableFallback) {\n return;\n }\n const codes = currentLocale.split(\"-\");\n if (codes.length === 3) {\n list.push(`${codes[0]}-${codes[1]}`);\n }\n list.push(codes[0]);\n });\n return uniq(list);\n};\nexport class Locales {\n constructor(i18n) {\n this.i18n = i18n;\n this.registry = {};\n this.register(\"default\", defaultLocaleResolver);\n }\n register(locale, localeResolver) {\n if (typeof localeResolver !== \"function\") {\n const result = localeResolver;\n localeResolver = (() => result);\n }\n this.registry[locale] = localeResolver;\n }\n get(locale) {\n let locales = this.registry[locale] ||\n this.registry[this.i18n.locale] ||\n this.registry.default;\n if (typeof locales === \"function\") {\n locales = locales(this.i18n, locale);\n }\n if (!(locales instanceof Array)) {\n locales = [locales];\n }\n return locales;\n }\n}\n//# sourceMappingURL=Locales.js.map","export const defaultPluralizer = (_i18n, count) => {\n switch (count) {\n case 0:\n return [\"zero\", \"other\"];\n case 1:\n return [\"one\"];\n default:\n return [\"other\"];\n }\n};\nexport class Pluralization {\n constructor(i18n) {\n this.i18n = i18n;\n this.registry = {};\n this.register(\"default\", defaultPluralizer);\n }\n register(locale, pluralizer) {\n this.registry[locale] = pluralizer;\n }\n get(locale) {\n return (this.registry[locale] ||\n this.registry[this.i18n.locale] ||\n this.registry[\"default\"]);\n }\n}\n//# sourceMappingURL=Pluralization.js.map","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n","import camelCase from \"lodash/camelCase\";\nexport function camelCaseKeys(target) {\n if (!target) {\n return {};\n }\n return Object.keys(target).reduce((buffer, key) => {\n buffer[camelCase(key)] = target[key];\n return buffer;\n }, {});\n}\n//# sourceMappingURL=camelCaseKeys.js.map","export function isSet(value) {\n return value !== undefined && value !== null;\n}\n//# sourceMappingURL=isSet.js.map","import { isSet } from \"./isSet\";\nexport function createTranslationOptions(i18n, scope, options) {\n let translationOptions = [{ scope }];\n if (isSet(options.defaults)) {\n translationOptions = translationOptions.concat(options.defaults);\n }\n if (isSet(options.defaultValue)) {\n const message = typeof options.defaultValue === \"function\"\n ? options.defaultValue(i18n, scope, options)\n : options.defaultValue;\n translationOptions.push({ message });\n delete options.defaultValue;\n }\n return translationOptions;\n}\n//# sourceMappingURL=createTranslationOptions.js.map","/*\r\n * bignumber.js v9.1.1\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\nvar\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n/*\r\n * Create and return a BigNumber constructor.\r\n */\r\nfunction clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n P[Symbol.toStringTag] = 'BigNumber';\r\n\r\n // Node.js v10.12.0+\r\n P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n}\r\n\r\n\r\n// PRIVATE HELPER FUNCTIONS\r\n\r\n// These functions don't need access to variables,\r\n// e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\nfunction bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n}\r\n\r\n\r\n// Return a coefficient array as a string of base 10 digits.\r\nfunction coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n}\r\n\r\n\r\n// Compare the value of BigNumbers x and y.\r\nfunction compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n}\r\n\r\n\r\n/*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\nfunction intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n}\r\n\r\n\r\n// Assumes finite n.\r\nfunction isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n}\r\n\r\n\r\nfunction toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n}\r\n\r\n\r\nfunction toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// EXPORT\r\n\r\n\r\nexport var BigNumber = clone();\r\n\r\nexport default BigNumber;\r\n","import BigNumber from \"bignumber.js\";\nvar RoundingModeMap;\n(function (RoundingModeMap) {\n RoundingModeMap[RoundingModeMap[\"up\"] = BigNumber.ROUND_UP] = \"up\";\n RoundingModeMap[RoundingModeMap[\"down\"] = BigNumber.ROUND_DOWN] = \"down\";\n RoundingModeMap[RoundingModeMap[\"truncate\"] = BigNumber.ROUND_DOWN] = \"truncate\";\n RoundingModeMap[RoundingModeMap[\"halfUp\"] = BigNumber.ROUND_HALF_UP] = \"halfUp\";\n RoundingModeMap[RoundingModeMap[\"default\"] = BigNumber.ROUND_HALF_UP] = \"default\";\n RoundingModeMap[RoundingModeMap[\"halfDown\"] = BigNumber.ROUND_HALF_DOWN] = \"halfDown\";\n RoundingModeMap[RoundingModeMap[\"halfEven\"] = BigNumber.ROUND_HALF_EVEN] = \"halfEven\";\n RoundingModeMap[RoundingModeMap[\"banker\"] = BigNumber.ROUND_HALF_EVEN] = \"banker\";\n RoundingModeMap[RoundingModeMap[\"ceiling\"] = BigNumber.ROUND_CEIL] = \"ceiling\";\n RoundingModeMap[RoundingModeMap[\"ceil\"] = BigNumber.ROUND_CEIL] = \"ceil\";\n RoundingModeMap[RoundingModeMap[\"floor\"] = BigNumber.ROUND_FLOOR] = \"floor\";\n})(RoundingModeMap || (RoundingModeMap = {}));\nexport function expandRoundMode(roundMode) {\n var _a;\n return ((_a = RoundingModeMap[roundMode]) !== null && _a !== void 0 ? _a : RoundingModeMap.default);\n}\n//# sourceMappingURL=expandRoundMode.js.map","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor;\n\n/**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\nfunction baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n}\n\nmodule.exports = baseRepeat;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseRepeat = require('./_baseRepeat'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger'),\n toString = require('./toString');\n\n/**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\nfunction repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n}\n\nmodule.exports = repeat;\n","import BigNumber from \"bignumber.js\";\nimport { expandRoundMode } from \"./expandRoundMode\";\nfunction digitCount(numeric) {\n if (numeric.isZero()) {\n return 1;\n }\n return Math.floor(Math.log10(numeric.abs().toNumber()) + 1);\n}\nfunction getAbsolutePrecision(numeric, { precision, significant }) {\n if (significant && precision !== null && precision > 0) {\n return precision - digitCount(numeric);\n }\n return precision;\n}\nexport function roundNumber(numeric, options) {\n const precision = getAbsolutePrecision(numeric, options);\n if (precision === null) {\n return numeric.toString();\n }\n const roundMode = expandRoundMode(options.roundMode);\n if (precision >= 0) {\n return numeric.toFixed(precision, roundMode);\n }\n const rounder = Math.pow(10, Math.abs(precision));\n numeric = new BigNumber(numeric.div(rounder).toFixed(0, roundMode)).times(rounder);\n return numeric.toString();\n}\n//# sourceMappingURL=roundNumber.js.map","import BigNumber from \"bignumber.js\";\nimport repeat from \"lodash/repeat\";\nimport { roundNumber } from \"./roundNumber\";\nfunction replaceInFormat(format, { formattedNumber, unit }) {\n return format.replace(\"%n\", formattedNumber).replace(\"%u\", unit);\n}\nfunction computeSignificand({ significand, whole, precision, }) {\n if (whole === \"0\" || precision === null) {\n return significand;\n }\n const limit = Math.max(0, precision - whole.length);\n return (significand !== null && significand !== void 0 ? significand : \"\").substr(0, limit);\n}\nexport function formatNumber(input, options) {\n var _a, _b, _c;\n const originalNumber = new BigNumber(input);\n if (options.raise && !originalNumber.isFinite()) {\n throw new Error(`\"${input}\" is not a valid numeric value`);\n }\n const roundedNumber = roundNumber(originalNumber, options);\n const numeric = new BigNumber(roundedNumber);\n const isNegative = numeric.lt(0);\n const isZero = numeric.isZero();\n let [whole, significand] = roundedNumber.split(\".\");\n const buffer = [];\n let formattedNumber;\n const positiveFormat = (_a = options.format) !== null && _a !== void 0 ? _a : \"%n\";\n const negativeFormat = (_b = options.negativeFormat) !== null && _b !== void 0 ? _b : `-${positiveFormat}`;\n const format = isNegative && !isZero ? negativeFormat : positiveFormat;\n whole = whole.replace(\"-\", \"\");\n while (whole.length > 0) {\n buffer.unshift(whole.substr(Math.max(0, whole.length - 3), 3));\n whole = whole.substr(0, whole.length - 3);\n }\n whole = buffer.join(\"\");\n formattedNumber = buffer.join(options.delimiter);\n if (options.significant) {\n significand = computeSignificand({\n whole,\n significand,\n precision: options.precision,\n });\n }\n else {\n significand = significand !== null && significand !== void 0 ? significand : repeat(\"0\", (_c = options.precision) !== null && _c !== void 0 ? _c : 0);\n }\n if (options.stripInsignificantZeros && significand) {\n significand = significand.replace(/0+$/, \"\");\n }\n if (originalNumber.isNaN()) {\n formattedNumber = input.toString();\n }\n if (significand && originalNumber.isFinite()) {\n formattedNumber += (options.separator || \".\") + significand;\n }\n return replaceInFormat(format, {\n formattedNumber,\n unit: options.unit,\n });\n}\n//# sourceMappingURL=formatNumber.js.map","export function getFullScope(i18n, scope, options) {\n let result = \"\";\n if (scope instanceof String || typeof scope === \"string\") {\n result = scope;\n }\n if (scope instanceof Array) {\n result = scope.join(i18n.defaultSeparator);\n }\n if (options.scope) {\n result = [options.scope, result].join(i18n.defaultSeparator);\n }\n return result;\n}\n//# sourceMappingURL=getFullScope.js.map","export function inferType(instance) {\n var _a, _b;\n if (instance === null) {\n return \"null\";\n }\n const type = typeof instance;\n if (type !== \"object\") {\n return type;\n }\n return ((_b = (_a = instance === null || instance === void 0 ? void 0 : instance.constructor) === null || _a === void 0 ? void 0 : _a.name) === null || _b === void 0 ? void 0 : _b.toLowerCase()) || \"object\";\n}\n//# sourceMappingURL=inferType.js.map","import { isSet } from \"./isSet\";\nexport function interpolate(i18n, message, options) {\n options = Object.keys(options).reduce((buffer, key) => {\n buffer[i18n.transformKey(key)] = options[key];\n return buffer;\n }, {});\n const matches = message.match(i18n.placeholder);\n if (!matches) {\n return message;\n }\n while (matches.length) {\n let value;\n const placeholder = matches.shift();\n const name = placeholder.replace(i18n.placeholder, \"$1\");\n if (isSet(options[name])) {\n value = options[name].toString().replace(/\\$/gm, \"_#$#_\");\n }\n else if (name in options) {\n value = i18n.nullPlaceholder(i18n, placeholder, message, options);\n }\n else {\n value = i18n.missingPlaceholder(i18n, placeholder, message, options);\n }\n const regex = new RegExp(placeholder.replace(/\\{/gm, \"\\\\{\").replace(/\\}/gm, \"\\\\}\"));\n message = message.replace(regex, value);\n }\n return message.replace(/_#\\$#_/g, \"$\");\n}\n//# sourceMappingURL=interpolate.js.map","import get from \"lodash/get\";\nimport { isSet } from \"./isSet\";\nimport { getFullScope } from \"./getFullScope\";\nimport { inferType } from \"./inferType\";\nexport function lookup(i18n, scope, options = {}) {\n options = Object.assign({}, options);\n const locale = \"locale\" in options ? options.locale : i18n.locale;\n const localeType = inferType(locale);\n const locales = i18n.locales\n .get(localeType === \"string\" ? locale : typeof locale)\n .slice();\n scope = getFullScope(i18n, scope, options)\n .split(i18n.defaultSeparator)\n .map((component) => i18n.transformKey(component))\n .join(\".\");\n const entries = locales.map((locale) => get(i18n.translations, [locale, scope].join(\".\")));\n entries.push(options.defaultValue);\n return entries.find((entry) => isSet(entry));\n}\n//# sourceMappingURL=lookup.js.map","import BigNumber from \"bignumber.js\";\nexport function numberToDelimited(input, options) {\n const numeric = new BigNumber(input);\n if (!numeric.isFinite()) {\n return input.toString();\n }\n if (!options.delimiterPattern.global) {\n throw new Error(`options.delimiterPattern must be a global regular expression; received ${options.delimiterPattern}`);\n }\n let [left, right] = numeric.toString().split(\".\");\n left = left.replace(options.delimiterPattern, (digitToDelimiter) => `${digitToDelimiter}${options.delimiter}`);\n return [left, right].filter(Boolean).join(options.separator);\n}\n//# sourceMappingURL=numberToDelimited.js.map","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n}\n\nmodule.exports = baseZipObject;\n","var assignValue = require('./_assignValue'),\n baseZipObject = require('./_baseZipObject');\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n}\n\nmodule.exports = zipObject;\n","import BigNumber from \"bignumber.js\";\nimport sortBy from \"lodash/sortBy\";\nimport zipObject from \"lodash/zipObject\";\nimport { getFullScope } from \"./getFullScope\";\nimport { lookup } from \"./lookup\";\nimport { roundNumber } from \"./roundNumber\";\nimport { inferType } from \"./inferType\";\nconst DECIMAL_UNITS = {\n \"0\": \"unit\",\n \"1\": \"ten\",\n \"2\": \"hundred\",\n \"3\": \"thousand\",\n \"6\": \"million\",\n \"9\": \"billion\",\n \"12\": \"trillion\",\n \"15\": \"quadrillion\",\n \"-1\": \"deci\",\n \"-2\": \"centi\",\n \"-3\": \"mili\",\n \"-6\": \"micro\",\n \"-9\": \"nano\",\n \"-12\": \"pico\",\n \"-15\": \"femto\",\n};\nconst INVERTED_DECIMAL_UNITS = zipObject(Object.values(DECIMAL_UNITS), Object.keys(DECIMAL_UNITS).map((key) => parseInt(key, 10)));\nexport function numberToHuman(i18n, input, options) {\n const roundOptions = {\n roundMode: options.roundMode,\n precision: options.precision,\n significant: options.significant,\n };\n let units;\n if (inferType(options.units) === \"string\") {\n const scope = options.units;\n units = lookup(i18n, scope);\n if (!units) {\n throw new Error(`The scope \"${i18n.locale}${i18n.defaultSeparator}${getFullScope(i18n, scope, {})}\" couldn't be found`);\n }\n }\n else {\n units = options.units;\n }\n let formattedNumber = roundNumber(new BigNumber(input), roundOptions);\n const unitExponents = (units) => sortBy(Object.keys(units).map((name) => INVERTED_DECIMAL_UNITS[name]), (numeric) => numeric * -1);\n const calculateExponent = (num, units) => {\n const exponent = num.isZero()\n ? 0\n : Math.floor(Math.log10(num.abs().toNumber()));\n return unitExponents(units).find((exp) => exponent >= exp) || 0;\n };\n const determineUnit = (units, exponent) => {\n const expName = DECIMAL_UNITS[exponent.toString()];\n return units[expName] || \"\";\n };\n const exponent = calculateExponent(new BigNumber(formattedNumber), units);\n const unit = determineUnit(units, exponent);\n formattedNumber = roundNumber(new BigNumber(formattedNumber).div(Math.pow(10, exponent)), roundOptions);\n if (options.stripInsignificantZeros) {\n let [whole, significand] = formattedNumber.split(\".\");\n significand = (significand || \"\").replace(/0+$/, \"\");\n formattedNumber = whole;\n if (significand) {\n formattedNumber += `${options.separator}${significand}`;\n }\n }\n return options.format\n .replace(\"%n\", formattedNumber || \"0\")\n .replace(\"%u\", unit)\n .trim();\n}\n//# sourceMappingURL=numberToHuman.js.map","import BigNumber from \"bignumber.js\";\nimport { roundNumber } from \"./roundNumber\";\nimport { expandRoundMode } from \"./expandRoundMode\";\nconst STORAGE_UNITS = [\"byte\", \"kb\", \"mb\", \"gb\", \"tb\", \"pb\", \"eb\"];\nexport function numberToHumanSize(i18n, input, options) {\n const roundMode = expandRoundMode(options.roundMode);\n const base = 1024;\n const num = new BigNumber(input).abs();\n const smallerThanBase = num.lt(base);\n let numberToBeFormatted;\n const computeExponent = (numeric, units) => {\n const max = units.length - 1;\n const exp = new BigNumber(Math.log(numeric.toNumber()))\n .div(Math.log(base))\n .integerValue(BigNumber.ROUND_DOWN)\n .toNumber();\n return Math.min(max, exp);\n };\n const storageUnitKey = (units) => {\n const keyEnd = smallerThanBase ? \"byte\" : units[exponent];\n return `number.human.storage_units.units.${keyEnd}`;\n };\n const exponent = computeExponent(num, STORAGE_UNITS);\n if (smallerThanBase) {\n numberToBeFormatted = num.integerValue();\n }\n else {\n numberToBeFormatted = new BigNumber(roundNumber(num.div(Math.pow(base, exponent)), {\n significant: options.significant,\n precision: options.precision,\n roundMode: options.roundMode,\n }));\n }\n const format = i18n.translate(\"number.human.storage_units.format\", {\n defaultValue: \"%n %u\",\n });\n const unit = i18n.translate(storageUnitKey(STORAGE_UNITS), {\n count: num.integerValue().toNumber(),\n });\n let formattedNumber = numberToBeFormatted.toFixed(options.precision, roundMode);\n if (options.stripInsignificantZeros) {\n formattedNumber = formattedNumber\n .replace(/(\\..*?)0+$/, \"$1\")\n .replace(/\\.$/, \"\");\n }\n return format.replace(\"%n\", formattedNumber).replace(\"%u\", unit);\n}\n//# sourceMappingURL=numberToHumanSize.js.map","export function parseDate(input) {\n if (input instanceof Date) {\n return input;\n }\n if (typeof input === \"number\") {\n const date = new Date();\n date.setTime(input);\n return date;\n }\n const matches = new String(input).match(/(\\d{4})-(\\d{2})-(\\d{2})(?:[ T](\\d{2}):(\\d{2}):(\\d{2})(?:[.,](\\d{1,3}))?)?(Z|\\+00:?00)?/);\n if (matches) {\n const parts = matches.slice(1, 8).map((match) => parseInt(match, 10) || 0);\n parts[1] -= 1;\n const [year, month, day, hour, minute, second, milliseconds] = parts;\n const timezone = matches[8];\n if (timezone) {\n return new Date(Date.UTC(year, month, day, hour, minute, second, milliseconds));\n }\n else {\n return new Date(year, month, day, hour, minute, second, milliseconds);\n }\n }\n if (input.match(/([A-Z][a-z]{2}) ([A-Z][a-z]{2}) (\\d+) (\\d+:\\d+:\\d+) ([+-]\\d+) (\\d+)/)) {\n const date = new Date();\n date.setTime(Date.parse([RegExp.$1, RegExp.$2, RegExp.$3, RegExp.$6, RegExp.$4, RegExp.$5].join(\" \")));\n }\n const date = new Date();\n date.setTime(Date.parse(input));\n return date;\n}\n//# sourceMappingURL=parseDate.js.map","import { isSet } from \"./isSet\";\nimport { lookup } from \"./lookup\";\nexport function pluralize({ i18n, count, scope, options, baseScope, }) {\n options = Object.assign({}, options);\n let translations;\n let message;\n if (typeof scope === \"object\" && scope) {\n translations = scope;\n }\n else {\n translations = lookup(i18n, scope, options);\n }\n if (!translations) {\n return i18n.missingTranslation.get(scope, options);\n }\n const pluralizer = i18n.pluralization.get(options.locale);\n const keys = pluralizer(i18n, count);\n const missingKeys = [];\n while (keys.length) {\n const key = keys.shift();\n if (isSet(translations[key])) {\n message = translations[key];\n break;\n }\n missingKeys.push(key);\n }\n if (!isSet(message)) {\n return i18n.missingTranslation.get(baseScope.split(i18n.defaultSeparator).concat([missingKeys[0]]), options);\n }\n options.count = count;\n return i18n.interpolate(i18n, message, options);\n}\n//# sourceMappingURL=pluralize.js.map","var baseFlatten = require('./_baseFlatten');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n}\n\nmodule.exports = flattenDeep;\n","import isArray from \"lodash/isArray\";\nimport isObject from \"lodash/isObject\";\nimport flattenDeep from \"lodash/flattenDeep\";\nclass PropertyFlatList {\n constructor(target) {\n this.target = target;\n }\n call() {\n const keys = flattenDeep(Object.keys(this.target).map((key) => this.compute(this.target[key], key)));\n keys.sort();\n return keys;\n }\n compute(value, path) {\n if (!isArray(value) && isObject(value)) {\n return Object.keys(value).map((key) => this.compute(value[key], `${path}.${key}`));\n }\n else {\n return path;\n }\n }\n}\nexport function propertyFlatList(target) {\n return new PropertyFlatList(target).call();\n}\n//# sourceMappingURL=propertyFlatList.js.map","const DEFAULT_OPTIONS = {\n meridian: { am: \"AM\", pm: \"PM\" },\n dayNames: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n abbrDayNames: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n monthNames: [\n null,\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n abbrMonthNames: [\n null,\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n};\nexport function strftime(date, format, options = {}) {\n const { abbrDayNames, dayNames, abbrMonthNames, monthNames, meridian: AM_PM, } = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options);\n if (isNaN(date.getTime())) {\n throw new Error(\"strftime() requires a valid date object, but received an invalid date.\");\n }\n const weekDay = date.getDay();\n const day = date.getDate();\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n const hour = date.getHours();\n let hour12 = hour;\n const meridian = hour > 11 ? \"pm\" : \"am\";\n const secs = date.getSeconds();\n const mins = date.getMinutes();\n const offset = date.getTimezoneOffset();\n const absOffsetHours = Math.floor(Math.abs(offset / 60));\n const absOffsetMinutes = Math.abs(offset) - absOffsetHours * 60;\n const timezoneoffset = (offset > 0 ? \"-\" : \"+\") +\n (absOffsetHours.toString().length < 2\n ? \"0\" + absOffsetHours\n : absOffsetHours) +\n (absOffsetMinutes.toString().length < 2\n ? \"0\" + absOffsetMinutes\n : absOffsetMinutes);\n if (hour12 > 12) {\n hour12 = hour12 - 12;\n }\n else if (hour12 === 0) {\n hour12 = 12;\n }\n format = format.replace(\"%a\", abbrDayNames[weekDay]);\n format = format.replace(\"%A\", dayNames[weekDay]);\n format = format.replace(\"%b\", abbrMonthNames[month]);\n format = format.replace(\"%B\", monthNames[month]);\n format = format.replace(\"%d\", day.toString().padStart(2, \"0\"));\n format = format.replace(\"%e\", day.toString());\n format = format.replace(\"%-d\", day.toString());\n format = format.replace(\"%H\", hour.toString().padStart(2, \"0\"));\n format = format.replace(\"%-H\", hour.toString());\n format = format.replace(\"%k\", hour.toString());\n format = format.replace(\"%I\", hour12.toString().padStart(2, \"0\"));\n format = format.replace(\"%-I\", hour12.toString());\n format = format.replace(\"%l\", hour12.toString());\n format = format.replace(\"%m\", month.toString().padStart(2, \"0\"));\n format = format.replace(\"%-m\", month.toString());\n format = format.replace(\"%M\", mins.toString().padStart(2, \"0\"));\n format = format.replace(\"%-M\", mins.toString());\n format = format.replace(\"%p\", AM_PM[meridian]);\n format = format.replace(\"%P\", AM_PM[meridian].toLowerCase());\n format = format.replace(\"%S\", secs.toString().padStart(2, \"0\"));\n format = format.replace(\"%-S\", secs.toString());\n format = format.replace(\"%w\", weekDay.toString());\n format = format.replace(\"%y\", year.toString().padStart(2, \"0\").substr(-2));\n format = format.replace(\"%-y\", year.toString().padStart(2, \"0\").substr(-2).replace(/^0+/, \"\"));\n format = format.replace(\"%Y\", year.toString());\n format = format.replace(/%z/i, timezoneoffset);\n return format;\n}\n//# sourceMappingURL=strftime.js.map","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","import range from \"lodash/range\";\nimport { parseDate } from \"./parseDate\";\nconst within = (start, end, actual) => actual >= start && actual <= end;\nexport function timeAgoInWords(i18n, fromTime, toTime, options = {}) {\n const scope = options.scope || \"datetime.distance_in_words\";\n const t = (name, count = 0) => i18n.t(name, { count, scope });\n fromTime = parseDate(fromTime);\n toTime = parseDate(toTime);\n let fromInSeconds = fromTime.getTime() / 1000;\n let toInSeconds = toTime.getTime() / 1000;\n if (fromInSeconds > toInSeconds) {\n [fromTime, toTime, fromInSeconds, toInSeconds] = [\n toTime,\n fromTime,\n toInSeconds,\n fromInSeconds,\n ];\n }\n const distanceInSeconds = Math.round(toInSeconds - fromInSeconds);\n const distanceInMinutes = Math.round((toInSeconds - fromInSeconds) / 60);\n const distanceInHours = distanceInMinutes / 60;\n const distanceInDays = distanceInHours / 24;\n const distanceInHoursRounded = Math.round(distanceInMinutes / 60);\n const distanceInDaysRounded = Math.round(distanceInDays);\n const distanceInMonthsRounded = Math.round(distanceInDaysRounded / 30);\n if (within(0, 1, distanceInMinutes)) {\n if (!options.includeSeconds) {\n return distanceInMinutes === 0\n ? t(\"less_than_x_minutes\", 1)\n : t(\"x_minutes\", distanceInMinutes);\n }\n if (within(0, 4, distanceInSeconds)) {\n return t(\"less_than_x_seconds\", 5);\n }\n if (within(5, 9, distanceInSeconds)) {\n return t(\"less_than_x_seconds\", 10);\n }\n if (within(10, 19, distanceInSeconds)) {\n return t(\"less_than_x_seconds\", 20);\n }\n if (within(20, 39, distanceInSeconds)) {\n return t(\"half_a_minute\");\n }\n if (within(40, 59, distanceInSeconds)) {\n return t(\"less_than_x_minutes\", 1);\n }\n return t(\"x_minutes\", 1);\n }\n if (within(2, 44, distanceInMinutes)) {\n return t(\"x_minutes\", distanceInMinutes);\n }\n if (within(45, 89, distanceInMinutes)) {\n return t(\"about_x_hours\", 1);\n }\n if (within(90, 1439, distanceInMinutes)) {\n return t(\"about_x_hours\", distanceInHoursRounded);\n }\n if (within(1440, 2519, distanceInMinutes)) {\n return t(\"x_days\", 1);\n }\n if (within(2520, 43199, distanceInMinutes)) {\n return t(\"x_days\", distanceInDaysRounded);\n }\n if (within(43200, 86399, distanceInMinutes)) {\n return t(\"about_x_months\", Math.round(distanceInMinutes / 43200));\n }\n if (within(86400, 525599, distanceInMinutes)) {\n return t(\"x_months\", distanceInMonthsRounded);\n }\n let fromYear = fromTime.getFullYear();\n if (fromTime.getMonth() + 1 >= 3) {\n fromYear += 1;\n }\n let toYear = toTime.getFullYear();\n if (toTime.getMonth() + 1 < 3) {\n toYear -= 1;\n }\n const leapYears = fromYear > toYear\n ? 0\n : range(fromYear, toYear).filter((year) => new Date(year, 1, 29).getMonth() == 1).length;\n const minutesInYear = 525600;\n const minuteOffsetForLeapYear = leapYears * 1440;\n const minutesWithOffset = distanceInMinutes - minuteOffsetForLeapYear;\n const distanceInYears = Math.trunc(minutesWithOffset / minutesInYear);\n const diff = parseFloat((minutesWithOffset / minutesInYear - distanceInYears).toPrecision(3));\n if (diff < 0.25) {\n return t(\"about_x_years\", distanceInYears);\n }\n if (diff < 0.75) {\n return t(\"over_x_years\", distanceInYears);\n }\n return t(\"almost_x_years\", distanceInYears + 1);\n}\n//# sourceMappingURL=timeAgoInWords.js.map","import { getFullScope, inferType } from \"./helpers\";\nexport const guessStrategy = function (i18n, scope) {\n if (scope instanceof Array) {\n scope = scope.join(i18n.defaultSeparator);\n }\n const message = scope.split(i18n.defaultSeparator).slice(-1)[0];\n return (i18n.missingTranslationPrefix +\n message\n .replace(\"_\", \" \")\n .replace(/([a-z])([A-Z])/g, (_match, p1, p2) => `${p1} ${p2.toLowerCase()}`));\n};\nexport const messageStrategy = (i18n, scope, options) => {\n const fullScope = getFullScope(i18n, scope, options);\n const locale = \"locale\" in options ? options.locale : i18n.locale;\n const localeType = inferType(locale);\n const fullScopeWithLocale = [\n localeType == \"string\" ? locale : localeType,\n fullScope,\n ].join(i18n.defaultSeparator);\n return `[missing \"${fullScopeWithLocale}\" translation]`;\n};\nexport const errorStrategy = (i18n, scope, options) => {\n const fullScope = getFullScope(i18n, scope, options);\n const fullScopeWithLocale = [i18n.locale, fullScope].join(i18n.defaultSeparator);\n throw new Error(`Missing translation: ${fullScopeWithLocale}`);\n};\nexport class MissingTranslation {\n constructor(i18n) {\n this.i18n = i18n;\n this.registry = {};\n this.register(\"guess\", guessStrategy);\n this.register(\"message\", messageStrategy);\n this.register(\"error\", errorStrategy);\n }\n register(name, strategy) {\n this.registry[name] = strategy;\n }\n get(scope, options) {\n var _a;\n return this.registry[(_a = options.missingBehavior) !== null && _a !== void 0 ? _a : this.i18n.missingBehavior](this.i18n, scope, options);\n }\n}\n//# sourceMappingURL=MissingTranslation.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport get from \"lodash/get\";\nimport has from \"lodash/has\";\nimport set from \"lodash/set\";\nimport { Locales } from \"./Locales\";\nimport { Pluralization } from \"./Pluralization\";\nimport { MissingTranslation } from \"./MissingTranslation\";\nimport { camelCaseKeys, createTranslationOptions, formatNumber, getFullScope, inferType, interpolate, isSet, lookup, numberToDelimited, numberToHuman, numberToHumanSize, parseDate, pluralize, propertyFlatList, strftime, timeAgoInWords, } from \"./helpers\";\nconst DEFAULT_I18N_OPTIONS = {\n defaultLocale: \"en\",\n locale: \"en\",\n defaultSeparator: \".\",\n placeholder: /(?:\\{\\{|%\\{)(.*?)(?:\\}\\}?)/gm,\n enableFallback: false,\n missingBehavior: \"message\",\n missingTranslationPrefix: \"\",\n missingPlaceholder: (_i18n, placeholder) => `[missing \"${placeholder}\" value]`,\n nullPlaceholder: (i18n, placeholder, message, options) => i18n.missingPlaceholder(i18n, placeholder, message, options),\n transformKey: (key) => key,\n};\nexport class I18n {\n constructor(translations = {}, options = {}) {\n this._locale = DEFAULT_I18N_OPTIONS.locale;\n this._defaultLocale = DEFAULT_I18N_OPTIONS.defaultLocale;\n this._version = 0;\n this.onChangeHandlers = [];\n this.translations = {};\n this.t = this.translate;\n this.p = this.pluralize;\n this.l = this.localize;\n this.distanceOfTimeInWords = this.timeAgoInWords;\n const { locale, enableFallback, missingBehavior, missingTranslationPrefix, missingPlaceholder, nullPlaceholder, defaultLocale, defaultSeparator, placeholder, transformKey, } = Object.assign(Object.assign({}, DEFAULT_I18N_OPTIONS), options);\n this.locale = locale;\n this.defaultLocale = defaultLocale;\n this.defaultSeparator = defaultSeparator;\n this.enableFallback = enableFallback;\n this.locale = locale;\n this.missingBehavior = missingBehavior;\n this.missingTranslationPrefix = missingTranslationPrefix;\n this.missingPlaceholder = missingPlaceholder;\n this.nullPlaceholder = nullPlaceholder;\n this.placeholder = placeholder;\n this.pluralization = new Pluralization(this);\n this.locales = new Locales(this);\n this.missingTranslation = new MissingTranslation(this);\n this.transformKey = transformKey;\n this.interpolate = interpolate;\n this.store(translations);\n }\n store(translations) {\n const map = propertyFlatList(translations);\n map.forEach((path) => set(this.translations, path, get(translations, path)));\n this.hasChanged();\n }\n get locale() {\n return this._locale || this.defaultLocale || \"en\";\n }\n set locale(newLocale) {\n if (typeof newLocale !== \"string\") {\n throw new Error(`Expected newLocale to be a string; got ${inferType(newLocale)}`);\n }\n const changed = this._locale !== newLocale;\n this._locale = newLocale;\n if (changed) {\n this.hasChanged();\n }\n }\n get defaultLocale() {\n return this._defaultLocale || \"en\";\n }\n set defaultLocale(newLocale) {\n if (typeof newLocale !== \"string\") {\n throw new Error(`Expected newLocale to be a string; got ${inferType(newLocale)}`);\n }\n const changed = this._defaultLocale !== newLocale;\n this._defaultLocale = newLocale;\n if (changed) {\n this.hasChanged();\n }\n }\n translate(scope, options) {\n options = Object.assign({}, options);\n const translationOptions = createTranslationOptions(this, scope, options);\n let translation;\n const hasFoundTranslation = translationOptions.some((translationOption) => {\n if (isSet(translationOption.scope)) {\n translation = lookup(this, translationOption.scope, options);\n }\n else if (isSet(translationOption.message)) {\n translation = translationOption.message;\n }\n return translation !== undefined && translation !== null;\n });\n if (!hasFoundTranslation) {\n return this.missingTranslation.get(scope, options);\n }\n if (typeof translation === \"string\") {\n translation = this.interpolate(this, translation, options);\n }\n else if (typeof translation === \"object\" &&\n translation &&\n isSet(options.count)) {\n translation = pluralize({\n i18n: this,\n count: options.count || 0,\n scope: translation,\n options,\n baseScope: getFullScope(this, scope, options),\n });\n }\n if (options && translation instanceof Array) {\n translation = translation.map((entry) => typeof entry === \"string\"\n ? interpolate(this, entry, options)\n : entry);\n }\n return translation;\n }\n pluralize(count, scope, options) {\n return pluralize({\n i18n: this,\n count,\n scope,\n options: Object.assign({}, options),\n baseScope: getFullScope(this, scope, options !== null && options !== void 0 ? options : {}),\n });\n }\n localize(type, value, options) {\n options = Object.assign({}, options);\n if (value === undefined || value === null) {\n return \"\";\n }\n switch (type) {\n case \"currency\":\n return this.numberToCurrency(value);\n case \"number\":\n return formatNumber(value, Object.assign({ delimiter: \",\", precision: 3, separator: \".\", significant: false, stripInsignificantZeros: false }, lookup(this, \"number.format\")));\n case \"percentage\":\n return this.numberToPercentage(value);\n default: {\n let localizedValue;\n if (type.match(/^(date|time)/)) {\n localizedValue = this.toTime(type, value);\n }\n else {\n localizedValue = value.toString();\n }\n return interpolate(this, localizedValue, options);\n }\n }\n }\n toTime(scope, input) {\n const date = parseDate(input);\n const format = lookup(this, scope);\n if (date.toString().match(/invalid/i)) {\n return date.toString();\n }\n if (!format) {\n return date.toString();\n }\n return this.strftime(date, format);\n }\n numberToCurrency(input, options = {}) {\n return formatNumber(input, Object.assign(Object.assign(Object.assign({ delimiter: \",\", format: \"%u%n\", precision: 2, separator: \".\", significant: false, stripInsignificantZeros: false, unit: \"$\" }, camelCaseKeys(this.get(\"number.format\"))), camelCaseKeys(this.get(\"number.currency.format\"))), options));\n }\n numberToPercentage(input, options = {}) {\n return formatNumber(input, Object.assign(Object.assign(Object.assign({ delimiter: \"\", format: \"%n%\", precision: 3, stripInsignificantZeros: false, separator: \".\", significant: false }, camelCaseKeys(this.get(\"number.format\"))), camelCaseKeys(this.get(\"number.percentage.format\"))), options));\n }\n numberToHumanSize(input, options = {}) {\n return numberToHumanSize(this, input, Object.assign(Object.assign(Object.assign({ delimiter: \"\", precision: 3, significant: true, stripInsignificantZeros: true, units: {\n billion: \"Billion\",\n million: \"Million\",\n quadrillion: \"Quadrillion\",\n thousand: \"Thousand\",\n trillion: \"Trillion\",\n unit: \"\",\n } }, camelCaseKeys(this.get(\"number.human.format\"))), camelCaseKeys(this.get(\"number.human.storage_units\"))), options));\n }\n numberToHuman(input, options = {}) {\n return numberToHuman(this, input, Object.assign(Object.assign(Object.assign({ delimiter: \"\", separator: \".\", precision: 3, significant: true, stripInsignificantZeros: true, format: \"%n %u\", roundMode: \"default\", units: {\n billion: \"Billion\",\n million: \"Million\",\n quadrillion: \"Quadrillion\",\n thousand: \"Thousand\",\n trillion: \"Trillion\",\n unit: \"\",\n } }, camelCaseKeys(this.get(\"number.human.format\"))), camelCaseKeys(this.get(\"number.human.decimal_units\"))), options));\n }\n numberToRounded(input, options) {\n return formatNumber(input, Object.assign({ unit: \"\", precision: 3, significant: false, separator: \".\", delimiter: \"\", stripInsignificantZeros: false }, options));\n }\n numberToDelimited(input, options = {}) {\n return numberToDelimited(input, Object.assign({ delimiterPattern: /(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, delimiter: \",\", separator: \".\" }, options));\n }\n withLocale(locale, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const originalLocale = this.locale;\n try {\n this.locale = locale;\n yield callback();\n }\n finally {\n this.locale = originalLocale;\n }\n });\n }\n strftime(date, format, options = {}) {\n return strftime(date, format, Object.assign(Object.assign(Object.assign({}, camelCaseKeys(lookup(this, \"date\"))), { meridian: {\n am: lookup(this, \"time.am\") || \"AM\",\n pm: lookup(this, \"time.pm\") || \"PM\",\n } }), options));\n }\n update(path, override, options = { strict: false }) {\n if (options.strict && !has(this.translations, path)) {\n throw new Error(`The path \"${path}\" is not currently defined`);\n }\n const currentNode = get(this.translations, path);\n const currentType = inferType(currentNode);\n const overrideType = inferType(override);\n if (options.strict && currentType !== overrideType) {\n throw new Error(`The current type for \"${path}\" is \"${currentType}\", but you're trying to override it with \"${overrideType}\"`);\n }\n let newNode;\n if (overrideType === \"object\") {\n newNode = Object.assign(Object.assign({}, currentNode), override);\n }\n else {\n newNode = override;\n }\n set(this.translations, path, newNode);\n this.hasChanged();\n }\n toSentence(items, options = {}) {\n const { wordsConnector, twoWordsConnector, lastWordConnector } = Object.assign(Object.assign({ wordsConnector: \", \", twoWordsConnector: \" and \", lastWordConnector: \", and \" }, camelCaseKeys(lookup(this, \"support.array\"))), options);\n const size = items.length;\n switch (size) {\n case 0:\n return \"\";\n case 1:\n return `${items[0]}`;\n case 2:\n return items.join(twoWordsConnector);\n default:\n return [\n items.slice(0, size - 1).join(wordsConnector),\n lastWordConnector,\n items[size - 1],\n ].join(\"\");\n }\n }\n timeAgoInWords(fromTime, toTime, options = {}) {\n return timeAgoInWords(this, fromTime, toTime, options);\n }\n onChange(callback) {\n this.onChangeHandlers.push(callback);\n return () => {\n this.onChangeHandlers.splice(this.onChangeHandlers.indexOf(callback), 1);\n };\n }\n get version() {\n return this._version;\n }\n formatNumber(input, options) {\n return formatNumber(input, options);\n }\n get(scope) {\n return lookup(this, scope);\n }\n runCallbacks() {\n this.onChangeHandlers.forEach((callback) => callback(this));\n }\n hasChanged() {\n this._version += 1;\n this.runCallbacks();\n }\n}\n//# sourceMappingURL=I18n.js.map","import { I18n } from \"i18n-js\";\nimport translations from \"~/translations.json\";\n\nconst i18n = new I18n();\nconst defaultLocale = \"en.leases\";\nconst userLocale = document.documentElement.lang;\n\ni18n.store(translations);\ni18n.defaultLocale = defaultLocale;\ni18n.enableFallback = true;\ni18n.locale = userLocale.substring(0, 2) === \"es\" ? \"es.leases\" : defaultLocale;\n\nwindow.acima = window.acima || {};\nwindow.acima.i18n = i18n;\n"],"names":["this","exports","es","_a","STATE","subscribe","unsubscribe","cable","DEFAULT_OPTIONS","createCable","Monitor","BaseMonitor","DEFAULTS","coreCreateCable","isArray","freeGlobal","global","require$$0","root","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","objectToString","require$$1","require$$2","baseGetTag","isObjectLike","symbolTag","isSymbol","isKey","isObject","funcTag","isFunction","coreJsData","isMasked","funcProto","funcToString","toSource","require$$3","baseIsNative","getValue","getNative","nativeCreate","hashClear","hashDelete","HASH_UNDEFINED","hashGet","hashHas","hashSet","require$$4","Hash","listCacheClear","eq","assocIndexOf","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","isKeyable","getMapData","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","memoize","memoizeCapped","stringToPath","arrayMap","INFINITY","symbolProto","baseToString","toString","castPath","toKey","baseGet","get","baseHas","argsTag","baseIsArguments","propertyIsEnumerable","isArguments","MAX_SAFE_INTEGER","isIndex","isLength","require$$5","hasPath","defineProperty","baseAssignValue","assignValue","baseSet","setCacheAdd","setCacheHas","SetCache","baseFindIndex","baseIsNaN","strictIndexOf","baseIndexOf","arrayIncludes","arrayIncludesWith","cacheHas","Set","noop","setToArray","set","createSet","LARGE_ARRAY_SIZE","baseUniq","i18n","uniq","baseSlice","castSlice","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","hasUnicode","asciiToArray","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","unicodeToArray","stringToArray","createCaseFirst","upperFirst","capitalize","arrayReduce","basePropertyOf","deburrLetter","deburr","asciiWords","hasUnicodeWord","rsApos","unicodeWords","words","createCompounder","camelCase","BigNumber","compare","format","RoundingModeMap","baseRepeat","isArrayLike","isIterateeCall","trimmedEndIndex","baseTrim","toNumber","toFinite","toInteger","repeat","locale","arrayPush","isFlattenable","baseFlatten","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","arraySome","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","othValue","Uint8Array","mapToArray","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","stringTag","arrayBufferTag","dataViewTag","equalByTag","baseGetAllKeys","arrayFilter","stubArray","getSymbols","baseTimes","stubFalse","Buffer","isBuffer","arrayTag","objectTag","weakMapTag","baseIsTypedArray","baseUnary","nodeUtil","isTypedArray","arrayLikeKeys","isPrototype","overArg","nativeKeys","baseKeys","keys","getAllKeys","equalObjects","DataView","Promise","WeakMap","require$$6","getTag","require$$7","baseIsEqualDeep","baseIsEqual","baseIsMatch","isStrictComparable","getMatchData","matchesStrictComparable","baseMatches","baseHasIn","hasIn","baseMatchesProperty","identity","baseProperty","basePropertyDeep","property","baseIteratee","createBaseFor","baseFor","baseForOwn","createBaseEach","baseEach","baseMap","collection","baseSortBy","compareAscending","compareMultiple","require$$8","baseOrderBy","apply","nativeMax","overRest","constant","baseSetToString","shortOut","setToString","baseRest","baseZipObject","zipObject","units","sortBy","exponent","date","translations","flattenDeep","baseRange","createRange","range","defaultLocale","has"],"mappings":";;;;;;;;;AAAA,GAAC,SAAU,QAAQ,SAAS;AACqC,YAAQ,OAAO;AAAA,KAG9EA,gBAAO,SAAUC,UAAS;AAE1B,QAAI,KAAK,OAAO,WAAW,eAAe,OAAO,cAAc,SACzD,OAAO,YACP;AAAA,MACE,OAAO,CAAE;AAAA,IACnB;AACE,QAAI,UAAU;AAAA,MACV,UAAU;AAAA,QACN,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,QAC3D,UAAU;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACH;AAAA,MACJ;AAAA,MACD,QAAQ;AAAA,QACJ,WAAW;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACH;AAAA,QACD,UAAU;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACH;AAAA,MACJ;AAAA,MACD,SAAS,WAAY;AACjB,eAAO;AAAA,MACV;AAAA,MACD,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,WAAW;AAAA,IACjB;AACE,OAAG,MAAM,KAAK;AACd,QAAIC,MAAK,GAAG;AAEZ,IAAAD,SAAQ,UAAU;AAClB,IAAAA,SAAQ,UAAUC;AAElB,WAAO,eAAeD,UAAS,cAAc,EAAE,OAAO,KAAI,CAAE;AAAA,EAE9D;;;ACjEA,MAAM,sBAAsB,CAAA;AAQrB,SAAS,QAAQ,WAAW,MAAM;AACvC,MAAI,CAAC,oBAAoB,SAAS,GAAG;AACnC;AAAA,EACD;AAED,sBAAoB,SAAS,EAAE,QAAQ,CAAC,aAAa,SAAS,IAAI,CAAC;AACrE;AAQO,SAAS,UAAU,WAAW,UAAU;AAC7C,MAAI,CAAC,oBAAoB,SAAS,GAAG;AACnC,wBAAoB,SAAS,IAAI;EAClC;AAED,sBAAoB,SAAS,EAAE,KAAK,QAAQ;AAC9C;AAQO,SAAS,YAAY,WAAW,UAAU;AAC/C,MAAI,CAAC,oBAAoB,SAAS,GAAG;AACnC;AAAA,EACD;AAED,sBAAoB,SAAS,IAAI,oBAAoB,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,SAAQ,KAAM,SAAS,SAAU,CAAA;AACnH;AC9CO,IAAI,mBAAmB,OAAO;AAAA,EACnC,QAAQ,CAAE;AAAA,EACV,KAAK,UAAU,MAAM;AACnB,QAAI,YAAY,KAAK,OAAO,KAAK,KAAK,CAAE;AACxC,aAAS,IAAI,GAAG,SAAS,UAAU,QAAQ,IAAI,QAAQ,KAAK;AAC1D,gBAAU,CAAC,EAAE,GAAG,IAAI;AAAA,IACrB;AAAA,EACF;AAAA,EACD,GAAG,OAAO,IAAI;;AACZ,gBAAK,OAAO,KAAK,MAAjB,mBAAoB,KAAK,SAAQ,KAAK,OAAO,KAAK,IAAI,CAAC,EAAE;AACzD,WAAO,MAAM;;AACX,WAAK,OAAO,KAAK,KAAIE,MAAA,KAAK,OAAO,KAAK,MAAjB,gBAAAA,IAAoB,OAAO,OAAK,OAAO;AAAA,IAC7D;AAAA,EACF;AACH;ACdO,MAAM,oBAAoB,MAAM;AAAA,EACrC,YAAY,KAAK,QAAQ;AACvB,QAAI,eAAe,OAAO;AACxB,YAAM,IAAI,OAAO;AACjB,WAAK,QAAQ;AAAA,IACnB,OAAW;AACL,YAAM,GAAG;AAAA,IACV;AAED,SAAK,SAAS;AACd,SAAK,OAAO;AAAA,EACb;AACH;AAEO,MAAM,kCAAkC,YAAY;AAAA,EACzD,YAAY,QAAQ;AAClB,UAAM,YAAY,MAAM;AACxB,SAAK,OAAO;AAAA,EACb;AACH;AAEO,MAAM,iCAAiC,YAAY;AAAA,EACxD,YAAY,KAAK;AACf,UAAM,OAAO,uCAAuC;AACpD,SAAK,OAAO;AAAA,EACb;AACH;AAEO,MAAM,0BAA0B,YAAY;AAAA,EACjD,YAAY,OAAO,QAAQ;AACzB,QAAI,QAAQ;AACV,YAAM,OAAO,MAAM;AAAA,IACzB,OAAW;AACL,YAAM,gBAAgB,KAAK;AAAA,IAC5B;AACD,SAAK,OAAO;AAAA,EACb;AACH;AASO,MAAM,6BAA6B,kBAAkB;AAAA,EAC1D,YAAY,KAAK;AACf,UAAM,KAAK,kBAAkB;AAC7B,SAAK,OAAO;AAAA,EACb;AACH;ACnDO,SAAS,gBAAgB,QAAQ;AACtC,MAAI,CAAC;AAAQ,WAAO;AAEpB,MAAI,QAAQ,OAAO,KAAK,MAAM,EAC3B,KAAM,EACN,IAAI,OAAK;AACR,QAAI,IAAI,KAAK,UAAU,OAAO,CAAC,CAAC;AAChC,WAAO,GAAG,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC;AAAA,EACtC,CAAK;AAEH,SAAO,IAAI,MAAM,KAAK,GAAG,CAAC;AAC5B;ACLA,MAAMC,UAAQ,OAAO,OAAO;AAErB,MAAM,QAAQ;AAAA;AAAA;AAAA,EAInB,YAAY,SAAS,IAAI;AACvB,SAAK,UAAU,iBAAkB;AACjC,SAAK,SAAS,OAAO,OAAO,MAAM;AAElC,SAAK,iBAAiB;AAEtB,SAAKA,OAAK,IAAI;AAAA,EACf;AAAA,EAED,IAAI,aAAa;AACf,QAAI,KAAK;AAAa,aAAO,KAAK;AAGlC,SAAK,cAAc,gBAAgB;AAAA,MACjC,SAAS,KAAK;AAAA,MACd,GAAG,KAAK;AAAA,IACd,CAAK;AAED,WAAO,KAAK;AAAA,EACb;AAAA,EAED,IAAI,YAAY;AACd,WAAO,KAAK,YAAY;AAAA,EACzB;AAAA,EAED,IAAI,QAAQ;AACV,WAAO,KAAKA,OAAK;AAAA,EAClB;AAAA,EAED,SAAS,UAAU;AACjB,QAAI,KAAK,UAAU;AACjB,UAAI,KAAK,aAAa,UAAU;AAC9B,cAAM,MAAM,2CAA2C;AAAA,MACxD;AAED,aAAO;AAAA,IACR;AAED,SAAK,WAAW;AAChB,WAAO;AAAA,EACR;AAAA,EAED,aAAa;AACX,SAAKA,OAAK,IAAI;AAAA,EACf;AAAA,EAED,YAAY;AACV,QAAI,KAAK,UAAU;AAAa;AAChC,QAAI,KAAK,UAAU;AAAU;AAE7B,SAAKA,OAAK,IAAI;AAEd,QAAI,WAAW;AAEf,QAAI,KAAK,gBAAgB;AACvB,WAAK,iBAAiB;AACtB,WAAK,KAAK,WAAW,EAAE,WAAW,OAAO,UAAU;AAAA,IACzD,OAAW;AACL,WAAK,KAAK,WAAW,EAAE,WAAW,MAAM,UAAU;AAAA,IACnD;AAAA,EACF;AAAA,EAED,WAAW;AACT,QAAI,KAAK,UAAU;AAAa,YAAM,MAAM,mBAAmB;AAC/D,QAAI,KAAK,UAAU;AAAc,YAAM,MAAM,oBAAoB;AAEjE,SAAKA,OAAK,IAAI;AAEd,QAAI,WAAW;AACf,QAAI,YAAY;AAEhB,SAAK,iBAAiB;AAEtB,SAAK,KAAK,WAAW,EAAE,WAAW,SAAQ,CAAE;AAAA,EAC7C;AAAA,EAED,aAAa,KAAK;AAChB,QAAI,KAAK,UAAU,kBAAkB,KAAK,UAAU;AAAU;AAE9D,SAAKA,OAAK,IAAI;AAEd,SAAK,KAAK,cAAc,GAAG;AAAA,EAC5B;AAAA,EAED,OAAO,KAAK;AACV,QAAI,KAAK,UAAU;AAAU;AAE7B,SAAKA,OAAK,IAAI;AACd,WAAO,KAAK;AAEZ,SAAK,iBAAiB;AAEtB,SAAK,KAAK,SAAS,GAAG;AAAA,EACvB;AAAA,EAED,aAAa;AACX,QAAI,KAAK,UAAU,UAAU,KAAK,UAAU,UAAU;AACpD;AAAA,IACD;AAED,SAAK,SAAS,YAAY,IAAI;AAAA,EAC/B;AAAA,EAED,MAAM,QAAQ,QAAQ,SAAS;AAC7B,QAAI,KAAK,UAAU,UAAU,KAAK,UAAU,UAAU;AACpD,YAAM,MAAM,2BAA2B;AAAA,IACxC;AAED,WAAO,KAAK,SAAS,QAAQ,KAAK,YAAY,QAAQ,OAAO;AAAA,EAC9D;AAAA,EAED,MAAM,KAAK,SAAS;AAClB,WAAO,KAAK,QAAQ,QAAW,OAAO;AAAA,EACvC;AAAA,EAED,QAAQ,KAAK,MAAM;AACjB,SAAK,KAAK,WAAW,KAAK,IAAI;AAAA,EAC/B;AAAA,EAED,GAAG,OAAO,UAAU;AAClB,WAAO,KAAK,QAAQ,GAAG,OAAO,QAAQ;AAAA,EACvC;AAAA,EAED,KAAK,OAAO,UAAU;AACpB,QAAI,SAAS,KAAK,QAAQ,GAAG,OAAO,IAAI,SAAS;AAC/C,aAAQ;AACR,eAAS,GAAG,IAAI;AAAA,IACtB,CAAK;AACD,WAAO;AAAA,EACR;AAAA,EAED,KAAK,UAAU,MAAM;AACnB,WAAO,KAAK,QAAQ,KAAK,OAAO,GAAG,IAAI;AAAA,EACxC;AAAA,EAED,mBAAmB;AACjB,QAAI,KAAK,UAAU;AAAa,aAAO,QAAQ,QAAS;AAExD,QAAI,KAAK,UAAU,UAAU;AAC3B,aAAO,QAAQ,OAAO,MAAM,yBAAyB,CAAC;AAAA,IACvD;AAED,WAAO,KAAK,iBAAkB;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAKD,mBAAmB;AACjB,QAAI,KAAK;AAAmB,aAAO,KAAK;AAExC,SAAK,oBAAoB,IAAI,QAAQ,CAAC,SAAS,WAAW;AACxD,UAAI,SAAS,CAAC,MAAM,OAAO,KAAK,iBAAiB;AAEjD,aAAO;AAAA,QACL,KAAK,GAAG,WAAW,MAAM;AACvB,iBAAO,QAAQ,UAAQ,MAAM;AAC7B,kBAAS;AAAA,QACnB,CAAS;AAAA,MACF;AACD,aAAO;AAAA,QACL,KAAK,GAAG,SAAS,SAAO;AACtB,iBAAO,QAAQ,UAAQ,MAAM;AAC7B;AAAA,YACE,OACE,IAAI;AAAA,cACF;AAAA,cACA;AAAA,YACD;AAAA,UACJ;AAAA,QACX,CAAS;AAAA,MACF;AAAA,IACP,CAAK;AAED,WAAO,KAAK;AAAA,EACb;AACH;AC5LO,MAAM,aAAa;AAAA,EACxB,YAAY,IAAI;AACd,SAAK,KAAK;AACV,SAAK,SAAS;AACd,SAAK,QAAQ;AACb,SAAK,WAAW,CAAE;AAClB,SAAK,WAAW;AAChB,SAAK,YAAY,CAAE;AAAA,EACpB;AAAA,EAED,IAAI,SAAS;AACX,QAAI,KAAK,SAAS,SAAS,OAAO;AAAG;AAErC,SAAK,SAAS,KAAK,OAAO;AAAA,EAC3B;AAAA,EAED,OAAO,SAAS;AACd,QAAI,MAAM,KAAK,SAAS,QAAQ,OAAO;AAEvC,QAAI,MAAM;AAAI,WAAK,SAAS,OAAO,KAAK,CAAC;AAAA,EAC1C;AAAA,EAED,OAAO,UAAU,MAAM;AACrB,SAAK,QAAQ;AAEb,QAAI,KAAK,WAAW,GAAG;AACrB,WAAK,SAAS,QAAQ,aAAW,QAAQ,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAAA,IAC9D,OAAW;AACL,WAAK,SAAS,QAAQ,aAAW,QAAQ,KAAK,GAAG;AAAA,IAClD;AAAA,EACF;AAAA,EAED,QAAQ,QAAQ;AACd,SAAK,aAAa,MAAM;AAExB,QAAI,cAAc,KAAK,UAAU,CAAC;AAElC,QAAI,CAAC,eAAe,YAAY,WAAW;AAAQ,aAAO,QAAQ,QAAS;AAE3E,WAAO,YAAY;AAAA,EACpB;AAAA,EAED,qBAAqB;AACnB,QAAI,KAAK;AAAU;AAEnB,SAAK,SAAS;AAEd,SAAK,iBAAkB;AAAA,EACxB;AAAA,EAED,mBAAmB;AACjB,QAAI,KAAK,WAAW;AAAc;AAClC,QAAI,KAAK;AAAU,YAAM,MAAM,0BAA0B;AAEzD,SAAK,SAAS;AAEd,QAAI,SAAS,KAAK,kBAAkB,cAAc;AAClD,QAAI;AAAQ;AAEZ,SAAK,WAAW,IAAI;AAAA,EACrB;AAAA,EAED,mBAAmB;AACjB,QAAI,KAAK;AAAU;AACnB,QAAI,KAAK,WAAW;AAAgB;AAEpC,QAAI,KAAK,SAAS,SAAS;AAAG;AAE9B,SAAK,SAAS;AAEd,QAAI,SAAS,KAAK,kBAAkB,YAAY;AAChD,QAAI;AAAQ;AAEZ,SAAK,aAAa,IAAI;AAAA,EACvB;AAAA,EAED,MAAM,QAAQ,QAAQ;AACpB,SAAK,aAAa,MAAM;AAExB,QAAI;AACJ,QAAI,UAAU,IAAI,QAAQ,aAAW;AACnC,iBAAW;AAAA,IACjB,CAAK;AAED,QAAI,OAAO;AAAA,MACT;AAAA,MACA;AAAA,MACA,SAAS,MAAM;AACb,aAAK,UAAU,OAAO,KAAK,UAAU,QAAQ,IAAI,GAAG,CAAC;AACrD,iBAAS,IAAI;AAAA,MACd;AAAA,MACD,UAAU;AAAA,MACV,UAAU;AAAA,IACX;AAED,QAAI,MAAM,KAAK;AAEf,SAAK,UAAU,KAAK,IAAI;AAExB,QAAI,KAAK;AACP,YAAM,IAAI;AAAA,IACX;AAED,SAAK,WAAW;AAChB,WAAO;AAAA,EACR;AAAA,EAED,MAAM,KAAK;AACT,SAAK,WAAW;AAChB,SAAK,SAAS;AACd,SAAK,OAAO,UAAU,GAAG;AAAA,EAC1B;AAAA,EAED,aAAa,OAAO;AAClB,QAAI,UAAU,kBAAkB,UAAU;AAAc;AAExD,UAAM,MAAM,gCAAgC,KAAK,EAAE;AAAA,EACpD;AAAA,EAED,IAAI,cAAc;AAChB,WAAO,KAAK,UAAU,SAClB,KAAK,UAAU,KAAK,UAAU,SAAS,CAAC,IACxC;AAAA,EACL;AAAA,EAED,kBAAkB,QAAQ;AACxB,QAAI,MAAM,KAAK;AACf,QAAI,CAAC;AAAK,aAAO;AACjB,QAAI,IAAI;AAAU,aAAO;AACzB,QAAI,IAAI,WAAW;AAAQ,aAAO;AAElC,SAAK,UAAU,IAAK;AACpB,QAAI,WAAW;AACf,WAAO;AAAA,EACR;AACH;AAEO,MAAM,cAAc;AAAA,EACzB,cAAc;AACZ,SAAK,iBAAiB,CAAE;AACxB,SAAK,iBAAiB,CAAE;AAAA,EACzB;AAAA,EAED,MAAM;AACJ,WAAO,OAAO,OAAO,KAAK,cAAc;AAAA,EACzC;AAAA,EAED,IAAI,IAAI;AACN,WAAO,KAAK,eAAe,EAAE;AAAA,EAC9B;AAAA,EAED,OAAO,IAAI,EAAE,WAAAC,YAAW,aAAAC,aAAW,GAAI;AACrC,QAAI,MAAO,KAAK,eAAe,EAAE,IAAI,IAAI,aAAa,EAAE;AACxD,QAAI,WAAW,KAAK,eAAe,EAAE;AACrC,QAAI,aAAaD;AACjB,QAAI,eAAeC;AAEnB,WAAO;AAAA,EACR;AAAA,EAED,OAAO,IAAI;AACT,WAAO,KAAK,eAAe,EAAE;AAC7B,WAAO,KAAK,eAAe,EAAE;AAAA,EAC9B;AAAA,EAED,cAAc,SAAS,UAAU;AAC/B,SAAK,eAAe,OAAO,IAAI;AAE/B,QAAI,MAAM,KAAK,IAAI,OAAO;AAC1B,QAAI;AAAK,UAAI,WAAW;AAAA,EACzB;AACH;AAEO,MAAM,IAAI;AAAA,EACf,cAAc;AACZ,SAAK,gBAAgB,IAAI,cAAe;AACxC,SAAK,mBAAmB,CAAE;AAC1B,SAAK,iBAAiB,CAAE;AAAA,EACzB;AAAA,EAED,UAAU,SAAS,UAAU;AAC3B,SAAK,eAAe,QAAQ,IAAI;AAEhC,SAAK,cAAc,cAAc,SAAS,QAAQ;AAElD,SAAK,MAAM,QAAQ;AAAA,EACpB;AAAA,EAED,YAAY,SAAS;AACnB,QAAI,MAAM,KAAK,cAAc,IAAI,OAAO;AACxC,QAAI,CAAC;AAAK;AAEV,QAAI,WAAW,IAAI;AACnB,QAAI;AAAU,aAAO,KAAK,eAAe,QAAQ;AAEjD,SAAK,cAAc,OAAO,OAAO;AAAA,EAClC;AAAA,EAED,SAAS,IAAI,KAAK,MAAM;AACtB,QAAI,UAAU,KAAK,eAAe,EAAE;AAEpC,QAAI,CAAC,SAAS;AACZ,WAAK,iBAAiB,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAC1C;AAAA,IACD;AAED,QAAI,MAAM,KAAK,cAAc,IAAI,OAAO;AAExC,QAAI,CAAC;AAAK;AAEV,QAAI,SAAS,QAAQ,aAAW;AAC9B,cAAQ,QAAQ,KAAK,IAAI;AAAA,IAC/B,CAAK;AAAA,EACF;AAAA,EAED,QAAQ;AACN,SAAK,iBAAiB,SAAS;AAAA,EAChC;AAAA,EAED,IAAI,OAAO;AACT,WAAO,KAAK,SAAS;AAAA,EACtB;AAAA,EAED,IAAI,WAAW;AACb,WAAO,KAAK,cAAc,IAAG,EAAG,QAAQ,SAAO,IAAI,QAAQ;AAAA,EAC5D;AAAA,EAED,MAAM,IAAI;AACR,QAAI,OAAO,CAAE;AAEb,aAAS,QAAQ,KAAK,kBAAkB;AACtC,UAAI,KAAK,CAAC,MAAM;AAAI,aAAK,SAAS,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA;AACtD,aAAK,KAAK,IAAI;AAAA,IACpB;AAED,SAAK,mBAAmB;AAAA,EACzB;AACH;AC7OA,MAAM,gBAAgB;AAAA,EACpB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AACT;AAEO,MAAM,WAAW;AAAA,EACtB,YAAY,OAAO;AACjB,SAAK,QAAQ,SAAS;AAAA,EACvB;AAAA,EAED,IAAI,OAAO,KAAK,SAAS;AACvB,QAAI,cAAc,KAAK,IAAI,cAAc,KAAK,KAAK;AAAG;AAEtD,SAAK,cAAc,OAAO,KAAK,OAAO;AAAA,EACvC;AAAA,EAED,gBAAgB;AACd,UAAM,MAAM,iBAAiB;AAAA,EAC9B;AAAA,EAED,MAAM,KAAK,SAAS;AAClB,SAAK,IAAI,SAAS,KAAK,OAAO;AAAA,EAC/B;AAAA,EAED,KAAK,KAAK,SAAS;AACjB,SAAK,IAAI,QAAQ,KAAK,OAAO;AAAA,EAC9B;AAAA,EAED,KAAK,KAAK,SAAS;AACjB,SAAK,IAAI,QAAQ,KAAK,OAAO;AAAA,EAC9B;AAAA,EAED,MAAM,KAAK,SAAS;AAClB,SAAK,IAAI,SAAS,KAAK,OAAO;AAAA,EAC/B;AACH;AAEO,MAAM,mBAAmB,WAAW;AAAA,EACzC,gBAAgB;AAAA,EAAE;AACpB;ACvCO,MAAM,YAAY;AAAA,EACvB,OAAO,KAAK;AACV,WAAO,KAAK,UAAU,GAAG;AAAA,EAC1B;AAAA,EAED,OAAO,KAAK;AACV,QAAI;AACF,aAAO,KAAK,MAAM,GAAG;AAAA,IAC3B,SAAa,IAAI;AAAA,IAAE;AAAA,EAChB;AACH;ACJA,IAAI,YAAY;AAET,MAAM,oBAAoB;AAAA,EAC/B,YAAY,OAAO,IAAI;AACrB,QAAI,EAAE,OAAM,IAAK;AACjB,SAAK,SAAS,UAAU,IAAI,WAAY;AACxC,SAAK,uBAAuB,CAAE;AAC9B,SAAK,yBAAyB,CAAE;AAGhC,SAAK,4BAA4B,KAAK,6BAA6B;AAGnE,SAAK,yBAAyB,KAAK,0BAA0B;AAAA,EAC9D;AAAA,EAED,SAASC,QAAO;AACd,SAAK,QAAQA;AAAA,EACd;AAAA,EAED,UAAU,SAAS,QAAQ;AACzB,QAAI,sBAAsB,EAAE,QAAS;AACrC,QAAI,QAAQ;AACV,aAAO,OAAO,qBAAqB,MAAM;AAAA,IAC1C;AAED,QAAI,aAAa,gBAAgB,mBAAmB;AAEpD,QAAI,KAAK,uBAAuB,UAAU,GAAG;AAC3C,UAAI,WAAW,KAAK,4BAA4B;AAChD,WAAK,OAAO;AAAA,QACV,uCAAuC,QAAQ;AAAA,QAC/C;AAAA,MACD;AACD,aAAO,IAAI,QAAQ,aAAW;AAC5B,mBAAW,MAAM;AACf,kBAAQ,KAAK,UAAU,SAAS,MAAM,CAAC;AAAA,QACxC,GAAE,QAAQ;AAAA,MACnB,CAAO;AAAA,IACF;AAED,QAAI,KAAK,qBAAqB,UAAU,GAAG;AACzC,WAAK,OAAO,KAAK,6CAA6C,UAAU;AACxE,aAAO,QAAQ,OAAO,MAAM,qBAAqB,CAAC;AAAA,IACnD;AAED,QAAI,gBAAgB,KAAK;AAEzB,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAI,KAAK,EAAE;AACX,WAAK,qBAAqB,UAAU,IAAI;AAAA,QACtC;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAED,WAAK,MAAM,KAAK;AAAA,QACd,SAAS;AAAA,QACT;AAAA,MACR,CAAO;AAED,WAAK,oBAAoB,IAAI,YAAY,aAAa;AAAA,IAC5D,CAAK;AAAA,EACF;AAAA,EAED,oBAAoB,IAAI,YAAY,eAAe;AACjD,eAAW,MAAM;AACf,UAAI,MAAM,KAAK,qBAAqB,UAAU;AAC9C,UAAI,CAAC;AAAK;AACV,UAAI,IAAI,OAAO;AAAI;AAEnB,WAAK,OAAO;AAAA,QACV,mCAAmC,aAAa;AAAA,QAChD;AAAA,MACD;AAED,WAAK,MAAM,KAAK;AAAA,QACd,SAAS;AAAA,QACT;AAAA,MACR,CAAO;AAED,WAAK,qBAAqB,IAAI,YAAY,aAAa;AAAA,IACxD,GAAE,aAAa;AAAA,EACjB;AAAA,EAED,qBAAqB,IAAI,YAAY,eAAe;AAClD,eAAW,MAAM;AACf,UAAI,MAAM,KAAK,qBAAqB,UAAU;AAC9C,UAAI,CAAC;AAAK;AACV,UAAI,IAAI,OAAO;AAAI;AAEnB,aAAO,KAAK,qBAAqB,UAAU;AAE3C,UAAI;AAAA,QACF,IAAI;AAAA,UACF,wCACE,gBAAgB,CAC5B,UAAoB,UAAU;AAAA,QACrB;AAAA,MACF;AAAA,IACF,GAAE,aAAa;AAAA,EACjB;AAAA,EAED,YAAY,YAAY;AACtB,SAAK,MAAM,KAAK;AAAA,MACd,SAAS;AAAA,MACT;AAAA,IACN,CAAK;AAED,SAAK,uBAAuB,UAAU,IAAI;AAE1C,eAAW,MAAM;AACf,aAAO,KAAK,uBAAuB,UAAU;AAAA,IACnD,GAAO,KAAK,yBAAyB;AAEjC,WAAO,QAAQ,QAAS;AAAA,EACzB;AAAA,EAED,QAAQ,YAAY,QAAQ,SAAS;AACnC,QAAI,CAAC,SAAS;AACZ,gBAAU,CAAE;AAAA,IACb;AAED,YAAQ,SAAS;AAEjB,SAAK,MAAM,KAAK;AAAA,MACd,SAAS;AAAA,MACT;AAAA,MACA,MAAM,KAAK,UAAU,OAAO;AAAA,IAClC,CAAK;AAED,WAAO,QAAQ,QAAS;AAAA,EACzB;AAAA,EAED,QAAQ,KAAK;AAEX,QAAI,OAAO,QAAQ,UAAU;AAC3B,WAAK,OAAO,MAAM,8BAA8B,EAAE,SAAS,KAAK;AAChE;AAAA,IACD;AAED,QAAI,EAAE,MAAM,YAAY,SAAS,QAAQ,UAAS,IAAK;AAEvD,QAAI,SAAS;AAAQ,aAAO,KAAK,MAAM,UAAU,IAAI,OAAO;AAE5D,QAAI,SAAS,WAAW;AACtB,aAAO,KAAK,MAAM,UAAW;AAAA,IAC9B;AAED,QAAI,SAAS,cAAc;AACzB,UAAI,MAAM,IAAI,kBAAkB,MAAM;AACtC,WAAK,MAAM,GAAG;AAEd,UAAI,cAAc,OAAO;AACvB,aAAK,MAAM,OAAO,GAAG;AAAA,MAC7B,OAAa;AACL,aAAK,MAAM,aAAa,GAAG;AAAA,MAC5B;AACD;AAAA,IACD;AAED,QAAI,SAAS,wBAAwB;AACnC,UAAI,eAAe,KAAK,qBAAqB,UAAU;AACvD,UAAI,CAAC,cAAc;AACjB,aAAK,OAAO,MAAM,yCAAyC;AAAA,UACzD;AAAA,UACA;AAAA,QACV,CAAS;AACD,aAAK,YAAY,UAAU;AAC3B;AAAA,MACD;AAED,aAAO,KAAK,qBAAqB,UAAU;AAE3C,aAAO,aAAa,QAAQ,UAAU;AAAA,IACvC;AAED,QAAI,SAAS,uBAAuB;AAClC,UAAI,eAAe,KAAK,qBAAqB,UAAU;AACvD,UAAI,CAAC,cAAc;AACjB,eAAO,KAAK,OAAO,MAAM,0BAA0B,EAAE,MAAM,YAAY;AAAA,MACxE;AAED,aAAO,KAAK,qBAAqB,UAAU;AAE3C,aAAO,aAAa,OAAO,IAAI,2BAA2B;AAAA,IAC3D;AAED,QAAI,SAAS;AACX,aAAO,EAAE,YAAY,QAAS;AAAA,IAC/B;AAED,SAAK,OAAO,KAAK,yBAAyB,IAAI,IAAI,EAAE,SAAS,KAAK;AAAA,EACnE;AAAA,EAED,MAAM,KAAK;AAET,aAAS,cAAc,KAAK,sBAAsB;AAChD,WAAK,qBAAqB,UAAU,EAAE,OAAO,GAAG;AAAA,IACjD;AAED,SAAK,uBAAuB,CAAE;AAAA,EAC/B;AAAA,EAED,qBAAqB;AACnB,WAAO;AAAA,EACR;AACH;AC3MO,MAAM,0BAA0B,YAAY;AAAA,EACjD,cAAc;AACZ,UAAM,iBAAiB,QAAQ;AAC/B,SAAK,OAAO;AAAA,EACb;AACH;AAEO,MAAM,qBAAqB,QAAQ;AAAA,EAExC,YAAY,WAAW,QAAQ;AAC7B,UAAM,MAAM;AACZ,SAAK,YAAY;AAAA,EAClB;AAAA,EAED,IAAI,UAAU,KAAK;AACjB,SAAK,aAAa;AAAA,EACnB;AAAA,EAED,IAAI,YAAY;AACd,WAAO,KAAK;AAAA,EACb;AACH;AAbE,cADW,cACJ,cAAa;AAetB,MAAM,QAAQ,OAAO,OAAO;AAErB,MAAM,MAAM;AAAA,EACjB,YAAY,EAAE,WAAW,UAAU,SAAS,QAAQ,QAAQ;AAC1D,SAAK,UAAU,iBAAkB;AACjC,SAAK,YAAY;AACjB,SAAK,UAAU;AACf,SAAK,SAAS,UAAU,IAAI,WAAY;AACxC,SAAK,WAAW;AAEhB,SAAK,SAAS,SAAS,IAAI;AAE3B,SAAK,MAAM,IAAI,IAAK;AAEpB,SAAK,KAAK,IAAI;AAEd,SAAK,cAAc,KAAK,YAAY,KAAK,IAAI;AAC7C,SAAK,iBAAiB,KAAK,eAAe,KAAK,IAAI;AAEnD,SAAK,UAAU,GAAG,SAAS,KAAK,WAAW;AAC3C,SAAK,UAAU,GAAG,QAAQ,KAAK,cAAc;AAE7C,SAAK,iBAAiB;AACtB,SAAK,aAAa;AAElB,QAAI,SAAS,OAAO;AAClB,WAAK,QAAO,EAAG,MAAM,MAAM;AAAA,MAAA,CAAE;AAAA,IAC9B;AAAA,EACF;AAAA,EAED,IAAI,QAAQ;AACV,WAAO,KAAK,KAAK;AAAA,EAClB;AAAA,EAED,MAAM,UAAU;AACd,QAAI,KAAK,UAAU;AAAa,aAAO,QAAQ,QAAS;AACxD,QAAI,KAAK,UAAU,cAAc;AAC/B,aAAO,KAAK,eAAgB;AAAA,IAC7B;AAED,SAAK,KAAK,IAAI;AACd,QAAI,UAAU,KAAK,eAAgB;AAEnC,SAAK,OAAO,MAAM,YAAY;AAE9B,QAAI;AACF,YAAM,KAAK,UAAU,KAAM;AAAA,IAC5B,SAAQ,KAAK;AACZ,WAAK,YAAY,GAAG;AAAA,IACrB;AAED,WAAO;AAAA,EACR;AAAA,EAED,YAAY;AACV,QAAI,KAAK,UAAU;AAAa;AAEhC,SAAK,OAAO,KAAK,WAAW;AAE5B,SAAK,KAAK,IAAI;AAEd,QAAI,KAAK,YAAY;AAEnB,WAAK,IAAI,cACN,IAAK,EACL;AAAA,QAAQ,kBACP,aAAa;AAAA,UACX;AAAA,UACA,IAAI,kBAAkB,iBAAiB;AAAA,QACxC;AAAA,MACF;AAAA,IACJ;AAGD,SAAK,IAAI,cACN,IAAK,EACL,QAAQ,kBAAgB,KAAK,aAAa,YAAY,CAAC;AAE1D,QAAI,WAAW;AACf,SAAK,aAAa;AAElB,QAAI,KAAK,gBAAgB;AACvB,WAAK,iBAAiB;AACtB,WAAK,KAAK,WAAW,EAAE,WAAW,OAAO,UAAU;AAAA,IACzD,OAAW;AACL,WAAK,KAAK,WAAW,EAAE,WAAW,MAAM,UAAU;AAAA,IACnD;AAAA,EACF;AAAA,EAED,SAAS,WAAW;AAClB,QAAI,CAAC,KAAK,YAAY;AACpB,WAAK,UAAW;AAChB;AAAA,IACD;AAED,SAAK,OAAO,KAAK,wBAAwB,EAAE,UAAS,CAAE;AAEtD,SAAK,KAAK,IAAI;AAEd,SAAK,IAAI,cAAc,IAAG,EAAG,QAAQ,kBAAgB;AACnD,UACE,aACA,aAAa,YACb,UAAU,SAAS,aAAa,QAAQ,GACxC;AACA,qBAAa,OAAO,UAAU;AAAA,MACtC,OAAa;AACL,qBAAa;AAAA,UACX;AAAA,UACA,IAAI,kBAAkB,iBAAiB;AAAA,QACxC;AACD,aAAK,aAAa,YAAY;AAAA,MAC/B;AAAA,IACP,CAAK;AAED,QAAI,YAAY,CAAC,KAAK;AACtB,QAAI,WAAW;AAEf,SAAK,aAAa;AAClB,SAAK,iBAAiB;AAEtB,SAAK,KAAK,WAAW,EAAE,WAAW,SAAQ,CAAE;AAAA,EAC7C;AAAA,EAED,YAAY,KAAK;AACf,SAAK,OAAO,MAAM,oBAAoB,EAAE,OAAO,KAAK;AAEpD,SAAK,aAAa,IAAI,kBAAkB,KAAK,kBAAkB,CAAC;AAAA,EACjE;AAAA,EAED,aAAa,KAAK;AAChB,QAAI,EAAE,KAAK,UAAU,eAAe,KAAK,UAAU,eAAe;AAChE;AAAA,IACD;AAED,SAAK,OAAO,KAAK,gBAAgB,EAAE,QAAQ,KAAK;AAEhD,SAAK,KAAK,IAAI;AAEd,SAAK,aAAa,KAAK,SAAS,mBAAmB,GAAG;AAEtD,QAAI,KAAK,YAAY;AACnB,WAAK,IAAI,cACN,IAAK,EACL,QAAQ,kBAAgB,aAAa,OAAO,YAAY,CAAC;AAAA,IAClE,OAAW;AACL,WAAK,IAAI,cAAc,IAAG,EAAG,QAAQ,kBAAgB;AACnD,qBAAa,OAAO,gBAAgB,GAAG;AAAA,MAC/C,CAAO;AAAA,IACF;AAED,SAAK,SAAS,MAAM,GAAG;AACvB,SAAK,IAAI,MAAO;AAChB,SAAK,UAAU,MAAO;AAEtB,SAAK,KAAK,cAAc,GAAG;AAAA,EAC5B;AAAA,EAED,OAAO,QAAQ;AACb,QAAI,KAAK,UAAU,YAAY,KAAK,UAAU;AAAQ;AAEtD,QAAI;AAEJ,QAAI,QAAQ;AACV,YACE,kBAAkB,oBACd,SACA,IAAI,kBAAkB,QAAQ,MAAS;AAAA,IAC9C;AAED,SAAK,OAAO,KAAK,UAAU,EAAE,QAAQ,UAAU,QAAQ;AAEvD,SAAK,KAAK,IAAI;AAId,QAAI,aAAa,OAAO,IAAI,kBAAkB,cAAc;AAC5D,SAAK,IAAI,cACN,IAAK,EACL,QAAQ,kBAAgB,aAAa,OAAO,gBAAgB,UAAU,CAAC;AAE1E,SAAK,IAAI,MAAO;AAChB,SAAK,SAAS,MAAO;AACrB,SAAK,UAAU,MAAO;AAEtB,SAAK,iBAAiB;AAEtB,SAAK,KAAK,SAAS,GAAG;AAAA,EACvB;AAAA,EAED,aAAa;AACX,SAAK,OAAQ;AAAA,EACd;AAAA,EAED,eAAe,KAAK;AAClB,QAAI,KAAK,UAAU,YAAY,KAAK,UAAU,QAAQ;AACpD;AAAA,IACD;AAED,QAAI,OAAO,KAAK,QAAQ,OAAO,GAAG;AAElC,QAAI,SAAS,QAAW;AACtB,WAAK,OAAO,MAAM,4BAA4B,EAAE,SAAS,KAAK;AAC9D;AAAA,IACD;AAED,SAAK,OAAO,MAAM,iBAAiB,IAAI;AAEvC,QAAI,YAAY,KAAK,SAAS,QAAQ,IAAI;AAE1C,QAAI,WAAW;AACb,WAAK,OAAO,MAAM,8BAA8B,SAAS;AAEzD,UAAI,EAAE,YAAY,SAAS,KAAM,IAAG;AAEpC,WAAK,IAAI,SAAS,YAAY,SAAS,IAAI;AAAA,IAC5C;AAAA,EACF;AAAA,EAED,KAAK,KAAK;AACR,QAAI,KAAK,UAAU,UAAU;AAC3B,YAAM,MAAM,iBAAiB;AAAA,IAC9B;AAED,QAAI,OAAO,KAAK,QAAQ,OAAO,GAAG;AAElC,QAAI,SAAS,QAAW;AACtB,WAAK,OAAO,MAAM,4BAA4B,EAAE,SAAS,KAAK;AAC9D;AAAA,IACD;AAED,SAAK,OAAO,MAAM,oBAAoB,GAAG;AAEzC,SAAK,UAAU,KAAK,IAAI;AAAA,EACzB;AAAA,EAED,UAAU,KAAK;AACb,SAAK,KAAK,aAAa,GAAG;AAAA,EAC3B;AAAA,EAED,YAAY,cAAc,QAAQ;AAChC,QAAI;AACJ,QAAI;AAEJ,QAAI,OAAO,iBAAiB,UAAU;AACpC,kBAAY;AACZ,qBAAe;AAAA,IAChB;AAED,cAAU,YACN,IAAI,aAAa,WAAW,MAAM,IAClC,IAAI,aAAa,MAAM;AAE3B,WAAO,KAAK,UAAU,OAAO;AAAA,EAC9B;AAAA,EAED,UAAU,SAAS;AAEjB,QAAI,CAAC,QAAQ,SAAS,IAAI;AAAG,aAAO;AAEpC,QAAI,aAAa,QAAQ;AAEzB,YAAQ,WAAY;AAEpB,QAAI,eACF,KAAK,IAAI,cAAc,IAAI,UAAU,KACrC,KAAK,IAAI,cAAc,OAAO,YAAY;AAAA,MACxC,WAAW,SAAO;AAChB,eAAO,KAAK,WAAW,KAAK,QAAQ,WAAW,QAAQ,MAAM;AAAA,MAC9D;AAAA,MACD,aAAa,SAAO,KAAK,aAAa,GAAG;AAAA,IACjD,CAAO;AAEH,iBAAa,IAAI,OAAO;AAExB,QACE,aAAa,WAAW,gBACxB,aAAa,UAAU,aACvB;AACA,cAAQ,UAAW;AAAA,IACpB;AAED,iBAAa,iBAAkB;AAE/B,WAAO;AAAA,EACR;AAAA,EAED,MAAM,aAAa,cAAc;AAC/B,QAAI,aAAa,WAAW;AAAc;AAE1C,QAAI,UAAU,aAAa,SAAS,CAAC;AAErC,QAAI,CAAC;AAAS;AAEd,iBAAa,OAAO,YAAY;AAChC,iBAAa,mBAAoB;AAAA,EAClC;AAAA,EAED,MAAM,WAAW,cAAc,WAAW,QAAQ;AAChD,QAAI,aAAa,aAAa;AAE9B,QAAI,KAAK,UAAU,QAAQ;AAEzB,WAAK,QAAO,EAAG,MAAM,MAAM;AAAA,MAAA,CAAE;AAAA,IAC9B;AAGD,QAAI,KAAK,UAAU,aAAa;AAC9B,WAAK,OAAO,MAAM,mCAAmC,EAAE,WAAU,CAAE;AACnE;AAAA,IACD;AAED,SAAK,OAAO,MAAM,4BAA4B,EAAE,WAAU,CAAE;AAE5D,QAAI,OAAO,MAAM,aAAa,QAAQ,YAAY;AAClD,QAAI,KAAK,UAAU;AACjB,WAAK,OAAO,MAAM,oCAAoC,EAAE,WAAU,CAAE;AACpE,WAAK,QAAS;AACd;AAAA,IACD;AAED,SAAK,OAAO,MAAM,oCAAoC,EAAE,WAAU,CAAE;AAEpE,QAAI,aAAa,WAAW,cAAc;AACxC,WAAK,OAAO,MAAM,gDAAgD;AAClE,WAAK,QAAS;AACd;AAAA,IACD;AAGD,QAAI,KAAK,UAAU,aAAa;AAC9B,WAAK,OAAO,MAAM,mCAAmC,EAAE,WAAU,CAAE;AACnE,WAAK,QAAS;AACd;AAAA,IACD;AAGD,QAAI,aAAa,UAAU,aAAa;AACtC,WAAK,OAAO,MAAM,6CAA6C;AAAA,QAC7D;AAAA,MACR,CAAO;AACD,mBAAa,OAAO,WAAW;AAC/B,WAAK,QAAS;AACd;AAAA,IACD;AAED,QAAI,cAAc;AAAA,MAChB,YAAY;AAAA,MACZ;AAAA,IACD;AAED,SAAK,OAAO,MAAM,eAAe,WAAW;AAE5C,QAAI;AACF,UAAI,WAAW,MAAM,KAAK,SAAS,UAAU,WAAW,MAAM;AAE9D,WAAK,IAAI,UAAU,YAAY,QAAQ;AAEvC,WAAK,OAAO,MAAM,cAAc,EAAE,GAAG,aAAa,UAAU;AAC5D,mBAAa,OAAO,WAAW;AAAA,IAChC,SAAQ,KAAK;AACZ,UAAI,KAAK;AACP,YAAI,eAAe,2BAA2B;AAC5C,eAAK,OAAO,KAAK,YAAY,WAAW;AAAA,QACzC;AAED,YAAI,eAAe,mBAAmB;AACpC,eAAK,OAAO;AAAA,YACV;AAAA,YACA;AAAA,UACD;AACD,eAAK,QAAS;AACd;AAAA,QACD;AAED,aAAK,OAAO,MAAM,uBAAuB;AAAA,UACvC,OAAO;AAAA,UACP,GAAG;AAAA,QACb,CAAS;AAAA,MACF;AAED,mBAAa,MAAM,GAAG;AACtB,WAAK,IAAI,YAAY,UAAU;AAAA,IAChC;AAED,SAAK,QAAS;AAAA,EACf;AAAA,EAED,YAAY,SAAS;AACnB,QAAI,aAAa,QAAQ;AAEzB,QAAI,eAAe,KAAK,IAAI,cAAc,IAAI,UAAU;AAExD,QAAI,CAAC,cAAc;AACjB,YAAM,MAAM,2BAA2B,UAAU,EAAE;AAAA,IACpD;AAED,iBAAa,OAAO,OAAO;AAC3B,YAAQ,OAAQ;AAEhB,iBAAa,iBAAkB;AAAA,EAChC;AAAA,EAED,MAAM,aAAa,cAAc;AAC/B,QAAI,aAAa,aAAa;AAE9B,SAAK,OAAO,MAAM,8BAA8B,EAAE,WAAU,CAAE;AAE9D,QAAI,OAAO,MAAM,aAAa,QAAQ,cAAc;AACpD,QAAI,KAAK,UAAU;AACjB,WAAK,OAAO,MAAM,sCAAsC,EAAE,WAAU,CAAE;AACtE,WAAK,QAAS;AACd;AAAA,IACD;AAED,SAAK,OAAO,MAAM,sCAAsC,EAAE,WAAU,CAAE;AAGtE,QAAI,aAAa,WAAW,gBAAgB;AAC1C,WAAK,OAAO,MAAM,wCAAwC;AAAA,QACxD;AAAA,QACA,QAAQ,aAAa;AAAA,MAC7B,CAAO;AACD,WAAK,QAAS;AACd;AAAA,IACD;AAGD,QACE,aAAa,UAAU,kBACvB,aAAa,UAAU,UACvB;AACA,WAAK,OAAO;AAAA,QACV,WAAW,aAAa,KAAK;AAAA,QAC7B,EAAE,WAAY;AAAA,MACf;AACD,WAAK,QAAS;AACd;AAAA,IACD;AAED,QAAI,WAAW,aAAa;AAE5B,SAAK,OAAO,MAAM,oBAAoB,EAAE,SAAQ,CAAE;AAElD,QAAI,KAAK,UAAU,aAAa;AAC9B,WAAK,OAAO,MAAM,gDAAgD;AAAA,QAChE,IAAI;AAAA,MACZ,CAAO;AACD,mBAAa,MAAO;AACpB,WAAK,IAAI,YAAY,UAAU;AAC/B,WAAK,QAAS;AACd;AAAA,IACD;AAED,QAAI;AACF,YAAM,KAAK,SAAS,YAAY,QAAQ;AACxC,WAAK,OAAO,MAAM,yBAAyB,EAAE,IAAI,YAAY;AAAA,IAC9D,SAAQ,KAAK;AACZ,UAAI,KAAK;AAGP,YAAI,eAAe,mBAAmB;AACpC,eAAK,OAAO;AAAA,YACV;AAAA,YACA,EAAE,IAAI,YAAY,OAAO,IAAK;AAAA,UAC/B;AAAA,QACX,OAAe;AACL,eAAK,OAAO,MAAM,sBAAsB;AAAA,YACtC,IAAI;AAAA,YACJ,OAAO;AAAA,UACnB,CAAW;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAED,QAAI,aAAa,WAAW,gBAAgB;AAC1C,mBAAa,MAAO;AACpB,WAAK,IAAI,YAAY,UAAU;AAAA,IACrC,OAAW;AAGL,mBAAa,QAAQ;AAAA,IACtB;AAED,SAAK,QAAS;AAAA,EACf;AAAA,EAED,MAAM,QAAQ,YAAY,QAAQ,SAAS;AACzC,QAAI,KAAK,UAAU,cAAc;AAC/B,YAAM,KAAK,eAAgB;AAAA,IAC5B;AAED,QAAI,KAAK,UAAU,YAAY,KAAK,UAAU,gBAAgB;AAC5D,YAAM,IAAI,kBAAmB;AAAA,IAC9B;AAED,QAAI,eAAe,KAAK,IAAI,cAAc,IAAI,UAAU;AAExD,QAAI,CAAC,cAAc;AACjB,YAAM,MAAM,2BAA2B,UAAU,EAAE;AAAA,IACpD;AAED,UAAM,aAAa,QAAQ,YAAY;AAEvC,QAAI,aAAa,WAAW,cAAc;AACxC,YAAM,MAAM,2BAA2B,UAAU,EAAE;AAAA,IACpD;AAED,QAAI,WAAW,aAAa;AAE5B,QAAI,cAAc;AAAA,MAChB,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,IACD;AAED,SAAK,OAAO,MAAM,WAAW,WAAW;AAExC,QAAI;AACF,UAAI,MAAM,MAAM,KAAK,SAAS,QAAQ,UAAU,QAAQ,OAAO;AAE/D,UAAI,KAAK;AACP,aAAK,OAAO,MAAM,kBAAkB;AAAA,UAClC,SAAS;AAAA,UACT,SAAS;AAAA,QACnB,CAAS;AAAA,MACF;AAED,aAAO;AAAA,IACR,SAAQ,KAAK;AACZ,WAAK,OAAO,MAAM,kBAAkB;AAAA,QAClC,OAAO;AAAA,QACP,SAAS;AAAA,MACjB,CAAO;AAED,YAAM;AAAA,IACP;AAAA,EACF;AAAA,EAED,GAAG,OAAO,UAAU;AAClB,WAAO,KAAK,QAAQ,GAAG,OAAO,QAAQ;AAAA,EACvC;AAAA,EAED,KAAK,OAAO,UAAU;AACpB,QAAI,SAAS,KAAK,QAAQ,GAAG,OAAO,IAAI,SAAS;AAC/C,aAAQ;AACR,eAAS,GAAG,IAAI;AAAA,IACtB,CAAK;AACD,WAAO;AAAA,EACR;AAAA,EAED,KAAK,UAAU,MAAM;AACnB,WAAO,KAAK,QAAQ,KAAK,OAAO,GAAG,IAAI;AAAA,EACxC;AAAA,EAED,iBAAiB;AACf,QAAI,KAAK;AAAiB,aAAO,KAAK;AAEtC,SAAK,kBAAkB,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtD,UAAI,SAAS,CAAC,MAAM,OAAO,KAAK,eAAe;AAE/C,aAAO;AAAA,QACL,KAAK,GAAG,WAAW,MAAM;AACvB,iBAAO,QAAQ,UAAQ,MAAM;AAC7B,kBAAS;AAAA,QACnB,CAAS;AAAA,MACF;AACD,aAAO;AAAA,QACL,KAAK,GAAG,SAAS,SAAO;AACtB,iBAAO,QAAQ,UAAQ,MAAM;AAC7B,iBAAO,GAAG;AAAA,QACpB,CAAS;AAAA,MACF;AACD,aAAO;AAAA,QACL,KAAK,GAAG,cAAc,SAAO;AAC3B,iBAAO,QAAQ,UAAQ,MAAM;AAC7B,iBAAO,GAAG;AAAA,QACpB,CAAS;AAAA,MACF;AAAA,IACP,CAAK;AAED,WAAO,KAAK;AAAA,EACb;AACH;ACtmBA,MAAM,WAAW;AAAA,EACf,iBAAiB;AAAA,EACjB,sBAAsB;AACxB;AAEA,MAAM,MAAM,MAAM,KAAK,IAAK;AAErB,MAAM,oBAAoB,CAAC,UAAU,SAAS;AACnD,SAAO,QAAQ,CAAE;AACjB,MAAI,EAAE,aAAa,aAAa,YAAa,IAAG;AAChD,gBAAc,eAAe;AAC7B,MAAI,gBAAgB;AAAW,kBAAc;AAE7C,SAAO,cAAY;AACjB,QAAI,OAAO,WAAW,eAAe;AACrC,QAAI,QAAQ,OAAO;AAEnB,QAAI,QAAQ,QAAQ,QAAQ,QAAQ,KAAK,OAAQ;AAEjD,QAAI,YAAY,KAAK,KAAK,OAAQ,IAAG,OAAO;AAE5C,YAAQ,SAAS,IAAI;AAErB,QAAI,eAAe,cAAc;AAAO,cAAQ;AAEhD,WAAO;AAAA,EACR;AACH;AAEO,IAAA,YAAA,MAAM,QAAQ;AAAA,EACnB,YAAY,EAAE,cAAc,GAAG,QAAQ;AACrC,SAAK,eAAe;AAEpB,QAAI,CAAC,KAAK,cAAc;AACtB,YAAM,MAAM,uCAAuC,YAAY,EAAE;AAAA,IAClE;AAED,WAAO,OAAO,OAAO,CAAA,GAAI,UAAU,IAAI;AAEvC,SAAK,WAAW,KAAK;AACrB,QAAI,CAAC,KAAK,UAAU;AAClB,YAAM,MAAM,qCAAqC;AAAA,IAClD;AAED,SAAK,kBAAkB,KAAK;AAC5B,SAAK,uBAAuB,KAAK;AACjC,SAAK,SAAS,KAAK,UAAU,IAAI,WAAY;AAE7C,SAAK,QAAQ;AACb,SAAK,WAAW;AAChB,SAAK,iBAAiB,IAAK;AAAA,EAC5B;AAAA,EAED,MAAM,QAAQ;AACZ,SAAK,SAAS;AACd,SAAK,cAAe;AAAA,EACrB;AAAA,EAED,eAAe;AACb,QACE,KAAK,UAAU,eACf,KAAK,UAAU,qBACf,KAAK,UAAU,UACf;AACA,aAAO;AAAA,IACR;AAED,SAAK,gBAAiB;AAEtB,SAAK,QAAQ;AACb,SAAK,OAAO,UAAU,MAAM,SAAO;AACjC,WAAK,OAAO,KAAK,6BAA6B,GAAG;AAAA,IACvD,CAAK;AAED,WAAO;AAAA,EACR;AAAA,EAED,gBAAgB;AACd,SAAK,SAAS,CAAE;AAEhB,SAAK,OAAO;AAAA,MACV,KAAK,OAAO,GAAG,WAAW,MAAM;AAC9B,aAAK,WAAW;AAChB,aAAK,WAAW,IAAK;AACrB,aAAK,QAAQ;AAEb,aAAK,gBAAiB;AACtB,aAAK,aAAc;AAAA,MAC3B,CAAO;AAAA,IACF;AAED,SAAK,OAAO;AAAA,MACV,KAAK,OAAO,GAAG,cAAc,MAAM;AACjC,aAAK,iBAAiB,IAAK;AAC3B,aAAK,QAAQ;AAEb,aAAK,YAAa;AAClB,aAAK,kBAAmB;AAAA,MAChC,CAAO;AAAA,IACF;AAED,SAAK,OAAO;AAAA,MACV,KAAK,OAAO,GAAG,SAAS,MAAM;AAC5B,aAAK,iBAAiB,IAAK;AAC3B,aAAK,QAAQ;AAEb,aAAK,gBAAiB;AACtB,aAAK,YAAa;AAAA,MAC1B,CAAO;AAAA,IACF;AAED,SAAK,OAAO;AAAA,MACV,KAAK,OAAO,GAAG,aAAa,MAAM;AAChC,aAAK,WAAW,IAAK;AAAA,MAC7B,CAAO;AAAA,IACF;AAED,SAAK,OAAO,KAAK,MAAM;AACrB,WAAK,gBAAiB;AACtB,WAAK,YAAa;AAAA,IACxB,CAAK;AAAA,EACF;AAAA,EAED,UAAU;AACR,WAAO,KAAK;AACZ,QAAI,KAAK,QAAQ;AACf,WAAK,OAAO,QAAQ,UAAQ,KAAI,CAAE;AAAA,IACnC;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EAED,eAAe;AACb,QAAI,KAAK,QAAQ;AACf,mBAAa,KAAK,MAAM;AAAA,IACzB;AAED,QAAI,YACF,KAAK,gBAAgB,KAAK,OAAQ,IAAG,OAAO,KAAK,eAAe;AAElE,SAAK,SAAS,WAAW,MAAM;AAC7B,WAAK,WAAY;AACjB,UAAI,KAAK,UAAU;AAAa,aAAK,aAAc;AAAA,IACpD,GAAE,SAAS;AAAA,EACb;AAAA,EAED,cAAc;AACZ,QAAI,KAAK,QAAQ;AACf,mBAAa,KAAK,MAAM;AAAA,IACzB;AAAA,EACF;AAAA,EAED,aAAa;AACX,QAAI,OAAO,QAAQ,KAAK;AAExB,QAAI,OAAO,KAAK,kBAAkB,KAAK,cAAc;AACnD,WAAK,OAAO,KAAK,qBAAqB,IAAI,kBAAkB;AAC5D,WAAK,QAAQ;AACb,WAAK,OAAO,aAAa,IAAI,qBAAoB,CAAE;AAAA,IACpD;AAAA,EACF;AAAA,EAED,oBAAoB;AAClB,QAAI,KAAK,YAAY,KAAK,sBAAsB;AAC9C,WAAK,OAAO,MAAO;AACnB;AAAA,IACD;AAED,QAAI,QAAQ,KAAK,SAAS,KAAK,QAAQ;AAEvC,SAAK;AAEL,SAAK,OAAO,KAAK,mBAAmB,KAAK,OAAO,KAAK,QAAQ,WAAW;AAExE,SAAK,QAAQ;AAEb,SAAK,eAAe,WAAW,MAAM,KAAK,aAAc,GAAE,KAAK;AAAA,EAChE;AAAA,EAED,kBAAkB;AAChB,QAAI,KAAK,cAAc;AACrB,mBAAa,KAAK,YAAY;AAC9B,aAAO,KAAK;AAAA,IACb;AAAA,EACF;AACH;AC1LO,MAAM,mBAAmB;AAAA,EAC9B,YAAY,KAAK,OAAO,IAAI;AAC1B,SAAK,MAAM;AAEX,QAAI,OAAO,KAAK;AAEhB,QAAI,MAAM;AACR,WAAK,OAAO;AAAA,IAClB,WAAe,OAAO,cAAc,aAAa;AAC3C,WAAK,OAAO;AAAA,IAClB,OAAW;AACL,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACvC;AAED,SAAK,YAAY;AACjB,SAAK,UAAU,iBAAkB;AAEjC,QAAI,EAAE,QAAQ,YAAW,IAAK;AAE9B,SAAK,SAAS,UAAU;AACxB,SAAK,oBAAoB,KAAK;AAC9B,SAAK,cAAc;AAAA,EACpB;AAAA,EAED,OAAO;AACL,QAAI,KAAK,mBAAmB;AAC1B,WAAK,KAAK,IAAI,KAAK;AAAA,QACjB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACN;AAAA,IACP,OAAW;AACL,WAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,WAAW;AAAA,IACnD;AACD,SAAK,GAAG,aAAa;AACrB,SAAK,cAAe;AAEpB,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAI,SAAS,CAAE;AAEf,aAAO;AAAA,QACL,KAAK,KAAK,QAAQ,MAAM;AACtB,iBAAO,QAAQ,UAAQ,MAAM;AAC7B,kBAAS;AAAA,QACnB,CAAS;AAAA,MACF;AAED,aAAO;AAAA,QACL,KAAK,KAAK,SAAS,MAAM;AACvB,iBAAO,QAAQ,UAAQ,MAAM;AAC7B,iBAAO,MAAM,sBAAsB,CAAC;AAAA,QAC9C,CAAS;AAAA,MACF;AAAA,IACP,CAAK;AAAA,EACF;AAAA,EAED,OAAO,KAAK;AACV,SAAK,MAAM;AAAA,EACZ;AAAA,EAED,WAAW;AAAA,EAAE;AAAA,EAEb,KAAK,MAAM;AACT,QAAI,CAAC,KAAK,MAAM,CAAC,KAAK,WAAW;AAC/B,YAAM,MAAM,4BAA4B;AAAA,IAC9C,OAAW;AACL,WAAK,GAAG,KAAK,IAAI;AAAA,IAClB;AAAA,EACF;AAAA,EAED,QAAQ;AACN,QAAI,KAAK,MAAM,KAAK,WAAW;AAC7B,WAAK,QAAS;AAAA,IACf;AAAA,EACF;AAAA,EAED,GAAG,OAAO,UAAU;AAClB,WAAO,KAAK,QAAQ,GAAG,OAAO,QAAQ;AAAA,EACvC;AAAA,EAED,KAAK,OAAO,UAAU;AACpB,QAAI,SAAS,KAAK,QAAQ,GAAG,OAAO,IAAI,SAAS;AAC/C,aAAQ;AACR,eAAS,GAAG,IAAI;AAAA,IACtB,CAAK;AACD,WAAO;AAAA,EACR;AAAA,EAED,gBAAgB;AACd,SAAK,GAAG,UAAU,WAAS;AACzB,WAAK,QAAQ,KAAK,SAAS,MAAM,SAAS,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE;AAED,SAAK,GAAG,UAAU,MAAM;AACtB,WAAK,QAAS;AAAA,IACf;AAED,SAAK,GAAG,YAAY,WAAS;AAC3B,UAAI,OAAO,MAAM;AACjB,UAAI,KAAK,WAAW,UAAU;AAC5B,eAAO,IAAI,WAAW,IAAI;AAAA,MAC3B;AAED,WAAK,QAAQ,KAAK,QAAQ,IAAI;AAAA,IAC/B;AAED,SAAK,GAAG,SAAS,MAAM;AACrB,WAAK,YAAY;AACjB,WAAK,QAAQ,KAAK,MAAM;AAAA,IACzB;AAAA,EACF;AAAA,EAED,UAAU;AACR,SAAK,GAAG,UAAU;AAClB,SAAK,GAAG,MAAO;AACf,WAAO,KAAK;AACZ,SAAK,YAAY;AAEjB,SAAK,QAAQ,KAAK,OAAO;AAAA,EAC1B;AACH;AClHO,MAAMC,oBAAkB;AAAA,EAC7B,UAAU;AAAA,EACV,cAAc;AAAA,EACd,sBAAsB;AAAA,EACtB,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,MAAM;AACR;AAEO,SAASC,cAAY,KAAK,MAAM;AACrC,MAAI,OAAO,QAAQ,YAAY,OAAO,SAAS,aAAa;AAC1D,WAAO;AACP,UAAM;AAAA,EACP;AAED,SAAO,QAAQ,CAAE;AAEjB,MAAI,CAAC,OAAO,CAAC,KAAK;AAAW,UAAM,MAAM,oCAAoC;AAE7E,SAAO,OAAO,OAAO,CAAA,GAAID,mBAAiB,IAAI;AAE9C,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM;AAEJ,WAAS,UAAU,IAAI,WAAW,QAAQ;AAE1C,MAAI,OAAO,aAAa;AAAU,kBAAc,eAAe;AAE/D,MAAI,aAAa,uBAAuB;AACtC,eAAW,IAAI,oBAAoB,EAAE,QAAQ;AAC7C,cAAU,WAAW,IAAI,YAAa;AACtC,sBAAkB,mBAAmB;AAAA,EACzC,WAAa,aAAa,0BAA0B;AAChD,eAAW,IAAI,oBAAoB,EAAE,QAAQ;AAC7C,sBAAkB;AAClB,QAAI,CAAC,SAAS;AACZ,YAAM;AAAA,QACJ;AAAA,MACD;AAAA,IACF;AAAA,EACL,WAAa,aAAa,2BAA2B;AACjD,eAAW,IAAI,oBAAoB,EAAE,QAAQ;AAC7C,sBAAkB,mBAAmB;AACrC,QAAI,CAAC,SAAS;AACZ,YAAM;AAAA,QACJ;AAAA,MACD;AAAA,IACF;AAAA,EACL,WAAa,OAAO,aAAa,UAAU;AACvC,UAAM,MAAM,kCAAkC,QAAQ,EAAE;AAAA,EACzD;AAED,MAAI,CAAC;AAAU,UAAM,MAAM,4BAA4B;AAEvD,cACE,aACA,IAAI,mBAAmB,KAAK;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,EACd,CAAK;AAEH,sBAAoB,qBAAqB,kBAAkB,YAAY;AAEvE,MAAI,YAAY,OAAO;AACrB,cACE,WACA,IAAIE,UAAQ;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACR,CAAO;AAAA,EACJ;AAED,MAAIH,SAAQ,IAAI,MAAM;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAG;AAED,MAAI,SAAS;AACX,YAAQ,MAAMA,MAAK;AACnB,IAAAA,OAAM,UAAU;AAAA,EACjB;AAED,MAAI,gBAAgB;AAClB,yBAAqBA,QAAO,YAAY;AACtC,UAAI;AACF,cAAM,eAAe,SAAS;AAAA,MAC/B,SAAQ,KAAK;AACZ,eAAO,MAAM,6CAA6C,GAAG;AAC7D,eAAO;AAAA,MACR;AAKD,MAAAA,OAAM,QAAO,EAAG,MAAM,MAAM;AAAA,MAAA,CAAE;AAE9B,aAAO;AAAA,IACb,CAAK;AAAA,EACF;AAED,SAAOA;AACT;AAEA,SAAS,qBAAqBA,QAAO,UAAU;AAC7C,MAAI,YAAY;AAEhB,EAAAA,OAAM,GAAG,WAAW,MAAO,YAAY,KAAM;AAE7C,EAAAA,OAAM,GAAG,SAAS,OAAM,OAAM;AAC5B,QAAI,CAAC;AAAI;AAGT,QAAI,WAAW;AACb,MAAAA,OAAM,OAAO,KAAK,kCAAkC,EAAE;AACtD;AAAA,IACD;AAED,QAAI,GAAG,WAAW,iBAAiB;AACjC,kBAAY;AAEZ,YAAM,SAAU;AAAA,IACjB;AAAA,EACL,CAAG;AACH;ACxJO,MAAM,eAAe,WAAW;AAAA,EACrC,cAAc,OAAO,KAAK,SAAS;AACjC,QAAI,SAAS;AACX,cAAQ,KAAK,EAAE,KAAK,OAAO;AAAA,IACjC,OAAW;AACL,cAAQ,KAAK,EAAE,GAAG;AAAA,IACnB;AAAA,EACF;AACH;ACTO,MAAMG,iBAAgBC,UAAY;AAAA,EACvC,MAAMJ,QAAO;AACX,UAAM,MAAMA,MAAK;AAEjB,SAAK,sBAAuB;AAAA,EAC7B;AAAA,EAED,wBAAwB;AACtB,QACE,OAAO,aAAa,eACpB,OAAO,WAAW,eAClB,SAAS,oBACT,OAAO,kBACP;AACA,UAAI,aAAa,MAAM;AACrB,YAAI,CAAC,SAAS,QAAQ;AACpB,cAAI,KAAK,gBAAgB;AACvB,iBAAK,OAAO,MAAM,4CAA4C;AAAA,UAC/D;AAAA,QACF;AAAA,MACF;AACD,UAAI,UAAU,WAAS;AACrB,YAAI,KAAK,gBAAgB;AACvB,eAAK,OAAO,MAAM,qBAAqB,EAAE,MAAK,CAAE;AAAA,QACjD;AAAA,MACF;AACD,UAAI,mBAAmB,MACrB,KAAK,WAAW,IAAI,kBAAkB,aAAa,CAAC;AAEtD,eAAS,iBAAiB,oBAAoB,YAAY,KAAK;AAC/D,aAAO,iBAAiB,SAAS,SAAS,KAAK;AAC/C,aAAO,iBAAiB,UAAU,SAAS,KAAK;AAChD,aAAO,iBAAiB,UAAU,SAAS,KAAK;AAChD,aAAO,iBAAiB,UAAU,kBAAkB,KAAK;AAEzD,WAAK,OAAO,KAAK,MAAM;AACrB,iBAAS,oBAAoB,oBAAoB,YAAY,KAAK;AAClE,eAAO,oBAAoB,SAAS,SAAS,KAAK;AAClD,eAAO,oBAAoB,UAAU,SAAS,KAAK;AACnD,eAAO,oBAAoB,UAAU,SAAS,KAAK;AACnD,eAAO,oBAAoB,UAAU,kBAAkB,KAAK;AAAA,MACpE,CAAO;AAAA,IACF;AAAA,EACF;AAAA,EAED,WAAW,KAAK;AACd,QAAI,KAAK,UAAU,kBAAkB,KAAK,UAAU;AAAU;AAE9D,SAAK,OAAO,KAAK,iBAAiB,EAAE,QAAQ,IAAI,SAAS;AAEzD,SAAK,gBAAiB;AACtB,SAAK,YAAa;AAElB,SAAK,QAAQ;AACb,SAAK,OAAO,aAAa,GAAG;AAAA,EAC7B;AACH;AC9CA,MAAM,eAAe,CAAC,SAAS,cAAc;AAE7C,MAAM,aAAa;AAGnB,MAAM,YAAY,CAAC,KAAK,QAAQ;AAC9B,WAAS,UAAU,cAAc;AAC/B,QAAI,UAAU,IAAI,KAAK,cAAc,cAAc,MAAM,IAAI,GAAG,IAAI;AAEpE,QAAI,SAAS;AACX,aAAO,QAAQ,aAAa,SAAS;AAAA,IACtC;AAAA,EACF;AACH;AAEA,MAAM,gBAAgB,UAAQ;AAC5B,MAAI,KAAK,MAAM,WAAW;AAAG,WAAO;AAEpC,MAAI,OAAO,WAAW,aAAa;AACjC,QAAI,QAAQ,OAAO,SAAS,SAAS,QAAQ,QAAQ,IAAI;AAEzD,WAAO,GAAG,KAAK,KAAK,OAAO,SAAS,IAAI,GAAG,IAAI;AAAA,EAChD;AAED,SAAO;AACT;AAGA,MAAM,qBAAqB,MAAM;AAC/B,MAAI,OAAO,aAAa,eAAe,SAAS,MAAM;AACpD,QAAI,MAAM,UAAU,UAAU,KAAK;AACnC,QAAI,KAAK;AACP,aAAO,cAAc,GAAG;AAAA,IACzB;AAAA,EACF;AAED,SAAO,cAAc,UAAU;AACjC;AAEO,SAAS,YAAY,KAAK,MAAM;AACrC,MAAI,OAAO,QAAQ,YAAY,OAAO,SAAS,aAAa;AAC1D,WAAO;AACP,UAAM;AAAA,EACP;AAED,QAAM,OAAO,mBAAoB;AACjC,SAAO,QAAQ,CAAE;AAEjB,SAAO,OAAO,OAAO,CAAA,GAAIK,mBAAU,IAAI;AAEvC,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM;AAEJ,WAAS,KAAK,SAAS,KAAK,UAAU,IAAI,OAAO,QAAQ;AACzD,sBAAoB,KAAK,oBACvB,KAAK,qBAAqB,kBAAkB,YAAY;AAE1D,MAAI,KAAK,YAAY,OAAO;AAC1B,SAAK,UACH,KAAK,WACL,IAAIF,SAAQ;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACR,CAAO;AAAA,EACJ;AAED,SAAOG,cAAgB,KAAK,IAAI;AAClC;ACtFe,MAAM,oBAAoB,QAAQ;AAAA,EAC/C,QAAQ,MAAM;AACZ,UAAM,QAAQ,IAAI;AAAA,EAMnB;AAAA,EAED,YAAW;AACT,UAAM,UAAS;AAAA,EAChB;AACH;ACbA,MAAM,oBAAoB,MAAM;AAC9B,MAAI,OAAO,SAAS,SAAS,kBAAiB;AAC5C,WAAO,sCAAsC,OAAO,SAAS,QAAQ;AAAA,EACzE,OAAS;AACL,WAAO,SAAS,OAAO,SAAS,IAAI,mBAAmB,OAAO,SAAS,QAAQ;AAAA,EAChF;AACH;AAEK,MAAC,QAAQ,YAAY,kBAAmB,CAAA;ACR9B,MAAM,mCAAmC,YAAY;AAAA,EAGlE,QAAQ,MAAM;AACZ,UAAM,QAAQ,IAAI;AAClB,UAAM,EAAE,OAAO,QAAS,IAAG;AAC3B,SAAK,KAAK,OAAO,OAAO;AAAA,EACzB;AACH;AAPE,cADmB,4BACZ,cAAa;ACoBtB,IAAIC,YAAU,MAAM;AAEpB,IAAA,YAAiBA;;ACxBjB,IAAIC,eAAa,OAAOC,kBAAU,YAAYA,kBAAUA,eAAO,WAAW,UAAUA;AAEpF,IAAA,cAAiBD;ACHjB,IAAI,aAAaE;AAGjB,IAAI,WAAW,OAAO,QAAQ,YAAY,QAAQ,KAAK,WAAW,UAAU;AAG5E,IAAIC,SAAO,cAAc,YAAY,SAAS,aAAa,EAAC;AAE5D,IAAA,QAAiBA;ACRjB,IAAIA,SAAOD;AAGX,IAAIE,WAASD,OAAK;AAElB,IAAA,UAAiBC;ACLjB,IAAIA,WAASF;AAGb,IAAIG,gBAAc,OAAO;AAGzB,IAAIC,mBAAiBD,cAAY;AAOjC,IAAIE,yBAAuBF,cAAY;AAGvC,IAAIG,mBAAiBJ,WAASA,SAAO,cAAc;AASnD,SAASK,YAAU,OAAO;AACxB,MAAI,QAAQH,iBAAe,KAAK,OAAOE,gBAAc,GACjD,MAAM,MAAMA,gBAAc;AAE9B,MAAI;AACF,UAAMA,gBAAc,IAAI;AACxB,QAAI,WAAW;AAAA,EACnB,SAAW,GAAG;AAAA,EAAE;AAEd,MAAI,SAASD,uBAAqB,KAAK,KAAK;AAC5C,MAAI,UAAU;AACZ,QAAI,OAAO;AACT,YAAMC,gBAAc,IAAI;AAAA,IAC9B,OAAW;AACL,aAAO,MAAMA,gBAAc;AAAA,IAC5B;AAAA,EACF;AACD,SAAO;AACT;AAEA,IAAA,aAAiBC;AC5CjB,IAAIJ,gBAAc,OAAO;AAOzB,IAAI,uBAAuBA,cAAY;AASvC,SAASK,iBAAe,OAAO;AAC7B,SAAO,qBAAqB,KAAK,KAAK;AACxC;AAEA,IAAA,kBAAiBA;ACrBjB,IAAIN,WAASF,SACT,YAAYS,YACZ,iBAAiBC;AAGrB,IAAI,UAAU,iBACV,eAAe;AAGnB,IAAI,iBAAiBR,WAASA,SAAO,cAAc;AASnD,SAASS,aAAW,OAAO;AACzB,MAAI,SAAS,MAAM;AACjB,WAAO,UAAU,SAAY,eAAe;AAAA,EAC7C;AACD,SAAQ,kBAAkB,kBAAkB,OAAO,KAAK,IACpD,UAAU,KAAK,IACf,eAAe,KAAK;AAC1B;AAEA,IAAA,cAAiBA;ACHjB,SAASC,eAAa,OAAO;AAC3B,SAAO,SAAS,QAAQ,OAAO,SAAS;AAC1C;AAEA,IAAA,iBAAiBA;AC5BjB,IAAID,eAAaX,aACbY,iBAAeH;AAGnB,IAAII,cAAY;AAmBhB,SAASC,WAAS,OAAO;AACvB,SAAO,OAAO,SAAS,YACpBF,eAAa,KAAK,KAAKD,aAAW,KAAK,KAAKE;AACjD;AAEA,IAAA,aAAiBC;AC5BjB,IAAIjB,YAAUG,WACVc,aAAWL;AAGf,IAAI,eAAe,oDACf,gBAAgB;AAUpB,SAASM,QAAM,OAAO,QAAQ;AAC5B,MAAIlB,UAAQ,KAAK,GAAG;AAClB,WAAO;AAAA,EACR;AACD,MAAI,OAAO,OAAO;AAClB,MAAI,QAAQ,YAAY,QAAQ,YAAY,QAAQ,aAChD,SAAS,QAAQiB,WAAS,KAAK,GAAG;AACpC,WAAO;AAAA,EACR;AACD,SAAO,cAAc,KAAK,KAAK,KAAK,CAAC,aAAa,KAAK,KAAK,KACzD,UAAU,QAAQ,SAAS,OAAO,MAAM;AAC7C;AAEA,IAAA,SAAiBC;ACHjB,SAASC,WAAS,OAAO;AACvB,MAAI,OAAO,OAAO;AAClB,SAAO,SAAS,SAAS,QAAQ,YAAY,QAAQ;AACvD;AAEA,IAAA,aAAiBA;;AC9BjB,IAAIL,eAAaX,aACbgB,aAAWP;AAGf,IAAI,WAAW,0BACXQ,YAAU,qBACV,SAAS,8BACT,WAAW;AAmBf,SAASC,aAAW,OAAO;AACzB,MAAI,CAACF,WAAS,KAAK,GAAG;AACpB,WAAO;AAAA,EACR;AAGD,MAAI,MAAML,aAAW,KAAK;AAC1B,SAAO,OAAOM,aAAW,OAAO,UAAU,OAAO,YAAY,OAAO;AACtE;AAEA,IAAA,eAAiBC;ACpCjB,IAAIjB,SAAOD;AAGX,IAAImB,eAAalB,OAAK,oBAAoB;AAE1C,IAAA,cAAiBkB;ACLjB,IAAI,aAAanB;AAGjB,IAAI,aAAc,WAAW;AAC3B,MAAI,MAAM,SAAS,KAAK,cAAc,WAAW,QAAQ,WAAW,KAAK,YAAY,EAAE;AACvF,SAAO,MAAO,mBAAmB,MAAO;AAC1C,EAAC;AASD,SAASoB,WAAS,MAAM;AACtB,SAAO,CAAC,CAAC,cAAe,cAAc;AACxC;AAEA,IAAA,YAAiBA;AClBjB,IAAIC,cAAY,SAAS;AAGzB,IAAIC,iBAAeD,YAAU;AAS7B,SAASE,WAAS,MAAM;AACtB,MAAI,QAAQ,MAAM;AAChB,QAAI;AACF,aAAOD,eAAa,KAAK,IAAI;AAAA,IACnC,SAAa,GAAG;AAAA,IAAE;AACd,QAAI;AACF,aAAQ,OAAO;AAAA,IACrB,SAAa,GAAG;AAAA,IAAE;AAAA,EACf;AACD,SAAO;AACT;AAEA,IAAA,YAAiBC;ACzBjB,IAAIL,eAAalB,cACb,WAAWS,WACXO,aAAWN,YACXa,aAAWC;AAMf,IAAI,eAAe;AAGnB,IAAI,eAAe;AAGnB,IAAI,YAAY,SAAS,WACrBrB,gBAAc,OAAO;AAGzB,IAAI,eAAe,UAAU;AAG7B,IAAIC,mBAAiBD,cAAY;AAGjC,IAAI,aAAa;AAAA,EAAO,MACtB,aAAa,KAAKC,gBAAc,EAAE,QAAQ,cAAc,MAAM,EAC7D,QAAQ,0DAA0D,OAAO,IAAI;AAChF;AAUA,SAASqB,eAAa,OAAO;AAC3B,MAAI,CAACT,WAAS,KAAK,KAAK,SAAS,KAAK,GAAG;AACvC,WAAO;AAAA,EACR;AACD,MAAI,UAAUE,aAAW,KAAK,IAAI,aAAa;AAC/C,SAAO,QAAQ,KAAKK,WAAS,KAAK,CAAC;AACrC;AAEA,IAAA,gBAAiBE;ACtCjB,SAASC,WAAS,QAAQ,KAAK;AAC7B,SAAO,UAAU,OAAO,SAAY,OAAO,GAAG;AAChD;AAEA,IAAA,YAAiBA;ACZjB,IAAI,eAAe1B,eACf,WAAWS;AAUf,SAASkB,YAAU,QAAQ,KAAK;AAC9B,MAAI,QAAQ,SAAS,QAAQ,GAAG;AAChC,SAAO,aAAa,KAAK,IAAI,QAAQ;AACvC;AAEA,IAAA,aAAiBA;AChBjB,IAAIA,cAAY3B;AAGhB,IAAI4B,iBAAeD,YAAU,QAAQ,QAAQ;AAE7C,IAAA,gBAAiBC;ACLjB,IAAIA,iBAAe5B;AASnB,SAAS6B,cAAY;AACnB,OAAK,WAAWD,iBAAeA,eAAa,IAAI,IAAI,CAAA;AACpD,OAAK,OAAO;AACd;AAEA,IAAA,aAAiBC;ACJjB,SAASC,aAAW,KAAK;AACvB,MAAI,SAAS,KAAK,IAAI,GAAG,KAAK,OAAO,KAAK,SAAS,GAAG;AACtD,OAAK,QAAQ,SAAS,IAAI;AAC1B,SAAO;AACT;AAEA,IAAA,cAAiBA;AChBjB,IAAIF,iBAAe5B;AAGnB,IAAI+B,mBAAiB;AAGrB,IAAI5B,gBAAc,OAAO;AAGzB,IAAIC,mBAAiBD,cAAY;AAWjC,SAAS6B,UAAQ,KAAK;AACpB,MAAI,OAAO,KAAK;AAChB,MAAIJ,gBAAc;AAChB,QAAI,SAAS,KAAK,GAAG;AACrB,WAAO,WAAWG,mBAAiB,SAAY;AAAA,EAChD;AACD,SAAO3B,iBAAe,KAAK,MAAM,GAAG,IAAI,KAAK,GAAG,IAAI;AACtD;AAEA,IAAA,WAAiB4B;AC7BjB,IAAIJ,iBAAe5B;AAGnB,IAAIG,gBAAc,OAAO;AAGzB,IAAIC,mBAAiBD,cAAY;AAWjC,SAAS8B,UAAQ,KAAK;AACpB,MAAI,OAAO,KAAK;AAChB,SAAOL,iBAAgB,KAAK,GAAG,MAAM,SAAaxB,iBAAe,KAAK,MAAM,GAAG;AACjF;AAEA,IAAA,WAAiB6B;ACtBjB,IAAI,eAAejC;AAGnB,IAAI+B,mBAAiB;AAYrB,SAASG,UAAQ,KAAK,OAAO;AAC3B,MAAI,OAAO,KAAK;AAChB,OAAK,QAAQ,KAAK,IAAI,GAAG,IAAI,IAAI;AACjC,OAAK,GAAG,IAAK,gBAAgB,UAAU,SAAaH,mBAAiB;AACrE,SAAO;AACT;AAEA,IAAA,WAAiBG;ACtBjB,IAAI,YAAYlC,YACZ,aAAaS,aACb,UAAUC,UACV,UAAUc,UACV,UAAUW;AASd,SAASC,OAAK,SAAS;AACrB,MAAI,QAAQ,IACR,SAAS,WAAW,OAAO,IAAI,QAAQ;AAE3C,OAAK,MAAK;AACV,SAAO,EAAE,QAAQ,QAAQ;AACvB,QAAI,QAAQ,QAAQ,KAAK;AACzB,SAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,EAC5B;AACH;AAGAA,OAAK,UAAU,QAAQ;AACvBA,OAAK,UAAU,QAAQ,IAAI;AAC3BA,OAAK,UAAU,MAAM;AACrBA,OAAK,UAAU,MAAM;AACrBA,OAAK,UAAU,MAAM;AAErB,IAAA,QAAiBA;ACxBjB,SAASC,mBAAiB;AACxB,OAAK,WAAW;AAChB,OAAK,OAAO;AACd;AAEA,IAAA,kBAAiBA;ACoBjB,SAASC,KAAG,OAAO,OAAO;AACxB,SAAO,UAAU,SAAU,UAAU,SAAS,UAAU;AAC1D;AAEA,IAAA,OAAiBA;ACpCjB,IAAIA,OAAKtC;AAUT,SAASuC,eAAa,OAAO,KAAK;AAChC,MAAI,SAAS,MAAM;AACnB,SAAO,UAAU;AACf,QAAID,KAAG,MAAM,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG;AAC7B,aAAO;AAAA,IACR;AAAA,EACF;AACD,SAAO;AACT;AAEA,IAAA,gBAAiBC;ACpBjB,IAAIA,iBAAevC;AAGnB,IAAI,aAAa,MAAM;AAGvB,IAAI,SAAS,WAAW;AAWxB,SAASwC,kBAAgB,KAAK;AAC5B,MAAI,OAAO,KAAK,UACZ,QAAQD,eAAa,MAAM,GAAG;AAElC,MAAI,QAAQ,GAAG;AACb,WAAO;AAAA,EACR;AACD,MAAI,YAAY,KAAK,SAAS;AAC9B,MAAI,SAAS,WAAW;AACtB,SAAK,IAAG;AAAA,EACZ,OAAS;AACL,WAAO,KAAK,MAAM,OAAO,CAAC;AAAA,EAC3B;AACD,IAAE,KAAK;AACP,SAAO;AACT;AAEA,IAAA,mBAAiBC;AClCjB,IAAID,iBAAevC;AAWnB,SAASyC,eAAa,KAAK;AACzB,MAAI,OAAO,KAAK,UACZ,QAAQF,eAAa,MAAM,GAAG;AAElC,SAAO,QAAQ,IAAI,SAAY,KAAK,KAAK,EAAE,CAAC;AAC9C;AAEA,IAAA,gBAAiBE;AClBjB,IAAIF,iBAAevC;AAWnB,SAAS0C,eAAa,KAAK;AACzB,SAAOH,eAAa,KAAK,UAAU,GAAG,IAAI;AAC5C;AAEA,IAAA,gBAAiBG;ACfjB,IAAI,eAAe1C;AAYnB,SAAS2C,eAAa,KAAK,OAAO;AAChC,MAAI,OAAO,KAAK,UACZ,QAAQ,aAAa,MAAM,GAAG;AAElC,MAAI,QAAQ,GAAG;AACb,MAAE,KAAK;AACP,SAAK,KAAK,CAAC,KAAK,KAAK,CAAC;AAAA,EAC1B,OAAS;AACL,SAAK,KAAK,EAAE,CAAC,IAAI;AAAA,EAClB;AACD,SAAO;AACT;AAEA,IAAA,gBAAiBA;ACzBjB,IAAI,iBAAiB3C,iBACjB,kBAAkBS,kBAClB,eAAeC,eACf,eAAec,eACf,eAAeW;AASnB,SAASS,YAAU,SAAS;AAC1B,MAAI,QAAQ,IACR,SAAS,WAAW,OAAO,IAAI,QAAQ;AAE3C,OAAK,MAAK;AACV,SAAO,EAAE,QAAQ,QAAQ;AACvB,QAAI,QAAQ,QAAQ,KAAK;AACzB,SAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,EAC5B;AACH;AAGAA,YAAU,UAAU,QAAQ;AAC5BA,YAAU,UAAU,QAAQ,IAAI;AAChCA,YAAU,UAAU,MAAM;AAC1BA,YAAU,UAAU,MAAM;AAC1BA,YAAU,UAAU,MAAM;AAE1B,IAAA,aAAiBA;AC/BjB,IAAIjB,cAAY3B,YACZC,SAAOQ;AAGX,IAAIoC,QAAMlB,YAAU1B,QAAM,KAAK;AAE/B,IAAA,OAAiB4C;ACNjB,IAAI,OAAO7C,OACP4C,cAAYnC,YACZoC,QAAMnC;AASV,SAASoC,kBAAgB;AACvB,OAAK,OAAO;AACZ,OAAK,WAAW;AAAA,IACd,QAAQ,IAAI;AAAA,IACZ,OAAO,KAAKD,SAAOD;AAAAA,IACnB,UAAU,IAAI;AAAA,EAClB;AACA;AAEA,IAAA,iBAAiBE;ACbjB,SAASC,YAAU,OAAO;AACxB,MAAI,OAAO,OAAO;AAClB,SAAQ,QAAQ,YAAY,QAAQ,YAAY,QAAQ,YAAY,QAAQ,YACvE,UAAU,cACV,UAAU;AACjB;AAEA,IAAA,aAAiBA;ACdjB,IAAI,YAAY/C;AAUhB,SAASgD,aAAW,KAAK,KAAK;AAC5B,MAAI,OAAO,IAAI;AACf,SAAO,UAAU,GAAG,IAChB,KAAK,OAAO,OAAO,WAAW,WAAW,MAAM,IAC/C,KAAK;AACX;AAEA,IAAA,cAAiBA;ACjBjB,IAAIA,eAAahD;AAWjB,SAASiD,iBAAe,KAAK;AAC3B,MAAI,SAASD,aAAW,MAAM,GAAG,EAAE,QAAQ,EAAE,GAAG;AAChD,OAAK,QAAQ,SAAS,IAAI;AAC1B,SAAO;AACT;AAEA,IAAA,kBAAiBC;ACjBjB,IAAID,eAAahD;AAWjB,SAASkD,cAAY,KAAK;AACxB,SAAOF,aAAW,MAAM,GAAG,EAAE,IAAI,GAAG;AACtC;AAEA,IAAA,eAAiBE;ACfjB,IAAIF,eAAahD;AAWjB,SAASmD,cAAY,KAAK;AACxB,SAAOH,aAAW,MAAM,GAAG,EAAE,IAAI,GAAG;AACtC;AAEA,IAAA,eAAiBG;ACfjB,IAAI,aAAanD;AAYjB,SAASoD,cAAY,KAAK,OAAO;AAC/B,MAAI,OAAO,WAAW,MAAM,GAAG,GAC3B,OAAO,KAAK;AAEhB,OAAK,IAAI,KAAK,KAAK;AACnB,OAAK,QAAQ,KAAK,QAAQ,OAAO,IAAI;AACrC,SAAO;AACT;AAEA,IAAA,eAAiBA;ACrBjB,IAAI,gBAAgBpD,gBAChB,iBAAiBS,iBACjB,cAAcC,cACd,cAAcc,cACd,cAAcW;AASlB,SAASkB,WAAS,SAAS;AACzB,MAAI,QAAQ,IACR,SAAS,WAAW,OAAO,IAAI,QAAQ;AAE3C,OAAK,MAAK;AACV,SAAO,EAAE,QAAQ,QAAQ;AACvB,QAAI,QAAQ,QAAQ,KAAK;AACzB,SAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,EAC5B;AACH;AAGAA,WAAS,UAAU,QAAQ;AAC3BA,WAAS,UAAU,QAAQ,IAAI;AAC/BA,WAAS,UAAU,MAAM;AACzBA,WAAS,UAAU,MAAM;AACzBA,WAAS,UAAU,MAAM;AAEzB,IAAA,YAAiBA;AC/BjB,IAAIA,aAAWrD;AAGf,IAAI,kBAAkB;AA8CtB,SAASsD,UAAQ,MAAM,UAAU;AAC/B,MAAI,OAAO,QAAQ,cAAe,YAAY,QAAQ,OAAO,YAAY,YAAa;AACpF,UAAM,IAAI,UAAU,eAAe;AAAA,EACpC;AACD,MAAI,WAAW,WAAW;AACxB,QAAI,OAAO,WACP,MAAM,WAAW,SAAS,MAAM,MAAM,IAAI,IAAI,KAAK,CAAC,GACpD,QAAQ,SAAS;AAErB,QAAI,MAAM,IAAI,GAAG,GAAG;AAClB,aAAO,MAAM,IAAI,GAAG;AAAA,IACrB;AACD,QAAI,SAAS,KAAK,MAAM,MAAM,IAAI;AAClC,aAAS,QAAQ,MAAM,IAAI,KAAK,MAAM,KAAK;AAC3C,WAAO;AAAA,EACX;AACE,WAAS,QAAQ,KAAKA,UAAQ,SAASD;AACvC,SAAO;AACT;AAGAC,UAAQ,QAAQD;AAEhB,IAAA,YAAiBC;ACxEjB,IAAI,UAAUtD;AAGd,IAAI,mBAAmB;AAUvB,SAASuD,gBAAc,MAAM;AAC3B,MAAI,SAAS,QAAQ,MAAM,SAAS,KAAK;AACvC,QAAI,MAAM,SAAS,kBAAkB;AACnC,YAAM,MAAK;AAAA,IACZ;AACD,WAAO;AAAA,EACX,CAAG;AAED,MAAI,QAAQ,OAAO;AACnB,SAAO;AACT;AAEA,IAAA,iBAAiBA;ACzBjB,IAAI,gBAAgBvD;AAGpB,IAAI,aAAa;AAGjB,IAAI,eAAe;AASnB,IAAIwD,iBAAe,cAAc,SAAS,QAAQ;AAChD,MAAI,SAAS,CAAA;AACb,MAAI,OAAO,WAAW,CAAC,MAAM,IAAY;AACvC,WAAO,KAAK,EAAE;AAAA,EACf;AACD,SAAO,QAAQ,YAAY,SAAS,OAAO,QAAQ,OAAO,WAAW;AACnE,WAAO,KAAK,QAAQ,UAAU,QAAQ,cAAc,IAAI,IAAK,UAAU,KAAM;AAAA,EACjF,CAAG;AACD,SAAO;AACT,CAAC;AAED,IAAA,gBAAiBA;ACjBjB,SAASC,WAAS,OAAO,UAAU;AACjC,MAAI,QAAQ,IACR,SAAS,SAAS,OAAO,IAAI,MAAM,QACnC,SAAS,MAAM,MAAM;AAEzB,SAAO,EAAE,QAAQ,QAAQ;AACvB,WAAO,KAAK,IAAI,SAAS,MAAM,KAAK,GAAG,OAAO,KAAK;AAAA,EACpD;AACD,SAAO;AACT;AAEA,IAAA,YAAiBA;ACpBjB,IAAIvD,WAASF,SACTyD,aAAWhD,WACXZ,YAAUa,WACVI,aAAWU;AAGf,IAAIkC,aAAW,IAAI;AAGnB,IAAIC,gBAAczD,WAASA,SAAO,YAAY,QAC1C,iBAAiByD,gBAAcA,cAAY,WAAW;AAU1D,SAASC,eAAa,OAAO;AAE3B,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO;AAAA,EACR;AACD,MAAI/D,UAAQ,KAAK,GAAG;AAElB,WAAO4D,WAAS,OAAOG,cAAY,IAAI;AAAA,EACxC;AACD,MAAI9C,WAAS,KAAK,GAAG;AACnB,WAAO,iBAAiB,eAAe,KAAK,KAAK,IAAI;AAAA,EACtD;AACD,MAAI,SAAU,QAAQ;AACtB,SAAQ,UAAU,OAAQ,IAAI,SAAU,CAAC4C,aAAY,OAAO;AAC9D;AAEA,IAAA,gBAAiBE;ACpCjB,IAAI,eAAe5D;AAuBnB,SAAS6D,WAAS,OAAO;AACvB,SAAO,SAAS,OAAO,KAAK,aAAa,KAAK;AAChD;AAEA,IAAA,aAAiBA;AC3BjB,IAAIhE,YAAUG,WACVe,UAAQN,QACR,eAAeC,eACfmD,aAAWrC;AAUf,SAASsC,WAAS,OAAO,QAAQ;AAC/B,MAAIjE,UAAQ,KAAK,GAAG;AAClB,WAAO;AAAA,EACR;AACD,SAAOkB,QAAM,OAAO,MAAM,IAAI,CAAC,KAAK,IAAI,aAAa8C,WAAS,KAAK,CAAC;AACtE;AAEA,IAAA,YAAiBC;ACpBjB,IAAIhD,aAAWd;AAGf,IAAI0D,aAAW,IAAI;AASnB,SAASK,QAAM,OAAO;AACpB,MAAI,OAAO,SAAS,YAAYjD,WAAS,KAAK,GAAG;AAC/C,WAAO;AAAA,EACR;AACD,MAAI,SAAU,QAAQ;AACtB,SAAQ,UAAU,OAAQ,IAAI,SAAU,CAAC4C,aAAY,OAAO;AAC9D;AAEA,IAAA,SAAiBK;ACpBjB,IAAID,aAAW9D,WACX+D,UAAQtD;AAUZ,SAASuD,UAAQ,QAAQ,MAAM;AAC7B,SAAOF,WAAS,MAAM,MAAM;AAE5B,MAAI,QAAQ,GACR,SAAS,KAAK;AAElB,SAAO,UAAU,QAAQ,QAAQ,QAAQ;AACvC,aAAS,OAAOC,QAAM,KAAK,OAAO,CAAC,CAAC;AAAA,EACrC;AACD,SAAQ,SAAS,SAAS,SAAU,SAAS;AAC/C;AAEA,IAAA,WAAiBC;ACvBjB,IAAIA,YAAUhE;AA2Bd,SAASiE,MAAI,QAAQ,MAAM,cAAc;AACvC,MAAI,SAAS,UAAU,OAAO,SAAYD,UAAQ,QAAQ,IAAI;AAC9D,SAAO,WAAW,SAAY,eAAe;AAC/C;AAEA,IAAA,QAAiBC;;AC/BjB,IAAI9D,gBAAc,OAAO;AAGzB,IAAIC,mBAAiBD,cAAY;AAUjC,SAAS+D,UAAQ,QAAQ,KAAK;AAC5B,SAAO,UAAU,QAAQ9D,iBAAe,KAAK,QAAQ,GAAG;AAC1D;AAEA,IAAA,WAAiB8D;AClBjB,IAAIvD,eAAaX,aACbY,iBAAeH;AAGnB,IAAI0D,YAAU;AASd,SAASC,kBAAgB,OAAO;AAC9B,SAAOxD,eAAa,KAAK,KAAKD,aAAW,KAAK,KAAKwD;AACrD;AAEA,IAAA,mBAAiBC;ACjBjB,IAAI,kBAAkBpE,kBAClBY,iBAAeH;AAGnB,IAAIN,gBAAc,OAAO;AAGzB,IAAIC,mBAAiBD,cAAY;AAGjC,IAAIkE,yBAAuBlE,cAAY;AAoBvC,IAAImE,gBAAc,gBAAgB,WAAW;AAAE,SAAO;AAAU,GAAI,IAAI,kBAAkB,SAAS,OAAO;AACxG,SAAO1D,eAAa,KAAK,KAAKR,iBAAe,KAAK,OAAO,QAAQ,KAC/D,CAACiE,uBAAqB,KAAK,OAAO,QAAQ;AAC9C;AAEA,IAAA,gBAAiBC;AClCjB,IAAIC,qBAAmB;AAGvB,IAAI,WAAW;AAUf,SAASC,UAAQ,OAAO,QAAQ;AAC9B,MAAI,OAAO,OAAO;AAClB,WAAS,UAAU,OAAOD,qBAAmB;AAE7C,SAAO,CAAC,CAAC,WACN,QAAQ,YACN,QAAQ,YAAY,SAAS,KAAK,KAAK,OACrC,QAAQ,MAAM,QAAQ,KAAK,KAAK,QAAQ;AACjD;AAEA,IAAA,WAAiBC;ACvBjB,IAAID,qBAAmB;AA4BvB,SAASE,WAAS,OAAO;AACvB,SAAO,OAAO,SAAS,YACrB,QAAQ,MAAM,QAAQ,KAAK,KAAK,SAASF;AAC7C;AAEA,IAAA,aAAiBE;AClCjB,IAAIX,aAAW9D,WACXsE,gBAAc7D,eACdZ,YAAUa,WACV8D,YAAUhD,UACViD,aAAWtC,YACX4B,UAAQW;AAWZ,SAASC,UAAQ,QAAQ,MAAM,SAAS;AACtC,SAAOb,WAAS,MAAM,MAAM;AAE5B,MAAI,QAAQ,IACR,SAAS,KAAK,QACd,SAAS;AAEb,SAAO,EAAE,QAAQ,QAAQ;AACvB,QAAI,MAAMC,QAAM,KAAK,KAAK,CAAC;AAC3B,QAAI,EAAE,SAAS,UAAU,QAAQ,QAAQ,QAAQ,GAAG,IAAI;AACtD;AAAA,IACD;AACD,aAAS,OAAO,GAAG;AAAA,EACpB;AACD,MAAI,UAAU,EAAE,SAAS,QAAQ;AAC/B,WAAO;AAAA,EACR;AACD,WAAS,UAAU,OAAO,IAAI,OAAO;AACrC,SAAO,CAAC,CAAC,UAAUU,WAAS,MAAM,KAAKD,UAAQ,KAAK,MAAM,MACvD3E,UAAQ,MAAM,KAAKyE,cAAY,MAAM;AAC1C;AAEA,IAAA,WAAiBK;ACtCjB,IAAI,UAAU3E,UACV2E,YAAUlE;AA6Bd,SAAS,IAAI,QAAQ,MAAM;AACzB,SAAO,UAAU,QAAQkE,UAAQ,QAAQ,MAAM,OAAO;AACxD;AAEA,IAAA,QAAiB;;AClCjB,IAAIhD,cAAY3B;AAEhB,IAAI4E,mBAAkB,WAAW;AAC/B,MAAI;AACF,QAAI,OAAOjD,YAAU,QAAQ,gBAAgB;AAC7C,SAAK,CAAE,GAAE,IAAI,CAAA,CAAE;AACf,WAAO;AAAA,EACX,SAAW,GAAG;AAAA,EAAE;AAChB,EAAC;AAED,IAAA,kBAAiBiD;ACVjB,IAAIA,mBAAiB5E;AAWrB,SAAS6E,kBAAgB,QAAQ,KAAK,OAAO;AAC3C,MAAI,OAAO,eAAeD,kBAAgB;AACxCA,qBAAe,QAAQ,KAAK;AAAA,MAC1B,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,SAAS;AAAA,MACT,YAAY;AAAA,IAClB,CAAK;AAAA,EACL,OAAS;AACL,WAAO,GAAG,IAAI;AAAA,EACf;AACH;AAEA,IAAA,mBAAiBC;ACxBjB,IAAI,kBAAkB7E,kBAClBsC,OAAK7B;AAGT,IAAIN,gBAAc,OAAO;AAGzB,IAAIC,mBAAiBD,cAAY;AAYjC,SAAS2E,cAAY,QAAQ,KAAK,OAAO;AACvC,MAAI,WAAW,OAAO,GAAG;AACzB,MAAI,EAAE1E,iBAAe,KAAK,QAAQ,GAAG,KAAKkC,KAAG,UAAU,KAAK,MACvD,UAAU,UAAa,EAAE,OAAO,SAAU;AAC7C,oBAAgB,QAAQ,KAAK,KAAK;AAAA,EACnC;AACH;AAEA,IAAA,eAAiBwC;AC3BjB,IAAIA,gBAAc9E,cACd,WAAWS,WACX+D,YAAU9D,UACVM,aAAWQ,YACXuC,UAAQ5B;AAYZ,SAAS4C,UAAQ,QAAQ,MAAM,OAAO,YAAY;AAChD,MAAI,CAAC/D,WAAS,MAAM,GAAG;AACrB,WAAO;AAAA,EACR;AACD,SAAO,SAAS,MAAM,MAAM;AAE5B,MAAI,QAAQ,IACR,SAAS,KAAK,QACd,YAAY,SAAS,GACrB,SAAS;AAEb,SAAO,UAAU,QAAQ,EAAE,QAAQ,QAAQ;AACzC,QAAI,MAAM+C,QAAM,KAAK,KAAK,CAAC,GACvB,WAAW;AAEf,QAAI,QAAQ,eAAe,QAAQ,iBAAiB,QAAQ,aAAa;AACvE,aAAO;AAAA,IACR;AAED,QAAI,SAAS,WAAW;AACtB,UAAI,WAAW,OAAO,GAAG;AACzB,iBAAW,aAAa,WAAW,UAAU,KAAK,MAAM,IAAI;AAC5D,UAAI,aAAa,QAAW;AAC1B,mBAAW/C,WAAS,QAAQ,IACxB,WACCwD,UAAQ,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAA,IAAK,CAAA;AAAA,MACtC;AAAA,IACF;AACDM,kBAAY,QAAQ,KAAK,QAAQ;AACjC,aAAS,OAAO,GAAG;AAAA,EACpB;AACD,SAAO;AACT;AAEA,IAAA,WAAiBC;AClDjB,IAAI,UAAU/E;AA8Bd,SAAS,IAAI,QAAQ,MAAM,OAAO;AAChC,SAAO,UAAU,OAAO,SAAS,QAAQ,QAAQ,MAAM,KAAK;AAC9D;AAEA,IAAA,QAAiB;;ACjCjB,IAAI,iBAAiB;AAYrB,SAASgF,cAAY,OAAO;AAC1B,OAAK,SAAS,IAAI,OAAO,cAAc;AACvC,SAAO;AACT;AAEA,IAAA,eAAiBA;ACTjB,SAASC,cAAY,OAAO;AAC1B,SAAO,KAAK,SAAS,IAAI,KAAK;AAChC;AAEA,IAAA,eAAiBA;ACbjB,IAAI5B,aAAWrD,WACX,cAAcS,cACd,cAAcC;AAUlB,SAASwE,WAAS,QAAQ;AACxB,MAAI,QAAQ,IACR,SAAS,UAAU,OAAO,IAAI,OAAO;AAEzC,OAAK,WAAW,IAAI7B;AACpB,SAAO,EAAE,QAAQ,QAAQ;AACvB,SAAK,IAAI,OAAO,KAAK,CAAC;AAAA,EACvB;AACH;AAGA6B,WAAS,UAAU,MAAMA,WAAS,UAAU,OAAO;AACnDA,WAAS,UAAU,MAAM;AAEzB,IAAA,YAAiBA;ACfjB,SAASC,gBAAc,OAAO,WAAW,WAAW,WAAW;AAC7D,MAAI,SAAS,MAAM,QACf,QAAQ,aAAa,YAAY,IAAI;AAEzC,SAAQ,YAAY,UAAU,EAAE,QAAQ,QAAS;AAC/C,QAAI,UAAU,MAAM,KAAK,GAAG,OAAO,KAAK,GAAG;AACzC,aAAO;AAAA,IACR;AAAA,EACF;AACD,SAAO;AACT;AAEA,IAAA,iBAAiBA;AChBjB,SAASC,YAAU,OAAO;AACxB,SAAO,UAAU;AACnB;AAEA,IAAA,aAAiBA;ACDjB,SAASC,gBAAc,OAAO,OAAO,WAAW;AAC9C,MAAI,QAAQ,YAAY,GACpB,SAAS,MAAM;AAEnB,SAAO,EAAE,QAAQ,QAAQ;AACvB,QAAI,MAAM,KAAK,MAAM,OAAO;AAC1B,aAAO;AAAA,IACR;AAAA,EACF;AACD,SAAO;AACT;AAEA,IAAA,iBAAiBA;ACtBjB,IAAI,gBAAgBrF,gBAChB,YAAYS,YACZ,gBAAgBC;AAWpB,SAAS4E,cAAY,OAAO,OAAO,WAAW;AAC5C,SAAO,UAAU,QACb,cAAc,OAAO,OAAO,SAAS,IACrC,cAAc,OAAO,WAAW,SAAS;AAC/C;AAEA,IAAA,eAAiBA;ACnBjB,IAAI,cAActF;AAWlB,SAASuF,gBAAc,OAAO,OAAO;AACnC,MAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,SAAO,CAAC,CAAC,UAAU,YAAY,OAAO,OAAO,CAAC,IAAI;AACpD;AAEA,IAAA,iBAAiBA;ACPjB,SAASC,oBAAkB,OAAO,OAAO,YAAY;AACnD,MAAI,QAAQ,IACR,SAAS,SAAS,OAAO,IAAI,MAAM;AAEvC,SAAO,EAAE,QAAQ,QAAQ;AACvB,QAAI,WAAW,OAAO,MAAM,KAAK,CAAC,GAAG;AACnC,aAAO;AAAA,IACR;AAAA,EACF;AACD,SAAO;AACT;AAEA,IAAA,qBAAiBA;ACbjB,SAASC,WAAS,OAAO,KAAK;AAC5B,SAAO,MAAM,IAAI,GAAG;AACtB;AAEA,IAAA,YAAiBA;ACZjB,IAAI9D,cAAY3B,YACZC,SAAOQ;AAGX,IAAIiF,QAAM/D,YAAU1B,QAAM,KAAK;AAE/B,IAAA,OAAiByF;ACMjB,SAASC,SAAO;AAEhB;AAEA,IAAA,SAAiBA;ACTjB,SAASC,aAAWC,MAAK;AACvB,MAAI,QAAQ,IACR,SAAS,MAAMA,KAAI,IAAI;AAE3B,EAAAA,KAAI,QAAQ,SAAS,OAAO;AAC1B,WAAO,EAAE,KAAK,IAAI;AAAA,EACtB,CAAG;AACD,SAAO;AACT;AAEA,IAAA,cAAiBD;ACjBjB,IAAIF,QAAM1F,MACN,OAAOS,QACPmF,eAAalF;AAGjB,IAAIgD,aAAW,IAAI;AASnB,IAAIoC,cAAY,EAAEJ,SAAQ,IAAIE,aAAW,IAAIF,MAAI,CAAE,EAAA,EAAE,CAAC,CAAC,EAAE,CAAC,KAAMhC,cAAY,OAAO,SAAS,QAAQ;AAClG,SAAO,IAAIgC,MAAI,MAAM;AACvB;AAEA,IAAA,aAAiBI;AClBjB,IAAIZ,aAAWlF,WACX,gBAAgBS,gBAChB,oBAAoBC,oBACpB+E,aAAWjE,WACX,YAAYW,YACZyD,eAAalB;AAGjB,IAAIqB,qBAAmB;AAWvB,SAASC,WAAS,OAAO,UAAU,YAAY;AAC7C,MAAI,QAAQ,IACR,WAAW,eACX,SAAS,MAAM,QACf,WAAW,MACX,SAAS,CAAE,GACX,OAAO;AAEX,MAAI,YAAY;AACd,eAAW;AACX,eAAW;AAAA,EACZ,WACQ,UAAUD,oBAAkB;AACnC,QAAIF,OAAM,WAAW,OAAO,UAAU,KAAK;AAC3C,QAAIA,MAAK;AACP,aAAOD,aAAWC,IAAG;AAAA,IACtB;AACD,eAAW;AACX,eAAWJ;AACX,WAAO,IAAIP;AAAAA,EACZ,OACI;AACH,WAAO,WAAW,CAAE,IAAG;AAAA,EACxB;AACD;AACA,WAAO,EAAE,QAAQ,QAAQ;AACvB,UAAI,QAAQ,MAAM,KAAK,GACnB,WAAW,WAAW,SAAS,KAAK,IAAI;AAE5C,cAAS,cAAc,UAAU,IAAK,QAAQ;AAC9C,UAAI,YAAY,aAAa,UAAU;AACrC,YAAI,YAAY,KAAK;AACrB,eAAO,aAAa;AAClB,cAAI,KAAK,SAAS,MAAM,UAAU;AAChC,qBAAS;AAAA,UACV;AAAA,QACF;AACD,YAAI,UAAU;AACZ,eAAK,KAAK,QAAQ;AAAA,QACnB;AACD,eAAO,KAAK,KAAK;AAAA,MAClB,WACQ,CAAC,SAAS,MAAM,UAAU,UAAU,GAAG;AAC9C,YAAI,SAAS,QAAQ;AACnB,eAAK,KAAK,QAAQ;AAAA,QACnB;AACD,eAAO,KAAK,KAAK;AAAA,MAClB;AAAA,IACF;AACD,SAAO;AACT;AAEA,IAAA,YAAiBc;ACvEjB,IAAI,WAAWhG;AAoBf,SAAS,KAAK,OAAO;AACnB,SAAQ,SAAS,MAAM,SAAU,SAAS,KAAK,IAAI;AACrD;AAEA,IAAA,SAAiB;;ACvBV,MAAM,wBAAwB,CAACiG,OAAM,WAAW;AACnD,QAAM,UAAU,CAAA;AAChB,QAAM,OAAO,CAAA;AACb,UAAQ,KAAK,MAAM;AACnB,MAAI,CAAC,QAAQ;AACT,YAAQ,KAAKA,MAAK,MAAM;AAAA,EAC3B;AACD,MAAIA,MAAK,gBAAgB;AACrB,YAAQ,KAAKA,MAAK,aAAa;AAAA,EAClC;AACD,UACK,OAAO,OAAO,EACd,IAAI,CAAC,UAAU,MAAM,SAAQ,CAAE,EAC/B,QAAQ,SAAU,eAAe;AAClC,QAAI,CAAC,KAAK,SAAS,aAAa,GAAG;AAC/B,WAAK,KAAK,aAAa;AAAA,IAC1B;AACD,QAAI,CAACA,MAAK,gBAAgB;AACtB;AAAA,IACH;AACD,UAAM,QAAQ,cAAc,MAAM,GAAG;AACrC,QAAI,MAAM,WAAW,GAAG;AACpB,WAAK,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE;AAAA,IACtC;AACD,SAAK,KAAK,MAAM,CAAC,CAAC;AAAA,EAC1B,CAAK;AACD,SAAOC,OAAK,IAAI;AACpB;AACO,MAAM,QAAQ;AAAA,EACjB,YAAYD,OAAM;AACd,SAAK,OAAOA;AACZ,SAAK,WAAW;AAChB,SAAK,SAAS,WAAW,qBAAqB;AAAA,EACjD;AAAA,EACD,SAAS,QAAQ,gBAAgB;AAC7B,QAAI,OAAO,mBAAmB,YAAY;AACtC,YAAM,SAAS;AACf,uBAAkB,MAAM;AAAA,IAC3B;AACD,SAAK,SAAS,MAAM,IAAI;AAAA,EAC3B;AAAA,EACD,IAAI,QAAQ;AACR,QAAI,UAAU,KAAK,SAAS,MAAM,KAC9B,KAAK,SAAS,KAAK,KAAK,MAAM,KAC9B,KAAK,SAAS;AAClB,QAAI,OAAO,YAAY,YAAY;AAC/B,gBAAU,QAAQ,KAAK,MAAM,MAAM;AAAA,IACtC;AACD,QAAI,EAAE,mBAAmB,QAAQ;AAC7B,gBAAU,CAAC,OAAO;AAAA,IACrB;AACD,WAAO;AAAA,EACV;AACL;ACtDO,MAAM,oBAAoB,CAAC,OAAO,UAAU;AAC/C,UAAQ,OAAK;AAAA,IACT,KAAK;AACD,aAAO,CAAC,QAAQ,OAAO;AAAA,IAC3B,KAAK;AACD,aAAO,CAAC,KAAK;AAAA,IACjB;AACI,aAAO,CAAC,OAAO;AAAA,EACtB;AACL;AACO,MAAM,cAAc;AAAA,EACvB,YAAYA,OAAM;AACd,SAAK,OAAOA;AACZ,SAAK,WAAW;AAChB,SAAK,SAAS,WAAW,iBAAiB;AAAA,EAC7C;AAAA,EACD,SAAS,QAAQ,YAAY;AACzB,SAAK,SAAS,MAAM,IAAI;AAAA,EAC3B;AAAA,EACD,IAAI,QAAQ;AACR,WAAQ,KAAK,SAAS,MAAM,KACxB,KAAK,SAAS,KAAK,KAAK,MAAM,KAC9B,KAAK,SAAS,SAAS;AAAA,EAC9B;AACL;ACfA,SAASE,YAAU,OAAO,OAAO,KAAK;AACpC,MAAI,QAAQ,IACR,SAAS,MAAM;AAEnB,MAAI,QAAQ,GAAG;AACb,YAAQ,CAAC,QAAQ,SAAS,IAAK,SAAS;AAAA,EACzC;AACD,QAAM,MAAM,SAAS,SAAS;AAC9B,MAAI,MAAM,GAAG;AACX,WAAO;AAAA,EACR;AACD,WAAS,QAAQ,MAAM,IAAM,MAAM,UAAW;AAC9C,aAAW;AAEX,MAAI,SAAS,MAAM,MAAM;AACzB,SAAO,EAAE,QAAQ,QAAQ;AACvB,WAAO,KAAK,IAAI,MAAM,QAAQ,KAAK;AAAA,EACpC;AACD,SAAO;AACT;AAEA,IAAA,aAAiBA;AC9BjB,IAAI,YAAYnG;AAWhB,SAASoG,YAAU,OAAO,OAAO,KAAK;AACpC,MAAI,SAAS,MAAM;AACnB,QAAM,QAAQ,SAAY,SAAS;AACnC,SAAQ,CAAC,SAAS,OAAO,SAAU,QAAQ,UAAU,OAAO,OAAO,GAAG;AACxE;AAEA,IAAA,aAAiBA;AChBjB,IAAIC,kBAAgB,mBAChBC,sBAAoB,mBACpBC,0BAAwB,mBACxBC,wBAAsB,mBACtBC,iBAAeH,sBAAoBC,0BAAwBC,uBAC3DE,eAAa;AAGjB,IAAIC,UAAQ;AAGZ,IAAI,eAAe,OAAO,MAAMA,UAAQN,kBAAiBI,iBAAeC,eAAa,GAAG;AASxF,SAASE,aAAW,QAAQ;AAC1B,SAAO,aAAa,KAAK,MAAM;AACjC;AAEA,IAAA,cAAiBA;AClBjB,SAASC,eAAa,QAAQ;AAC5B,SAAO,OAAO,MAAM,EAAE;AACxB;AAEA,IAAA,gBAAiBA;ACVjB,IAAIR,kBAAgB,mBAChBC,sBAAoB,mBACpBC,0BAAwB,mBACxBC,wBAAsB,mBACtBC,iBAAeH,sBAAoBC,0BAAwBC,uBAC3DE,eAAa;AAGjB,IAAI,WAAW,MAAML,kBAAgB,KACjCS,YAAU,MAAML,iBAAe,KAC/BM,WAAS,4BACTC,eAAa,QAAQF,YAAU,MAAMC,WAAS,KAC9CE,gBAAc,OAAOZ,kBAAgB,KACrCa,eAAa,mCACbC,eAAa,sCACbR,UAAQ;AAGZ,IAAIS,aAAWJ,eAAa,KACxBK,aAAW,MAAMX,eAAa,MAC9BY,cAAY,QAAQX,UAAQ,QAAQ,CAACM,eAAaC,cAAYC,YAAU,EAAE,KAAK,GAAG,IAAI,MAAME,aAAWD,aAAW,MAClHG,UAAQF,aAAWD,aAAWE,aAC9B,WAAW,QAAQ,CAACL,gBAAcH,YAAU,KAAKA,WAASI,cAAYC,cAAY,QAAQ,EAAE,KAAK,GAAG,IAAI;AAG5G,IAAI,YAAY,OAAOJ,WAAS,QAAQA,WAAS,OAAO,WAAWQ,SAAO,GAAG;AAS7E,SAASC,iBAAe,QAAQ;AAC9B,SAAO,OAAO,MAAM,SAAS,KAAK,CAAA;AACpC;AAEA,IAAA,kBAAiBA;ACvCjB,IAAI,eAAexH,eACf4G,eAAanG,aACb,iBAAiBC;AASrB,SAAS+G,gBAAc,QAAQ;AAC7B,SAAOb,aAAW,MAAM,IACpB,eAAe,MAAM,IACrB,aAAa,MAAM;AACzB;AAEA,IAAA,iBAAiBa;ACjBjB,IAAI,YAAYzH,YACZ,aAAaS,aACb,gBAAgBC,gBAChBmD,aAAWrC;AASf,SAASkG,kBAAgB,YAAY;AACnC,SAAO,SAAS,QAAQ;AACtB,aAAS7D,WAAS,MAAM;AAExB,QAAI,aAAa,WAAW,MAAM,IAC9B,cAAc,MAAM,IACpB;AAEJ,QAAI,MAAM,aACN,WAAW,CAAC,IACZ,OAAO,OAAO,CAAC;AAEnB,QAAI,WAAW,aACX,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,IAChC,OAAO,MAAM,CAAC;AAElB,WAAO,IAAI,UAAU,EAAG,IAAG;AAAA,EAC/B;AACA;AAEA,IAAA,mBAAiB6D;AChCjB,IAAI,kBAAkB1H;AAmBtB,IAAI2H,eAAa,gBAAgB,aAAa;AAE9C,IAAA,eAAiBA;ACrBjB,IAAI9D,aAAW7D,YACX,aAAaS;AAiBjB,SAASmH,aAAW,QAAQ;AAC1B,SAAO,WAAW/D,WAAS,MAAM,EAAE,YAAa,CAAA;AAClD;AAEA,IAAA,eAAiB+D;ACVjB,SAASC,cAAY,OAAO,UAAU,aAAa,WAAW;AAC5D,MAAI,QAAQ,IACR,SAAS,SAAS,OAAO,IAAI,MAAM;AAEvC,MAAI,aAAa,QAAQ;AACvB,kBAAc,MAAM,EAAE,KAAK;AAAA,EAC5B;AACD,SAAO,EAAE,QAAQ,QAAQ;AACvB,kBAAc,SAAS,aAAa,MAAM,KAAK,GAAG,OAAO,KAAK;AAAA,EAC/D;AACD,SAAO;AACT;AAEA,IAAA,eAAiBA;AClBjB,SAASC,iBAAe,QAAQ;AAC9B,SAAO,SAAS,KAAK;AACnB,WAAO,UAAU,OAAO,SAAY,OAAO,GAAG;AAAA,EAClD;AACA;AAEA,IAAA,kBAAiBA;ACbjB,IAAI,iBAAiB9H;AAGrB,IAAI,kBAAkB;AAAA;AAAA,EAEpB,KAAQ;AAAA,EAAM,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAC1E,KAAQ;AAAA,EAAM,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAC1E,KAAQ;AAAA,EAAM,KAAQ;AAAA,EACtB,KAAQ;AAAA,EAAM,KAAQ;AAAA,EACtB,KAAQ;AAAA,EAAM,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAChD,KAAQ;AAAA,EAAM,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAChD,KAAQ;AAAA,EAAM,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAChD,KAAQ;AAAA,EAAM,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAChD,KAAQ;AAAA,EAAM,KAAQ;AAAA,EACtB,KAAQ;AAAA,EAAM,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAC1E,KAAQ;AAAA,EAAM,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAC1E,KAAQ;AAAA,EAAM,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAChD,KAAQ;AAAA,EAAM,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAAK,KAAQ;AAAA,EAChD,KAAQ;AAAA,EAAM,KAAQ;AAAA,EAAK,KAAQ;AAAA,EACnC,KAAQ;AAAA,EAAM,KAAQ;AAAA,EACtB,KAAQ;AAAA,EAAM,KAAQ;AAAA,EACtB,KAAQ;AAAA;AAAA,EAER,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAC1B,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,K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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvRA,MAAM,OAAO,IAAI;AACjB,MAAM,gBAAgB;AACtB,MAAM,aAAa,SAAS,gBAAgB;AAE5C,KAAK,MAAM,YAAY;AACvB,KAAK,gBAAgB;AACrB,KAAK,iBAAiB;AACtB,KAAK,SAAS,WAAW,UAAU,GAAG,CAAC,MAAM,OAAO,cAAc;AAElE,OAAO,QAAQ,OAAO,SAAS;AAC/B,OAAO,MAAM,OAAO;","x_google_ignoreList":[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226]}