{ "version": 3, "sources": ["../../../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/_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/_defineProperty.js", "../../../node_modules/lodash/_baseAssignValue.js", "../../../node_modules/lodash/_assignMergeValue.js", "../../../node_modules/lodash/_createBaseFor.js", "../../../node_modules/lodash/_baseFor.js", "../../../node_modules/lodash/_cloneBuffer.js", "../../../node_modules/lodash/_Uint8Array.js", "../../../node_modules/lodash/_cloneArrayBuffer.js", "../../../node_modules/lodash/_cloneTypedArray.js", "../../../node_modules/lodash/_copyArray.js", "../../../node_modules/lodash/_baseCreate.js", "../../../node_modules/lodash/_overArg.js", "../../../node_modules/lodash/_getPrototype.js", "../../../node_modules/lodash/_isPrototype.js", "../../../node_modules/lodash/_initCloneObject.js", "../../../node_modules/lodash/isArrayLike.js", "../../../node_modules/lodash/isArrayLikeObject.js", "../../../node_modules/lodash/stubFalse.js", "../../../node_modules/lodash/isBuffer.js", "../../../node_modules/lodash/isPlainObject.js", "../../../node_modules/lodash/_baseIsTypedArray.js", "../../../node_modules/lodash/_baseUnary.js", "../../../node_modules/lodash/_nodeUtil.js", "../../../node_modules/lodash/isTypedArray.js", "../../../node_modules/lodash/_safeGet.js", "../../../node_modules/lodash/_assignValue.js", "../../../node_modules/lodash/_copyObject.js", "../../../node_modules/lodash/_baseTimes.js", "../../../node_modules/lodash/_arrayLikeKeys.js", "../../../node_modules/lodash/_nativeKeysIn.js", "../../../node_modules/lodash/_baseKeysIn.js", "../../../node_modules/lodash/keysIn.js", "../../../node_modules/lodash/toPlainObject.js", "../../../node_modules/lodash/_baseMergeDeep.js", "../../../node_modules/lodash/_baseMerge.js", "../../../node_modules/lodash/identity.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/_isIterateeCall.js", "../../../node_modules/lodash/_createAssigner.js", "../../../node_modules/lodash/merge.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/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/lodash/_baseRepeat.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/lodash/_arrayPush.js", "../../../node_modules/lodash/_isFlattenable.js", "../../../node_modules/lodash/_baseFlatten.js", "../../../node_modules/lodash/_arraySome.js", "../../../node_modules/lodash/_equalArrays.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/_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/_baseProperty.js", "../../../node_modules/lodash/_basePropertyDeep.js", "../../../node_modules/lodash/property.js", "../../../node_modules/lodash/_baseIteratee.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/sortBy.js", "../../../node_modules/lodash/_baseZipObject.js", "../../../node_modules/lodash/zipObject.js", "../../../node_modules/lodash/_baseRange.js", "../../../node_modules/lodash/_createRange.js", "../../../node_modules/lodash/range.js", "../../../node_modules/@rails/ujs/app/assets/javascripts/rails-ujs.esm.js", "../../javascript/polyfills/remove.js", "../../../node_modules/element-closest/browser.js", "../../../node_modules/@github/include-fragment-element/dist/include-fragment-element.js", "../../../node_modules/@github/include-fragment-element/dist/include-fragment-element-define.js", "../../../node_modules/i18n-js/src/I18n.ts", "../../../node_modules/i18n-js/src/Locales.ts", "../../../node_modules/make-plural/plurals.mjs", "../../../node_modules/i18n-js/src/Pluralization.ts", "../../../node_modules/i18n-js/src/helpers/camelCaseKeys.ts", "../../../node_modules/i18n-js/src/helpers/isSet.ts", "../../../node_modules/i18n-js/src/helpers/createTranslationOptions.ts", "../../../node_modules/bignumber.js/bignumber.mjs", "../../../node_modules/i18n-js/src/helpers/expandRoundMode.ts", "../../../node_modules/i18n-js/src/helpers/formatNumber.ts", "../../../node_modules/i18n-js/src/helpers/roundNumber.ts", "../../../node_modules/i18n-js/src/helpers/getFullScope.ts", "../../../node_modules/i18n-js/src/helpers/inferType.ts", "../../../node_modules/i18n-js/src/helpers/interpolate.ts", "../../../node_modules/i18n-js/src/helpers/lookup.ts", "../../../node_modules/i18n-js/src/helpers/numberToDelimited.ts", "../../../node_modules/i18n-js/src/helpers/numberToHuman.ts", "../../../node_modules/i18n-js/src/helpers/numberToHumanSize.ts", "../../../node_modules/i18n-js/src/helpers/parseDate.ts", "../../../node_modules/i18n-js/src/helpers/pluralize.ts", "../../../node_modules/i18n-js/src/helpers/strftime.ts", "../../../node_modules/i18n-js/src/helpers/timeAgoInWords.ts", "../../../node_modules/i18n-js/src/MissingTranslation.ts", "../../javascript/locales/zh-TW.json", "../../javascript/locales/en.json", "../../javascript/zeczec/locales.js", "../../javascript/zeczec/utils.js", "../../javascript/zeczec/behaviors.js", "../../javascript/zeczec/dropdown.js", "../../javascript/zeczec/flash.js", "../../javascript/zeczec.js"], "sourcesContent": ["/**\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 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", "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/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\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 assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\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 root = require('./_root');\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 allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n", "var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n", "var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n", "/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n", "var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\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 value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\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", "var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\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 isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an 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 an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\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 getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\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 infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\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", "/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\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 safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\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 baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\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", "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", "/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n", "var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\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 `_.keysIn` 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 baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n", "var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\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 * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n", "var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n", "var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n", "var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\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 * 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 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", "var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n", "var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\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", "/**\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\u00E9j\u00E0 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", "/** 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", "/** 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", "/**\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", "/**\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", "/**\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", "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 * 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", "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", "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", "/* 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", "/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/javascript\nReleased under the MIT license\n */\nconst linkClickSelector = \"a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]\";\n\nconst buttonClickSelector = {\n selector: \"button[data-remote]:not([form]), button[data-confirm]:not([form])\",\n exclude: \"form button\"\n};\n\nconst inputChangeSelector = \"select[data-remote], input[data-remote], textarea[data-remote]\";\n\nconst formSubmitSelector = \"form:not([data-turbo=true])\";\n\nconst formInputClickSelector = \"form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])\";\n\nconst formDisableSelector = \"input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled\";\n\nconst formEnableSelector = \"input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled\";\n\nconst fileInputSelector = \"input[name][type=file]:not([disabled])\";\n\nconst linkDisableSelector = \"a[data-disable-with], a[data-disable]\";\n\nconst buttonDisableSelector = \"button[data-remote][data-disable-with], button[data-remote][data-disable]\";\n\nlet nonce = null;\n\nconst loadCSPNonce = () => {\n const metaTag = document.querySelector(\"meta[name=csp-nonce]\");\n return nonce = metaTag && metaTag.content;\n};\n\nconst cspNonce = () => nonce || loadCSPNonce();\n\nconst m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nconst matches = function(element, selector) {\n if (selector.exclude) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n};\n\nconst EXPANDO = \"_ujsData\";\n\nconst getData = (element, key) => element[EXPANDO] ? element[EXPANDO][key] : undefined;\n\nconst setData = function(element, key, value) {\n if (!element[EXPANDO]) {\n element[EXPANDO] = {};\n }\n return element[EXPANDO][key] = value;\n};\n\nconst $ = selector => Array.prototype.slice.call(document.querySelectorAll(selector));\n\nconst isContentEditable = function(element) {\n var isEditable = false;\n do {\n if (element.isContentEditable) {\n isEditable = true;\n break;\n }\n element = element.parentElement;\n } while (element);\n return isEditable;\n};\n\nconst csrfToken = () => {\n const meta = document.querySelector(\"meta[name=csrf-token]\");\n return meta && meta.content;\n};\n\nconst csrfParam = () => {\n const meta = document.querySelector(\"meta[name=csrf-param]\");\n return meta && meta.content;\n};\n\nconst CSRFProtection = xhr => {\n const token = csrfToken();\n if (token) {\n return xhr.setRequestHeader(\"X-CSRF-Token\", token);\n }\n};\n\nconst refreshCSRFTokens = () => {\n const token = csrfToken();\n const param = csrfParam();\n if (token && param) {\n return $('form input[name=\"' + param + '\"]').forEach((input => input.value = token));\n }\n};\n\nconst AcceptHeaders = {\n \"*\": \"*/*\",\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\",\n script: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n};\n\nconst ajax = options => {\n options = prepareOptions(options);\n var xhr = createXHR(options, (function() {\n const response = processResponse(xhr.response != null ? xhr.response : xhr.responseText, xhr.getResponseHeader(\"Content-Type\"));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : undefined;\n }));\n if (options.beforeSend && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n};\n\nvar prepareOptions = function(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === \"GET\" && options.data) {\n if (options.url.indexOf(\"?\") < 0) {\n options.url += \"?\" + options.data;\n } else {\n options.url += \"&\" + options.data;\n }\n }\n if (!(options.dataType in AcceptHeaders)) {\n options.dataType = \"*\";\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== \"*\") {\n options.accept += \", */*; q=0.01\";\n }\n return options;\n};\n\nvar createXHR = function(options, done) {\n const xhr = new XMLHttpRequest;\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader(\"Accept\", options.accept);\n if (typeof options.data === \"string\") {\n xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n};\n\nvar processResponse = function(response, type) {\n if (typeof response === \"string\" && typeof type === \"string\") {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n const script = document.createElement(\"script\");\n script.setAttribute(\"nonce\", cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n const parser = new DOMParser;\n type = type.replace(/;.+/, \"\");\n try {\n response = parser.parseFromString(response, type);\n } catch (error1) {}\n }\n }\n return response;\n};\n\nconst href = element => element.href;\n\nconst isCrossDomain = function(url) {\n const originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href;\n const urlAnchor = document.createElement(\"a\");\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === \":\") && !urlAnchor.host || originAnchor.protocol + \"//\" + originAnchor.host === urlAnchor.protocol + \"//\" + urlAnchor.host);\n } catch (e) {\n return true;\n }\n};\n\nlet preventDefault;\n\nlet {CustomEvent: CustomEvent} = window;\n\nif (typeof CustomEvent !== \"function\") {\n CustomEvent = function(event, params) {\n const evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n ({preventDefault: preventDefault} = CustomEvent.prototype);\n CustomEvent.prototype.preventDefault = function() {\n const result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, \"defaultPrevented\", {\n get() {\n return true;\n }\n });\n }\n return result;\n };\n}\n\nconst fire = (obj, name, data) => {\n const event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n};\n\nconst stopEverything = e => {\n fire(e.target, \"ujs:everythingStopped\");\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n};\n\nconst delegate = (element, selector, eventType, handler) => element.addEventListener(eventType, (function(e) {\n let {target: target} = e;\n while (!!(target instanceof Element) && !matches(target, selector)) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n e.stopPropagation();\n }\n}));\n\nconst toArray = e => Array.prototype.slice.call(e);\n\nconst serializeElement = (element, additionalParam) => {\n let inputs = [ element ];\n if (matches(element, \"form\")) {\n inputs = toArray(element.elements);\n }\n const params = [];\n inputs.forEach((function(input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, \"fieldset[disabled] *\")) {\n return;\n }\n if (matches(input, \"select\")) {\n toArray(input.options).forEach((function(option) {\n if (option.selected) {\n params.push({\n name: input.name,\n value: option.value\n });\n }\n }));\n } else if (input.checked || [ \"radio\", \"checkbox\", \"submit\" ].indexOf(input.type) === -1) {\n params.push({\n name: input.name,\n value: input.value\n });\n }\n }));\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map((function(param) {\n if (param.name) {\n return `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`;\n } else {\n return param;\n }\n })).join(\"&\");\n};\n\nconst formElements = (form, selector) => {\n if (matches(form, \"form\")) {\n return toArray(form.elements).filter((el => matches(el, selector)));\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n};\n\nconst handleConfirmWithRails = rails => function(e) {\n if (!allowAction(this, rails)) {\n stopEverything(e);\n }\n};\n\nconst confirm = (message, element) => window.confirm(message);\n\nvar allowAction = function(element, rails) {\n let callback;\n const message = element.getAttribute(\"data-confirm\");\n if (!message) {\n return true;\n }\n let answer = false;\n if (fire(element, \"confirm\")) {\n try {\n answer = rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, \"confirm:complete\", [ answer ]);\n }\n return answer && callback;\n};\n\nconst handleDisabledElement = function(e) {\n const element = this;\n if (element.disabled) {\n stopEverything(e);\n }\n};\n\nconst enableElement = e => {\n let element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, buttonDisableSelector) || matches(element, formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, formSubmitSelector)) {\n return enableFormElements(element);\n }\n};\n\nconst disableElement = e => {\n const element = e instanceof Event ? e.target : e;\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, buttonDisableSelector) || matches(element, formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, formSubmitSelector)) {\n return disableFormElements(element);\n }\n};\n\nvar disableLinkElement = function(element) {\n if (getData(element, \"ujs:disabled\")) {\n return;\n }\n const replacement = element.getAttribute(\"data-disable-with\");\n if (replacement != null) {\n setData(element, \"ujs:enable-with\", element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener(\"click\", stopEverything);\n return setData(element, \"ujs:disabled\", true);\n};\n\nvar enableLinkElement = function(element) {\n const originalText = getData(element, \"ujs:enable-with\");\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, \"ujs:enable-with\", null);\n }\n element.removeEventListener(\"click\", stopEverything);\n return setData(element, \"ujs:disabled\", null);\n};\n\nvar disableFormElements = form => formElements(form, formDisableSelector).forEach(disableFormElement);\n\nvar disableFormElement = function(element) {\n if (getData(element, \"ujs:disabled\")) {\n return;\n }\n const replacement = element.getAttribute(\"data-disable-with\");\n if (replacement != null) {\n if (matches(element, \"button\")) {\n setData(element, \"ujs:enable-with\", element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, \"ujs:enable-with\", element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, \"ujs:disabled\", true);\n};\n\nvar enableFormElements = form => formElements(form, formEnableSelector).forEach((element => enableFormElement(element)));\n\nvar enableFormElement = function(element) {\n const originalText = getData(element, \"ujs:enable-with\");\n if (originalText != null) {\n if (matches(element, \"button\")) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, \"ujs:enable-with\", null);\n }\n element.disabled = false;\n return setData(element, \"ujs:disabled\", null);\n};\n\nvar isXhrRedirect = function(event) {\n const xhr = event.detail ? event.detail[0] : undefined;\n return xhr && xhr.getResponseHeader(\"X-Xhr-Redirect\");\n};\n\nconst handleMethodWithRails = rails => function(e) {\n const link = this;\n const method = link.getAttribute(\"data-method\");\n if (!method) {\n return;\n }\n if (isContentEditable(this)) {\n return;\n }\n const href = rails.href(link);\n const csrfToken$1 = csrfToken();\n const csrfParam$1 = csrfParam();\n const form = document.createElement(\"form\");\n let formContent = ``;\n if (csrfParam$1 && csrfToken$1 && !isCrossDomain(href)) {\n formContent += ``;\n }\n formContent += '';\n form.method = \"post\";\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = \"none\";\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n stopEverything(e);\n};\n\nconst isRemote = function(element) {\n const value = element.getAttribute(\"data-remote\");\n return value != null && value !== \"false\";\n};\n\nconst handleRemoteWithRails = rails => function(e) {\n let data, method, url;\n const element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, \"ajax:before\")) {\n fire(element, \"ajax:stopped\");\n return false;\n }\n if (isContentEditable(element)) {\n fire(element, \"ajax:stopped\");\n return false;\n }\n const withCredentials = element.getAttribute(\"data-with-credentials\");\n const dataType = element.getAttribute(\"data-type\") || \"script\";\n if (matches(element, formSubmitSelector)) {\n const button = getData(element, \"ujs:submit-button\");\n method = getData(element, \"ujs:submit-button-formmethod\") || element.getAttribute(\"method\") || \"get\";\n url = getData(element, \"ujs:submit-button-formaction\") || element.getAttribute(\"action\") || location.href;\n if (method.toUpperCase() === \"GET\") {\n url = url.replace(/\\?.*$/, \"\");\n }\n if (element.enctype === \"multipart/form-data\") {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, \"ujs:submit-button\", null);\n setData(element, \"ujs:submit-button-formmethod\", null);\n setData(element, \"ujs:submit-button-formaction\", null);\n } else if (matches(element, buttonClickSelector) || matches(element, inputChangeSelector)) {\n method = element.getAttribute(\"data-method\");\n url = element.getAttribute(\"data-url\");\n data = serializeElement(element, element.getAttribute(\"data-params\"));\n } else {\n method = element.getAttribute(\"data-method\");\n url = rails.href(element);\n data = element.getAttribute(\"data-params\");\n }\n ajax({\n type: method || \"GET\",\n url: url,\n data: data,\n dataType: dataType,\n beforeSend(xhr, options) {\n if (fire(element, \"ajax:beforeSend\", [ xhr, options ])) {\n return fire(element, \"ajax:send\", [ xhr ]);\n } else {\n fire(element, \"ajax:stopped\");\n return false;\n }\n },\n success(...args) {\n return fire(element, \"ajax:success\", args);\n },\n error(...args) {\n return fire(element, \"ajax:error\", args);\n },\n complete(...args) {\n return fire(element, \"ajax:complete\", args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== \"false\"\n });\n stopEverything(e);\n};\n\nconst formSubmitButtonClick = function(e) {\n const button = this;\n const {form: form} = button;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, \"ujs:submit-button\", {\n name: button.name,\n value: button.value\n });\n }\n setData(form, \"ujs:formnovalidate-button\", button.formNoValidate);\n setData(form, \"ujs:submit-button-formaction\", button.getAttribute(\"formaction\"));\n return setData(form, \"ujs:submit-button-formmethod\", button.getAttribute(\"formmethod\"));\n};\n\nconst preventInsignificantClick = function(e) {\n const link = this;\n const method = (link.getAttribute(\"data-method\") || \"GET\").toUpperCase();\n const data = link.getAttribute(\"data-params\");\n const metaClick = e.metaKey || e.ctrlKey;\n const insignificantMetaClick = metaClick && method === \"GET\" && !data;\n const nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n e.stopImmediatePropagation();\n }\n};\n\nconst Rails = {\n $: $,\n ajax: ajax,\n buttonClickSelector: buttonClickSelector,\n buttonDisableSelector: buttonDisableSelector,\n confirm: confirm,\n cspNonce: cspNonce,\n csrfToken: csrfToken,\n csrfParam: csrfParam,\n CSRFProtection: CSRFProtection,\n delegate: delegate,\n disableElement: disableElement,\n enableElement: enableElement,\n fileInputSelector: fileInputSelector,\n fire: fire,\n formElements: formElements,\n formEnableSelector: formEnableSelector,\n formDisableSelector: formDisableSelector,\n formInputClickSelector: formInputClickSelector,\n formSubmitButtonClick: formSubmitButtonClick,\n formSubmitSelector: formSubmitSelector,\n getData: getData,\n handleDisabledElement: handleDisabledElement,\n href: href,\n inputChangeSelector: inputChangeSelector,\n isCrossDomain: isCrossDomain,\n linkClickSelector: linkClickSelector,\n linkDisableSelector: linkDisableSelector,\n loadCSPNonce: loadCSPNonce,\n matches: matches,\n preventInsignificantClick: preventInsignificantClick,\n refreshCSRFTokens: refreshCSRFTokens,\n serializeElement: serializeElement,\n setData: setData,\n stopEverything: stopEverything\n};\n\nconst handleConfirm = handleConfirmWithRails(Rails);\n\nRails.handleConfirm = handleConfirm;\n\nconst handleMethod = handleMethodWithRails(Rails);\n\nRails.handleMethod = handleMethod;\n\nconst handleRemote = handleRemoteWithRails(Rails);\n\nRails.handleRemote = handleRemote;\n\nconst start = function() {\n if (window._rails_loaded) {\n throw new Error(\"rails-ujs has already been loaded!\");\n }\n window.addEventListener(\"pageshow\", (function() {\n $(formEnableSelector).forEach((function(el) {\n if (getData(el, \"ujs:disabled\")) {\n enableElement(el);\n }\n }));\n $(linkDisableSelector).forEach((function(el) {\n if (getData(el, \"ujs:disabled\")) {\n enableElement(el);\n }\n }));\n }));\n delegate(document, linkDisableSelector, \"ajax:complete\", enableElement);\n delegate(document, linkDisableSelector, \"ajax:stopped\", enableElement);\n delegate(document, buttonDisableSelector, \"ajax:complete\", enableElement);\n delegate(document, buttonDisableSelector, \"ajax:stopped\", enableElement);\n delegate(document, linkClickSelector, \"click\", preventInsignificantClick);\n delegate(document, linkClickSelector, \"click\", handleDisabledElement);\n delegate(document, linkClickSelector, \"click\", handleConfirm);\n delegate(document, linkClickSelector, \"click\", disableElement);\n delegate(document, linkClickSelector, \"click\", handleRemote);\n delegate(document, linkClickSelector, \"click\", handleMethod);\n delegate(document, buttonClickSelector, \"click\", preventInsignificantClick);\n delegate(document, buttonClickSelector, \"click\", handleDisabledElement);\n delegate(document, buttonClickSelector, \"click\", handleConfirm);\n delegate(document, buttonClickSelector, \"click\", disableElement);\n delegate(document, buttonClickSelector, \"click\", handleRemote);\n delegate(document, inputChangeSelector, \"change\", handleDisabledElement);\n delegate(document, inputChangeSelector, \"change\", handleConfirm);\n delegate(document, inputChangeSelector, \"change\", handleRemote);\n delegate(document, formSubmitSelector, \"submit\", handleDisabledElement);\n delegate(document, formSubmitSelector, \"submit\", handleConfirm);\n delegate(document, formSubmitSelector, \"submit\", handleRemote);\n delegate(document, formSubmitSelector, \"submit\", (e => setTimeout((() => disableElement(e)), 13)));\n delegate(document, formSubmitSelector, \"ajax:send\", disableElement);\n delegate(document, formSubmitSelector, \"ajax:complete\", enableElement);\n delegate(document, formInputClickSelector, \"click\", preventInsignificantClick);\n delegate(document, formInputClickSelector, \"click\", handleDisabledElement);\n delegate(document, formInputClickSelector, \"click\", handleConfirm);\n delegate(document, formInputClickSelector, \"click\", formSubmitButtonClick);\n document.addEventListener(\"DOMContentLoaded\", refreshCSRFTokens);\n document.addEventListener(\"DOMContentLoaded\", loadCSPNonce);\n return window._rails_loaded = true;\n};\n\nRails.start = start;\n\nif (typeof jQuery !== \"undefined\" && jQuery && jQuery.ajax) {\n if (jQuery.rails) {\n throw new Error(\"If you load both jquery_ujs and rails-ujs, use rails-ujs only.\");\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter((function(options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n }));\n}\n\nif (typeof exports !== \"object\" && typeof module === \"undefined\") {\n window.Rails = Rails;\n if (fire(document, \"rails:attachBindings\")) {\n start();\n }\n}\n\nexport { Rails as default };\n", "// MDN - Element.remove() https://developer.mozilla.org/en-US/docs/Web/API/Element/remove\n// https://github.com/chenzhenxi/element-remove\n\n(function (arr) {\n arr.forEach(function (item) {\n if (item.hasOwnProperty('remove')) {\n return\n }\n Object.defineProperty(item, 'remove', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function remove () {\n this.parentNode && this.parentNode.removeChild(this)\n }\n })\n })\n})([Element.prototype, CharacterData.prototype, DocumentType.prototype].filter(Boolean))\n", "!function(e){var t=e.Element.prototype;\"function\"!=typeof t.matches&&(t.matches=t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),o=0;t[o]&&t[o]!==this;)++o;return Boolean(t[o])}),\"function\"!=typeof t.closest&&(t.closest=function(e){for(var t=this;t&&1===t.nodeType;){if(t.matches(e))return t;t=t.parentNode}return null})}(window);\n", "var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _IncludeFragmentElement_instances, _IncludeFragmentElement_busy, _IncludeFragmentElement_observer, _IncludeFragmentElement_handleData, _IncludeFragmentElement_getData, _IncludeFragmentElement_getStringOrErrorData, _IncludeFragmentElement_task, _IncludeFragmentElement_fetchDataWithEvents;\nconst privateData = new WeakMap();\nfunction isWildcard(accept) {\n return accept && !!accept.split(',').find(x => x.match(/^\\s*\\*\\/\\*/));\n}\nlet cspTrustedTypesPolicyPromise = null;\nexport class IncludeFragmentElement extends HTMLElement {\n constructor() {\n super(...arguments);\n _IncludeFragmentElement_instances.add(this);\n _IncludeFragmentElement_busy.set(this, false);\n _IncludeFragmentElement_observer.set(this, new IntersectionObserver(entries => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n const { target } = entry;\n __classPrivateFieldGet(this, _IncludeFragmentElement_observer, \"f\").unobserve(target);\n if (!(target instanceof IncludeFragmentElement))\n return;\n if (target.loading === 'lazy') {\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_handleData).call(this);\n }\n }\n }\n }, {\n rootMargin: '0px 0px 256px 0px',\n threshold: 0.01,\n }));\n }\n static define(tag = 'include-fragment', registry = customElements) {\n registry.define(tag, this);\n return this;\n }\n static setCSPTrustedTypesPolicy(policy) {\n cspTrustedTypesPolicyPromise = policy === null ? policy : Promise.resolve(policy);\n }\n static get observedAttributes() {\n return ['src', 'loading'];\n }\n get src() {\n const src = this.getAttribute('src');\n if (src) {\n const link = this.ownerDocument.createElement('a');\n link.href = src;\n return link.href;\n }\n else {\n return '';\n }\n }\n set src(val) {\n this.setAttribute('src', val);\n }\n get loading() {\n if (this.getAttribute('loading') === 'lazy')\n return 'lazy';\n return 'eager';\n }\n set loading(value) {\n this.setAttribute('loading', value);\n }\n get accept() {\n return this.getAttribute('accept') || '';\n }\n set accept(val) {\n this.setAttribute('accept', val);\n }\n get data() {\n return __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_getStringOrErrorData).call(this);\n }\n attributeChangedCallback(attribute, oldVal) {\n if (attribute === 'src') {\n if (this.isConnected && this.loading === 'eager') {\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_handleData).call(this);\n }\n }\n else if (attribute === 'loading') {\n if (this.isConnected && oldVal !== 'eager' && this.loading === 'eager') {\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_handleData).call(this);\n }\n }\n }\n connectedCallback() {\n if (!this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n const style = document.createElement('style');\n style.textContent = `:host {display: block;}`;\n this.shadowRoot.append(style, document.createElement('slot'));\n }\n if (this.src && this.loading === 'eager') {\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_handleData).call(this);\n }\n if (this.loading === 'lazy') {\n __classPrivateFieldGet(this, _IncludeFragmentElement_observer, \"f\").observe(this);\n }\n }\n request() {\n const src = this.src;\n if (!src) {\n throw new Error('missing src');\n }\n return new Request(src, {\n method: 'GET',\n credentials: 'same-origin',\n headers: {\n Accept: this.accept || 'text/html',\n },\n });\n }\n load() {\n return __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_getStringOrErrorData).call(this);\n }\n fetch(request) {\n return fetch(request);\n }\n refetch() {\n privateData.delete(this);\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_handleData).call(this);\n }\n}\n_IncludeFragmentElement_busy = new WeakMap(), _IncludeFragmentElement_observer = new WeakMap(), _IncludeFragmentElement_instances = new WeakSet(), _IncludeFragmentElement_handleData = async function _IncludeFragmentElement_handleData() {\n if (__classPrivateFieldGet(this, _IncludeFragmentElement_busy, \"f\"))\n return;\n __classPrivateFieldSet(this, _IncludeFragmentElement_busy, true, \"f\");\n __classPrivateFieldGet(this, _IncludeFragmentElement_observer, \"f\").unobserve(this);\n try {\n const data = await __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_getData).call(this);\n if (data instanceof Error) {\n throw data;\n }\n const dataTreatedAsString = data;\n const template = document.createElement('template');\n template.innerHTML = dataTreatedAsString;\n const fragment = document.importNode(template.content, true);\n const canceled = !this.dispatchEvent(new CustomEvent('include-fragment-replace', {\n cancelable: true,\n detail: { fragment },\n }));\n if (canceled) {\n __classPrivateFieldSet(this, _IncludeFragmentElement_busy, false, \"f\");\n return;\n }\n this.replaceWith(fragment);\n this.dispatchEvent(new CustomEvent('include-fragment-replaced'));\n }\n catch (_a) {\n this.classList.add('is-error');\n }\n finally {\n __classPrivateFieldSet(this, _IncludeFragmentElement_busy, false, \"f\");\n }\n}, _IncludeFragmentElement_getData = async function _IncludeFragmentElement_getData() {\n const src = this.src;\n const cachedData = privateData.get(this);\n if (cachedData && cachedData.src === src) {\n return cachedData.data;\n }\n else {\n let data;\n if (src) {\n data = __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_fetchDataWithEvents).call(this);\n }\n else {\n data = Promise.reject(new Error('missing src'));\n }\n privateData.set(this, { src, data });\n return data;\n }\n}, _IncludeFragmentElement_getStringOrErrorData = async function _IncludeFragmentElement_getStringOrErrorData() {\n const data = await __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_getData).call(this);\n if (data instanceof Error) {\n throw data;\n }\n return data.toString();\n}, _IncludeFragmentElement_task = async function _IncludeFragmentElement_task(eventsToDispatch) {\n await new Promise(resolve => setTimeout(resolve, 0));\n for (const eventType of eventsToDispatch) {\n this.dispatchEvent(new Event(eventType));\n }\n}, _IncludeFragmentElement_fetchDataWithEvents = async function _IncludeFragmentElement_fetchDataWithEvents() {\n try {\n await __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_task).call(this, ['loadstart']);\n const response = await this.fetch(this.request());\n if (response.status !== 200) {\n throw new Error(`Failed to load resource: the server responded with a status of ${response.status}`);\n }\n const ct = response.headers.get('Content-Type');\n if (!isWildcard(this.accept) && (!ct || !ct.includes(this.accept ? this.accept : 'text/html'))) {\n throw new Error(`Failed to load resource: expected ${this.accept || 'text/html'} but was ${ct}`);\n }\n const responseText = await response.text();\n let data = responseText;\n if (cspTrustedTypesPolicyPromise) {\n const cspTrustedTypesPolicy = await cspTrustedTypesPolicyPromise;\n data = cspTrustedTypesPolicy.createHTML(responseText, response);\n }\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_task).call(this, ['load', 'loadend']);\n return data;\n }\n catch (error) {\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_task).call(this, ['error', 'loadend']);\n throw error;\n }\n};\n", "import { IncludeFragmentElement } from './include-fragment-element.js';\nconst root = (typeof globalThis !== 'undefined' ? globalThis : window);\ntry {\n root.IncludeFragmentElement = IncludeFragmentElement.define();\n}\ncatch (e) {\n if (!(root.DOMException && e instanceof DOMException && e.name === 'NotSupportedError') &&\n !(e instanceof ReferenceError)) {\n throw e;\n }\n}\nexport default IncludeFragmentElement;\nexport * from './include-fragment-element.js';\n", "/* eslint-disable class-methods-use-this, no-underscore-dangle */\n\nimport get from \"lodash/get\";\nimport has from \"lodash/has\";\nimport merge from \"lodash/merge\";\n\nimport {\n DateTime,\n Dict,\n FormatNumberOptions,\n I18nOptions,\n MissingPlaceholderHandler,\n NullPlaceholderHandler,\n NumberToCurrencyOptions,\n NumberToDelimitedOptions,\n NumberToHumanOptions,\n NumberToHumanSizeOptions,\n NumberToPercentageOptions,\n NumberToRoundedOptions,\n Numeric,\n OnChangeHandler,\n Scope,\n StrftimeOptions,\n TimeAgoInWordsOptions,\n ToSentenceOptions,\n TranslateOptions,\n} from \"./typing\";\nimport { Locales } from \"./Locales\";\nimport { Pluralization } from \"./Pluralization\";\nimport { MissingTranslation } from \"./MissingTranslation\";\nimport {\n camelCaseKeys,\n createTranslationOptions,\n formatNumber,\n getFullScope,\n inferType,\n interpolate,\n isSet,\n lookup,\n numberToDelimited,\n numberToHuman,\n numberToHumanSize,\n parseDate,\n pluralize,\n strftime,\n timeAgoInWords,\n} from \"./helpers\";\n\nconst DEFAULT_I18N_OPTIONS: I18nOptions = {\n defaultLocale: \"en\",\n locale: \"en\",\n defaultSeparator: \".\",\n placeholder: /(?:\\{\\{|%\\{)(.*?)(?:\\}\\}?)/gm,\n enableFallback: false,\n missingBehavior: \"message\",\n missingTranslationPrefix: \"\",\n\n missingPlaceholder: (_i18n: I18n, placeholder: string): string =>\n `[missing \"${placeholder}\" value]`,\n\n nullPlaceholder: (\n i18n: I18n,\n placeholder,\n message: string,\n options: Dict,\n ): string => i18n.missingPlaceholder(i18n, placeholder, message, options),\n\n transformKey: (key: string): string => key,\n};\n\nexport class I18n {\n private _locale: string = DEFAULT_I18N_OPTIONS.locale;\n private _defaultLocale: string = DEFAULT_I18N_OPTIONS.defaultLocale;\n private _version = 0;\n\n /**\n * List of all onChange handlers.\n *\n * @type {OnChangeHandler[]}\n */\n public onChangeHandlers: OnChangeHandler[] = [];\n\n /**\n * Set the default string separator. Defaults to `.`, as in\n * `scope.translation`.\n *\n * @type {string}\n */\n public defaultSeparator: string;\n\n /**\n * Set if engine should fallback to the default locale when a translation is\n * missing. Defaults to `false`.\n *\n * When enabled, missing translations will first be looked for in less\n * specific versions of the requested locale and if that fails by taking them\n * from your `I18n#defaultLocale`.\n *\n * @type {boolean}\n */\n public enableFallback: boolean;\n\n /**\n * The locale resolver registry.\n *\n * @see {@link Locales}\n *\n * @type {Locales}\n */\n public locales: Locales;\n\n /**\n * The pluralization behavior registry.\n *\n * @see {@link Pluralization}\n *\n * @type {Pluralization}\n */\n public pluralization: Pluralization;\n\n /**\n * Set missing translation behavior.\n *\n * - `message` will display a message that the translation is missing.\n * - `guess` will try to guess the string.\n * - `error` will raise an exception whenever a translation is not defined.\n *\n * See {@link MissingTranslation.register} for instructions on how to define\n * your own behavior.\n *\n * @type {MissingBehavior}\n */\n public missingBehavior: string;\n\n /**\n * Return a missing placeholder message for given parameters.\n *\n * @type {MissingPlaceholderHandler}\n */\n public missingPlaceholder: MissingPlaceholderHandler;\n\n /**\n * If you use missingBehavior with 'message', but want to know that the string\n * is actually missing for testing purposes, you can prefix the guessed string\n * by setting the value here. By default, no prefix is used.\n *\n * @type {string}\n */\n public missingTranslationPrefix: string;\n\n /**\n * Return a placeholder message for null values. Defaults to the same behavior\n * as `I18n.missingPlaceholder`.\n *\n * @type {NullPlaceholderHandler}\n */\n public nullPlaceholder: NullPlaceholderHandler;\n\n /**\n * The missing translation behavior registry.\n *\n * @see {@link MissingTranslation}\n *\n * @type {MissingTranslation}\n */\n public missingTranslation: MissingTranslation;\n\n /**\n * Set the placeholder format. Accepts `{{placeholder}}` and `%{placeholder}`.\n *\n * @type {RegExp}\n */\n public placeholder: RegExp;\n\n /**\n * Set the registered translations. The root key must always be the locale\n * (and its variations with region).\n *\n * Remember that no events will be triggered if you change this object\n * directly. To trigger `onchange` events, you must perform updates either\n * using `I18n#store` or `I18n#update`.\n *\n * @type {Dict}\n */\n public translations: Dict = {};\n\n /**\n * Transform keys. By default, it returns the key as it is, but allows for\n * overriding. For instance, you can set a function to receive the camelcase\n * key, and convert it to snake case.\n *\n * @type {(key: string) => string}\n */\n public transformKey: (key: string) => string;\n\n /**\n * Override the interpolation function. For the default implementation, see\n * \n * @type {(i18n: I18n, message: string, options: TranslateOptions) => string}\n */\n public interpolate: typeof interpolate;\n\n constructor(translations: Dict = {}, options: Partial = {}) {\n const {\n locale,\n enableFallback,\n missingBehavior,\n missingTranslationPrefix,\n missingPlaceholder,\n nullPlaceholder,\n defaultLocale,\n defaultSeparator,\n placeholder,\n transformKey,\n }: I18nOptions = {\n ...DEFAULT_I18N_OPTIONS,\n ...options,\n };\n\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\n this.store(translations);\n }\n\n /**\n * Update translations by merging them. Newest translations will override\n * existing ones.\n *\n * @param {Dict} translations An object containing the translations that will\n * be merged into existing translations.\n *\n * @returns {void}\n */\n public store(translations: Dict): void {\n merge(this.translations, translations);\n this.hasChanged();\n }\n\n /**\n * Return the current locale, using a explicit locale set using\n * `i18n.locale = newLocale`, the default locale set using\n * `i18n.defaultLocale` or the fallback, which is `en`.\n *\n * @returns {string} The current locale.\n */\n public get locale(): string {\n return this._locale || this.defaultLocale || \"en\";\n }\n\n /**\n * Set the current locale explicitly.\n *\n * @param {string} newLocale The new locale.\n */\n public set locale(newLocale: string) {\n if (typeof newLocale !== \"string\") {\n throw new Error(\n `Expected newLocale to be a string; got ${inferType(newLocale)}`,\n );\n }\n\n const changed = this._locale !== newLocale;\n\n this._locale = newLocale;\n\n if (changed) {\n this.hasChanged();\n }\n }\n\n /**\n * Return the default locale, using a explicit locale set using\n * `i18n.defaultLocale = locale`, the default locale set using\n * `i18n.defaultLocale` or the fallback, which is `en`.\n *\n * @returns {string} The current locale.\n */\n public get defaultLocale(): string {\n return this._defaultLocale || \"en\";\n }\n\n /**\n * Set the default locale explicitly.\n *\n * @param {string} newLocale The new locale.\n */\n public set defaultLocale(newLocale: string) {\n if (typeof newLocale !== \"string\") {\n throw new Error(\n `Expected newLocale to be a string; got ${inferType(newLocale)}`,\n );\n }\n\n const changed = this._defaultLocale !== newLocale;\n\n this._defaultLocale = newLocale;\n\n if (changed) {\n this.hasChanged();\n }\n }\n\n /**\n * Translate the given scope with the provided options.\n *\n * @param {string|array} scope The scope that will be used.\n *\n * @param {TranslateOptions} options The options that will be used on the\n * translation. Can include some special options like `defaultValue`, `count`,\n * and `scope`. Everything else will be treated as replacement values.\n *\n * @param {number} options.count Enable pluralization. The returned\n * translation will depend on the detected pluralizer.\n *\n * @param {any} options.defaultValue The default value that will used in case\n * the translation defined by `scope` cannot be found. Can be a function that\n * returns a string; the signature is\n * `(i18n:I18n, options: TranslateOptions): string`.\n *\n * @param {MissingBehavior|string} options.missingBehavior The missing\n * behavior that will be used instead of the default one.\n *\n * @param {Dict[]} options.defaults An array of hashs where the key is the\n * type of translation desired, a `scope` or a `message`. The translation\n * returned will be either the first scope recognized, or the first message\n * defined.\n *\n * @returns {T | string} The translated string.\n */\n public translate(\n scope: Scope,\n options?: TranslateOptions,\n ): string | T {\n options = { ...options };\n\n const translationOptions: TranslateOptions[] = createTranslationOptions(\n this,\n scope,\n options,\n ) as TranslateOptions[];\n\n let translation: string | Dict | undefined;\n\n // Iterate through the translation options until a translation\n // or message is found.\n const hasFoundTranslation = translationOptions.some(\n (translationOption: TranslateOptions) => {\n if (isSet(translationOption.scope)) {\n translation = lookup(this, translationOption.scope as Scope, options);\n } else if (isSet(translationOption.message)) {\n translation = translationOption.message;\n }\n\n return translation !== undefined && translation !== null;\n },\n );\n\n if (!hasFoundTranslation) {\n return this.missingTranslation.get(scope, options);\n }\n\n if (typeof translation === \"string\") {\n translation = this.interpolate(this, translation, options);\n } else if (\n typeof translation === \"object\" &&\n translation &&\n isSet(options.count)\n ) {\n translation = pluralize({\n i18n: this,\n count: options.count || 0,\n scope: translation as unknown as string,\n options,\n baseScope: getFullScope(this, scope, options),\n });\n }\n\n if (options && translation instanceof Array) {\n translation = translation.map((entry) =>\n typeof entry === \"string\"\n ? interpolate(this, entry, options as TranslateOptions)\n : entry,\n );\n }\n\n return translation as string | T;\n }\n\n /**\n * @alias {@link translate}\n */\n public t = this.translate;\n\n /**\n * Pluralize the given scope using the `count` value. The pluralized\n * translation may have other placeholders, which will be retrieved from\n * `options`.\n *\n * @param {number} count The counting number.\n *\n * @param {Scope} scope The translation scope.\n *\n * @param {TranslateOptions} options The translation options.\n *\n * @returns {string} The translated string.\n */\n public pluralize(\n count: number,\n scope: Scope,\n options?: TranslateOptions,\n ): string {\n return pluralize({\n i18n: this,\n count,\n scope,\n options: { ...options },\n baseScope: getFullScope(this, scope, options ?? {}),\n });\n }\n\n /**\n * @alias {@link pluralize}\n */\n public p = this.pluralize;\n\n /**\n * Localize several values.\n *\n * You can provide the following scopes: `currency`, `number`, or\n * `percentage`. If you provide a scope that matches the `/^(date|time)/`\n * regular expression then the `value` will be converted by using the\n * `I18n.toTime` function. It will default to the value's `toString` function.\n *\n * If value is either `null` or `undefined` then an empty string will be\n * returned, regardless of what localization type has been used.\n *\n * @param {string} type The localization type.\n *\n * @param {string|number|Date} value The value that must be localized.\n *\n * @param {Dict} options The localization options.\n *\n * @returns {string} The localized string.\n */\n public localize(\n type: string,\n value: string | number | Date | null | undefined,\n options?: Dict,\n ): string {\n options = { ...options };\n\n if (value === undefined || value === null) {\n return \"\";\n }\n\n switch (type) {\n case \"currency\":\n return this.numberToCurrency(value as number);\n\n case \"number\":\n return formatNumber(value as number, {\n delimiter: \",\",\n precision: 3,\n separator: \".\",\n significant: false,\n stripInsignificantZeros: false,\n ...lookup(this, \"number.format\"),\n });\n\n case \"percentage\":\n return this.numberToPercentage(value as number);\n\n default: {\n let localizedValue: string;\n\n if (type.match(/^(date|time)/)) {\n localizedValue = this.toTime(type, value as DateTime);\n } else {\n localizedValue = (value as string | number | Date).toString();\n }\n\n return interpolate(this, localizedValue, options);\n }\n }\n }\n\n /**\n * @alias {@link localize}\n */\n public l = this.localize;\n\n /**\n * Convert the given dateString into a formatted date.\n *\n * @param {scope} scope The formatting scope.\n *\n * @param {DateTime} input The string that must be parsed into a Date object.\n *\n * @returns {string} The formatted date.\n */\n public toTime(scope: Scope, input: DateTime): string {\n const date = parseDate(input);\n const format: string = lookup(this, scope);\n\n if (date.toString().match(/invalid/i)) {\n return date.toString();\n }\n\n if (!format) {\n return date.toString();\n }\n\n return this.strftime(date, format);\n }\n\n /**\n * Formats a `number` into a currency string (e.g., $13.65). You can customize\n * the format in the using an `options` object.\n *\n * The currency unit and number formatting of the current locale will be used\n * unless otherwise specified in the provided options. No currency conversion\n * is performed. If the user is given a way to change their locale, they will\n * also be able to change the relative value of the currency displayed with\n * this helper.\n *\n * @example\n * ```js\n * i18n.numberToCurrency(1234567890.5);\n * // => \"$1,234,567,890.50\"\n *\n * i18n.numberToCurrency(1234567890.506);\n * // => \"$1,234,567,890.51\"\n *\n * i18n.numberToCurrency(1234567890.506, { precision: 3 });\n * // => \"$1,234,567,890.506\"\n *\n * i18n.numberToCurrency(\"123a456\");\n * // => \"$123a456\"\n *\n * i18n.numberToCurrency(\"123a456\", { raise: true });\n * // => raises exception (\"123a456\" is not a valid numeric value)\n *\n * i18n.numberToCurrency(-0.456789, { precision: 0 });\n * // => \"$0\"\n *\n * i18n.numberToCurrency(-1234567890.5, { negativeFormat: \"(%u%n)\" });\n * // => \"($1,234,567,890.50)\"\n *\n * i18n.numberToCurrency(1234567890.5, {\n * unit: \"£\",\n * separator: \",\",\n * delimiter: \"\",\n * });\n * // => \"£1234567890,50\"\n *\n * i18n.numberToCurrency(1234567890.5, {\n * unit: \"£\",\n * separator: \",\",\n * delimiter: \"\",\n * format: \"%n %u\",\n * });\n * // => \"1234567890,50 £\"\n *\n * i18n.numberToCurrency(1234567890.5, { stripInsignificantZeros: true });\n * // => \"$1,234,567,890.5\"\n *\n * i18n.numberToCurrency(1234567890.5, { precision: 0, roundMode: \"up\" });\n * // => \"$1,234,567,891\"\n * ```\n *\n * @param {Numeric} input The number to be formatted.\n *\n * @param {NumberToCurrencyOptions} options The formatting options. When\n * defined, supersedes the default options defined by `number.format` and\n * `number.currency.*`.\n *\n * @param {number} options.precision Sets the level of precision (defaults to\n * 2).\n *\n * @param {RoundingMode} options.roundMode Determine how rounding is performed\n * (defaults to `default`.)\n *\n * @param {string} options.unit Sets the denomination of the currency\n * (defaults to \"$\").\n *\n * @param {string} options.separator Sets the separator between the units\n * (defaults to \".\").\n *\n * @param {string} options.delimiter Sets the thousands delimiter\n * (defaults to \",\").\n *\n * @param {string} options.format Sets the format for non-negative numbers\n * (defaults to \"%u%n\"). Fields are `%u` for the currency, and `%n` for the\n * number.\n *\n * @param {string} options.negativeFormat Sets the format for negative numbers\n * (defaults to prepending a hyphen to the formatted number given by\n * `format`). Accepts the same fields than `format`, except `%n` is here the\n * absolute value of the number.\n *\n * @param {boolean} options.stripInsignificantZeros If `true` removes\n * insignificant zeros after the decimal separator (defaults to `false`).\n *\n * @param {boolean} options.raise If `true`, raises exception for non-numeric\n * values like `NaN` and infinite values.\n *\n * @returns {string} The formatted number.\n */\n public numberToCurrency(\n input: Numeric,\n options: Partial = {},\n ): string {\n return formatNumber(input, {\n delimiter: \",\",\n format: \"%u%n\",\n precision: 2,\n separator: \".\",\n significant: false,\n stripInsignificantZeros: false,\n unit: \"$\",\n ...camelCaseKeys>(this.get(\"number.format\")),\n ...camelCaseKeys>(\n this.get(\"number.currency.format\"),\n ),\n ...options,\n } as FormatNumberOptions);\n }\n\n /**\n * Convert a number into a formatted percentage value.\n *\n * @example\n * ```js\n * i18n.numberToPercentage(100);\n * // => \"100.000%\"\n *\n * i18n.numberToPercentage(\"98\");\n * // => \"98.000%\"\n *\n * i18n.numberToPercentage(100, { precision: 0 });\n * // => \"100%\"\n *\n * i18n.numberToPercentage(1000, { delimiter: \".\", separator: \",\" });\n * // => \"1.000,000%\"\n *\n * i18n.numberToPercentage(302.24398923423, { precision: 5 });\n * // => \"302.24399%\"\n *\n * i18n.numberToPercentage(1000, { precision: null });\n * // => \"1000%\"\n *\n * i18n.numberToPercentage(\"98a\");\n * // => \"98a%\"\n *\n * i18n.numberToPercentage(100, { format: \"%n %\" });\n * // => \"100.000 %\"\n *\n * i18n.numberToPercentage(302.24398923423, { precision: 5, roundMode: \"down\" });\n * // => \"302.24398%\"\n * ```\n *\n * @param {Numeric} input The number to be formatted.\n *\n * @param {NumberToPercentageOptions} options The formatting options. When\n * defined, supersedes the default options stored at `number.format` and\n * `number.percentage.*`.\n *\n * @param {number} options.precision Sets the level of precision (defaults to\n * 3).\n *\n * @param {RoundingMode} options.roundMode Determine how rounding is performed\n * (defaults to `default`.)\n *\n * @param {string} options.separator Sets the separator between the units\n * (defaults to \".\").\n *\n * @param {string} options.delimiter Sets the thousands delimiter (defaults to\n * \"\").\n *\n * @param {string} options.format Sets the format for non-negative numbers\n * (defaults to \"%n%\"). The number field is represented by `%n`.\n *\n * @param {string} options.negativeFormat Sets the format for negative numbers\n * (defaults to prepending a hyphen to the formatted number given by\n * `format`). Accepts the same fields than `format`, except `%n` is here the\n * absolute value of the number.\n *\n * @param {boolean} options.stripInsignificantZeros If `true` removes\n * insignificant zeros after the decimal separator (defaults to `false`).\n *\n * @returns {string} The formatted number.\n */\n public numberToPercentage(\n input: Numeric,\n options: Partial = {},\n ): string {\n return formatNumber(input, {\n delimiter: \"\",\n format: \"%n%\",\n precision: 3,\n stripInsignificantZeros: false,\n separator: \".\",\n significant: false,\n ...camelCaseKeys>(this.get(\"number.format\")),\n ...camelCaseKeys>(\n this.get(\"number.percentage.format\"),\n ),\n ...options,\n } as FormatNumberOptions);\n }\n\n /**\n * Convert a number into a readable size representation.\n *\n * @example\n * ```js\n * i18n.numberToHumanSize(123)\n * // => \"123 Bytes\"\n *\n * i18n.numberToHumanSize(1234)\n * // => \"1.21 KB\"\n *\n * i18n.numberToHumanSize(12345)\n * // => \"12.1 KB\"\n *\n * i18n.numberToHumanSize(1234567)\n * // => \"1.18 MB\"\n *\n * i18n.numberToHumanSize(1234567890)\n * // => \"1.15 GB\"\n *\n * i18n.numberToHumanSize(1234567890123)\n * // => \"1.12 TB\"\n *\n * i18n.numberToHumanSize(1234567890123456)\n * // => \"1.1 PB\"\n *\n * i18n.numberToHumanSize(1234567890123456789)\n * // => \"1.07 EB\"\n *\n * i18n.numberToHumanSize(1234567, {precision: 2})\n * // => \"1.2 MB\"\n *\n * i18n.numberToHumanSize(483989, precision: 2)\n * // => \"470 KB\"\n *\n * i18n.numberToHumanSize(483989, {precision: 2, roundMode: \"up\"})\n * // => \"480 KB\"\n *\n * i18n.numberToHumanSize(1234567, {precision: 2, separator: \",\"})\n * // => \"1,2 MB\"\n *\n * i18n.numberToHumanSize(1234567890123, {precision: 5})\n * // => \"1.1228 TB\"\n *\n * i18n.numberToHumanSize(524288000, {precision: 5})\n * // => \"500 MB\"\n * ```\n *\n * @param {Numeric} input The number that will be formatted.\n *\n * @param {NumberToHumanSizeOptions} options The formatting options. When\n * defined, supersedes the default options stored at\n * `number.human.storage_units.*` and `number.human.format`.\n *\n * @param {number} options.precision Sets the precision of the number\n * (defaults to 3).\n *\n * @param {RoundingMode} options.roundMode Determine how rounding is performed\n * (defaults to `default`)\n *\n * @param {boolean} options.significant If `true`, precision will be the\n * number of significant digits. If `false`, the number of fractional digits\n * (defaults to `true`).\n *\n * @param {string} options.separator Sets the separator between the fractional\n * and integer digits (defaults to \".\").\n *\n * @param {string} options.delimiter Sets the thousands delimiter (defaults\n * to \"\").\n *\n * @param {boolean} options.stripInsignificantZeros If `true` removes\n * insignificant zeros after the decimal separator (defaults to `true`).\n *\n * @returns {string} The formatted number.\n */\n public numberToHumanSize(\n input: Numeric,\n options: Partial = {},\n ): string {\n return numberToHumanSize(this, input, {\n delimiter: \"\",\n precision: 3,\n significant: true,\n stripInsignificantZeros: true,\n units: {\n billion: \"Billion\",\n million: \"Million\",\n quadrillion: \"Quadrillion\",\n thousand: \"Thousand\",\n trillion: \"Trillion\",\n unit: \"\",\n },\n ...camelCaseKeys>(\n this.get(\"number.human.format\"),\n ),\n ...camelCaseKeys>(\n this.get(\"number.human.storage_units\"),\n ),\n ...options,\n } as NumberToHumanSizeOptions);\n }\n\n /**\n * Convert a number into a readable representation.\n *\n * @example\n * ```js\n * i18n.numberToHuman(123);\n * // => \"123\"\n *\n * i18n.numberToHuman(1234);\n * // => \"1.23 Thousand\"\n *\n * i18n.numberToHuman(12345);\n * // => \"12.3 Thousand\"\n *\n * i18n.numberToHuman(1234567);\n * // => \"1.23 Million\"\n *\n * i18n.numberToHuman(1234567890);\n * // => \"1.23 Billion\"\n *\n * i18n.numberToHuman(1234567890123);\n * // => \"1.23 Trillion\"\n *\n * i18n.numberToHuman(1234567890123456);\n * // => \"1.23 Quadrillion\"\n *\n * i18n.numberToHuman(1234567890123456789);\n * // => \"1230 Quadrillion\"\n *\n * i18n.numberToHuman(489939, { precision: 2 });\n * // => \"490 Thousand\"\n *\n * i18n.numberToHuman(489939, { precision: 4 });\n * // => \"489.9 Thousand\"\n *\n * i18n.numberToHuman(489939, { precision: 2, roundMode: \"down\" });\n * // => \"480 Thousand\"\n *\n * i18n.numberToHuman(1234567, { precision: 4, significant: false });\n * // => \"1.2346 Million\"\n *\n * i18n.numberToHuman(1234567, {\n * precision: 1,\n * separator: \",\",\n * significant: false,\n * });\n * // => \"1,2 Million\"\n *\n * i18n.numberToHuman(500000000, { precision: 5 });\n * // => \"500 Million\"\n *\n * i18n.numberToHuman(12345012345, { significant: false });\n * // => \"12.345 Billion\"\n * ```\n *\n * Non-significant zeros after the decimal separator are stripped out by default\n * (set `stripInsignificantZeros` to `false` to change that):\n *\n * ```js\n * i18n.numberToHuman(12.00001);\n * // => \"12\"\n *\n * i18n.numberToHuman(12.00001, { stripInsignificantZeros: false });\n * // => \"12.0\"\n * ```\n *\n * You can also use your own custom unit quantifiers:\n *\n * ```js\n * i18n.numberToHuman(500000, units: { unit: \"ml\", thousand: \"lt\" });\n * // => \"500 lt\"\n * ```\n *\n * If in your I18n locale you have:\n *\n * ```yaml\n * ---\n * en:\n * distance:\n * centi:\n * one: \"centimeter\"\n * other: \"centimeters\"\n * unit:\n * one: \"meter\"\n * other: \"meters\"\n * thousand:\n * one: \"kilometer\"\n * other: \"kilometers\"\n * billion: \"gazillion-distance\"\n * ```\n *\n * Then you could do:\n *\n * ```js\n * i18n.numberToHuman(543934, { units: \"distance\" });\n * // => \"544 kilometers\"\n *\n * i18n.numberToHuman(54393498, { units: \"distance\" });\n * // => \"54400 kilometers\"\n *\n * i18n.numberToHuman(54393498000, { units: \"distance\" });\n * // => \"54.4 gazillion-distance\"\n *\n * i18n.numberToHuman(343, { units: \"distance\", precision: 1 });\n * // => \"300 meters\"\n *\n * i18n.numberToHuman(1, { units: \"distance\" });\n * // => \"1 meter\"\n *\n * i18n.numberToHuman(0.34, { units: \"distance\" });\n * // => \"34 centimeters\"\n * ```\n *\n * @param {Numeric} input The number that will be formatted.\n *\n * @param {NumberToHumanOptions} options The formatting options. When\n * defined, supersedes the default options stored at `number.human.format.*`\n * and `number.human.storage_units.*`.\n *\n * @param {number} options.precision Sets the precision of the number\n * (defaults to 3).\n *\n * @param {RoundingMode} options.roundMode Determine how rounding is performed\n * (defaults to `default`).\n *\n * @param {boolean} options.significant If `true`, precision will be the\n * number of significant_digits. If `false`, the number of fractional digits\n * (defaults to `true`)\n *\n * @param {string} options.separator Sets the separator between the fractional\n * and integer digits (defaults to \".\").\n *\n * @param {string} options.delimiter Sets the thousands delimiter\n * (defaults to \"\").\n *\n * @param {boolean} options.stripInsignificantZeros If `true` removes\n * insignificant zeros after the decimal separator (defaults to `true`).\n *\n * @param {Dict} options.units A Hash of unit quantifier names. Or a string\n * containing an I18n scope where to find this object. It might have the\n * following keys:\n *\n * - _integers_: `unit`, `ten`, `hundred`, `thousand`, `million`, `billion`,\n * `trillion`, `quadrillion`\n * - _fractionals_: `deci`, `centi`, `mili`, `micro`, `nano`, `pico`, `femto`\n *\n * @param {string} options.format Sets the format of the output string\n * (defaults to \"%n %u\"). The field types are:\n *\n * - `%u` - The quantifier (ex.: 'thousand')\n * - `%n` - The number\n *\n * @returns {string} The formatted number.\n */\n public numberToHuman(\n input: Numeric,\n options: Partial = {},\n ): string {\n return numberToHuman(this, input, {\n delimiter: \"\",\n separator: \".\",\n precision: 3,\n significant: true,\n stripInsignificantZeros: true,\n format: \"%n %u\",\n roundMode: \"default\",\n units: {\n billion: \"Billion\",\n million: \"Million\",\n quadrillion: \"Quadrillion\",\n thousand: \"Thousand\",\n trillion: \"Trillion\",\n unit: \"\",\n },\n ...camelCaseKeys>(\n this.get(\"number.human.format\"),\n ),\n ...camelCaseKeys>(\n this.get(\"number.human.decimal_units\"),\n ),\n ...options,\n } as NumberToHumanOptions);\n }\n\n /**\n * Convert number to a formatted rounded value.\n *\n * @example\n * ```js\n * i18n.numberToRounded(111.2345);\n * // => \"111.235\"\n *\n * i18n.numberToRounded(111.2345, { precision: 2 });\n * // => \"111.23\"\n *\n * i18n.numberToRounded(13, { precision: 5 });\n * // => \"13.00000\"\n *\n * i18n.numberToRounded(389.32314, { precision: 0 });\n * // => \"389\"\n *\n * i18n.numberToRounded(111.2345, { significant: true });\n * // => \"111\"\n *\n * i18n.numberToRounded(111.2345, { precision: 1, significant: true });\n * // => \"100\"\n *\n * i18n.numberToRounded(13, { precision: 5, significant: true });\n * // => \"13.000\"\n *\n * i18n.numberToRounded(13, { precision: null });\n * // => \"13\"\n *\n * i18n.numberToRounded(389.32314, { precision: 0, roundMode: \"up\" });\n * // => \"390\"\n *\n * i18n.numberToRounded(13, {\n * precision: 5,\n * significant: true,\n * stripInsignificantZeros: true,\n * });\n * // => \"13\"\n *\n * i18n.numberToRounded(389.32314, { precision: 4, significant: true });\n * // => \"389.3\"\n *\n * i18n.numberToRounded(1111.2345, {\n * precision: 2,\n * separator: \",\",\n * delimiter: \".\",\n * });\n * // => \"1.111,23\"\n * ```\n *\n * @param {Numeric} input The number to be formatted.\n *\n * @param {NumberToRoundedOptions} options The formatting options.\n *\n * @param {number} options.precision Sets the precision of the number\n * (defaults to 3).\n *\n * @param {string} options.separator Sets the separator between the\n * fractional and integer digits (defaults to \".\").\n *\n * @param {RoundingMode} options.roundMode Determine how rounding is\n * performed.\n *\n * @param {boolean} options.significant If `true`, precision will be the\n * number of significant_digits. If `false`, the number of fractional digits\n * (defaults to `false`).\n *\n * @param {boolean} options.stripInsignificantZeros If `true` removes\n * insignificant zeros after the decimal separator (defaults to `false`).\n *\n * @returns {string} The formatted number.\n */\n public numberToRounded(\n input: Numeric,\n options?: Partial,\n ): string {\n return formatNumber(input, {\n unit: \"\",\n precision: 3,\n significant: false,\n separator: \".\",\n delimiter: \"\",\n stripInsignificantZeros: false,\n ...options,\n } as FormatNumberOptions);\n }\n\n /**\n * Formats a +number+ with grouped thousands using `delimiter` (e.g., 12,324).\n * You can customize the format in the `options` parameter.\n *\n * @example\n * ```js\n * i18n.numberToDelimited(12345678);\n * // => \"12,345,678\"\n *\n * i18n.numberToDelimited(\"123456\");\n * // => \"123,456\"\n *\n * i18n.numberToDelimited(12345678.05);\n * // => \"12,345,678.05\"\n *\n * i18n.numberToDelimited(12345678, { delimiter: \".\" });\n * // => \"12.345.678\"\n *\n * i18n.numberToDelimited(12345678, { delimiter: \",\" });\n * // => \"12,345,678\"\n *\n * i18n.numberToDelimited(12345678.05, { separator: \" \" });\n * // => \"12,345,678 05\"\n *\n * i18n.numberToDelimited(\"112a\");\n * // => \"112a\"\n *\n * i18n.numberToDelimited(98765432.98, { delimiter: \" \", separator: \",\" });\n * // => \"98 765 432,98\"\n *\n * i18n.numberToDelimited(\"123456.78\", {\n * delimiterPattern: /(\\d+?)(?=(\\d\\d)+(\\d)(?!\\d))/g,\n * });\n * // => \"1,23,456.78\"\n * ```\n *\n * @param {Numeric} input The numeric value that will be formatted.\n *\n * @param {NumberToDelimitedOptions} options The formatting options.\n *\n * @param {string} options.delimiter Sets the thousands delimiter (defaults to\n * \",\").\n *\n * @param {string} options.separator Sets the separator between the fractional\n * and integer digits (defaults to \".\").\n *\n * @param {RegExp} options.delimiterPattern Sets a custom regular expression\n * used for deriving the placement of delimiter. Helpful when using currency\n * formats like INR.\n *\n * @return {string} The formatted number.\n */\n public numberToDelimited(\n input: Numeric,\n options: Partial = {},\n ): string {\n return numberToDelimited(input, {\n delimiterPattern: /(\\d)(?=(\\d\\d\\d)+(?!\\d))/g,\n delimiter: \",\",\n separator: \".\",\n ...options,\n } as NumberToDelimitedOptions);\n }\n\n /**\n * Executes function with given locale set. The locale will be changed only\n * during the `callback`'s execution, switching back to the previous value\n * once it finishes (with or without errors).\n *\n * This is an asynchronous call, which means you must use `await` or you may\n * end up with a race condition.\n *\n * @example\n * ```js\n * await i18n.withLocale(\"pt\", () => {\n * console.log(i18n.t(\"hello\"));\n * });\n * ```\n *\n * @param {string} locale The temporary locale that will be set during the\n * function's execution.\n *\n * @param {Function} callback The function that will be executed with a\n * temporary locale set.\n *\n * @returns {void}\n */\n public async withLocale(locale: string, callback: () => void): Promise {\n const originalLocale = this.locale;\n\n try {\n this.locale = locale;\n await callback();\n } finally {\n this.locale = originalLocale;\n }\n }\n\n /**\n * Formats time according to the directives in the given format string.\n * The directives begins with a percent (`%`) character. Any text not listed\n * as a directive will be passed through to the output string.\n *\n * @see strftime\n *\n * @param {Date} date The date that will be formatted.\n *\n * @param {string} format The formatting string.\n *\n * @param {StrftimeOptions} options The formatting options.\n *\n * @returns {string} The formatted date.\n */\n public strftime(\n date: Date,\n format: string,\n options: Partial = {},\n ): string {\n return strftime(date, format, {\n ...camelCaseKeys(lookup(this, \"date\")),\n meridian: {\n am: lookup(this, \"time.am\") || \"AM\",\n pm: lookup(this, \"time.pm\") || \"PM\",\n },\n ...options,\n });\n }\n\n /**\n * You may want to update a part of your translations. This is a public\n * interface for doing it so.\n *\n * If the provided path exists, it'll be replaced. Otherwise, a new node will\n * be created. When running in strict mode, paths that doesn't already exist\n * will raise an exception.\n *\n * Strict mode will also raise an exception if the override type differs from\n * previous node type.\n *\n * @example\n * ```js\n * i18n.update(\"en.number.format\", {unit: \"%n %u\"});\n * i18n.update(\"en.number.format\", {unit: \"%n %u\"}, true);\n * ```\n *\n * @param {string} path The path that's going to be updated. It must\n * include the language, as in `en.messages`.\n *\n * @param {Dict} override The new translation node.\n *\n * @param {boolean} options Set options.\n *\n * @param {boolean} options.strict Raise an exception if path doesn't already\n * exist, or if previous node's type differs from new node's type.\n *\n * @returns {void}\n */\n public update(\n path: string,\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n override: any,\n options: { strict: boolean } = { strict: false },\n ): void {\n if (options.strict && !has(this.translations, path)) {\n throw new Error(`The path \"${path}\" is not currently defined`);\n }\n\n const currentNode = get(this.translations, path);\n const currentType = inferType(currentNode);\n const overrideType = inferType(override);\n\n if (options.strict && currentType !== overrideType) {\n throw new Error(\n `The current type for \"${path}\" is \"${currentType}\", but you're trying to override it with \"${overrideType}\"`,\n );\n }\n\n let newNode: unknown;\n\n if (overrideType === \"object\") {\n newNode = { ...currentNode, ...override };\n } else {\n newNode = override;\n }\n\n const components = path.split(this.defaultSeparator);\n const prop = components.pop();\n let buffer = this.translations;\n\n for (const component of components) {\n if (!buffer[component]) {\n buffer[component] = {};\n }\n\n buffer = buffer[component];\n }\n\n buffer[prop as keyof typeof buffer] = newNode;\n\n this.hasChanged();\n }\n\n /**\n * Converts the array to a comma-separated sentence where the last element is\n * joined by the connector word.\n *\n * @example\n * ```js\n * i18n.toSentence([\"apple\", \"banana\", \"pineapple\"]);\n * //=> apple, banana, and pineapple.\n * ```\n *\n * @param {any[]} items The list of items that will be joined.\n *\n * @param {ToSentenceOptions} options The options.\n *\n * @param {string} options.wordsConnector The sign or word used to join the\n * elements in arrays with two or more elements (default: \", \").\n *\n * @param {string} options.twoWordsConnector The sign or word used to join the\n * elements in arrays with two elements (default: \" and \").\n *\n * @param {string} options.lastWordConnector The sign or word used to join the\n * last element in arrays with three or more elements (default: \", and \").\n *\n * @returns {string} The joined string.\n */\n public toSentence(\n items: any[],\n options: Partial = {},\n ): string {\n const { wordsConnector, twoWordsConnector, lastWordConnector } = {\n wordsConnector: \", \",\n twoWordsConnector: \" and \",\n lastWordConnector: \", and \",\n ...camelCaseKeys>(\n lookup(this, \"support.array\"),\n ),\n ...options,\n } as ToSentenceOptions;\n\n const size = items.length;\n\n switch (size) {\n case 0:\n return \"\";\n\n case 1:\n return `${items[0]}`;\n\n case 2:\n return items.join(twoWordsConnector);\n\n default:\n return [\n items.slice(0, size - 1).join(wordsConnector),\n lastWordConnector,\n items[size - 1],\n ].join(\"\");\n }\n }\n\n /**\n * Reports the approximate distance in time between two time representations.\n *\n * @param {DateTime} fromTime The initial time.\n *\n * @param {DateTime} toTime The ending time. Defaults to `Date.now()`.\n *\n * @param {TimeAgoInWordsOptions} options The options.\n *\n * @param {boolean} options.includeSeconds Pass `{includeSeconds: true}` if\n * you want more detailed approximations when distance < 1 min, 29 secs.\n *\n * @param {Scope} options.scope With the scope option, you can define a custom\n * scope to look up the translation.\n *\n * @returns {string} The distance in time representation.\n */\n public timeAgoInWords(\n fromTime: DateTime,\n toTime: DateTime,\n options: TimeAgoInWordsOptions = {},\n ): string {\n return timeAgoInWords(this, fromTime, toTime, options);\n }\n\n /**\n * @alias {@link timeAgoInWords}\n */\n public distanceOfTimeInWords = this.timeAgoInWords;\n\n /**\n * Add a callback that will be executed whenever locale/defaultLocale changes,\n * or `I18n#store` / `I18n#update` is called.\n *\n * @param {OnChangeHandler} callback The callback that will be executed.\n *\n * @returns {Function} Return a function that can be used to unsubscribe the\n * event handler.\n *\n */\n public onChange(callback: OnChangeHandler): () => void {\n this.onChangeHandlers.push(callback);\n\n return () => {\n this.onChangeHandlers.splice(this.onChangeHandlers.indexOf(callback), 1);\n };\n }\n\n /**\n * Return the change version. This value is incremented whenever `I18n#store`\n * or `I18n#update` is called, or when `I18n#locale`/`I18n#defaultLocale` is\n * set.\n */\n public get version(): number {\n return this._version;\n }\n\n /**\n * Formats a number.\n *\n * @param {Numeric} input The numeric value that will be\n * formatted.\n * @param {FormatNumberOptions} options The formatting options. Defaults to:\n * `{\n * delimiter: \",\",\n * precision: 3,\n * separator: \".\",\n * unit: \"\",\n * format: \"%u%n\",\n * significant: false,\n * stripInsignificantZeros: false,\n * }`\n * @return {string} The formatted number.\n */\n public formatNumber(\n input: Numeric,\n options: Partial = {},\n ): string {\n options = {\n delimiter: \",\",\n precision: 3,\n separator: \".\",\n unit: \"\",\n format: \"%u%n\",\n significant: false,\n stripInsignificantZeros: false,\n ...camelCaseKeys>(this.get(\"number.format\")),\n ...options,\n };\n\n return formatNumber(input, options as FormatNumberOptions);\n }\n\n /**\n * @param {Scope} scope The scope lookup path.\n *\n * @returns {any} The found scope.\n */\n public get(scope: Scope): any {\n return lookup(this, scope);\n }\n\n /**\n * @private\n *\n * @returns {void}\n */\n private runCallbacks(): void {\n this.onChangeHandlers.forEach((callback) => callback(this));\n }\n\n /**\n * @private\n *\n * @returns {void}\n */\n private hasChanged(): void {\n this._version += 1;\n\n this.runCallbacks();\n }\n}\n", "import uniq from \"lodash/uniq\";\n\nimport { Dict, LocaleResolver } from \"./typing\";\nimport { I18n } from \"./I18n\";\n\n/**\n * The default locale resolver.\n *\n * This resolver will add `options.locale` if provided (this function receives\n * it inlined). In case nothing is set, then `i18n.locale` will be used.\n * Additionally, adds the default locale to the list if `i18n.enableFallback` is\n * set.\n *\n * Every locale added to the list will then be split apart; if `pt-BR` is the\n * locale, then the list will be returned as `[\"pt-BR\", \"pt\"]`.\n *\n * The default in case nothing is defined is `[\"en\"]`.\n *\n * @type {LocaleResolver}\n *\n * @param {I18n} i18n The I18n instance.\n *\n * @param {string} locale The locale that being analysed.\n *\n * @returns {string[]} The resolved locales.\n */\nexport const defaultLocaleResolver: LocaleResolver = (\n i18n: I18n,\n locale: string,\n): string[] => {\n const locales = [];\n const list: string[] = [];\n\n // Handle the inline locale option that can be provided to\n // the `I18n.t` options.\n locales.push(locale);\n\n // Add the current locale to the list.\n if (!locale) {\n locales.push(i18n.locale);\n }\n\n // Add the default locale if fallback strategy is enabled.\n if (i18n.enableFallback) {\n locales.push(i18n.defaultLocale);\n }\n\n // Compute each locale with its country code.\n // So this will return an array containing both\n // `de-DE` and `de` locales.\n //\n // We also need to support locales with region code (e.g. zh-Hant-TW).\n // In that case, the list should be `[\"zh-hant-tw\", \"zh-hant\", \"zh\"]`.\n locales\n .filter(Boolean)\n .map((entry) => entry.toString())\n .forEach(function (currentLocale: string) {\n if (!list.includes(currentLocale)) {\n list.push(currentLocale);\n }\n\n if (!i18n.enableFallback) {\n return;\n }\n\n const codes = currentLocale.split(\"-\");\n\n if (codes.length === 3) {\n list.push(`${codes[0]}-${codes[1]}`);\n }\n\n list.push(codes[0]);\n });\n\n return uniq(list);\n};\n\nexport class Locales {\n private i18n: I18n;\n private registry: Dict;\n\n constructor(i18n: I18n) {\n this.i18n = i18n;\n this.registry = {};\n\n this.register(\"default\", defaultLocaleResolver);\n }\n\n /**\n * You can define custom rules for any locale. Just make sure you return an\n * array containing all locales.\n *\n * ```js\n * // Default the Wookie locale to English.\n * i18n.locales.register(\"wk\", (_i18n, locale) => {\n * return [\"en\"];\n * });\n * ```\n *\n * @param {string} locale The locale's name.\n *\n * @param {LocaleResolver|string|string[]} localeResolver The locale resolver\n * strategy.\n *\n * @returns {void}\n */\n public register(\n locale: string,\n localeResolver: LocaleResolver | string | string[],\n ): void {\n if (typeof localeResolver !== \"function\") {\n const result = localeResolver;\n localeResolver = (() => result) as LocaleResolver;\n }\n\n this.registry[locale] = localeResolver;\n }\n\n /**\n * Return a list of all locales that must be tried before returning the\n * missing translation message. By default, this will consider the inline\n * option, current locale and fallback locale.\n *\n * ```js\n * i18n.locales.get(\"de-DE\");\n * // [\"de-DE\", \"de\", \"en\"]\n * ```\n *\n * @param {string} locale The locale query.\n *\n * @returns {string[]} The list of locales.\n */\n public get(locale: string): string[] {\n let locales =\n this.registry[locale] ||\n this.registry[this.i18n.locale] ||\n this.registry.default;\n\n if (typeof locales === \"function\") {\n locales = locales(this.i18n, locale);\n }\n\n if (!(locales instanceof Array)) {\n locales = [locales];\n }\n return locales;\n }\n}\n", "const a = (n, ord) => {\n if (ord) return 'other';\n return n == 1 ? 'one' : 'other';\n};\nconst b = (n, ord) => {\n if (ord) return 'other';\n return (n == 0 || n == 1) ? 'one' : 'other';\n};\nconst c = (n, ord) => {\n if (ord) return 'other';\n return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nconst d = (n, ord) => {\n const s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nconst e = (n, ord) => 'other';\nconst f = (n, ord) => {\n if (ord) return 'other';\n return n == 1 ? 'one'\n : n == 2 ? 'two'\n : 'other';\n};\n\nexport const af = a;\nexport const ak = b;\nexport const am = c;\nexport const an = a;\nexport const ar = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n if (ord) return 'other';\n return n == 0 ? 'zero'\n : n == 1 ? 'one'\n : n == 2 ? 'two'\n : (n100 >= 3 && n100 <= 10) ? 'few'\n : (n100 >= 11 && n100 <= 99) ? 'many'\n : 'other';\n};\nexport const ars = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n if (ord) return 'other';\n return n == 0 ? 'zero'\n : n == 1 ? 'one'\n : n == 2 ? 'two'\n : (n100 >= 3 && n100 <= 10) ? 'few'\n : (n100 >= 11 && n100 <= 99) ? 'many'\n : 'other';\n};\nexport const as = (n, ord) => {\n if (ord) return (n == 1 || n == 5 || n == 7 || n == 8 || n == 9 || n == 10) ? 'one'\n : (n == 2 || n == 3) ? 'two'\n : n == 4 ? 'few'\n : n == 6 ? 'many'\n : 'other';\n return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nexport const asa = a;\nexport const ast = d;\nexport const az = (n, ord) => {\n const s = String(n).split('.'), i = s[0], i10 = i.slice(-1), i100 = i.slice(-2), i1000 = i.slice(-3);\n if (ord) return (i10 == 1 || i10 == 2 || i10 == 5 || i10 == 7 || i10 == 8) || (i100 == 20 || i100 == 50 || i100 == 70 || i100 == 80) ? 'one'\n : (i10 == 3 || i10 == 4) || (i1000 == 100 || i1000 == 200 || i1000 == 300 || i1000 == 400 || i1000 == 500 || i1000 == 600 || i1000 == 700 || i1000 == 800 || i1000 == 900) ? 'few'\n : i == 0 || i10 == 6 || (i100 == 40 || i100 == 60 || i100 == 90) ? 'many'\n : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const bal = (n, ord) => n == 1 ? 'one' : 'other';\nexport const be = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord) return (n10 == 2 || n10 == 3) && n100 != 12 && n100 != 13 ? 'few' : 'other';\n return n10 == 1 && n100 != 11 ? 'one'\n : (n10 >= 2 && n10 <= 4) && (n100 < 12 || n100 > 14) ? 'few'\n : t0 && n10 == 0 || (n10 >= 5 && n10 <= 9) || (n100 >= 11 && n100 <= 14) ? 'many'\n : 'other';\n};\nexport const bem = a;\nexport const bez = a;\nexport const bg = a;\nexport const bho = b;\nexport const blo = (n, ord) => {\n const s = String(n).split('.'), i = s[0];\n if (ord) return i == 0 ? 'zero'\n : i == 1 ? 'one'\n : (i == 2 || i == 3 || i == 4 || i == 5 || i == 6) ? 'few'\n : 'other';\n return n == 0 ? 'zero'\n : n == 1 ? 'one'\n : 'other';\n};\nexport const bm = e;\nexport const bn = (n, ord) => {\n if (ord) return (n == 1 || n == 5 || n == 7 || n == 8 || n == 9 || n == 10) ? 'one'\n : (n == 2 || n == 3) ? 'two'\n : n == 4 ? 'few'\n : n == 6 ? 'many'\n : 'other';\n return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nexport const bo = e;\nexport const br = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), n1000000 = t0 && s[0].slice(-6);\n if (ord) return 'other';\n return n10 == 1 && n100 != 11 && n100 != 71 && n100 != 91 ? 'one'\n : n10 == 2 && n100 != 12 && n100 != 72 && n100 != 92 ? 'two'\n : ((n10 == 3 || n10 == 4) || n10 == 9) && (n100 < 10 || n100 > 19) && (n100 < 70 || n100 > 79) && (n100 < 90 || n100 > 99) ? 'few'\n : n != 0 && t0 && n1000000 == 0 ? 'many'\n : 'other';\n};\nexport const brx = a;\nexport const bs = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'\n : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'\n : 'other';\n};\nexport const ca = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n if (ord) return (n == 1 || n == 3) ? 'one'\n : n == 2 ? 'two'\n : n == 4 ? 'few'\n : 'other';\n return n == 1 && v0 ? 'one'\n : i != 0 && i1000000 == 0 && v0 ? 'many'\n : 'other';\n};\nexport const ce = a;\nexport const ceb = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), f10 = f.slice(-1);\n if (ord) return 'other';\n return v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';\n};\nexport const cgg = a;\nexport const chr = a;\nexport const ckb = a;\nexport const cs = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1];\n if (ord) return 'other';\n return n == 1 && v0 ? 'one'\n : (i >= 2 && i <= 4) && v0 ? 'few'\n : !v0 ? 'many'\n : 'other';\n};\nexport const cy = (n, ord) => {\n if (ord) return (n == 0 || n == 7 || n == 8 || n == 9) ? 'zero'\n : n == 1 ? 'one'\n : n == 2 ? 'two'\n : (n == 3 || n == 4) ? 'few'\n : (n == 5 || n == 6) ? 'many'\n : 'other';\n return n == 0 ? 'zero'\n : n == 1 ? 'one'\n : n == 2 ? 'two'\n : n == 3 ? 'few'\n : n == 6 ? 'many'\n : 'other';\n};\nexport const da = (n, ord) => {\n const s = String(n).split('.'), i = s[0], t0 = Number(s[0]) == n;\n if (ord) return 'other';\n return n == 1 || !t0 && (i == 0 || i == 1) ? 'one' : 'other';\n};\nexport const de = d;\nexport const doi = c;\nexport const dsb = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i100 = i.slice(-2), f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i100 == 1 || f100 == 1 ? 'one'\n : v0 && i100 == 2 || f100 == 2 ? 'two'\n : v0 && (i100 == 3 || i100 == 4) || (f100 == 3 || f100 == 4) ? 'few'\n : 'other';\n};\nexport const dv = a;\nexport const dz = e;\nexport const ee = a;\nexport const el = a;\nexport const en = (n, ord) => {\n const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord) return n10 == 1 && n100 != 11 ? 'one'\n : n10 == 2 && n100 != 12 ? 'two'\n : n10 == 3 && n100 != 13 ? 'few'\n : 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nexport const eo = a;\nexport const es = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n if (ord) return 'other';\n return n == 1 ? 'one'\n : i != 0 && i1000000 == 0 && v0 ? 'many'\n : 'other';\n};\nexport const et = d;\nexport const eu = a;\nexport const fa = c;\nexport const ff = (n, ord) => {\n if (ord) return 'other';\n return n >= 0 && n < 2 ? 'one' : 'other';\n};\nexport const fi = d;\nexport const fil = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), f10 = f.slice(-1);\n if (ord) return n == 1 ? 'one' : 'other';\n return v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';\n};\nexport const fo = a;\nexport const fr = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n if (ord) return n == 1 ? 'one' : 'other';\n return n >= 0 && n < 2 ? 'one'\n : i != 0 && i1000000 == 0 && v0 ? 'many'\n : 'other';\n};\nexport const fur = a;\nexport const fy = d;\nexport const ga = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return n == 1 ? 'one' : 'other';\n return n == 1 ? 'one'\n : n == 2 ? 'two'\n : (t0 && n >= 3 && n <= 6) ? 'few'\n : (t0 && n >= 7 && n <= 10) ? 'many'\n : 'other';\n};\nexport const gd = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return (n == 1 || n == 11) ? 'one'\n : (n == 2 || n == 12) ? 'two'\n : (n == 3 || n == 13) ? 'few'\n : 'other';\n return (n == 1 || n == 11) ? 'one'\n : (n == 2 || n == 12) ? 'two'\n : ((t0 && n >= 3 && n <= 10) || (t0 && n >= 13 && n <= 19)) ? 'few'\n : 'other';\n};\nexport const gl = d;\nexport const gsw = a;\nexport const gu = (n, ord) => {\n if (ord) return n == 1 ? 'one'\n : (n == 2 || n == 3) ? 'two'\n : n == 4 ? 'few'\n : n == 6 ? 'many'\n : 'other';\n return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nexport const guw = b;\nexport const gv = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 ? 'one'\n : v0 && i10 == 2 ? 'two'\n : v0 && (i100 == 0 || i100 == 20 || i100 == 40 || i100 == 60 || i100 == 80) ? 'few'\n : !v0 ? 'many'\n : 'other';\n};\nexport const ha = a;\nexport const haw = a;\nexport const he = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1];\n if (ord) return 'other';\n return i == 1 && v0 || i == 0 && !v0 ? 'one'\n : i == 2 && v0 ? 'two'\n : 'other';\n};\nexport const hi = (n, ord) => {\n if (ord) return n == 1 ? 'one'\n : (n == 2 || n == 3) ? 'two'\n : n == 4 ? 'few'\n : n == 6 ? 'many'\n : 'other';\n return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nexport const hnj = e;\nexport const hr = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'\n : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'\n : 'other';\n};\nexport const hsb = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i100 = i.slice(-2), f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i100 == 1 || f100 == 1 ? 'one'\n : v0 && i100 == 2 || f100 == 2 ? 'two'\n : v0 && (i100 == 3 || i100 == 4) || (f100 == 3 || f100 == 4) ? 'few'\n : 'other';\n};\nexport const hu = (n, ord) => {\n if (ord) return (n == 1 || n == 5) ? 'one' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const hy = (n, ord) => {\n if (ord) return n == 1 ? 'one' : 'other';\n return n >= 0 && n < 2 ? 'one' : 'other';\n};\nexport const ia = d;\nexport const id = e;\nexport const ig = e;\nexport const ii = e;\nexport const io = d;\nexport const is = (n, ord) => {\n const s = String(n).split('.'), i = s[0], t = (s[1] || '').replace(/0+$/, ''), t0 = Number(s[0]) == n, i10 = i.slice(-1), i100 = i.slice(-2);\n if (ord) return 'other';\n return t0 && i10 == 1 && i100 != 11 || t % 10 == 1 && t % 100 != 11 ? 'one' : 'other';\n};\nexport const it = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n if (ord) return (n == 11 || n == 8 || n == 80 || n == 800) ? 'many' : 'other';\n return n == 1 && v0 ? 'one'\n : i != 0 && i1000000 == 0 && v0 ? 'many'\n : 'other';\n};\nexport const iu = f;\nexport const ja = e;\nexport const jbo = e;\nexport const jgo = a;\nexport const jmc = a;\nexport const jv = e;\nexport const jw = e;\nexport const ka = (n, ord) => {\n const s = String(n).split('.'), i = s[0], i100 = i.slice(-2);\n if (ord) return i == 1 ? 'one'\n : i == 0 || ((i100 >= 2 && i100 <= 20) || i100 == 40 || i100 == 60 || i100 == 80) ? 'many'\n : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const kab = (n, ord) => {\n if (ord) return 'other';\n return n >= 0 && n < 2 ? 'one' : 'other';\n};\nexport const kaj = a;\nexport const kcg = a;\nexport const kde = e;\nexport const kea = e;\nexport const kk = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1);\n if (ord) return n10 == 6 || n10 == 9 || t0 && n10 == 0 && n != 0 ? 'many' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const kkj = a;\nexport const kl = a;\nexport const km = e;\nexport const kn = c;\nexport const ko = e;\nexport const ks = a;\nexport const ksb = a;\nexport const ksh = (n, ord) => {\n if (ord) return 'other';\n return n == 0 ? 'zero'\n : n == 1 ? 'one'\n : 'other';\n};\nexport const ku = a;\nexport const kw = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2), n1000 = t0 && s[0].slice(-3), n100000 = t0 && s[0].slice(-5), n1000000 = t0 && s[0].slice(-6);\n if (ord) return (t0 && n >= 1 && n <= 4) || ((n100 >= 1 && n100 <= 4) || (n100 >= 21 && n100 <= 24) || (n100 >= 41 && n100 <= 44) || (n100 >= 61 && n100 <= 64) || (n100 >= 81 && n100 <= 84)) ? 'one'\n : n == 5 || n100 == 5 ? 'many'\n : 'other';\n return n == 0 ? 'zero'\n : n == 1 ? 'one'\n : (n100 == 2 || n100 == 22 || n100 == 42 || n100 == 62 || n100 == 82) || t0 && n1000 == 0 && ((n100000 >= 1000 && n100000 <= 20000) || n100000 == 40000 || n100000 == 60000 || n100000 == 80000) || n != 0 && n1000000 == 100000 ? 'two'\n : (n100 == 3 || n100 == 23 || n100 == 43 || n100 == 63 || n100 == 83) ? 'few'\n : n != 1 && (n100 == 1 || n100 == 21 || n100 == 41 || n100 == 61 || n100 == 81) ? 'many'\n : 'other';\n};\nexport const ky = a;\nexport const lag = (n, ord) => {\n const s = String(n).split('.'), i = s[0];\n if (ord) return 'other';\n return n == 0 ? 'zero'\n : (i == 0 || i == 1) && n != 0 ? 'one'\n : 'other';\n};\nexport const lb = a;\nexport const lg = a;\nexport const lij = (n, ord) => {\n const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n;\n if (ord) return (n == 11 || n == 8 || (t0 && n >= 80 && n <= 89) || (t0 && n >= 800 && n <= 899)) ? 'many' : 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nexport const lkt = e;\nexport const ln = b;\nexport const lo = (n, ord) => {\n if (ord) return n == 1 ? 'one' : 'other';\n return 'other';\n};\nexport const lt = (n, ord) => {\n const s = String(n).split('.'), f = s[1] || '', t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord) return 'other';\n return n10 == 1 && (n100 < 11 || n100 > 19) ? 'one'\n : (n10 >= 2 && n10 <= 9) && (n100 < 11 || n100 > 19) ? 'few'\n : f != 0 ? 'many'\n : 'other';\n};\nexport const lv = (n, ord) => {\n const s = String(n).split('.'), f = s[1] || '', v = f.length, t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), f100 = f.slice(-2), f10 = f.slice(-1);\n if (ord) return 'other';\n return t0 && n10 == 0 || (n100 >= 11 && n100 <= 19) || v == 2 && (f100 >= 11 && f100 <= 19) ? 'zero'\n : n10 == 1 && n100 != 11 || v == 2 && f10 == 1 && f100 != 11 || v != 2 && f10 == 1 ? 'one'\n : 'other';\n};\nexport const mas = a;\nexport const mg = b;\nexport const mgo = a;\nexport const mk = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n if (ord) return i10 == 1 && i100 != 11 ? 'one'\n : i10 == 2 && i100 != 12 ? 'two'\n : (i10 == 7 || i10 == 8) && i100 != 17 && i100 != 18 ? 'many'\n : 'other';\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one' : 'other';\n};\nexport const ml = a;\nexport const mn = a;\nexport const mo = (n, ord) => {\n const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n if (ord) return n == 1 ? 'one' : 'other';\n return n == 1 && v0 ? 'one'\n : !v0 || n == 0 || n != 1 && (n100 >= 1 && n100 <= 19) ? 'few'\n : 'other';\n};\nexport const mr = (n, ord) => {\n if (ord) return n == 1 ? 'one'\n : (n == 2 || n == 3) ? 'two'\n : n == 4 ? 'few'\n : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const ms = (n, ord) => {\n if (ord) return n == 1 ? 'one' : 'other';\n return 'other';\n};\nexport const mt = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n if (ord) return 'other';\n return n == 1 ? 'one'\n : n == 2 ? 'two'\n : n == 0 || (n100 >= 3 && n100 <= 10) ? 'few'\n : (n100 >= 11 && n100 <= 19) ? 'many'\n : 'other';\n};\nexport const my = e;\nexport const nah = a;\nexport const naq = f;\nexport const nb = a;\nexport const nd = a;\nexport const ne = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return (t0 && n >= 1 && n <= 4) ? 'one' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const nl = d;\nexport const nn = a;\nexport const nnh = a;\nexport const no = a;\nexport const nqo = e;\nexport const nr = a;\nexport const nso = b;\nexport const ny = a;\nexport const nyn = a;\nexport const om = a;\nexport const or = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return (n == 1 || n == 5 || (t0 && n >= 7 && n <= 9)) ? 'one'\n : (n == 2 || n == 3) ? 'two'\n : n == 4 ? 'few'\n : n == 6 ? 'many'\n : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const os = a;\nexport const osa = e;\nexport const pa = b;\nexport const pap = a;\nexport const pcm = c;\nexport const pl = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2);\n if (ord) return 'other';\n return n == 1 && v0 ? 'one'\n : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) ? 'few'\n : v0 && i != 1 && (i10 == 0 || i10 == 1) || v0 && (i10 >= 5 && i10 <= 9) || v0 && (i100 >= 12 && i100 <= 14) ? 'many'\n : 'other';\n};\nexport const prg = (n, ord) => {\n const s = String(n).split('.'), f = s[1] || '', v = f.length, t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), f100 = f.slice(-2), f10 = f.slice(-1);\n if (ord) return 'other';\n return t0 && n10 == 0 || (n100 >= 11 && n100 <= 19) || v == 2 && (f100 >= 11 && f100 <= 19) ? 'zero'\n : n10 == 1 && n100 != 11 || v == 2 && f10 == 1 && f100 != 11 || v != 2 && f10 == 1 ? 'one'\n : 'other';\n};\nexport const ps = a;\nexport const pt = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n if (ord) return 'other';\n return (i == 0 || i == 1) ? 'one'\n : i != 0 && i1000000 == 0 && v0 ? 'many'\n : 'other';\n};\nexport const pt_PT = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n if (ord) return 'other';\n return n == 1 && v0 ? 'one'\n : i != 0 && i1000000 == 0 && v0 ? 'many'\n : 'other';\n};\nexport const rm = a;\nexport const ro = (n, ord) => {\n const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n if (ord) return n == 1 ? 'one' : 'other';\n return n == 1 && v0 ? 'one'\n : !v0 || n == 0 || n != 1 && (n100 >= 1 && n100 <= 19) ? 'few'\n : 'other';\n};\nexport const rof = a;\nexport const ru = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 && i100 != 11 ? 'one'\n : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) ? 'few'\n : v0 && i10 == 0 || v0 && (i10 >= 5 && i10 <= 9) || v0 && (i100 >= 11 && i100 <= 14) ? 'many'\n : 'other';\n};\nexport const rwk = a;\nexport const sah = e;\nexport const saq = a;\nexport const sat = f;\nexport const sc = (n, ord) => {\n const s = String(n).split('.'), v0 = !s[1];\n if (ord) return (n == 11 || n == 8 || n == 80 || n == 800) ? 'many' : 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nexport const scn = (n, ord) => {\n const s = String(n).split('.'), v0 = !s[1];\n if (ord) return (n == 11 || n == 8 || n == 80 || n == 800) ? 'many' : 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nexport const sd = a;\nexport const sdh = a;\nexport const se = f;\nexport const seh = a;\nexport const ses = e;\nexport const sg = e;\nexport const sh = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'\n : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'\n : 'other';\n};\nexport const shi = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return 'other';\n return n >= 0 && n <= 1 ? 'one'\n : (t0 && n >= 2 && n <= 10) ? 'few'\n : 'other';\n};\nexport const si = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '';\n if (ord) return 'other';\n return (n == 0 || n == 1) || i == 0 && f == 1 ? 'one' : 'other';\n};\nexport const sk = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1];\n if (ord) return 'other';\n return n == 1 && v0 ? 'one'\n : (i >= 2 && i <= 4) && v0 ? 'few'\n : !v0 ? 'many'\n : 'other';\n};\nexport const sl = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i100 = i.slice(-2);\n if (ord) return 'other';\n return v0 && i100 == 1 ? 'one'\n : v0 && i100 == 2 ? 'two'\n : v0 && (i100 == 3 || i100 == 4) || !v0 ? 'few'\n : 'other';\n};\nexport const sma = f;\nexport const smi = f;\nexport const smj = f;\nexport const smn = f;\nexport const sms = f;\nexport const sn = a;\nexport const so = a;\nexport const sq = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord) return n == 1 ? 'one'\n : n10 == 4 && n100 != 14 ? 'many'\n : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const sr = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'\n : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'\n : 'other';\n};\nexport const ss = a;\nexport const ssy = a;\nexport const st = a;\nexport const su = e;\nexport const sv = (n, ord) => {\n const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord) return (n10 == 1 || n10 == 2) && n100 != 11 && n100 != 12 ? 'one' : 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nexport const sw = d;\nexport const syr = a;\nexport const ta = a;\nexport const te = a;\nexport const teo = a;\nexport const th = e;\nexport const ti = b;\nexport const tig = a;\nexport const tk = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1);\n if (ord) return (n10 == 6 || n10 == 9) || n == 10 ? 'few' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const tl = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), f10 = f.slice(-1);\n if (ord) return n == 1 ? 'one' : 'other';\n return v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';\n};\nexport const tn = a;\nexport const to = e;\nexport const tpi = e;\nexport const tr = a;\nexport const ts = a;\nexport const tzm = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return 'other';\n return (n == 0 || n == 1) || (t0 && n >= 11 && n <= 99) ? 'one' : 'other';\n};\nexport const ug = a;\nexport const uk = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), i10 = i.slice(-1), i100 = i.slice(-2);\n if (ord) return n10 == 3 && n100 != 13 ? 'few' : 'other';\n return v0 && i10 == 1 && i100 != 11 ? 'one'\n : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) ? 'few'\n : v0 && i10 == 0 || v0 && (i10 >= 5 && i10 <= 9) || v0 && (i100 >= 11 && i100 <= 14) ? 'many'\n : 'other';\n};\nexport const und = e;\nexport const ur = d;\nexport const uz = a;\nexport const ve = a;\nexport const vec = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n if (ord) return (n == 11 || n == 8 || n == 80 || n == 800) ? 'many' : 'other';\n return n == 1 && v0 ? 'one'\n : i != 0 && i1000000 == 0 && v0 ? 'many'\n : 'other';\n};\nexport const vi = (n, ord) => {\n if (ord) return n == 1 ? 'one' : 'other';\n return 'other';\n};\nexport const vo = a;\nexport const vun = a;\nexport const wa = b;\nexport const wae = a;\nexport const wo = e;\nexport const xh = a;\nexport const xog = a;\nexport const yi = d;\nexport const yo = e;\nexport const yue = e;\nexport const zh = e;\nexport const zu = c;\n", "import { en } from \"make-plural\";\n\nimport { Dict, Pluralizer, MakePlural } from \"./typing\";\nimport { I18n } from \"./I18n\";\n\n/**\n * Creates a new pluralizer function based on [make-plural](https://github.com/eemeli/make-plural/tree/master/packages/plurals).\n *\n * @param {boolean} options.includeZero When `true`, will return `zero` as the\n * first key for `0` pluralization.\n * @param {boolean} options.ordinal When `true`, will return the scope based on\n * make-plural's ordinal category.\n * @param {MakePlural} options.pluralizer The make-plural function that will be\n * wrapped.\n * @return {Pluralizer} Returns a pluralizer that can be used by I18n.\n */\nexport function useMakePlural({\n pluralizer,\n includeZero = true,\n ordinal = false,\n}: {\n pluralizer: MakePlural;\n includeZero?: boolean;\n ordinal?: boolean;\n}): Pluralizer {\n return function (_i18n: I18n, count: number) {\n return [\n includeZero && count === 0 ? \"zero\" : \"\",\n pluralizer(count, ordinal),\n ].filter(Boolean);\n };\n}\n\n/**\n * The default pluralizer.\n *\n * It's pretty straightforward:\n *\n * - when count is `0`, then the possible keys are\n * either `zero` for `other`; this allows having translations like\n * \"You have no messages\", defaulting to \"You have 0 messages\".\n * - when count is `1`, then the key is `one`.\n * - when greater than `1`, then the key is `other`.\n *\n * @type {Pluralizer}\n *\n * @param {I18n} _i18n The I18n's instance.\n *\n * @param {number} count The number that's being analyzed.\n *\n * @returns {string[]} The list of possible translation scopes.\n */\nexport const defaultPluralizer: Pluralizer = useMakePlural({\n pluralizer: en,\n includeZero: true,\n});\n\n/**\n * This class enables registering different strategies for pluralization, as\n * well as getting a pluralized translation.\n *\n * The default pluralization strategy is based on three counters:\n *\n * - `one`: returned when count is equal to absolute `1`.\n * - `zero`: returned when count is equal to `0`. If this translation is not\n * set, then it defaults to `other`.\n * - `other`: returned when count is different than absolute `1`.\n *\n * When calling `i18n.translate` (or its alias), pluralization rules will be\n * triggered whenever the translation options contain `count`.\n *\n * @example\n * A JSON describing the pluralization rules.\n *\n * ```json\n * {\n * \"en\": {\n * \"inbox\": {\n * \"zero\": \"You have no messages\",\n * \"one\": \"You have one message\",\n * \"other\": \"You have %{count} messages\"\n * }\n * }\n * }\n * ```\n *\n * @example\n * How to get pluralized translations.\n *\n * ```js\n * i18n.t(\"inbox\", {count: 0}); // returns \"You have no messages\"\n * i18n.t(\"inbox\", {count: 1}); // returns \"You have on message\"\n * i18n.t(\"inbox\", {count: 2}); // returns \"You have 2 messages\"\n * ```\n */\nexport class Pluralization {\n private i18n: I18n;\n private registry: Dict;\n\n constructor(i18n: I18n) {\n this.i18n = i18n;\n this.registry = {};\n\n this.register(\"default\", defaultPluralizer);\n }\n\n /**\n * Register a new pluralizer strategy.\n *\n * You may want to support different pluralization rules based on the locales\n * you have to support. If you do, make sure you submit a pull request at\n * so we can distribute it. For now only\n * Russian is distributed.\n *\n * The pluralizer will receive the `I18n` instance, together with `count`.\n * Is up to the pluralizer to return a list of possible keys given that count.\n * The Russian pluralizer, for instance, returns `one`, `few`, `many`, `other`\n * as possible pluralization keys.\n *\n * You can view a complete list of pluralization rules at\n * [unicode.org](http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html).\n *\n * You can also leverage\n * [make-plural](https://github.com/eemeli/make-plural/), rather than writing\n * all your pluralization functions. For this, you must wrap make-plural's\n * function by using `useMakePlural({ pluralizer, includeZero, ordinal })`:\n *\n * @example\n * ```js\n * import { ru } from \"make-plural\";\n * import { useMakePlural } from \"i18n-js\";\n *\n * i18n.pluralization.register(\"ru\", useMakePlural({ pluralizer: ru }));\n * ```\n *\n * @param {string} locale The locale.\n *\n * @param {Pluralizer} pluralizer The pluralizer function.\n *\n * @returns {void}\n */\n public register(locale: string, pluralizer: Pluralizer): void {\n this.registry[locale] = pluralizer;\n }\n\n /**\n * Returns a list of possible pluralization keys.\n * This is defined by a chain of pluralizers, going from locale set\n * explicitly, then the locale set through `i18n.locale`, defaulting to\n * `defaultPluralizer`.\n *\n * @param {string} locale The locale.\n *\n * @returns {Pluralizer} The pluralizer function.\n */\n public get(locale: string): Pluralizer {\n return (\n this.registry[locale] ||\n this.registry[this.i18n.locale] ||\n this.registry[\"default\"]\n );\n }\n}\n", "import camelCase from \"lodash/camelCase\";\n\nimport { Dict } from \"../typing\";\n\n/**\n * Shallow transform an object's keys from snake case (that's assumption) to\n * camel case.\n *\n * @private\n *\n * @param {object} target The object that will be transformed.\n *\n * @returns {object} A new transformed object.\n */\nexport function camelCaseKeys(target: unknown): T {\n if (!target) {\n return {} as T;\n }\n\n return Object.keys(target as Dict).reduce((buffer, key) => {\n (buffer as Dict)[camelCase(key)] = (target as Dict)[key];\n return buffer;\n }, {} as T);\n}\n", "/**\n * Check if value is different than undefined and null.\n *\n * @private\n *\n * @param {unknown} value The inspecting value.\n *\n * @returns {boolean} Whether the value is set or not.\n */\nexport function isSet(value: unknown): boolean {\n return value !== undefined && value !== null;\n}\n", "import { Dict, Scope, TranslateOptions } from \"../typing\";\nimport { I18n } from \"../I18n\";\nimport { isSet } from \"./isSet\";\n\n/**\n * Generate a list of translation options for default fallback.\n * `defaultValue` is also deleted from options as it is returned as part of\n * the translationOptions array.\n *\n * @private\n *\n * @param {I18n} i18n The I18n instance.\n *\n * @param {string|array} scope The translation scope.\n *\n * @param {object} options The translation options.\n *\n * @returns {array} Translation options\n */\nexport function createTranslationOptions(\n i18n: I18n,\n scope: Scope,\n options: Dict,\n): TranslateOptions[] {\n let translationOptions: Dict[] = [{ scope }];\n\n // Defaults should be an array of hashes containing either\n // fallback scopes or messages\n if (isSet(options.defaults)) {\n translationOptions = translationOptions.concat(options.defaults);\n }\n\n // Maintain support for defaultValue. Since it is always a message\n // insert it in to the translation options as such.\n if (isSet(options.defaultValue)) {\n const message =\n typeof options.defaultValue === \"function\"\n ? options.defaultValue(i18n, scope, options)\n : options.defaultValue;\n\n translationOptions.push({ message });\n delete options.defaultValue;\n }\n\n return translationOptions as unknown as TranslateOptions[];\n}\n", "/*\r\n * bignumber.js v9.3.1\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2025 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, -1);\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, 1);\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 \u00B10 if x is \u00B10 or y is \u00B1Infinity, or return \u00B1Infinity as y is \u00B10.\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 + (id === 2 && e > 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 // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\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 \u00B1Infinity 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 = mathfloor(n / pows10[d - j - 1] % 10);\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 : mathfloor(n / pows10[d - j - 1] % 10);\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 \u00B1Infinity 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 \u00B1Infinity, 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, \u00B1Infinity, \u00B10 or \u00B11, or n is \u00B1Infinity, NaN or \u00B10.\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 \u00B1Infinity, 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 \u00B1Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to \u00B10: <=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 = \u00B1Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return \u00B10, else return \u00B1Infinity.\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) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\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, \u00B1Infinity or \u00B10?\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 \u00B1Infinity if either is \u00B1Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return \u00B10 if either is \u00B10.\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) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\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 \u00B1Infinity if either \u00B1Infinity.\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) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\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 \u00B1Infinity 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) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\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\";\nimport { RoundingMode } from \"../typing\";\n\nenum RoundingModeMap {\n \"up\" = BigNumber.ROUND_UP,\n \"down\" = BigNumber.ROUND_DOWN,\n \"truncate\" = BigNumber.ROUND_DOWN,\n \"halfUp\" = BigNumber.ROUND_HALF_UP,\n \"default\" = BigNumber.ROUND_HALF_UP,\n \"halfDown\" = BigNumber.ROUND_HALF_DOWN,\n \"halfEven\" = BigNumber.ROUND_HALF_EVEN,\n \"banker\" = BigNumber.ROUND_HALF_EVEN,\n \"ceiling\" = BigNumber.ROUND_CEIL,\n \"ceil\" = BigNumber.ROUND_CEIL,\n \"floor\" = BigNumber.ROUND_FLOOR,\n}\n\n/**\n * @param {RoundingMode} roundMode BigNumber's rounding mode shortcut.\n *\n * @return {BigNumber.RoundingMode} The related BigNumber rounding mode.\n */\nexport function expandRoundMode(\n roundMode: RoundingMode,\n): BigNumber.RoundingMode {\n return (RoundingModeMap[roundMode] ??\n RoundingModeMap.default) as BigNumber.RoundingMode;\n}\n", "import { BigNumber } from \"bignumber.js\";\nimport repeat from \"lodash/repeat\";\n\nimport { FormatNumberOptions, Numeric } from \"../typing\";\nimport { roundNumber } from \"./roundNumber\";\n\nfunction replaceInFormat(\n format: string,\n { formattedNumber, unit }: { formattedNumber: string; unit: string },\n): string {\n return format.replace(\"%n\", formattedNumber).replace(\"%u\", unit);\n}\n\nfunction computeSignificand({\n significand,\n whole,\n precision,\n}: {\n significand: string;\n whole: string;\n precision: number | null;\n}) {\n if (whole === \"0\" || precision === null) {\n return significand;\n }\n\n const limit = Math.max(0, precision - whole.length);\n\n return (significand ?? \"\").substr(0, limit);\n}\n\n/**\n * Formats a number.\n *\n * @param {Numeric} input The numeric value that will be formatted.\n *\n * @param {FormatNumberOptions} options The formatting options.\n *\n * @return {string} [description]\n */\nexport function formatNumber(\n input: Numeric,\n options: FormatNumberOptions,\n): string {\n const originalNumber = new BigNumber(input);\n\n if (options.raise && !originalNumber.isFinite()) {\n throw new Error(`\"${input}\" is not a valid numeric value`);\n }\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: string[] = [];\n let formattedNumber: string;\n const positiveFormat = options.format ?? \"%n\";\n const negativeFormat = options.negativeFormat ?? `-${positiveFormat}`;\n const format = isNegative && !isZero ? negativeFormat : positiveFormat;\n\n whole = whole.replace(\"-\", \"\");\n\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\n whole = buffer.join(\"\");\n formattedNumber = buffer.join(options.delimiter);\n\n if (options.significant) {\n significand = computeSignificand({\n whole,\n significand,\n precision: options.precision,\n });\n } else {\n significand = significand ?? repeat(\"0\", options.precision ?? 0);\n }\n\n if (options.stripInsignificantZeros && significand) {\n significand = significand.replace(/0+$/, \"\");\n }\n\n if (originalNumber.isNaN()) {\n formattedNumber = input.toString();\n }\n\n if (significand && originalNumber.isFinite()) {\n formattedNumber += (options.separator || \".\") + significand;\n }\n\n return replaceInFormat(format, {\n formattedNumber,\n unit: options.unit,\n });\n}\n", "import { BigNumber } from \"bignumber.js\";\n\nimport { RoundingMode } from \"../typing\";\nimport { expandRoundMode } from \"./expandRoundMode\";\n\ntype RoundingOptions = {\n roundMode: RoundingMode;\n precision: number | null;\n significant: boolean;\n};\n\nfunction digitCount(numeric: BigNumber): number {\n if (numeric.isZero()) {\n return 1;\n }\n\n return Math.floor(Math.log10(numeric.abs().toNumber()) + 1);\n}\n\nfunction getAbsolutePrecision(\n numeric: BigNumber,\n { precision, significant }: RoundingOptions,\n): number | null {\n if (significant && precision !== null && precision > 0) {\n return precision - digitCount(numeric);\n }\n\n return precision;\n}\n\n/**\n * Round a number.\n *\n * @private\n *\n * @param {BigNumber} numeric The number that will be rounded.\n *\n * @param {RoundingOptions} options The rounding options.\n *\n * @return {string} The rounded number.\n */\nexport function roundNumber(\n numeric: BigNumber,\n options: RoundingOptions,\n): string {\n const precision = getAbsolutePrecision(numeric, options);\n\n if (precision === null) {\n return numeric.toString();\n }\n\n const roundMode = expandRoundMode(options.roundMode);\n\n if (precision >= 0) {\n return numeric.toFixed(precision, roundMode);\n }\n\n // Ruby's BigDecimal support negative precision calculation, but JS'\n // BigNumber doesn't. This will ensure we'll match Ruby's behavior.\n const rounder = 10 ** Math.abs(precision);\n\n numeric = new BigNumber(numeric.div(rounder).toFixed(0, roundMode)).times(\n rounder,\n );\n\n return numeric.toString();\n}\n", "import { Dict, Scope } from \"../typing\";\nimport { I18n } from \"../I18n\";\n\n/**\n * Get the full scope.\n *\n * @private\n *\n * @param {I18n} i18n The I18n instance.\n * @param {Scope} scope The scope object.\n * @param {object} options Options containing the base scope to be prepended.\n * @returns {string} The full scope joined by the default separator.\n */\nexport function getFullScope(i18n: I18n, scope: Scope, options: Dict): string {\n let result = \"\";\n\n // Deal with string scopes.\n if (scope instanceof String || typeof scope === \"string\") {\n result = scope as string;\n }\n\n // Deal with the scope as an array.\n if (scope instanceof Array) {\n result = (scope as string[]).join(i18n.defaultSeparator);\n }\n\n // Deal with the scope option provided through the second argument.\n //\n // I18n.t('hello', {scope: 'greetings'});\n //\n if (options.scope) {\n result = [options.scope, result].join(i18n.defaultSeparator);\n }\n\n return result;\n}\n", "/**\n * Return object type.\n *\n * @private\n *\n * @param {unknown} instance The object that will be inspected.\n *\n * @returns {string} The object's type.\n */\nexport function inferType(instance: unknown): string {\n if (instance === null) {\n return \"null\";\n }\n\n const type = typeof instance;\n\n if (type !== \"object\") {\n return type;\n }\n\n return (instance as any)?.constructor?.name?.toLowerCase() || \"object\";\n}\n", "import { TranslateOptions } from \"../typing\";\nimport { I18n } from \"../I18n\";\nimport { isSet } from \"./isSet\";\n\n/**\n * This function interpolates the all variables in the given message.\n *\n * @private\n *\n * @param {I18n} i18n The I18n instance.\n *\n * @param {string} message The string containing the placeholders.\n *\n * @param {object} options The source object that will be used as the\n * placeholders' source.\n *\n * @returns {string} The interpolated string.\n */\nexport function interpolate(\n i18n: I18n,\n message: string,\n options: TranslateOptions,\n): string {\n options = Object.keys(options).reduce((buffer, key) => {\n buffer[i18n.transformKey(key)] = options[key];\n return buffer;\n }, {} as TranslateOptions);\n const matches = message.match(i18n.placeholder);\n\n if (!matches) {\n return message;\n }\n\n while (matches.length) {\n let value: string;\n const placeholder = matches.shift() as string;\n const name = placeholder.replace(i18n.placeholder, \"$1\");\n\n if (isSet(options[name])) {\n value = options[name].toString().replace(/\\$/gm, \"_#$#_\");\n } else if (name in options) {\n value = i18n.nullPlaceholder(i18n, placeholder, message, options);\n } else {\n value = i18n.missingPlaceholder(i18n, placeholder, message, options);\n }\n\n const regex = new RegExp(\n placeholder.replace(/\\{/gm, \"\\\\{\").replace(/\\}/gm, \"\\\\}\"),\n \"g\",\n );\n\n message = message.replace(regex, value);\n }\n\n return message.replace(/_#\\$#_/g, \"$\");\n}\n", "import { Dict, Scope } from \"../typing\";\nimport { I18n } from \"../I18n\";\nimport { isSet } from \"./isSet\";\nimport { getFullScope } from \"./getFullScope\";\nimport { inferType } from \"./inferType\";\n\n/**\n * Find and process the translation using the provided scope and options.\n * This is used internally by some functions and should not be used as a\n * public API.\n *\n * @private\n *\n * @param {I18n} i18n The I18n instance.\n *\n * @param {Scope} scope The translation scope.\n *\n * @param {Dict|undefined} options The lookup options.\n *\n * @returns {any} The resolved translation.\n */\nexport function lookup(i18n: I18n, scope: Scope, options: Dict = {}): any {\n options = { ...options };\n\n const locale = \"locale\" in options ? options.locale : i18n.locale;\n const localeType = inferType(locale);\n\n const locales = i18n.locales\n .get(localeType === \"string\" ? locale : typeof locale)\n .slice();\n\n const keys = getFullScope(i18n, scope, options)\n .split(i18n.defaultSeparator)\n .map((component) => i18n.transformKey(component));\n\n const entries = locales.map((locale) =>\n keys.reduce((path, key) => path && path[key], i18n.translations[locale]),\n );\n\n entries.push(options.defaultValue);\n\n return entries.find((entry) => isSet(entry));\n}\n", "import { BigNumber } from \"bignumber.js\";\n\nimport { Numeric, NumberToDelimitedOptions } from \"../typing\";\n\n/**\n * Formats a number with grouped thousands using delimiter (e.g., 12,324).\n *\n * @private\n *\n * @param {Numeric} input The number that will be formatted.\n *\n * @param {NumberToDelimitedOptions} options The formatting options.\n *\n * @return {string} The formatted number.\n */\nexport function numberToDelimited(\n input: Numeric,\n options: NumberToDelimitedOptions,\n): string {\n const numeric = new BigNumber(input);\n\n if (!numeric.isFinite()) {\n return input.toString();\n }\n\n if (!options.delimiterPattern.global) {\n throw new Error(\n `options.delimiterPattern must be a global regular expression; received ${options.delimiterPattern}`,\n );\n }\n\n // eslint-disable-next-line prefer-const\n let [left, right] = numeric.toString().split(\".\");\n\n left = left.replace(\n options.delimiterPattern,\n (digitToDelimiter) => `${digitToDelimiter}${options.delimiter}`,\n );\n\n return [left, right].filter(Boolean).join(options.separator);\n}\n", "import { BigNumber } from \"bignumber.js\";\nimport sortBy from \"lodash/sortBy\";\nimport zipObject from \"lodash/zipObject\";\n\nimport { I18n } from \"../I18n\";\nimport { Numeric, NumberToHumanOptions, NumberToHumanUnits } from \"../typing\";\nimport { getFullScope } from \"./getFullScope\";\nimport { lookup } from \"./lookup\";\nimport { roundNumber } from \"./roundNumber\";\nimport { inferType } from \"./inferType\";\n\n/**\n * Set decimal units used to calculate number to human formatting.\n */\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};\n\nconst INVERTED_DECIMAL_UNITS = zipObject(\n Object.values(DECIMAL_UNITS),\n Object.keys(DECIMAL_UNITS).map((key) => parseInt(key, 10)),\n);\n\n/**\n * Pretty prints (formats and approximates) a number in a way it is more\n * readable by humans.\n *\n * @private\n *\n * @param {I18n} i18n The `I18n` instance.\n *\n * @param {Numeric} input The numeric value that will be represented.\n *\n * @param {NumberToHumanOptions} options The formatting options.\n *\n * @return {string} The formatted number.\n */\nexport function numberToHuman(\n i18n: I18n,\n input: Numeric,\n options: NumberToHumanOptions,\n): string {\n const roundOptions = {\n roundMode: options.roundMode,\n precision: options.precision,\n significant: options.significant,\n };\n\n let units: NumberToHumanUnits;\n\n if (inferType(options.units) === \"string\") {\n const scope = options.units as string;\n units = lookup(i18n, scope);\n\n if (!units) {\n throw new Error(\n `The scope \"${i18n.locale}${i18n.defaultSeparator}${getFullScope(\n i18n,\n scope,\n {},\n )}\" couldn't be found`,\n );\n }\n } else {\n units = options.units as NumberToHumanUnits;\n }\n\n let formattedNumber = roundNumber(new BigNumber(input), roundOptions);\n\n const unitExponents = (units: NumberToHumanUnits) =>\n sortBy(\n Object.keys(units).map((name) => INVERTED_DECIMAL_UNITS[name]),\n (numeric) => numeric * -1,\n );\n\n const calculateExponent = (num: BigNumber, units: NumberToHumanUnits) => {\n const exponent = num.isZero()\n ? 0\n : Math.floor(Math.log10(num.abs().toNumber()));\n\n return unitExponents(units).find((exp) => exponent >= exp) || 0;\n };\n\n const determineUnit = (units: NumberToHumanUnits, exponent: number) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const expName = DECIMAL_UNITS[exponent.toString()];\n\n return units[expName] || \"\";\n };\n\n const exponent = calculateExponent(new BigNumber(formattedNumber), units);\n const unit = determineUnit(units, exponent);\n\n formattedNumber = roundNumber(\n new BigNumber(formattedNumber).div(10 ** exponent),\n roundOptions,\n );\n\n if (options.stripInsignificantZeros) {\n // eslint-disable-next-line prefer-const\n let [whole, significand] = formattedNumber.split(\".\");\n significand = (significand || \"\").replace(/0+$/, \"\");\n\n formattedNumber = whole;\n\n if (significand) {\n formattedNumber += `${options.separator}${significand}`;\n }\n }\n\n return options.format\n .replace(\"%n\", formattedNumber || \"0\")\n .replace(\"%u\", unit)\n .trim();\n}\n", "import { BigNumber } from \"bignumber.js\";\n\nimport { I18n } from \"../I18n\";\nimport { Numeric, NumberToHumanSizeOptions } from \"../typing\";\nimport { roundNumber } from \"./roundNumber\";\nimport { expandRoundMode } from \"./expandRoundMode\";\n\n/**\n * Set default size units.\n */\nconst STORAGE_UNITS = [\"byte\", \"kb\", \"mb\", \"gb\", \"tb\", \"pb\", \"eb\"];\n\n/**\n * Formats the bytes in number into a more understandable representation.\n *\n * @param {I18n} i18n The `I18n` instance.\n *\n * @param {Numeric} input The number that will be represented.\n\n * @param {NumberToHumanSizeOptions} options The formatting options.\n\n * @return {string} The formatted number.\n */\nexport function numberToHumanSize(\n i18n: I18n,\n input: Numeric,\n options: NumberToHumanSizeOptions,\n): string {\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\n const computeExponent = (numeric: BigNumber, units: string[]) => {\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\n return Math.min(max, exp);\n };\n\n const storageUnitKey = (units: string[]) => {\n const keyEnd = smallerThanBase ? \"byte\" : units[exponent];\n return `number.human.storage_units.units.${keyEnd}`;\n };\n\n const exponent = computeExponent(num, STORAGE_UNITS);\n\n if (smallerThanBase) {\n numberToBeFormatted = num.integerValue();\n } else {\n numberToBeFormatted = new BigNumber(\n roundNumber(num.div(base ** exponent), {\n significant: options.significant,\n precision: options.precision,\n roundMode: options.roundMode,\n }),\n );\n }\n\n const format = i18n.translate(\"number.human.storage_units.format\", {\n defaultValue: \"%n %u\",\n });\n\n const unit = i18n.translate(storageUnitKey(STORAGE_UNITS), {\n count: num.integerValue().toNumber(),\n });\n\n let formattedNumber = numberToBeFormatted.toFixed(\n options.precision as number,\n roundMode,\n );\n\n if (options.stripInsignificantZeros) {\n formattedNumber = formattedNumber\n .replace(/(\\..*?)0+$/, \"$1\")\n .replace(/\\.$/, \"\");\n }\n\n return format.replace(\"%n\", formattedNumber).replace(\"%u\", unit);\n}\n", "import { DateTime } from \"../typing\";\n\n/**\n * Parse a given `input` string into a JavaScript Date object.\n * This function is time zone aware.\n *\n * The following string formats are recognized:\n *\n * ```\n * yyyy-mm-dd\n * yyyy-mm-dd[ T]hh:mm::ss\n * yyyy-mm-dd[ T]hh:mm::ss\n * yyyy-mm-dd[ T]hh:mm::ssZ\n * yyyy-mm-dd[ T]hh:mm::ss+0000\n * yyyy-mm-dd[ T]hh:mm::ss+00:00\n * yyyy-mm-dd[ T]hh:mm::ss.123Z\n * ```\n *\n * If any other pattern is provided, then it'll be parsed by `Date.parse`, which\n * may or may not bring the expected result.\n *\n * @private\n *\n * @example\n * ```js\n * parseDate(\"2019-12-09\");\n * ```\n *\n * @param {DateTime} input The date string or number timestamp that must be\n * parsed into a Date object. If a Date object is provided, then that's what\n * it'll be returned.\n *\n * @returns {Date} The parsed date.\n */\nexport function parseDate(input: DateTime): Date {\n // we have a date, so just return it.\n if (input instanceof Date) {\n return input;\n }\n\n if (typeof input === \"number\") {\n // UNIX timestamp\n const date = new Date();\n date.setTime(input as unknown as number);\n return date;\n }\n\n const matches = new String(input).match(\n /(\\d{4})-(\\d{2})-(\\d{2})(?:[ T](\\d{2}):(\\d{2}):(\\d{2})(?:[.,](\\d{1,3}))?)?(Z|\\+00:?00)?/,\n );\n\n if (matches) {\n const parts = matches.slice(1, 8).map((match) => parseInt(match, 10) || 0);\n\n // month starts on 0\n parts[1] -= 1;\n\n const [year, month, day, hour, minute, second, milliseconds] = parts;\n const timezone = matches[8];\n\n if (timezone) {\n return new Date(\n 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\n if (\n input.match(\n /([A-Z][a-z]{2}) ([A-Z][a-z]{2}) (\\d+) (\\d+:\\d+:\\d+) ([+-]\\d+) (\\d+)/,\n )\n ) {\n // This format `Wed Jul 20 13:03:39 +0000 2011` is parsed by\n // webkit/firefox, but not by IE, so we must parse it manually.\n const date = new Date();\n date.setTime(\n Date.parse(\n [RegExp.$1, RegExp.$2, RegExp.$3, RegExp.$6, RegExp.$4, RegExp.$5].join(\n \" \",\n ),\n ),\n );\n }\n\n // an arbitrary javascript string\n const date = new Date();\n date.setTime(Date.parse(input));\n\n return date;\n}\n", "import { Scope, TranslateOptions } from \"../typing\";\nimport { I18n } from \"../I18n\";\n\nimport { isSet } from \"./isSet\";\nimport { lookup } from \"./lookup\";\n\n/**\n * Pluralize the given scope using the `count` value.\n * The pluralized translation may have other placeholders,\n * which will be retrieved from `options`.\n *\n * @private\n *\n * @param {I18n} i18n The I18n instance.\n *\n * @param {number} count The counting number.\n *\n * @param {Scope} scope The translation scope.\n *\n * @param {object} options The translation options.\n *\n * @returns {string} The translated string.\n */\nexport function pluralize({\n i18n,\n count,\n scope,\n options,\n baseScope,\n}: {\n i18n: I18n;\n count: number;\n scope: Scope;\n options: TranslateOptions;\n baseScope: string;\n}): string {\n options = { ...options };\n let translations;\n let message;\n\n if (typeof scope === \"object\" && scope) {\n translations = scope;\n } else {\n translations = lookup(i18n, scope, options);\n }\n\n if (!translations) {\n return i18n.missingTranslation.get(scope, options);\n }\n\n const pluralizer = i18n.pluralization.get(options.locale);\n const keys = pluralizer(i18n, count);\n const missingKeys: typeof keys = [];\n\n while (keys.length) {\n const key = keys.shift() as string;\n\n if (isSet(translations[key])) {\n message = translations[key];\n break;\n }\n\n missingKeys.push(key);\n }\n\n if (!isSet(message)) {\n return i18n.missingTranslation.get(\n baseScope.split(i18n.defaultSeparator).concat([missingKeys[0]]),\n options,\n );\n }\n\n options.count = count;\n\n return i18n.interpolate(i18n, message, options);\n}\n", "import { StrftimeOptions } from \"../typing\";\n\nconst DEFAULT_OPTIONS: StrftimeOptions = {\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};\n\n/**\n * Formats time according to the directives in the given format string.\n * The directives begins with a percent (`%`) character. Any text not listed\n * as a directive will be passed through to the output string.\n *\n * The accepted formats are:\n *\n * ```\n * %a - The abbreviated weekday name (Sun)\n * %A - The full weekday name (Sunday)\n * %b - The abbreviated month name (Jan)\n * %B - The full month name (January)\n * %c - The preferred local date and time representation\n * %d - Day of the month (01..31)\n * %-d - Day of the month (1..31)\n * %H - Hour of the day, 24-hour clock (00..23)\n * %-H - Hour of the day, 24-hour clock (0..23)\n * %k - Hour of the day, 24-hour clock (0..23)\n * %I - Hour of the day, 12-hour clock (01..12)\n * %-I - Hour of the day, 12-hour clock (1..12)\n * %l - Hour of the day, 12-hour clock (1..12)\n * %m - Month of the year (01..12)\n * %-m - Month of the year (1..12)\n * %M - Minute of the hour (00..59)\n * %-M - Minute of the hour (0..59)\n * %p - Meridian indicator (AM or PM)\n * %P - Meridian indicator (am or pm)\n * %S - Second of the minute (00..60)\n * %-S - Second of the minute (0..60)\n * %w - Day of the week (Sunday is 0, 0..6)\n * %y - Year without a century (00..99)\n * %-y - Year without a century (0..99)\n * %Y - Year with century\n * %z - Timezone offset (+0545)\n * %Z - Timezone offset (+0545)\n * ```\n *\n * @private\n *\n * @param {date} date The date that must be formatted.\n *\n * @param {string} format The formatting string.\n *\n * @param {StrftimeOptions} options The options that will be used to generate a\n * formatted date string.\n *\n * @returns {string} The formatted date string.\n */\nexport function strftime(\n date: Date,\n format: string,\n options: Partial = {},\n): string {\n const {\n abbrDayNames,\n dayNames,\n abbrMonthNames,\n monthNames,\n meridian: AM_PM,\n utc,\n } = { ...DEFAULT_OPTIONS, ...options };\n\n if (isNaN(date.getTime())) {\n throw new Error(\n \"strftime() requires a valid date object, but received an invalid date.\",\n );\n }\n\n const weekDay = utc ? date.getUTCDay() : date.getDay();\n const day = utc ? date.getUTCDate() : date.getDate();\n const year = utc ? date.getUTCFullYear() : date.getFullYear();\n const month = (utc ? date.getUTCMonth() : date.getMonth()) + 1;\n const hour = utc ? date.getUTCHours() : date.getHours();\n let hour12 = hour;\n const meridian = hour > 11 ? \"pm\" : \"am\";\n const secs = utc ? date.getUTCSeconds() : date.getSeconds();\n const mins = utc ? date.getUTCMinutes() : date.getMinutes();\n const offset = utc ? 0 : date.getTimezoneOffset();\n const absOffsetHours = Math.floor(Math.abs(offset / 60));\n const absOffsetMinutes = Math.abs(offset) - absOffsetHours * 60;\n const timezoneoffset =\n (offset > 0 ? \"-\" : \"+\") +\n (absOffsetHours.toString().length < 2\n ? \"0\" + absOffsetHours\n : absOffsetHours) +\n (absOffsetMinutes.toString().length < 2\n ? \"0\" + absOffsetMinutes\n : absOffsetMinutes);\n\n if (hour12 > 12) {\n hour12 = hour12 - 12;\n } else if (hour12 === 0) {\n hour12 = 12;\n }\n\n format = format.replace(\"%a\", abbrDayNames[weekDay]);\n format = format.replace(\"%A\", dayNames[weekDay]);\n format = format.replace(\"%b\", abbrMonthNames[month] as string);\n format = format.replace(\"%B\", monthNames[month] as string);\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(\n \"%-y\",\n year.toString().padStart(2, \"0\").substr(-2).replace(/^0+/, \"\"),\n );\n format = format.replace(\"%Y\", year.toString());\n format = format.replace(/%z/i, timezoneoffset);\n\n return format;\n}\n", "import range from \"lodash/range\";\n\nimport { I18n } from \"../I18n\";\nimport { DateTime, TimeAgoInWordsOptions } from \"../typing\";\nimport { parseDate } from \"./parseDate\";\n\nconst within = (start: number, end: number, actual: number): boolean =>\n actual >= start && actual <= end;\n\n/**\n * Reports the approximate distance in time between two dates.\n *\n * @private\n *\n * @param {I18n} i18n The `I18n` instance.\n *\n * @param {DateTime} fromTime The initial date.\n *\n * @param {DateTime} toTime The end date.\n\n * @param {TimeAgoInWordsOptions} options Options.\n\n * @return {string} The approximate distance between the dates.\n */\nexport function timeAgoInWords(\n i18n: I18n,\n fromTime: DateTime,\n toTime: DateTime,\n options: TimeAgoInWordsOptions = {},\n): string {\n const scope = options.scope || \"datetime.distance_in_words\";\n const t = (name: string, count = 0): string => i18n.t(name, { count, scope });\n\n fromTime = parseDate(fromTime);\n toTime = parseDate(toTime);\n\n let fromInSeconds = fromTime.getTime() / 1000;\n let toInSeconds = toTime.getTime() / 1000;\n\n if (fromInSeconds > toInSeconds) {\n [fromTime, toTime, fromInSeconds, toInSeconds] = [\n toTime,\n fromTime,\n toInSeconds,\n fromInSeconds,\n ];\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\n const distanceInHoursRounded = Math.round(distanceInMinutes / 60);\n const distanceInDaysRounded = Math.round(distanceInDays);\n const distanceInMonthsRounded = Math.round(distanceInDaysRounded / 30);\n\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\n if (within(0, 4, distanceInSeconds)) {\n return t(\"less_than_x_seconds\", 5);\n }\n\n if (within(5, 9, distanceInSeconds)) {\n return t(\"less_than_x_seconds\", 10);\n }\n\n if (within(10, 19, distanceInSeconds)) {\n return t(\"less_than_x_seconds\", 20);\n }\n\n if (within(20, 39, distanceInSeconds)) {\n return t(\"half_a_minute\");\n }\n\n if (within(40, 59, distanceInSeconds)) {\n return t(\"less_than_x_minutes\", 1);\n }\n\n return t(\"x_minutes\", 1);\n }\n\n if (within(2, 44, distanceInMinutes)) {\n return t(\"x_minutes\", distanceInMinutes);\n }\n\n if (within(45, 89, distanceInMinutes)) {\n return t(\"about_x_hours\", 1);\n }\n\n if (within(90, 1439, distanceInMinutes)) {\n return t(\"about_x_hours\", distanceInHoursRounded);\n }\n\n if (within(1440, 2519, distanceInMinutes)) {\n return t(\"x_days\", 1);\n }\n\n if (within(2520, 43_199, distanceInMinutes)) {\n return t(\"x_days\", distanceInDaysRounded);\n }\n\n if (within(43_200, 86_399, distanceInMinutes)) {\n return t(\"about_x_months\", Math.round(distanceInMinutes / 43200));\n }\n\n if (within(86_400, 525_599, distanceInMinutes)) {\n return t(\"x_months\", distanceInMonthsRounded);\n }\n\n let fromYear = fromTime.getFullYear();\n\n if (fromTime.getMonth() + 1 >= 3) {\n fromYear += 1;\n }\n\n let toYear = toTime.getFullYear();\n\n if (toTime.getMonth() + 1 < 3) {\n toYear -= 1;\n }\n\n const leapYears =\n fromYear > toYear\n ? 0\n : range(fromYear, toYear).filter(\n (year) => new Date(year, 1, 29).getMonth() == 1,\n ).length;\n\n const minutesInYear = 525_600;\n const minuteOffsetForLeapYear = leapYears * 1440;\n const minutesWithOffset = distanceInMinutes - minuteOffsetForLeapYear;\n const distanceInYears = Math.trunc(minutesWithOffset / minutesInYear);\n\n const diff = parseFloat(\n (minutesWithOffset / minutesInYear - distanceInYears).toPrecision(3),\n );\n\n if (diff < 0.25) {\n return t(\"about_x_years\", distanceInYears);\n }\n\n if (diff < 0.75) {\n return t(\"over_x_years\", distanceInYears);\n }\n\n return t(\"almost_x_years\", distanceInYears + 1);\n}\n", "import { Dict, MissingTranslationStrategy, Scope } from \"./typing\";\nimport { getFullScope, inferType } from \"./helpers\";\nimport { I18n } from \"./I18n\";\n\n/**\n * Generate a human readable version of the scope as the missing translation.\n * To use it, you have to set `i18n.missingBehavior` to `\"guess\"`.\n *\n * @type {MissingTranslationStrategy}\n *\n * @param {I18n} i18n The I18n instance.\n *\n * @param {Scope} scope The translation scope.\n *\n * @returns {string} The missing translation string.\n */\nexport const guessStrategy: MissingTranslationStrategy = function (\n i18n,\n scope,\n) {\n if (scope instanceof Array) {\n scope = scope.join(i18n.defaultSeparator);\n }\n\n // Get only the last portion of the scope.\n const message = scope.split(i18n.defaultSeparator).slice(-1)[0];\n\n // Replace underscore with space and camelcase with space and\n // lowercase letter.\n return (\n i18n.missingTranslationPrefix +\n message\n .replace(\"_\", \" \")\n .replace(\n /([a-z])([A-Z])/g,\n (_match: string, p1: string, p2: string) => `${p1} ${p2.toLowerCase()}`,\n )\n );\n};\n\n/**\n * Generate the missing translation message, which includes the full scope.\n * To use it, you have to set `i18n.missingBehavior` to `\"message\"`.\n * This is the default behavior.\n *\n * @type {MissingTranslationStrategy}\n *\n * @param {I18n} i18n The I18n instance.\n *\n * @param {Scope} scope The translation scope.\n *\n * @param {Dict} options The translations' options.\n *\n * @returns {string} The missing translation string.\n */\nexport const messageStrategy: MissingTranslationStrategy = (\n i18n,\n scope,\n options,\n) => {\n const fullScope = getFullScope(i18n, scope, options);\n const locale = \"locale\" in options ? options.locale : i18n.locale;\n const localeType = inferType(locale);\n\n const fullScopeWithLocale = [\n localeType == \"string\" ? locale : localeType,\n fullScope,\n ].join(i18n.defaultSeparator);\n\n return `[missing \"${fullScopeWithLocale}\" translation]`;\n};\n\n/**\n * Throw an error whenever a translation cannot be found. The message will\n * includes the full scope.\n * To use it, you have to set `i18n.missingBehavior` to `\"error\"`.\n *\n * @type {MissingTranslationStrategy}\n *\n * @param {I18n} i18n The I18n instance.\n *\n * @param {Scope} scope The translation scope.\n *\n * @param {Dict} options The translations' options.\n *\n * @returns {void}\n */\nexport const errorStrategy: MissingTranslationStrategy = (\n i18n,\n scope,\n options,\n) => {\n const fullScope = getFullScope(i18n, scope, options);\n const fullScopeWithLocale = [i18n.locale, fullScope].join(\n i18n.defaultSeparator,\n );\n\n throw new Error(`Missing translation: ${fullScopeWithLocale}`);\n};\n\nexport class MissingTranslation {\n private i18n: I18n;\n private registry: Dict;\n\n constructor(i18n: I18n) {\n this.i18n = i18n;\n this.registry = {};\n\n this.register(\"guess\", guessStrategy);\n this.register(\"message\", messageStrategy);\n this.register(\"error\", errorStrategy);\n }\n\n /**\n * Registers a new missing translation strategy. This is how messages are\n * defined when a translation cannot be found.\n *\n * The follow example registers a strategy that always return the phrase\n * \"Oops! Missing translation.\".\n *\n * @example\n * ```js\n * i18n.missingTranslation.register(\n * \"oops\",\n * (i18n, scope, options) => \"Oops! Missing translation.\"\n * );\n *\n * i18n.missingBehavior = \"oops\";\n * ```\n *\n * @param {string} name The strategy name.\n *\n * @param {MissingTranslationStrategy} strategy A function that returns a\n * string the result of a missing translation scope.\n *\n * @returns {void}\n */\n public register(name: string, strategy: MissingTranslationStrategy): void {\n this.registry[name] = strategy;\n }\n\n /**\n * Return a missing translation message for the given parameters.\n *\n * @param {Scope} scope The translations' scope.\n *\n * @param {Dict} options The translations' options.\n *\n * @returns {string} The missing translation.\n */\n public get(scope: Scope, options: Dict): string {\n return this.registry[options.missingBehavior ?? this.i18n.missingBehavior](\n this.i18n,\n scope,\n options,\n );\n }\n}\n", "{\n \"zh-TW\": {\n \"js\": {\n \"assets\": {\n \"delete_image_confirm\": \"\u78BA\u5B9A\u8981\u522A\u9664\u9019\u5F35\u5716\u7247\u55CE\uFF1F\"\n },\n \"back\": {\n \"processing_order\": \"\u8A02\u55AE\u8655\u7406\u4E2D...\",\n \"requires_shipping_cost\": \"\u9700\u8981\u984D\u5916\u904B\u8CBB\"\n },\n \"business_profiles\": {\n \"arc_expiry_date\": \"\u5C45\u7559\u8B49\u5230\u671F\u65E5\",\n \"arc_issue_date\": \"\u5C45\u7559\u8B49\u6838\u767C\u65E5\u671F\",\n \"arc_serial_number\": \"\u5C45\u7559\u8B49\u80CC\u5F8C\u5E8F\u865F\",\n \"id_issue_date\": \"\u8EAB\u4EFD\u8B49\u767C\u884C\u65E5\u671F\",\n \"id_number\": \"\u8EAB\u4EFD\u8B49\u5B57\u865F\",\n \"passport_expiry_date\": \"\u8B77\u7167\u5230\u671F\u65E5\",\n \"registration_number\": \"\u767B\u8A18\u8B49\u865F\",\n \"responsible_person_tax_id\": \"\u8CA0\u8CAC\u4EBA\u7A05\u7C4D\u7DE8\u865F\",\n \"resident_certificate_number\": \"\u7D71\u4E00\u8B49\u865F\"\n },\n \"copied\": \"\u8907\u88FD\u6210\u529F\uFF01\",\n \"curations\": {\n \"custom_params\": \"\u81EA\u8A02\u53C3\u6578\",\n \"param_key\": \"\u53C3\u6578\u540D\u7A31\",\n \"param_value\": \"\u53C3\u6578\u503C\"\n },\n \"errors\": {\n \"generic\": \"\u767C\u751F\u932F\u8AA4\uFF0C\u8ACB\u7A0D\u5F8C\u518D\u8A66\",\n \"too_many_requests\": \"\u64CD\u4F5C\u592A\u983B\u7E41\uFF0C\u8ACB\u7A0D\u5F8C\u518D\u8A66\"\n },\n \"gif_size_limit\": \"GIF \u6A94\u6848\u8ACB\u63A7\u5236\u65BC 3MB \u4EE5\u4E0B\u3002\",\n \"image_size_limit\": \"\u5716\u7247\u6A94\u6848\u8ACB\u63A7\u5236\u65BC 1MB \u4EE5\u4E0B\u3002\uFF08\u9577\u5BEC\u6700\u591A 2000px\uFF09\",\n \"inbox\": {\n \"input_exit_confirm\": \"\u8A0A\u606F\u8F38\u5165\u5230\u4E00\u534A\u3002\u8981\u96E2\u958B\u55CE\uFF1F\"\n },\n \"minute\": \"\u5206\",\n \"options\": {\n \"delete_option_confirm\": \"\u78BA\u5B9A\u8981\u522A\u9664\u9019\u500B\u9078\u9805\u55CE\uFF1F\",\n \"delete_question_confirm\": \"\u78BA\u5B9A\u8981\u522A\u9664\u9019\u500B\u984C\u76EE\u55CE\uFF1F\"\n },\n \"praise\": {\n \"fully_cheered\": \"\u5DF2\u96C6\u6EFF\uFF01\",\n \"limit_reached\": \"\u96C6\u6C23\u6EFF\u9EDE\uFF01\u5176\u4ED6\u5C08\u6848\u7B49\u4F60\u652F\u6301\",\n \"login_to_praise\": \"\u60F3\u70BA\u559C\u6B61\u7684\u5C08\u6848\u96C6\u6C23\u55CE\uFF1F\u8ACB\u9EDE\u64CA\u767B\u5165\uFF01\"\n },\n \"removing\": \"\u79FB\u9664\u4E2D...\",\n \"second\": \"\u79D2\",\n \"sending\": \"\u5BC4\u9001\u4E2D...\",\n \"sending_failed\": \"\u5BC4\u9001\u5931\u6557\uFF0C\u8ACB\u91CD\u8A66\u3002\",\n \"unsupported_file_format\": \"\u4E0D\u652F\u63F4\u7684\u6A94\u6848\u683C\u5F0F\",\n \"updates\": {\n \"collapse_archived\": \"\u6536\u8D77\u5DF2\u4E0B\u67B6\u9078\u9805\",\n \"preview_mail\": \"\u9810\u89BD\u4FE1\u4EF6\",\n \"show_archived\": \"\u986F\u793A\u5DF2\u4E0B\u67B6\u9078\u9805\"\n },\n \"uploading\": \"\u4E0A\u50B3\u4E2D...\",\n \"users\": {\n \"email_limit_warning\": \"\u5BC4\u9001\u6B21\u6578\u5230\u9054\u4E0A\u9650\uFF0C\u8ACB 24 \u5C0F\u6642\u5F8C\u518D\u91CD\u8A66\u3002\",\n \"remove_unverified_email_failed\": \"\u79FB\u9664\u5F85\u9A57\u8B49\u4FE1\u7BB1\u5931\u6557\u3002\",\n \"resend_verification\": \"\u91CD\u65B0\u5BC4\u9001\u9A57\u8B49\u4FE1\",\n \"verification_email_sent\": \"\u5DF2\u50B3\u9001\u9A57\u8B49\u4FE1\u4EF6\u81F3\u60A8\u7684 Email \u4FE1\u7BB1\uFF0C\u8ACB\u6536\u4FE1\u3001\u4E26\u9EDE\u64CA\u4FE1\u4E2D\u78BA\u8A8D\u4FE1\u7BB1\u4F4D\u5740\u3002\"\n },\n \"webauthn\": {\n \"authentication_failed\": \"\u5B89\u5168\u91D1\u9470\u9A57\u8B49\u5931\u6557\",\n \"browser_not_supported\": \"\u74B0\u5883\u4E0D\u652F\u63F4\",\n \"initialization_error\": \"\u7121\u6CD5\u555F\u52D5\u5B89\u5168\u91D1\u9470\u9A57\u8B49\",\n \"registration_failed\": \"\u5B89\u5168\u91D1\u9470\u8A3B\u518A\u5931\u6557\",\n \"registration_start_error\": \"\u7121\u6CD5\u958B\u59CB\u8A3B\u518A\u7A0B\u5E8F\",\n \"unsupported_browser\": \"\u60A8\u76EE\u524D\u4F7F\u7528\u7684\u700F\u89BD\u5668\u4E0D\u652F\u63F4\u5B89\u5168\u91D1\u9470\uFF0C\u8ACB\u4F7F\u7528\u5176\u4ED6\u7684\u9A57\u8B49\u65B9\u5F0F\u3001\u6216\u5617\u8A66\u5176\u4ED6\u7684\u700F\u89BD\u5668\u4F7F\u7528\u5B89\u5168\u91D1\u9470\"\n },\n \"zeczec\": \"\u5616\u5616\"\n }\n }\n}\n", "{\n \"en\": {\n \"js\": {\n \"assets\": {\n \"delete_image_confirm\": \"Are you sure you want to delete this image?\"\n },\n \"back\": {\n \"processing_order\": \"Processing your order...\",\n \"requires_shipping_cost\": \"Additional shipping fee required\"\n },\n \"business_profiles\": {\n \"arc_expiry_date\": \"ARC Expiry Date\",\n \"arc_issue_date\": \"ARC Issue Date\",\n \"arc_serial_number\": \"ARC Serial Number\",\n \"id_issue_date\": \"ID Issue Date\",\n \"id_number\": \"ID Number\",\n \"passport_expiry_date\": \"Passport Expiry Date\",\n \"registration_number\": \"Registration Number\",\n \"responsible_person_tax_id\": \"Responsible Person Tax ID\",\n \"resident_certificate_number\": \"Resident Certificate Number\"\n },\n \"copied\": \"Copied!\",\n \"curations\": {\n \"custom_params\": \"Custom Parameters\",\n \"param_key\": \"Parameter Name\",\n \"param_value\": \"Parameter Value\"\n },\n \"errors\": {\n \"generic\": \"An error occurred. Please try again later.\",\n \"too_many_requests\": \"Too many requests. Please try again later.\"\n },\n \"gif_size_limit\": \"Please keep GIF files under 3MB.\",\n \"image_size_limit\": \"Please keep image files under 1MB (max width and height 2000px).\",\n \"inbox\": {\n \"input_exit_confirm\": \"You have unsaved changes. Are you sure you want to leave?\"\n },\n \"minute\": \"mins\",\n \"options\": {\n \"delete_option_confirm\": \"Are you sure you want to delete this option?\",\n \"delete_question_confirm\": \"Are you sure you want to delete this question?\"\n },\n \"praise\": {\n \"fully_cheered\": \"Fully cheered!\",\n \"limit_reached\": \"Cheers maxed out! Support other projects now!\",\n \"login_to_praise\": \"Want to cheer for your favorite project? Click to log in!\"\n },\n \"removing\": \"Removing...\",\n \"second\": \"secs\",\n \"sending\": \"Sending...\",\n \"sending_failed\": \"Sending failed. Please try again.\",\n \"unsupported_file_format\": \"Unsupported file format.\",\n \"updates\": {\n \"collapse_archived\": \"Collapse archived\",\n \"preview_mail\": \"Preview email\",\n \"show_archived\": \"Show archived\"\n },\n \"uploading\": \"Uploading...\",\n \"users\": {\n \"email_limit_warning\": \"Sending limit reached. Please try again in 24 hours.\",\n \"remove_unverified_email_failed\": \"Failed to remove unverified email.\",\n \"resend_verification\": \"Resend verification email\",\n \"verification_email_sent\": \"A verification email has been sent to your email address. Please check your inbox and click the confirmation link to verify your email address.\"\n },\n \"webauthn\": {\n \"authentication_failed\": \"Security key authentication failed\",\n \"browser_not_supported\": \"Environment not supported\",\n \"initialization_error\": \"Failed to initialize security key authentication\",\n \"registration_failed\": \"Security key registration failed\",\n \"registration_start_error\": \"Failed to start registration process\",\n \"unsupported_browser\": \"Your browser does not support security keys. Please try another authentication method or use a different browser.\"\n },\n \"zeczec\": \"ZECZEC\"\n }\n }\n}\n", "import { I18n } from 'i18n-js'\nimport zhTWContent from '../locales/zh-TW.json'\nimport enContent from '../locales/en.json'\n\nconst i18n = new I18n({\n 'zh-TW': zhTWContent['zh-TW'].js,\n en: enContent.en.js\n})\n\ni18n.enableFallback = true\ni18n.defaultLocale = 'zh-TW'\n\nconst body = document.querySelector('body')\nconst currentLocale = body ? body.dataset.locale : i18n.defaultLocale\n\ni18n.locale = currentLocale\nwindow.I18n = i18n\n", "function on (event, selector, callback, capture) {\n document.addEventListener(event, (evt) => {\n if (evt.target instanceof window.Document) {\n callback(evt, evt.target)\n } else {\n const realTarget = evt.target.closest(selector)\n if (evt.target.matches(selector) || realTarget) {\n callback(evt, realTarget || evt.target)\n }\n }\n }, capture)\n}\n\nfunction q (selector, context) {\n return (context || document).querySelector(selector)\n}\n\nfunction each (selector, callback, context) {\n [].slice.call((context || document).querySelectorAll(selector)).forEach(callback)\n}\n\nfunction map (selector, callback, context) {\n return [].slice.call((context || document).querySelectorAll(selector)).map(callback)\n}\n\nfunction element (name, properties, content) {\n const ele = document.createElement(name)\n Object.keys(properties).forEach((key) => {\n ele.setAttribute(key, properties[key])\n })\n if (content) {\n ele.innerHTML = content\n }\n\n return ele\n}\n\nexport { on, q, each, map, element }\n", "import { q, on, each } from './utils'\n\non('mousedown', 'body', () => {\n document.body.classList.add('intent-mouse')\n document.body.classList.remove('intent-keyboard')\n})\n\non('keydown', 'body', () => {\n document.body.classList.add('intent-keyboard')\n document.body.classList.remove('intent-mouse')\n})\n\non('focus', '.js-auto-select', (event) => {\n event.target.select()\n})\n\non('mouseover', '.js-auto-select', (event) => {\n event.target.select()\n})\n\non('click', '[data-copy]', (event, target) => {\n const el = q(target.getAttribute('data-copy'))\n\n function callback () {\n const tooltip = target.getAttribute('aria-label')\n target.setAttribute('aria-label', I18n.t('copied'))\n setTimeout(() => {\n target.setAttribute('aria-label', tooltip)\n }, 1000)\n }\n\n if ('clipboard' in window.navigator) {\n navigator.clipboard.writeText(el.value).then(callback)\n return\n }\n\n el.select()\n\n const range = document.createRange()\n range.selectNodeContents(el)\n const sel = window.getSelection()\n sel.removeAllRanges()\n sel.addRange(range)\n el.setSelectionRange(0, el.value.length)\n document.execCommand('copy')\n callback()\n})\n\non('load', '.js-product-main-image', (event) => {\n const loader = q('.js-image-loader')\n loader.classList.add('hidden')\n event.target.classList.remove('opacity-40')\n}, true)\n\non('ajax:complete', (event, target) => {\n const [xhr, _status] = event.detail\n target.replaceWith(xhr.response)\n})\n\n// Toggle staff bar\nconst bar = q('.js-admin-bar')\nif (bar) bar.classList.toggle('xs:hidden', localStorage.getItem('zeczec-admin'))\n\ndocument.addEventListener('keydown', (event) => {\n if (event.key === '`' && bar) {\n q('.js-admin-bar').classList.toggle('xs:hidden')\n q('.js-admin-bar').setAttribute('open', 'open')\n bar.classList.contains('xs:hidden') ? localStorage.setItem('zeczec-admin', 1) : localStorage.removeItem('zeczec-admin', 1)\n }\n})\n\nfunction toggleDetails (details, force) {\n if (force) {\n details.setAttribute('open', '')\n } else {\n details.removeAttribute('open')\n }\n const content = details.children[1]\n content.classList.toggle('hidden', !force)\n}\n\n// Replacement for \non('click', '.js-summary', (event, target) => {\n const details = target.closest('.js-details')\n toggleDetails(details, !details.hasAttribute('open'))\n if (details.hasAttribute('data-exclusive')) {\n for (const d of document.querySelectorAll('.js-details[data-exclusive]')) {\n if (d !== details) toggleDetails(d, false)\n }\n }\n})\n\n// Newspaper\non('click', '.js-remove-project-fields-row', (event, target) => {\n const container = q('.js-project-fields')\n target.closest('.js-project-fields-row').remove()\n each('.js-project-fields-row', (ele, i) => {\n each('input, select, textarea', (field) => {\n field.setAttribute('id', field.id.replace(/_\\d_/g, '_' + i.toString() + '_'))\n field.setAttribute('name', field.name.replace(/_\\d_/g, '_' + i.toString() + '_'))\n }, ele)\n }, container)\n})\n\n// Projects#show\non('click', '.js-expand-project', (event, target) => {\n target.remove()\n q('.js-expand-project-content').classList.remove('maxh7')\n})\n\non('change', 'input[type=\"file\"]', (evt, fileInput) => {\n if (fileInput.accept.match(/video/)) {\n fileInput.setCustomValidity('')\n } else if (fileInput.accept.match(/image/)) {\n const fileToUpload = fileInput.files[0]\n if (fileToUpload.type.match(/image\\/gif/) && fileToUpload.size > 3 * 1024 * 1024) {\n fileInput.setCustomValidity(I18n.t('gif_size_limit'))\n } else if (!fileToUpload.type.match(/image\\/gif/) && fileToUpload.size > 1 * 1024 * 1024) {\n fileInput.setCustomValidity(I18n.t('image_size_limit'))\n } else {\n fileInput.setCustomValidity('')\n }\n } else if (fileInput.accept.match(/csv/)) {\n fileInput.setCustomValidity('')\n } else {\n fileInput.setCustomValidity(I18n.t('unsupported_file_format'))\n }\n})\n\nconst hasNote = q('.js-has-note')\nconst requireNote = q('.js-require-note')\nif (hasNote && requireNote) {\n toggleRequireNote()\n\n function toggleRequireNote () {\n requireNote.hidden = !hasNote.checked\n each('input', (el) => {\n if (!hasNote.checked) el.checked = false\n }, requireNote)\n }\n hasNote.addEventListener('change', toggleRequireNote)\n}\n\nconst startingSoon = q('[data-starting-in]')\nif (startingSoon) {\n const timeInt = setInterval(() => {\n const timeNow = new Date()\n const startTime = new Date()\n startTime.setTime(startingSoon.getAttribute('data-starting-in'))\n const timeDiffInSeconds = Math.floor((startTime - timeNow) / 1000)\n const min = Math.floor(timeDiffInSeconds / 60)\n const sec = timeDiffInSeconds - min * 60\n startingSoon.textContent = min.toString() + ` ${I18n.t('minute')} ` + sec.toString() + ` ${I18n.t('second')}`\n if (timeDiffInSeconds < 0) {\n clearInterval(timeInt)\n q('.js-preheating').hidden = true\n q('.js-back-project-now').hidden = false\n }\n }, 1000)\n}\n\nconst newReadTime = q('[data-read-time-value]')\nif (newReadTime) {\n const newReadTimeMark = newReadTime.getAttribute('data-read-time-mark')\n const newReadTimeValue = Number(newReadTime.getAttribute('data-read-time-value'))\n const lastReadTime = localStorage.getItem(newReadTimeMark)\n\n if (lastReadTime) {\n each('[data-created-at]', (el) => {\n if (Number(lastReadTime) < Number(el.getAttribute('data-created-at'))) {\n el.style.borderLeft = '1px solid #99ccff'\n }\n })\n }\n\n localStorage.setItem(newReadTimeMark, newReadTimeValue)\n}\n\non('click', '.js-store-cancel', (_event, _target) => {\n q('.js-store-info').hidden = true\n q('.js-store-field').value = ''\n const chooseStore = q('.js-choose-store')\n if (!chooseStore || chooseStore.hidden) {\n const shipToStoreBlock = chooseStore?.closest('.mb-4')\n if (shipToStoreBlock) shipToStoreBlock.hidden = true\n }\n})\n", "import { q, on } from './utils'\n\nlet activeElement\n\non('click', '.js-activatable-trigger', (event) => {\n const activatable = event.target.closest('.js-activatable')\n\n if (activeElement && activeElement !== activatable) {\n deactivateItem(activeElement)\n }\n\n activatable.classList.toggle('active')\n event.target.setAttribute('aria-expanded', activatable.classList.contains('active'))\n\n const arrow = activatable.querySelector('.js-form-select-arrow')\n if (arrow) {\n arrow.style.transform = activatable.classList.contains('active') ? 'rotate(180deg)' : ''\n }\n\n activatable.querySelector('.dropdown').addEventListener('scroll', trackScroll)\n\n activeElement = activatable\n})\n\nfunction trackScroll (event) {\n const hide = event.target.scrollHeight - event.target.clientHeight - event.target.scrollTop < 30\n q('.js-more-indicator').hidden = hide\n event.target.classList.toggle('pb-0', !hide)\n}\n\ndocument.body.addEventListener('click', (evt) => {\n if (activeElement && !evt.target.closest('.js-activatable')) {\n deactivateItem(activeElement)\n }\n})\n\ndocument.addEventListener('keydown', (evt) => {\n if (activeElement && evt.key === 'Escape') {\n deactivateItem(activeElement)\n }\n})\n\nfunction deactivateItem (item) {\n item.classList.remove('active')\n item.querySelector('.dropdown').removeEventListener('scroll', trackScroll)\n const trigger = item.querySelector('.js-activatable-trigger')\n trigger.setAttribute('aria-expanded', false)\n const arrow = item.querySelector('.js-form-select-arrow')\n if (arrow) arrow.style.transform = ''\n activeElement = null\n}\n", "import { on, each, element } from './utils'\n\neach('.js-flash', (flash) => {\n const close = element('button', { type: 'button', class: 'button-close float-right flex-initial js-close-flash' }, '×')\n flash.insertBefore(close, flash.childNodes[-1])\n})\n\non('click', '.js-close-flash', (event) => {\n event.target.closest('.js-flash').remove()\n})\n", "// Entry point for the build script in your package.json\n\nimport Rails from '@rails/ujs'\n\n// Deprecated Polyfills for IE11 and other legacy browsers\nimport './polyfills/remove'\nimport 'element-closest/browser'\n\n// Custom Web Component\nimport '@github/include-fragment-element'\n\nimport './zeczec/locales'\nimport './zeczec/behaviors'\nimport './zeczec/dropdown'\nimport './zeczec/flash'\n\nRails.start()\n"], "mappings": "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", "names": ["require_isArray", "__commonJSMin", "exports", "module", "isArray", "require_freeGlobal", "__commonJSMin", "exports", "module", "freeGlobal", "require_root", "__commonJSMin", "exports", "module", "freeGlobal", "freeSelf", "root", "require_Symbol", "__commonJSMin", "exports", "module", "root", "Symbol", "require_getRawTag", "__commonJSMin", "exports", "module", "Symbol", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "getRawTag", "value", "isOwn", "tag", "unmasked", "e", "result", "require_objectToString", "__commonJSMin", "exports", "module", "objectProto", "nativeObjectToString", "objectToString", "value", "require_baseGetTag", "__commonJSMin", "exports", "module", "Symbol", "getRawTag", "objectToString", "nullTag", "undefinedTag", "symToStringTag", "baseGetTag", "value", "require_isObjectLike", "__commonJSMin", "exports", "module", "isObjectLike", "value", "require_isSymbol", "__commonJSMin", "exports", "module", "baseGetTag", "isObjectLike", "symbolTag", "isSymbol", "value", "require_isKey", "__commonJSMin", "exports", "module", "isArray", "isSymbol", "reIsDeepProp", "reIsPlainProp", "isKey", "value", "object", "type", "require_isObject", "__commonJSMin", "exports", "module", "isObject", "value", "type", "require_isFunction", "__commonJSMin", "exports", "module", "baseGetTag", "isObject", "asyncTag", "funcTag", "genTag", "proxyTag", "isFunction", "value", "tag", "require_coreJsData", "__commonJSMin", "exports", "module", "root", "coreJsData", "require_isMasked", "__commonJSMin", "exports", "module", "coreJsData", "maskSrcKey", "uid", "isMasked", "func", "require_toSource", "__commonJSMin", "exports", "module", "funcProto", "funcToString", "toSource", "func", "e", "require_baseIsNative", "__commonJSMin", "exports", "module", "isFunction", "isMasked", "isObject", "toSource", "reRegExpChar", "reIsHostCtor", "funcProto", "objectProto", "funcToString", "hasOwnProperty", "reIsNative", "baseIsNative", "value", "pattern", "require_getValue", "__commonJSMin", "exports", "module", "getValue", "object", "key", "require_getNative", "__commonJSMin", "exports", "module", "baseIsNative", "getValue", "getNative", "object", "key", "value", "require_nativeCreate", "__commonJSMin", "exports", "module", "getNative", "nativeCreate", "require_hashClear", "__commonJSMin", "exports", "module", "nativeCreate", "hashClear", "require_hashDelete", "__commonJSMin", "exports", "module", "hashDelete", "key", "result", "require_hashGet", "__commonJSMin", "exports", "module", "nativeCreate", "HASH_UNDEFINED", "objectProto", "hasOwnProperty", "hashGet", "key", "data", "result", "require_hashHas", "__commonJSMin", "exports", "module", "nativeCreate", "objectProto", "hasOwnProperty", "hashHas", "key", "data", "require_hashSet", "__commonJSMin", "exports", "module", "nativeCreate", "HASH_UNDEFINED", "hashSet", "key", "value", "data", "require_Hash", "__commonJSMin", "exports", "module", "hashClear", "hashDelete", "hashGet", "hashHas", "hashSet", "Hash", "entries", "index", "length", "entry", "require_listCacheClear", "__commonJSMin", "exports", "module", "listCacheClear", "require_eq", "__commonJSMin", "exports", "module", "eq", "value", "other", "require_assocIndexOf", "__commonJSMin", "exports", "module", "eq", "assocIndexOf", "array", "key", "length", "require_listCacheDelete", "__commonJSMin", "exports", "module", "assocIndexOf", "arrayProto", "splice", "listCacheDelete", "key", "data", "index", "lastIndex", "require_listCacheGet", "__commonJSMin", "exports", "module", "assocIndexOf", "listCacheGet", "key", "data", "index", "require_listCacheHas", "__commonJSMin", "exports", "module", "assocIndexOf", "listCacheHas", "key", "require_listCacheSet", "__commonJSMin", "exports", "module", "assocIndexOf", "listCacheSet", "key", "value", "data", "index", "require_ListCache", "__commonJSMin", "exports", "module", "listCacheClear", "listCacheDelete", "listCacheGet", "listCacheHas", "listCacheSet", "ListCache", "entries", "index", "length", "entry", "require_Map", "__commonJSMin", "exports", "module", "getNative", "root", "Map", "require_mapCacheClear", "__commonJSMin", "exports", "module", "Hash", "ListCache", "Map", "mapCacheClear", "require_isKeyable", "__commonJSMin", "exports", "module", "isKeyable", "value", "type", "require_getMapData", "__commonJSMin", "exports", "module", "isKeyable", "getMapData", "map", "key", "data", "require_mapCacheDelete", "__commonJSMin", "exports", "module", "getMapData", "mapCacheDelete", "key", "result", "require_mapCacheGet", "__commonJSMin", "exports", "module", "getMapData", "mapCacheGet", "key", "require_mapCacheHas", "__commonJSMin", "exports", "module", "getMapData", "mapCacheHas", "key", "require_mapCacheSet", "__commonJSMin", "exports", "module", "getMapData", "mapCacheSet", "key", "value", "data", "size", "require_MapCache", "__commonJSMin", "exports", "module", "mapCacheClear", "mapCacheDelete", "mapCacheGet", "mapCacheHas", "mapCacheSet", "MapCache", "entries", "index", "length", "entry", "require_memoize", "__commonJSMin", "exports", "module", "MapCache", "FUNC_ERROR_TEXT", "memoize", "func", "resolver", "memoized", "args", "key", "cache", "result", "require_memoizeCapped", "__commonJSMin", "exports", "module", "memoize", "MAX_MEMOIZE_SIZE", "memoizeCapped", "func", "result", "key", "cache", "require_stringToPath", "__commonJSMin", "exports", "module", "memoizeCapped", "rePropName", "reEscapeChar", "stringToPath", "string", "result", "match", "number", "quote", "subString", "require_arrayMap", "__commonJSMin", "exports", "module", "arrayMap", "array", "iteratee", "index", "length", "result", "require_baseToString", "__commonJSMin", "exports", "module", "Symbol", "arrayMap", "isArray", "isSymbol", "INFINITY", "symbolProto", "symbolToString", "baseToString", "value", "result", "require_toString", "__commonJSMin", "exports", "module", "baseToString", "toString", "value", "require_castPath", "__commonJSMin", "exports", "module", "isArray", "isKey", "stringToPath", "toString", "castPath", "value", "object", "require_toKey", "__commonJSMin", "exports", "module", "isSymbol", "INFINITY", "toKey", "value", "result", "require_baseGet", "__commonJSMin", "exports", "module", "castPath", "toKey", "baseGet", "object", "path", "index", "length", "require_get", "__commonJSMin", "exports", "module", "baseGet", "get", "object", "path", "defaultValue", "result", "require_baseHas", "__commonJSMin", "exports", "module", "objectProto", "hasOwnProperty", "baseHas", "object", "key", "require_baseIsArguments", "__commonJSMin", "exports", "module", "baseGetTag", "isObjectLike", "argsTag", "baseIsArguments", "value", "require_isArguments", "__commonJSMin", "exports", "module", "baseIsArguments", "isObjectLike", "objectProto", "hasOwnProperty", "propertyIsEnumerable", "isArguments", "value", "require_isIndex", "__commonJSMin", "exports", "module", "MAX_SAFE_INTEGER", "reIsUint", "isIndex", "value", "length", "type", "require_isLength", "__commonJSMin", "exports", "module", "MAX_SAFE_INTEGER", "isLength", "value", "require_hasPath", "__commonJSMin", "exports", "module", "castPath", "isArguments", "isArray", "isIndex", "isLength", "toKey", "hasPath", "object", "path", "hasFunc", "index", "length", "result", "key", "require_has", "__commonJSMin", "exports", "module", "baseHas", "hasPath", "has", "object", "path", "require_stackClear", "__commonJSMin", "exports", "module", "ListCache", "stackClear", "require_stackDelete", "__commonJSMin", "exports", "module", "stackDelete", "key", "data", "result", "require_stackGet", "__commonJSMin", "exports", "module", "stackGet", "key", "require_stackHas", "__commonJSMin", "exports", "module", "stackHas", "key", "require_stackSet", "__commonJSMin", "exports", "module", "ListCache", "Map", "MapCache", "LARGE_ARRAY_SIZE", "stackSet", "key", "value", "data", "pairs", "require_Stack", "__commonJSMin", "exports", "module", "ListCache", "stackClear", "stackDelete", "stackGet", "stackHas", "stackSet", "Stack", "entries", "data", "require_defineProperty", "__commonJSMin", "exports", "module", "getNative", "defineProperty", "func", "e", "require_baseAssignValue", "__commonJSMin", "exports", "module", "defineProperty", "baseAssignValue", "object", "key", "value", "require_assignMergeValue", "__commonJSMin", "exports", "module", "baseAssignValue", "eq", "assignMergeValue", "object", "key", "value", "require_createBaseFor", "__commonJSMin", "exports", "module", "createBaseFor", "fromRight", "object", "iteratee", "keysFunc", "index", "iterable", "props", "length", "key", "require_baseFor", "__commonJSMin", "exports", "module", "createBaseFor", "baseFor", "require_cloneBuffer", "__commonJSMin", "exports", "module", "root", "freeExports", "freeModule", "moduleExports", "Buffer", "allocUnsafe", "cloneBuffer", "buffer", "isDeep", "length", "result", "require_Uint8Array", "__commonJSMin", "exports", "module", "root", "Uint8Array", "require_cloneArrayBuffer", "__commonJSMin", "exports", "module", "Uint8Array", "cloneArrayBuffer", "arrayBuffer", "result", "require_cloneTypedArray", "__commonJSMin", "exports", "module", "cloneArrayBuffer", "cloneTypedArray", "typedArray", "isDeep", "buffer", "require_copyArray", "__commonJSMin", "exports", "module", "copyArray", "source", "array", "index", "length", "require_baseCreate", "__commonJSMin", "exports", "module", "isObject", "objectCreate", "baseCreate", "object", "proto", "result", "require_overArg", "__commonJSMin", "exports", "module", "overArg", "func", "transform", "arg", "require_getPrototype", "__commonJSMin", "exports", "module", "overArg", "getPrototype", "require_isPrototype", "__commonJSMin", "exports", "module", "objectProto", "isPrototype", "value", "Ctor", "proto", "require_initCloneObject", "__commonJSMin", "exports", "module", "baseCreate", "getPrototype", "isPrototype", "initCloneObject", "object", "require_isArrayLike", "__commonJSMin", "exports", "module", "isFunction", "isLength", "isArrayLike", "value", "require_isArrayLikeObject", "__commonJSMin", "exports", "module", "isArrayLike", "isObjectLike", "isArrayLikeObject", "value", "require_stubFalse", "__commonJSMin", "exports", "module", "stubFalse", "require_isBuffer", "__commonJSMin", "exports", "module", "root", "stubFalse", "freeExports", "freeModule", "moduleExports", "Buffer", "nativeIsBuffer", "isBuffer", "require_isPlainObject", "__commonJSMin", "exports", "module", "baseGetTag", "getPrototype", "isObjectLike", "objectTag", "funcProto", "objectProto", "funcToString", "hasOwnProperty", "objectCtorString", "isPlainObject", "value", "proto", "Ctor", "require_baseIsTypedArray", "__commonJSMin", "exports", "module", "baseGetTag", "isLength", "isObjectLike", "argsTag", "arrayTag", "boolTag", "dateTag", "errorTag", "funcTag", "mapTag", "numberTag", "objectTag", "regexpTag", "setTag", "stringTag", "weakMapTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "typedArrayTags", "baseIsTypedArray", "value", "require_baseUnary", "__commonJSMin", "exports", "module", "baseUnary", "func", "value", "require_nodeUtil", "__commonJSMin", "exports", "module", "freeGlobal", "freeExports", "freeModule", "moduleExports", "freeProcess", "nodeUtil", "types", "e", "require_isTypedArray", "__commonJSMin", "exports", "module", "baseIsTypedArray", "baseUnary", "nodeUtil", "nodeIsTypedArray", "isTypedArray", "require_safeGet", "__commonJSMin", "exports", "module", "safeGet", "object", "key", "require_assignValue", "__commonJSMin", "exports", "module", "baseAssignValue", "eq", "objectProto", "hasOwnProperty", "assignValue", "object", "key", "value", "objValue", "require_copyObject", "__commonJSMin", "exports", "module", "assignValue", "baseAssignValue", "copyObject", "source", "props", "object", "customizer", "isNew", "index", "length", "key", "newValue", "require_baseTimes", "__commonJSMin", "exports", "module", "baseTimes", "n", "iteratee", "index", "result", "require_arrayLikeKeys", "__commonJSMin", "exports", "module", "baseTimes", "isArguments", "isArray", "isBuffer", "isIndex", "isTypedArray", "objectProto", "hasOwnProperty", "arrayLikeKeys", "value", "inherited", "isArr", "isArg", "isBuff", "isType", "skipIndexes", "result", "length", "key", "require_nativeKeysIn", "__commonJSMin", "exports", "module", "nativeKeysIn", "object", "result", "key", "require_baseKeysIn", "__commonJSMin", "exports", "module", "isObject", "isPrototype", "nativeKeysIn", "objectProto", "hasOwnProperty", "baseKeysIn", "object", "isProto", "result", "key", "require_keysIn", "__commonJSMin", "exports", "module", "arrayLikeKeys", "baseKeysIn", "isArrayLike", "keysIn", "object", "require_toPlainObject", "__commonJSMin", "exports", "module", "copyObject", "keysIn", "toPlainObject", "value", "require_baseMergeDeep", "__commonJSMin", "exports", "module", "assignMergeValue", "cloneBuffer", "cloneTypedArray", "copyArray", "initCloneObject", "isArguments", "isArray", "isArrayLikeObject", "isBuffer", "isFunction", "isObject", "isPlainObject", "isTypedArray", "safeGet", "toPlainObject", "baseMergeDeep", "object", "source", "key", "srcIndex", "mergeFunc", "customizer", "stack", "objValue", "srcValue", "stacked", "newValue", "isCommon", "isArr", "isBuff", "isTyped", "require_baseMerge", "__commonJSMin", "exports", "module", "Stack", "assignMergeValue", "baseFor", "baseMergeDeep", "isObject", "keysIn", "safeGet", "baseMerge", "object", "source", "srcIndex", "customizer", "stack", "srcValue", "key", "newValue", "require_identity", "__commonJSMin", "exports", "module", "identity", "value", "require_apply", "__commonJSMin", "exports", "module", "apply", "func", "thisArg", "args", "require_overRest", "__commonJSMin", "exports", "module", "apply", "nativeMax", "overRest", "func", "start", "transform", "args", "index", "length", "array", "otherArgs", "require_constant", "__commonJSMin", "exports", "module", "constant", "value", "require_baseSetToString", "__commonJSMin", "exports", "module", "constant", "defineProperty", "identity", "baseSetToString", "func", "string", "require_shortOut", "__commonJSMin", "exports", "module", "HOT_COUNT", "HOT_SPAN", "nativeNow", "shortOut", "func", "count", "lastCalled", "stamp", "remaining", "require_setToString", "__commonJSMin", "exports", "module", "baseSetToString", "shortOut", "setToString", "require_baseRest", "__commonJSMin", "exports", "module", "identity", "overRest", "setToString", "baseRest", "func", "start", "require_isIterateeCall", "__commonJSMin", "exports", "module", "eq", "isArrayLike", "isIndex", "isObject", "isIterateeCall", "value", "index", "object", "type", "require_createAssigner", "__commonJSMin", "exports", "module", "baseRest", "isIterateeCall", "createAssigner", "assigner", "object", "sources", "index", "length", "customizer", "guard", "source", "require_merge", "__commonJSMin", "exports", "module", "baseMerge", "createAssigner", "merge", "object", "source", "srcIndex", "require_setCacheAdd", "__commonJSMin", "exports", "module", "HASH_UNDEFINED", "setCacheAdd", "value", "require_setCacheHas", "__commonJSMin", "exports", "module", "setCacheHas", "value", "require_SetCache", "__commonJSMin", "exports", "module", "MapCache", "setCacheAdd", "setCacheHas", "SetCache", "values", "index", "length", "require_baseFindIndex", "__commonJSMin", "exports", "module", "baseFindIndex", "array", "predicate", "fromIndex", "fromRight", "length", "index", "require_baseIsNaN", "__commonJSMin", "exports", "module", "baseIsNaN", "value", "require_strictIndexOf", "__commonJSMin", "exports", "module", "strictIndexOf", "array", "value", "fromIndex", "index", "length", "require_baseIndexOf", "__commonJSMin", "exports", "module", "baseFindIndex", "baseIsNaN", "strictIndexOf", "baseIndexOf", "array", "value", "fromIndex", "require_arrayIncludes", "__commonJSMin", "exports", "module", "baseIndexOf", "arrayIncludes", "array", "value", "length", "require_arrayIncludesWith", "__commonJSMin", "exports", "module", "arrayIncludesWith", "array", "value", "comparator", "index", "length", "require_cacheHas", "__commonJSMin", "exports", "module", "cacheHas", "cache", "key", "require_Set", "__commonJSMin", "exports", "module", "getNative", "root", "Set", "require_noop", "__commonJSMin", "exports", "module", "noop", "require_setToArray", "__commonJSMin", "exports", "module", "setToArray", "set", "index", "result", "value", "require_createSet", "__commonJSMin", "exports", "module", "Set", "noop", "setToArray", "INFINITY", "createSet", "values", "require_baseUniq", "__commonJSMin", "exports", "module", "SetCache", "arrayIncludes", "arrayIncludesWith", "cacheHas", "createSet", "setToArray", "LARGE_ARRAY_SIZE", "baseUniq", "array", "iteratee", "comparator", "index", "includes", "length", "isCommon", "result", "seen", "set", "outer", "value", "computed", "seenIndex", "require_uniq", "__commonJSMin", "exports", "module", "baseUniq", "uniq", "array", "require_baseSlice", "__commonJSMin", "exports", "module", "baseSlice", "array", "start", "end", "index", "length", "result", "require_castSlice", "__commonJSMin", "exports", "module", "baseSlice", "castSlice", "array", "start", "end", "length", "require_hasUnicode", "__commonJSMin", "exports", "module", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsVarRange", "rsZWJ", "reHasUnicode", "hasUnicode", "string", "require_asciiToArray", "__commonJSMin", "exports", "module", "asciiToArray", "string", "require_unicodeToArray", "__commonJSMin", "exports", "module", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsVarRange", "rsAstral", "rsCombo", "rsFitz", "rsModifier", "rsNonAstral", "rsRegional", "rsSurrPair", "rsZWJ", "reOptMod", "rsOptVar", "rsOptJoin", "rsSeq", "rsSymbol", "reUnicode", "unicodeToArray", "string", "require_stringToArray", "__commonJSMin", "exports", "module", "asciiToArray", "hasUnicode", "unicodeToArray", "stringToArray", "string", "require_createCaseFirst", "__commonJSMin", "exports", "module", "castSlice", "hasUnicode", "stringToArray", "toString", "createCaseFirst", "methodName", "string", "strSymbols", "chr", "trailing", "require_upperFirst", "__commonJSMin", "exports", "module", "createCaseFirst", "upperFirst", "require_capitalize", "__commonJSMin", "exports", "module", "toString", "upperFirst", "capitalize", "string", "require_arrayReduce", "__commonJSMin", "exports", "module", "arrayReduce", "array", "iteratee", "accumulator", "initAccum", "index", "length", "require_basePropertyOf", "__commonJSMin", "exports", "module", "basePropertyOf", "object", "key", "require_deburrLetter", "__commonJSMin", "exports", "module", "basePropertyOf", "deburredLetters", "deburrLetter", "require_deburr", "__commonJSMin", "exports", "module", "deburrLetter", "toString", "reLatin", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsCombo", "reComboMark", "deburr", "string", "require_asciiWords", "__commonJSMin", "exports", "module", "reAsciiWord", "asciiWords", "string", "require_hasUnicodeWord", "__commonJSMin", "exports", "module", "reHasUnicodeWord", "hasUnicodeWord", "string", "require_unicodeWords", "__commonJSMin", "exports", "module", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsDingbatRange", "rsLowerRange", "rsMathOpRange", "rsNonCharRange", "rsPunctuationRange", "rsSpaceRange", "rsUpperRange", "rsVarRange", "rsBreakRange", "rsApos", "rsBreak", "rsCombo", "rsDigits", "rsDingbat", "rsLower", "rsMisc", "rsFitz", "rsModifier", "rsNonAstral", "rsRegional", "rsSurrPair", "rsUpper", "rsZWJ", "rsMiscLower", "rsMiscUpper", "rsOptContrLower", "rsOptContrUpper", "reOptMod", "rsOptVar", "rsOptJoin", "rsOrdLower", "rsOrdUpper", "rsSeq", "rsEmoji", "reUnicodeWord", "unicodeWords", "string", "require_words", "__commonJSMin", "exports", "module", "asciiWords", "hasUnicodeWord", "toString", "unicodeWords", "words", "string", "pattern", "guard", "require_createCompounder", "__commonJSMin", "exports", "module", "arrayReduce", "deburr", "words", "rsApos", "reApos", "createCompounder", "callback", "string", "require_camelCase", "__commonJSMin", "exports", "module", "capitalize", "createCompounder", "camelCase", "result", "word", "index", "require_baseRepeat", "__commonJSMin", "exports", "module", "MAX_SAFE_INTEGER", "nativeFloor", "baseRepeat", "string", "n", "result", "require_trimmedEndIndex", "__commonJSMin", "exports", "module", "reWhitespace", "trimmedEndIndex", "string", "index", "require_baseTrim", "__commonJSMin", "exports", "module", "trimmedEndIndex", "reTrimStart", "baseTrim", "string", "require_toNumber", "__commonJSMin", "exports", "module", "baseTrim", "isObject", "isSymbol", "NAN", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "toNumber", "value", "other", "isBinary", "require_toFinite", "__commonJSMin", "exports", "module", "toNumber", "INFINITY", "MAX_INTEGER", "toFinite", "value", "sign", "require_toInteger", "__commonJSMin", "exports", "module", "toFinite", "toInteger", "value", "result", "remainder", "require_repeat", "__commonJSMin", "exports", "module", "baseRepeat", "isIterateeCall", "toInteger", "toString", "repeat", "string", "n", "guard", "require_arrayPush", "__commonJSMin", "exports", "module", "arrayPush", "array", "values", "index", "length", "offset", "require_isFlattenable", "__commonJSMin", "exports", "module", "Symbol", "isArguments", "isArray", "spreadableSymbol", "isFlattenable", "value", "require_baseFlatten", "__commonJSMin", "exports", "module", "arrayPush", "isFlattenable", "baseFlatten", "array", "depth", "predicate", "isStrict", "result", "index", "length", "value", "require_arraySome", "__commonJSMin", "exports", "module", "arraySome", "array", "predicate", "index", "length", "require_equalArrays", "__commonJSMin", "exports", "module", "SetCache", "arraySome", "cacheHas", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "equalArrays", "array", "other", "bitmask", "customizer", "equalFunc", "stack", "isPartial", "arrLength", "othLength", "arrStacked", "othStacked", "index", "result", "seen", "arrValue", "othValue", "compared", "othIndex", "require_mapToArray", "__commonJSMin", "exports", "module", "mapToArray", "map", "index", "result", "value", "key", "require_equalByTag", "__commonJSMin", "exports", "module", "Symbol", "Uint8Array", "eq", "equalArrays", "mapToArray", "setToArray", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "boolTag", "dateTag", "errorTag", "mapTag", "numberTag", "regexpTag", "setTag", "stringTag", "symbolTag", "arrayBufferTag", "dataViewTag", "symbolProto", "symbolValueOf", "equalByTag", "object", "other", "tag", "bitmask", "customizer", "equalFunc", "stack", "convert", "isPartial", "stacked", "result", "require_baseGetAllKeys", "__commonJSMin", "exports", "module", "arrayPush", "isArray", "baseGetAllKeys", "object", "keysFunc", "symbolsFunc", "result", "require_arrayFilter", "__commonJSMin", "exports", "module", "arrayFilter", "array", "predicate", "index", "length", "resIndex", "result", "value", "require_stubArray", "__commonJSMin", "exports", "module", "stubArray", "require_getSymbols", "__commonJSMin", "exports", "module", "arrayFilter", "stubArray", "objectProto", "propertyIsEnumerable", "nativeGetSymbols", "getSymbols", "object", "symbol", "require_nativeKeys", "__commonJSMin", "exports", "module", "overArg", "nativeKeys", "require_baseKeys", "__commonJSMin", "exports", "module", "isPrototype", "nativeKeys", "objectProto", "hasOwnProperty", "baseKeys", "object", "result", "key", "require_keys", "__commonJSMin", "exports", "module", "arrayLikeKeys", "baseKeys", "isArrayLike", "keys", "object", "require_getAllKeys", "__commonJSMin", "exports", "module", "baseGetAllKeys", "getSymbols", "keys", "getAllKeys", "object", "require_equalObjects", "__commonJSMin", "exports", "module", "getAllKeys", "COMPARE_PARTIAL_FLAG", "objectProto", "hasOwnProperty", "equalObjects", "object", "other", "bitmask", "customizer", "equalFunc", "stack", "isPartial", "objProps", "objLength", "othProps", "othLength", "index", "key", "objStacked", "othStacked", "result", "skipCtor", "objValue", "othValue", "compared", "objCtor", "othCtor", "require_DataView", "__commonJSMin", "exports", "module", "getNative", "root", "DataView", "require_Promise", "__commonJSMin", "exports", "module", "getNative", "root", "Promise", "require_WeakMap", "__commonJSMin", "exports", "module", "getNative", "root", "WeakMap", "require_getTag", "__commonJSMin", "exports", "module", "DataView", "Map", "Promise", "Set", "WeakMap", "baseGetTag", "toSource", "mapTag", "objectTag", "promiseTag", "setTag", "weakMapTag", "dataViewTag", "dataViewCtorString", "mapCtorString", "promiseCtorString", "setCtorString", "weakMapCtorString", "getTag", "value", "result", "Ctor", "ctorString", "require_baseIsEqualDeep", "__commonJSMin", "exports", "module", "Stack", "equalArrays", "equalByTag", "equalObjects", "getTag", "isArray", "isBuffer", "isTypedArray", "COMPARE_PARTIAL_FLAG", "argsTag", "arrayTag", "objectTag", "objectProto", "hasOwnProperty", "baseIsEqualDeep", "object", "other", "bitmask", "customizer", "equalFunc", "stack", "objIsArr", "othIsArr", "objTag", "othTag", "objIsObj", "othIsObj", "isSameTag", "objIsWrapped", "othIsWrapped", "objUnwrapped", "othUnwrapped", "require_baseIsEqual", "__commonJSMin", "exports", "module", "baseIsEqualDeep", "isObjectLike", "baseIsEqual", "value", "other", "bitmask", "customizer", "stack", "require_baseIsMatch", "__commonJSMin", "exports", "module", "Stack", "baseIsEqual", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "baseIsMatch", "object", "source", "matchData", "customizer", "index", "length", "noCustomizer", "data", "key", "objValue", "srcValue", "stack", "result", "require_isStrictComparable", "__commonJSMin", "exports", "module", "isObject", "isStrictComparable", "value", "require_getMatchData", "__commonJSMin", "exports", "module", "isStrictComparable", "keys", "getMatchData", "object", "result", "length", "key", "value", "require_matchesStrictComparable", "__commonJSMin", "exports", "module", "matchesStrictComparable", "key", "srcValue", "object", "require_baseMatches", "__commonJSMin", "exports", "module", "baseIsMatch", "getMatchData", "matchesStrictComparable", "baseMatches", "source", "matchData", "object", "require_baseHasIn", "__commonJSMin", "exports", "module", "baseHasIn", "object", "key", "require_hasIn", "__commonJSMin", "exports", "module", "baseHasIn", "hasPath", "hasIn", "object", "path", "require_baseMatchesProperty", "__commonJSMin", "exports", "module", "baseIsEqual", "get", "hasIn", "isKey", "isStrictComparable", "matchesStrictComparable", "toKey", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "baseMatchesProperty", "path", "srcValue", "object", "objValue", "require_baseProperty", "__commonJSMin", "exports", "module", "baseProperty", "key", "object", "require_basePropertyDeep", "__commonJSMin", "exports", "module", "baseGet", "basePropertyDeep", "path", "object", "require_property", "__commonJSMin", "exports", "module", "baseProperty", "basePropertyDeep", "isKey", "toKey", "property", "path", "require_baseIteratee", "__commonJSMin", "exports", "module", "baseMatches", "baseMatchesProperty", "identity", "isArray", "property", "baseIteratee", "value", "require_baseForOwn", "__commonJSMin", "exports", "module", "baseFor", "keys", "baseForOwn", "object", "iteratee", "require_createBaseEach", "__commonJSMin", "exports", "module", "isArrayLike", "createBaseEach", "eachFunc", "fromRight", "collection", "iteratee", "length", "index", "iterable", "require_baseEach", "__commonJSMin", "exports", "module", "baseForOwn", "createBaseEach", "baseEach", "require_baseMap", "__commonJSMin", "exports", "module", "baseEach", "isArrayLike", "baseMap", "collection", "iteratee", "index", "result", "value", "key", "require_baseSortBy", "__commonJSMin", "exports", "module", "baseSortBy", "array", "comparer", "length", "require_compareAscending", "__commonJSMin", "exports", "module", "isSymbol", "compareAscending", "value", "other", "valIsDefined", "valIsNull", "valIsReflexive", "valIsSymbol", "othIsDefined", "othIsNull", "othIsReflexive", "othIsSymbol", "require_compareMultiple", "__commonJSMin", "exports", "module", "compareAscending", "compareMultiple", "object", "other", "orders", "index", "objCriteria", "othCriteria", "length", "ordersLength", "result", "order", "require_baseOrderBy", "__commonJSMin", "exports", "module", "arrayMap", "baseGet", "baseIteratee", "baseMap", "baseSortBy", "baseUnary", "compareMultiple", "identity", "isArray", "baseOrderBy", "collection", "iteratees", "orders", "iteratee", "value", "index", "result", "key", "criteria", "object", "other", "require_sortBy", "__commonJSMin", "exports", "module", "baseFlatten", "baseOrderBy", "baseRest", "isIterateeCall", "sortBy", "collection", "iteratees", "length", "require_baseZipObject", "__commonJSMin", "exports", "module", "baseZipObject", "props", "values", "assignFunc", "index", "length", "valsLength", "result", "value", "require_zipObject", "__commonJSMin", "exports", "module", "assignValue", "baseZipObject", "zipObject", "props", "values", "require_baseRange", "__commonJSMin", "exports", "module", "nativeCeil", "nativeMax", "baseRange", "start", "end", "step", "fromRight", "index", "length", "result", "require_createRange", "__commonJSMin", "exports", "module", "baseRange", "isIterateeCall", "toFinite", "createRange", "fromRight", "start", "end", "step", "require_range", "__commonJSMin", "exports", "module", "createRange", "range", "linkClickSelector", "buttonClickSelector", "inputChangeSelector", "formSubmitSelector", "formInputClickSelector", "formDisableSelector", "formEnableSelector", "fileInputSelector", "linkDisableSelector", "buttonDisableSelector", "nonce", "loadCSPNonce", "metaTag", "cspNonce", "m", "matches", "element", "selector", "EXPANDO", "getData", "key", "setData", "value", "$", "isContentEditable", "isEditable", "csrfToken", "meta", "csrfParam", "CSRFProtection", "xhr", "token", "refreshCSRFTokens", "param", "input", "AcceptHeaders", "ajax", "options", "prepareOptions", "createXHR", "response", "processResponse", "done", "type", "error", "script", "parser", "error1", "href", "isCrossDomain", "url", "originAnchor", "urlAnchor", "e", "preventDefault", "CustomEvent", "event", "params", "evt", "result", "fire", "obj", "name", "data", "stopEverything", "delegate", "eventType", "handler", "target", "toArray", "serializeElement", "additionalParam", "inputs", "option", "formElements", "form", "el", "handleConfirmWithRails", "rails", "allowAction", "confirm", "message", "callback", "answer", "handleDisabledElement", "enableElement", "isXhrRedirect", "enableLinkElement", "enableFormElement", "enableFormElements", "disableElement", "disableLinkElement", "disableFormElement", "disableFormElements", "replacement", "originalText", "handleMethodWithRails", "link", "method", "csrfToken$1", "csrfParam$1", "formContent", "isRemote", "handleRemoteWithRails", "withCredentials", "dataType", "button", "args", "formSubmitButtonClick", "preventInsignificantClick", "insignificantMetaClick", "Rails", "handleConfirm", "handleMethod", "handleRemote", "start", "originalOptions", "arr", "item", "e", "t", "o", "__classPrivateFieldGet", "receiver", "state", "kind", "f", "__classPrivateFieldSet", "value", "_IncludeFragmentElement_instances", "_IncludeFragmentElement_busy", "_IncludeFragmentElement_observer", "_IncludeFragmentElement_handleData", "_IncludeFragmentElement_getData", "_IncludeFragmentElement_getStringOrErrorData", "_IncludeFragmentElement_task", "_IncludeFragmentElement_fetchDataWithEvents", "privateData", "isWildcard", "accept", "x", "cspTrustedTypesPolicyPromise", "IncludeFragmentElement", "_IncludeFragmentElement", "entries", "entry", "target", "tag", "registry", "policy", "src", "link", "val", "attribute", "oldVal", "style", "request", "__async", "data", "dataTreatedAsString", "template", "fragment", "_a", "cachedData", "eventsToDispatch", "resolve", "eventType", "response", "ct", "responseText", "error", "root", "IncludeFragmentElement", "import_get", "import_has", "import_merge", "import_uniq", "defaultLocaleResolver", "i18n", "locale", "locales", "list", "entry", "currentLocale", "codes", "uniq", "Locales", "localeResolver", "result", "en", "n", "ord", "s", "v0", "t0", "n10", "n100", "useMakePlural", "pluralizer", "includeZero", "ordinal", "_i18n", "count", "defaultPluralizer", "en", "Pluralization", "i18n", "locale", "import_camelCase", "camelCaseKeys", "target", "buffer", "key", "camelCase", "isSet", "value", "createTranslationOptions", "i18n", "scope", "options", "translationOptions", "isSet", "message", "isNumeric", "mathceil", "mathfloor", "bignumberError", "tooManyDigits", "BASE", "LOG_BASE", "MAX_SAFE_INTEGER", "POWS_TEN", "SQRT_BASE", "MAX", "clone", "configObject", "div", "convertBase", "parseNumeric", "P", "BigNumber", "ONE", "DECIMAL_PLACES", "ROUNDING_MODE", "TO_EXP_NEG", "TO_EXP_POS", "MIN_EXP", "MAX_EXP", "CRYPTO", "MODULO_MODE", "POW_PRECISION", "FORMAT", "ALPHABET", "alphabetHasNormalDecimalDigits", "v", "b", "alphabet", "c", "caseChanged", "e", "i", "isNum", "len", "str", "x", "intCheck", "round", "obj", "p", "n", "s", "out", "maxOrMin", "pow2_53", "random53bitInt", "dp", "a", "k", "rand", "args", "sum", "decimal", "toBaseOut", "baseIn", "baseOut", "j", "arr", "arrL", "sign", "callerIsToString", "r", "xc", "y", "rm", "toFixedPoint", "coeffToString", "multiply", "base", "m", "temp", "xlo", "xhi", "carry", "klo", "khi", "compare", "aL", "bL", "cmp", "subtract", "more", "prod", "prodL", "q", "qc", "rem", "remL", "rem0", "xi", "xL", "yc0", "yL", "yz", "yc", "bitFloor", "format", "id", "c0", "ne", "toExponential", "normalise", "basePrefix", "dotAfter", "dotBefore", "isInfinityOrNaN", "whitespaceOrPlus", "p1", "p2", "sd", "d", "ni", "rd", "pows10", "valueOf", "half", "isModExp", "nIsBig", "nIsNeg", "nIsOdd", "isOdd", "t", "xLTy", "xe", "ye", "xcL", "ycL", "ylo", "yhi", "zc", "sqrtBase", "rep", "g1", "g2", "groupSeparator", "intPart", "fractionPart", "isNeg", "intDigits", "md", "d0", "d1", "d2", "exp", "n0", "n1", "z", "l", "min", "max", "name", "zs", "RoundingModeMap", "BigNumber", "expandRoundMode", "roundMode", "_a", "import_repeat", "digitCount", "numeric", "getAbsolutePrecision", "precision", "significant", "roundNumber", "options", "roundMode", "expandRoundMode", "rounder", "BigNumber", "replaceInFormat", "format", "formattedNumber", "unit", "computeSignificand", "significand", "whole", "precision", "limit", "formatNumber", "input", "options", "originalNumber", "BigNumber", "roundedNumber", "roundNumber", "numeric", "isNegative", "isZero", "buffer", "positiveFormat", "_a", "negativeFormat", "_b", "repeat", "_c", "getFullScope", "i18n", "scope", "options", "result", "inferType", "instance", "type", "_b", "_a", "interpolate", "i18n", "message", "options", "buffer", "key", "matches", "value", "placeholder", "name", "isSet", "regex", "lookup", "i18n", "scope", "options", "locale", "localeType", "inferType", "locales", "keys", "getFullScope", "component", "entries", "path", "key", "entry", "isSet", "numberToDelimited", "input", "options", "numeric", "BigNumber", "left", "right", "digitToDelimiter", "import_sortBy", "import_zipObject", "DECIMAL_UNITS", "INVERTED_DECIMAL_UNITS", "zipObject", "key", "numberToHuman", "i18n", "input", "options", "roundOptions", "units", "inferType", "scope", "lookup", "getFullScope", "formattedNumber", "roundNumber", "BigNumber", "unitExponents", "sortBy", "name", "numeric", "calculateExponent", "num", "exponent", "exp", "determineUnit", "expName", "unit", "whole", "significand", "STORAGE_UNITS", "numberToHumanSize", "i18n", "input", "options", "roundMode", "expandRoundMode", "base", "num", "BigNumber", "smallerThanBase", "numberToBeFormatted", "computeExponent", "numeric", "units", "max", "exp", "storageUnitKey", "keyEnd", "exponent", "roundNumber", "format", "unit", "formattedNumber", "parseDate", "input", "date", "matches", "parts", "match", "year", "month", "day", "hour", "minute", "second", "milliseconds", "pluralize", "i18n", "count", "scope", "options", "baseScope", "translations", "message", "lookup", "keys", "missingKeys", "key", "isSet", "DEFAULT_OPTIONS", "strftime", "date", "format", "options", "abbrDayNames", "dayNames", "abbrMonthNames", "monthNames", "AM_PM", "utc", "weekDay", "day", "year", "month", "hour", "hour12", "meridian", "secs", "mins", "offset", "absOffsetHours", "absOffsetMinutes", "timezoneoffset", "import_range", "within", "start", "end", "actual", "timeAgoInWords", "i18n", "fromTime", "toTime", "options", "scope", "t", "name", "count", "parseDate", "fromInSeconds", "toInSeconds", "distanceInSeconds", "distanceInMinutes", "distanceInDays", "distanceInHoursRounded", "distanceInDaysRounded", "distanceInMonthsRounded", "fromYear", "toYear", "leapYears", "range", "year", "minutesInYear", "minuteOffsetForLeapYear", "minutesWithOffset", "distanceInYears", "diff", "guessStrategy", "i18n", "scope", "message", "_match", "p1", "p2", "messageStrategy", "options", "fullScope", "getFullScope", "locale", "localeType", "inferType", "fullScopeWithLocale", "errorStrategy", "MissingTranslation", "name", "strategy", "_a", "DEFAULT_I18N_OPTIONS", "_i18n", "placeholder", "i18n", "message", "options", "key", "I18n", "translations", "locale", "enableFallback", "missingBehavior", "missingTranslationPrefix", "missingPlaceholder", "nullPlaceholder", "defaultLocale", "defaultSeparator", "transformKey", "Pluralization", "Locales", "MissingTranslation", "interpolate", "merge", "newLocale", "inferType", "changed", "scope", "translationOptions", "createTranslationOptions", "translation", "translationOption", "isSet", "lookup", "pluralize", "getFullScope", "entry", "count", "type", "value", "formatNumber", "localizedValue", "input", "date", "parseDate", "format", "camelCaseKeys", "numberToHumanSize", "numberToHuman", "numberToDelimited", "callback", "originalLocale", "strftime", "path", "override", "has", "currentNode", "get", "currentType", "overrideType", "newNode", "components", "prop", "buffer", "component", "items", "wordsConnector", "twoWordsConnector", "lastWordConnector", "size", "fromTime", "toTime", "timeAgoInWords", "zh_TW_default", "en_default", "i18n", "I18n", "zh_TW_default", "en_default", "body", "currentLocale", "on", "event", "selector", "callback", "capture", "evt", "realTarget", "q", "context", "each", "element", "name", "properties", "content", "ele", "key", "on", "event", "target", "el", "q", "callback", "tooltip", "range", "sel", "xhr", "_status", "bar", "toggleDetails", "details", "force", "d", "container", "each", "ele", "field", "evt", "fileInput", "fileToUpload", "hasNote", "requireNote", "toggleRequireNote", "startingSoon", "timeInt", "timeNow", "startTime", "timeDiffInSeconds", "min", "sec", "newReadTime", "newReadTimeMark", "newReadTimeValue", "lastReadTime", "_event", "_target", "chooseStore", "shipToStoreBlock", "activeElement", "on", "event", "activatable", "deactivateItem", "arrow", "trackScroll", "hide", "q", "evt", "item", "each", "flash", "close", "element", "on", "event", "Rails"] }