{"version":3,"file":"js/vendor.f0e9e808cdf040140b8e.bundle.js","mappings":"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","sources":["webpack:///../node_modules/fraction.js/fraction.js"],"sourcesContent":["/**\n * @license Fraction.js v4.1.1 23/05/2021\n * https://www.xarg.org/2014/03/rational-numbers-in-javascript/\n *\n * Copyright (c) 2021, Robert Eisele (robert@xarg.org)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n **/\n\n\n/**\n *\n * This class offers the possibility to calculate fractions.\n * You can pass a fraction in different formats. Either as array, as double, as string or as an integer.\n *\n * Array/Object form\n * [ 0 => , 1 => ]\n * [ n => , d => ]\n *\n * Integer form\n * - Single integer value\n *\n * Double form\n * - Single double value\n *\n * String form\n * 123.456 - a simple double\n * 123/456 - a string fraction\n * 123.'456' - a double with repeating decimal places\n * 123.(456) - synonym\n * 123.45'6' - a double with repeating last place\n * 123.45(6) - synonym\n *\n * Example:\n *\n * var f = new Fraction(\"9.4'31'\");\n * f.mul([-4, 3]).div(4.9);\n *\n */\n\n(function(root) {\n\n \"use strict\";\n\n // Maximum search depth for cyclic rational numbers. 2000 should be more than enough.\n // Example: 1/7 = 0.(142857) has 6 repeating decimal places.\n // If MAX_CYCLE_LEN gets reduced, long cycles will not be detected and toString() only gets the first 10 digits\n var MAX_CYCLE_LEN = 2000;\n\n // Parsed data to avoid calling \"new\" all the time\n var P = {\n \"s\": 1,\n \"n\": 0,\n \"d\": 1\n };\n\n function createError(name) {\n\n function errorConstructor() {\n var temp = Error.apply(this, arguments);\n temp['name'] = this['name'] = name;\n this['stack'] = temp['stack'];\n this['message'] = temp['message'];\n }\n\n /**\n * Error constructor\n *\n * @constructor\n */\n function IntermediateInheritor() { }\n IntermediateInheritor.prototype = Error.prototype;\n errorConstructor.prototype = new IntermediateInheritor();\n\n return errorConstructor;\n }\n\n var DivisionByZero = Fraction['DivisionByZero'] = createError('DivisionByZero');\n var InvalidParameter = Fraction['InvalidParameter'] = createError('InvalidParameter');\n\n function assign(n, s) {\n\n if (isNaN(n = parseInt(n, 10))) {\n throwInvalidParam();\n }\n return n * s;\n }\n\n function throwInvalidParam() {\n throw new InvalidParameter();\n }\n\n function factorize(num) {\n\n var factors = {};\n\n var n = num;\n var i = 2;\n var s = 4;\n\n while (s <= n) {\n\n while (n % i === 0) {\n n /= i;\n factors[i] = (factors[i] || 0) + 1;\n }\n s += 1 + 2 * i++;\n }\n\n if (n !== num) {\n if (n > 1)\n factors[n] = (factors[n] || 0) + 1;\n } else {\n factors[num] = (factors[num] || 0) + 1;\n }\n return factors;\n }\n\n var parse = function(p1, p2) {\n\n var n = 0, d = 1, s = 1;\n var v = 0, w = 0, x = 0, y = 1, z = 1;\n\n var A = 0, B = 1;\n var C = 1, D = 1;\n\n var N = 10000000;\n var M;\n\n if (p1 === undefined || p1 === null) {\n /* void */\n } else if (p2 !== undefined) {\n n = p1;\n d = p2;\n s = n * d;\n } else\n switch (typeof p1) {\n\n case \"object\":\n {\n if (\"d\" in p1 && \"n\" in p1) {\n n = p1[\"n\"];\n d = p1[\"d\"];\n if (\"s\" in p1)\n n *= p1[\"s\"];\n } else if (0 in p1) {\n n = p1[0];\n if (1 in p1)\n d = p1[1];\n } else {\n throwInvalidParam();\n }\n s = n * d;\n break;\n }\n case \"number\":\n {\n if (p1 < 0) {\n s = p1;\n p1 = -p1;\n }\n\n if (p1 % 1 === 0) {\n n = p1;\n } else if (p1 > 0) { // check for != 0, scale would become NaN (log(0)), which converges really slow\n\n if (p1 >= 1) {\n z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10));\n p1 /= z;\n }\n\n // Using Farey Sequences\n // http://www.johndcook.com/blog/2010/10/20/best-rational-approximation/\n\n while (B <= N && D <= N) {\n M = (A + C) / (B + D);\n\n if (p1 === M) {\n if (B + D <= N) {\n n = A + C;\n d = B + D;\n } else if (D > B) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n break;\n\n } else {\n\n if (p1 > M) {\n A += C;\n B += D;\n } else {\n C += A;\n D += B;\n }\n\n if (B > N) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n }\n }\n n *= z;\n } else if (isNaN(p1) || isNaN(p2)) {\n d = n = NaN;\n }\n break;\n }\n case \"string\":\n {\n B = p1.match(/\\d+|./g);\n\n if (B === null)\n throwInvalidParam();\n\n if (B[A] === '-') {// Check for minus sign at the beginning\n s = -1;\n A++;\n } else if (B[A] === '+') {// Check for plus sign at the beginning\n A++;\n }\n\n if (B.length === A + 1) { // Check if it's just a simple number \"1234\"\n w = assign(B[A++], s);\n } else if (B[A + 1] === '.' || B[A] === '.') { // Check if it's a decimal number\n\n if (B[A] !== '.') { // Handle 0.5 and .5\n v = assign(B[A++], s);\n }\n A++;\n\n // Check for decimal places\n if (A + 1 === B.length || B[A + 1] === '(' && B[A + 3] === ')' || B[A + 1] === \"'\" && B[A + 3] === \"'\") {\n w = assign(B[A], s);\n y = Math.pow(10, B[A].length);\n A++;\n }\n\n // Check for repeating places\n if (B[A] === '(' && B[A + 2] === ')' || B[A] === \"'\" && B[A + 2] === \"'\") {\n x = assign(B[A + 1], s);\n z = Math.pow(10, B[A + 1].length) - 1;\n A += 3;\n }\n\n } else if (B[A + 1] === '/' || B[A + 1] === ':') { // Check for a simple fraction \"123/456\" or \"123:456\"\n w = assign(B[A], s);\n y = assign(B[A + 2], 1);\n A += 3;\n } else if (B[A + 3] === '/' && B[A + 1] === ' ') { // Check for a complex fraction \"123 1/2\"\n v = assign(B[A], s);\n w = assign(B[A + 2], s);\n y = assign(B[A + 4], 1);\n A += 5;\n }\n\n if (B.length <= A) { // Check for more tokens on the stack\n d = y * z;\n s = /* void */\n n = x + d * v + z * w;\n break;\n }\n\n /* Fall through on error */\n }\n default:\n throwInvalidParam();\n }\n\n if (d === 0) {\n throw new DivisionByZero();\n }\n\n P[\"s\"] = s < 0 ? -1 : 1;\n P[\"n\"] = Math.abs(n);\n P[\"d\"] = Math.abs(d);\n };\n\n function modpow(b, e, m) {\n\n var r = 1;\n for (; e > 0; b = (b * b) % m, e >>= 1) {\n\n if (e & 1) {\n r = (r * b) % m;\n }\n }\n return r;\n }\n\n\n function cycleLen(n, d) {\n\n for (; d % 2 === 0;\n d /= 2) {\n }\n\n for (; d % 5 === 0;\n d /= 5) {\n }\n\n if (d === 1) // Catch non-cyclic numbers\n return 0;\n\n // If we would like to compute really large numbers quicker, we could make use of Fermat's little theorem:\n // 10^(d-1) % d == 1\n // However, we don't need such large numbers and MAX_CYCLE_LEN should be the capstone,\n // as we want to translate the numbers to strings.\n\n var rem = 10 % d;\n var t = 1;\n\n for (; rem !== 1; t++) {\n rem = rem * 10 % d;\n\n if (t > MAX_CYCLE_LEN)\n return 0; // Returning 0 here means that we don't print it as a cyclic number. It's likely that the answer is `d-1`\n }\n return t;\n }\n\n\n function cycleStart(n, d, len) {\n\n var rem1 = 1;\n var rem2 = modpow(10, len, d);\n\n for (var t = 0; t < 300; t++) { // s < ~log10(Number.MAX_VALUE)\n // Solve 10^s == 10^(s+t) (mod d)\n\n if (rem1 === rem2)\n return t;\n\n rem1 = rem1 * 10 % d;\n rem2 = rem2 * 10 % d;\n }\n return 0;\n }\n\n function gcd(a, b) {\n\n if (!a)\n return b;\n if (!b)\n return a;\n\n while (1) {\n a %= b;\n if (!a)\n return b;\n b %= a;\n if (!b)\n return a;\n }\n };\n\n /**\n * Module constructor\n *\n * @constructor\n * @param {number|Fraction=} a\n * @param {number=} b\n */\n function Fraction(a, b) {\n\n if (!(this instanceof Fraction)) {\n return new Fraction(a, b);\n }\n\n parse(a, b);\n\n if (Fraction['REDUCE']) {\n a = gcd(P[\"d\"], P[\"n\"]); // Abuse a\n } else {\n a = 1;\n }\n\n this[\"s\"] = P[\"s\"];\n this[\"n\"] = P[\"n\"] / a;\n this[\"d\"] = P[\"d\"] / a;\n }\n\n /**\n * Boolean global variable to be able to disable automatic reduction of the fraction\n *\n */\n Fraction['REDUCE'] = 1;\n\n Fraction.prototype = {\n\n \"s\": 1,\n \"n\": 0,\n \"d\": 1,\n\n /**\n * Calculates the absolute value\n *\n * Ex: new Fraction(-4).abs() => 4\n **/\n \"abs\": function() {\n\n return new Fraction(this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Inverts the sign of the current fraction\n *\n * Ex: new Fraction(-4).neg() => 4\n **/\n \"neg\": function() {\n\n return new Fraction(-this[\"s\"] * this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Adds two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => 467 / 30\n **/\n \"add\": function(a, b) {\n\n parse(a, b);\n return new Fraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] + P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Subtracts two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => -427 / 30\n **/\n \"sub\": function(a, b) {\n\n parse(a, b);\n return new Fraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Multiplies two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").mul(3) => 5776 / 111\n **/\n \"mul\": function(a, b) {\n\n parse(a, b);\n return new Fraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Divides two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").inverse().div(3)\n **/\n \"div\": function(a, b) {\n\n parse(a, b);\n return new Fraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"d\"],\n this[\"d\"] * P[\"n\"]\n );\n },\n\n /**\n * Clones the actual object\n *\n * Ex: new Fraction(\"-17.(345)\").clone()\n **/\n \"clone\": function() {\n return new Fraction(this);\n },\n\n /**\n * Calculates the modulo of two rational numbers - a more precise fmod\n *\n * Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)\n **/\n \"mod\": function(a, b) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return new Fraction(NaN);\n }\n\n if (a === undefined) {\n return new Fraction(this[\"s\"] * this[\"n\"] % this[\"d\"], 1);\n }\n\n parse(a, b);\n if (0 === P[\"n\"] && 0 === this[\"d\"]) {\n Fraction(0, 0); // Throw DivisionByZero\n }\n\n /*\n * First silly attempt, kinda slow\n *\n return that[\"sub\"]({\n \"n\": num[\"n\"] * Math.floor((this.n / this.d) / (num.n / num.d)),\n \"d\": num[\"d\"],\n \"s\": this[\"s\"]\n });*/\n\n /*\n * New attempt: a1 / b1 = a2 / b2 * q + r\n * => b2 * a1 = a2 * b1 * q + b1 * b2 * r\n * => (b2 * a1 % a2 * b1) / (b1 * b2)\n */\n return new Fraction(\n this[\"s\"] * (P[\"d\"] * this[\"n\"]) % (P[\"n\"] * this[\"d\"]),\n P[\"d\"] * this[\"d\"]\n );\n },\n\n /**\n * Calculates the fractional gcd of two rational numbers\n *\n * Ex: new Fraction(5,8).gcd(3,7) => 1/56\n */\n \"gcd\": function(a, b) {\n\n parse(a, b);\n\n // gcd(a / b, c / d) = gcd(a, c) / lcm(b, d)\n\n return new Fraction(gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]), P[\"d\"] * this[\"d\"]);\n },\n\n /**\n * Calculates the fractional lcm of two rational numbers\n *\n * Ex: new Fraction(5,8).lcm(3,7) => 15\n */\n \"lcm\": function(a, b) {\n\n parse(a, b);\n\n // lcm(a / b, c / d) = lcm(a, c) / gcd(b, d)\n\n if (P[\"n\"] === 0 && this[\"n\"] === 0) {\n return new Fraction;\n }\n return new Fraction(P[\"n\"] * this[\"n\"], gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]));\n },\n\n /**\n * Calculates the ceil of a rational number\n *\n * Ex: new Fraction('4.(3)').ceil() => (5 / 1)\n **/\n \"ceil\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return new Fraction(Math.ceil(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Calculates the floor of a rational number\n *\n * Ex: new Fraction('4.(3)').floor() => (4 / 1)\n **/\n \"floor\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return new Fraction(Math.floor(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Rounds a rational numbers\n *\n * Ex: new Fraction('4.(3)').round() => (4 / 1)\n **/\n \"round\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return new Fraction(Math.round(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Gets the inverse of the fraction, means numerator and denominator are exchanged\n *\n * Ex: new Fraction([-3, 4]).inverse() => -4 / 3\n **/\n \"inverse\": function() {\n\n return new Fraction(this[\"s\"] * this[\"d\"], this[\"n\"]);\n },\n\n /**\n * Calculates the fraction to some rational exponent, if possible\n *\n * Ex: new Fraction(-1,2).pow(-3) => -8\n */\n \"pow\": function(a, b) {\n\n parse(a, b);\n\n // Trivial case when exp is an integer\n\n if (P['d'] === 1) {\n\n if (P['s'] < 0) {\n return new Fraction(Math.pow(this['s'] * this[\"d\"], P['n']), Math.pow(this[\"n\"], P['n']));\n } else {\n return new Fraction(Math.pow(this['s'] * this[\"n\"], P['n']), Math.pow(this[\"d\"], P['n']));\n }\n }\n\n // Negative roots become complex\n // (-a/b)^(c/d) = x\n // <=> (-1)^(c/d) * (a/b)^(c/d) = x\n // <=> (cos(pi) + i*sin(pi))^(c/d) * (a/b)^(c/d) = x # rotate 1 by 180°\n // <=> (cos(c*pi/d) + i*sin(c*pi/d)) * (a/b)^(c/d) = x # DeMoivre's formula in Q ( https://proofwiki.org/wiki/De_Moivre%27s_Formula/Rational_Index )\n // From which follows that only for c=0 the root is non-complex. c/d is a reduced fraction, so that sin(c/dpi)=0 occurs for d=1, which is handled by our trivial case.\n if (this['s'] < 0) return null;\n\n // Now prime factor n and d\n var N = factorize(this['n']);\n var D = factorize(this['d']);\n\n // Exponentiate and take root for n and d individually\n var n = 1;\n var d = 1;\n for (var k in N) {\n if (k === '1') continue;\n if (k === '0') {\n n = 0;\n break;\n }\n N[k]*= P['n'];\n\n if (N[k] % P['d'] === 0) {\n N[k]/= P['d'];\n } else return null;\n n*= Math.pow(k, N[k]);\n }\n\n for (var k in D) {\n if (k === '1') continue;\n D[k]*= P['n'];\n\n if (D[k] % P['d'] === 0) {\n D[k]/= P['d'];\n } else return null;\n d*= Math.pow(k, D[k]);\n }\n\n if (P['s'] < 0) {\n return new Fraction(d, n);\n }\n return new Fraction(n, d);\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"equals\": function(a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] === P[\"s\"] * P[\"n\"] * this[\"d\"]; // Same as compare() === 0\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"compare\": function(a, b) {\n\n parse(a, b);\n var t = (this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * P[\"n\"] * this[\"d\"]);\n return (0 < t) - (t < 0);\n },\n\n \"simplify\": function(eps) {\n\n // First naive implementation, needs improvement\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return this;\n }\n\n var cont = this['abs']()['toContinued']();\n\n eps = eps || 0.001;\n\n function rec(a) {\n if (a.length === 1)\n return new Fraction(a[0]);\n return rec(a.slice(1))['inverse']()['add'](a[0]);\n }\n\n for (var i = 0; i < cont.length; i++) {\n var tmp = rec(cont.slice(0, i + 1));\n if (tmp['sub'](this['abs']())['abs']().valueOf() < eps) {\n return tmp['mul'](this['s']);\n }\n }\n return this;\n },\n\n /**\n * Check if two rational numbers are divisible\n *\n * Ex: new Fraction(19.6).divisible(1.5);\n */\n \"divisible\": function(a, b) {\n\n parse(a, b);\n return !(!(P[\"n\"] * this[\"d\"]) || ((this[\"n\"] * P[\"d\"]) % (P[\"n\"] * this[\"d\"])));\n },\n\n /**\n * Returns a decimal representation of the fraction\n *\n * Ex: new Fraction(\"100.'91823'\").valueOf() => 100.91823918239183\n **/\n 'valueOf': function() {\n\n return this[\"s\"] * this[\"n\"] / this[\"d\"];\n },\n\n /**\n * Returns a string-fraction representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toFraction() => \"4 1/3\"\n **/\n 'toFraction': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str += '-';\n }\n\n if (d === 1) {\n str += n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str += whole;\n str += \" \";\n n %= d;\n }\n\n str += n;\n str += '/';\n str += d;\n }\n return str;\n },\n\n /**\n * Returns a latex representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toLatex() => \"\\frac{4}{3}\"\n **/\n 'toLatex': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str += '-';\n }\n\n if (d === 1) {\n str += n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str += whole;\n n %= d;\n }\n\n str += \"\\\\frac{\";\n str += n;\n str += '}{';\n str += d;\n str += '}';\n }\n return str;\n },\n\n /**\n * Returns an array of continued fraction elements\n *\n * Ex: new Fraction(\"7/8\").toContinued() => [0,1,7]\n */\n 'toContinued': function() {\n\n var t;\n var a = this['n'];\n var b = this['d'];\n var res = [];\n\n if (isNaN(a) || isNaN(b)) {\n return res;\n }\n\n do {\n res.push(Math.floor(a / b));\n t = a % b;\n a = b;\n b = t;\n } while (a !== 1);\n\n return res;\n },\n\n /**\n * Creates a string representation of a fraction with all digits\n *\n * Ex: new Fraction(\"100.'91823'\").toString() => \"100.(91823)\"\n **/\n 'toString': function(dec) {\n\n var g;\n var N = this[\"n\"];\n var D = this[\"d\"];\n\n if (isNaN(N) || isNaN(D)) {\n return \"NaN\";\n }\n\n if (!Fraction['REDUCE']) {\n g = gcd(N, D);\n N /= g;\n D /= g;\n }\n\n dec = dec || 15; // 15 = decimal places when no repetation\n\n var cycLen = cycleLen(N, D); // Cycle length\n var cycOff = cycleStart(N, D, cycLen); // Cycle start\n\n var str = this['s'] === -1 ? \"-\" : \"\";\n\n str += N / D | 0;\n\n N %= D;\n N *= 10;\n\n if (N)\n str += \".\";\n\n if (cycLen) {\n\n for (var i = cycOff; i--;) {\n str += N / D | 0;\n N %= D;\n N *= 10;\n }\n str += \"(\";\n for (var i = cycLen; i--;) {\n str += N / D | 0;\n N %= D;\n N *= 10;\n }\n str += \")\";\n } else {\n for (var i = dec; N && i--;) {\n str += N / D | 0;\n N %= D;\n N *= 10;\n }\n }\n return str;\n }\n };\n\n if (typeof define === \"function\" && define[\"amd\"]) {\n define([], function() {\n return Fraction;\n });\n } else if (typeof exports === \"object\") {\n Object.defineProperty(Fraction, \"__esModule\", { 'value': true });\n Fraction['default'] = Fraction;\n Fraction['Fraction'] = Fraction;\n module['exports'] = Fraction;\n } else {\n root['Fraction'] = Fraction;\n }\n\n})(this);\n"],"names":["root","P","createError","name","errorConstructor","temp","Error","apply","this","arguments","IntermediateInheritor","prototype","DivisionByZero","Fraction","InvalidParameter","assign","n","s","isNaN","parseInt","throwInvalidParam","factorize","num","factors","i","parse","p1","p2","M","d","v","w","x","y","z","A","B","C","D","N","undefined","Math","pow","floor","log","LN10","NaN","match","length","abs","gcd","a","b","places","ceil","round","k","t","eps","cont","rec","slice","tmp","valueOf","excludeWhole","whole","str","res","push","dec","g","cycLen","rem","cycleLen","cycOff","len","rem1","rem2","e","m","r","modpow","cycleStart"],"sourceRoot":""}