extra-array
Version:
An array is a collection of values, stored contiguously.
1,034 lines (1,026 loc) • 95.7 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
function getDefaultExportFromCjs (x) {
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
}
var _build$1 = {};
var extraMath = {exports: {}};
(function (module) {
function getDefaultExportFromCjs (x) {
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
}
var _build$1 = {};
var extraNumber = {};
Object.defineProperty(extraNumber, '__esModule', { value: true });
var _build = {};
Object.defineProperty(_build, "__esModule", { value: true });
extraNumber.mean = _build.mean = extraNumber.arithmeticMean = _build.arithmeticMean = extraNumber.variance = _build.variance = extraNumber.range = _build.range = extraNumber.modes = _build.modes = extraNumber.median = _build.median = extraNumber.product = _build.product = extraNumber.sum = _build.sum = extraNumber.radians = _build.radians = extraNumber.degrees = _build.degrees = extraNumber.multinomial = _build.multinomial = extraNumber.binomial = _build.binomial = extraNumber.factorial = _build.factorial = extraNumber.lcm = _build.lcm = extraNumber.hcf = _build.hcf = extraNumber.gcd = _build.gcd = extraNumber.isPrime = _build.isPrime = extraNumber.primeExponentials = _build.primeExponentials = extraNumber.primeFactors = _build.primeFactors = extraNumber.greatestPrimeFactor = _build.greatestPrimeFactor = extraNumber.maxPrimeFactor = _build.maxPrimeFactor = extraNumber.leastPrimeFactor = _build.leastPrimeFactor = extraNumber.minPrimeFactor = _build.minPrimeFactor = extraNumber.aliquotSum = _build.aliquotSum = extraNumber.aliquotParts = _build.aliquotParts = extraNumber.properDivisors = _build.properDivisors = extraNumber.log = _build.log = extraNumber.root = _build.root = extraNumber.nextPow = _build.nextPow = extraNumber.prevPow = _build.prevPow = extraNumber.isPow = _build.isPow = extraNumber.lerp = _build.lerp = extraNumber.map = _build.map = extraNumber.remap = _build.remap = extraNumber.norm = _build.norm = extraNumber.normalize = _build.normalize = extraNumber.clamp = _build.clamp = extraNumber.constrain = _build.constrain = extraNumber.modp = _build.modp = extraNumber.mod = _build.mod = extraNumber.rem = _build.rem = extraNumber.roundDiv = _build.roundDiv = extraNumber.ceilDiv = _build.ceilDiv = extraNumber.floorDiv = _build.floorDiv = extraNumber.round = _build.round = extraNumber.ceil = _build.ceil = extraNumber.floor = _build.floor = extraNumber.compare = _build.compare = extraNumber.significantDigits = _build.significantDigits = extraNumber.is = _build.is = void 0;
extraNumber.toRoman = _build.toRoman = extraNumber.toRomanNumerals = _build.toRomanNumerals = extraNumber.fromRoman = _build.fromRoman = extraNumber.fromRomanNumerals = _build.fromRomanNumerals = extraNumber.cubicMean = _build.cubicMean = extraNumber.rootMeanSquare = _build.rootMeanSquare = extraNumber.quadriaticMean = _build.quadriaticMean = extraNumber.harmonicMean = _build.harmonicMean = extraNumber.geometricMean = _build.geometricMean = void 0;
function is(v) {
return typeof v === "number";
}
extraNumber.is = _build.is = is;
function significantDigits(x) {
var a = x.toExponential();
return a.replace(/e[\+\-0-9]*$/, "").replace(/^0\.?0*|\./, "").length;
}
extraNumber.significantDigits = _build.significantDigits = significantDigits;
function compare(x, y) {
return x - y;
}
extraNumber.compare = _build.compare = compare;
function floor(x, pre = 1) {
return Math.floor(x / pre) * pre;
}
extraNumber.floor = _build.floor = floor;
function ceil(x, pre = 1) {
return Math.ceil(x / pre) * pre;
}
extraNumber.ceil = _build.ceil = ceil;
function round(x, pre = 1) {
return Math.round(x / pre) * pre;
}
extraNumber.round = _build.round = round;
function floorDiv(x, y) {
return Math.floor(x / y);
}
extraNumber.floorDiv = _build.floorDiv = floorDiv;
function ceilDiv(x, y) {
return Math.ceil(x / y);
}
extraNumber.ceilDiv = _build.ceilDiv = ceilDiv;
function roundDiv(x, y) {
return Math.round(x / y);
}
extraNumber.roundDiv = _build.roundDiv = roundDiv;
function rem(x, y) {
return x % y;
}
extraNumber.rem = _build.rem = rem;
function mod(x, y) {
return x - y * Math.floor(x / y);
}
extraNumber.mod = _build.mod = mod;
function modp(x, y) {
return x - Math.abs(y) * Math.floor(x / Math.abs(y));
}
extraNumber.modp = _build.modp = modp;
function constrain(x, min, max) {
return Math.min(Math.max(x, min), max);
}
extraNumber.constrain = _build.constrain = constrain;
extraNumber.clamp = _build.clamp = constrain;
function normalize(x, r, R) {
return (x - r) / (R - r);
}
extraNumber.normalize = _build.normalize = normalize;
extraNumber.norm = _build.norm = normalize;
function remap(x, r, R, t, T) {
return t + ((x - r) / (R - r)) * (T - t);
}
extraNumber.remap = _build.remap = remap;
extraNumber.map = _build.map = remap;
function lerp(x, y, t) {
return x + t * (y - x);
}
extraNumber.lerp = _build.lerp = lerp;
function isPow(x, n) {
if (n === 0)
return x === 0;
var p = log(Math.abs(x), Math.abs(n));
if (p !== Math.floor(p))
return false;
return x < 0 ? n < 0 && (p & 1) === 1 : n > 0 || (p & 1) === 0;
}
extraNumber.isPow = _build.isPow = isPow;
function prevPow(x, n) {
if (x <= 1)
return 0;
var p = Math.floor(Math.log(x) / Math.log(n));
return Math.pow(n, p);
}
extraNumber.prevPow = _build.prevPow = prevPow;
function nextPow(x, n) {
if (x <= 0)
return 1;
var p = Math.ceil(Math.log(x) / Math.log(n));
return Math.pow(n, p);
}
extraNumber.nextPow = _build.nextPow = nextPow;
function root(x, n) {
if ((n & 1) === 0)
return Math.pow(x, 1 / n);
return Math.sign(x) * Math.pow(Math.abs(x), 1 / n);
}
extraNumber.root = _build.root = root;
function log(x, b = Math.E) {
return Math.log(x) / Math.log(b);
}
extraNumber.log = _build.log = log;
function properDivisors(x) {
var x = Math.abs(x), a = [];
for (var i = 1; i < x; i++)
if (x % i === 0)
a.push(i);
return a;
}
extraNumber.properDivisors = _build.properDivisors = properDivisors;
extraNumber.aliquotParts = _build.aliquotParts = properDivisors;
function aliquotSum(x) {
var x = Math.abs(x), a = 0;
for (var i = 0; i < x; i++)
if (x % i === 0)
a += i;
return a;
}
extraNumber.aliquotSum = _build.aliquotSum = aliquotSum;
function minPrimeFactor(x) {
var x = Math.abs(x);
if (x <= 1)
return 0;
if (x <= 3)
return x;
if (x % 2 === 0)
return 2;
if (x % 3 === 0)
return 3;
for (var i = 6, I = Math.sqrt(x) + 1; i <= I; i += 6) {
if (x % (i - 1) === 0)
return i - 1;
if (x % (i + 1) === 0)
return i + 1;
}
return x;
}
extraNumber.minPrimeFactor = _build.minPrimeFactor = minPrimeFactor;
extraNumber.leastPrimeFactor = _build.leastPrimeFactor = minPrimeFactor;
function maxPrimeFactor(x) {
var x = Math.abs(x), a = 0;
if (x <= 1)
return 0;
if (x <= 3)
return x;
for (; x % 2 === 0; a = 2)
x /= 2;
for (; x % 3 === 0; a = 3)
x /= 3;
for (var i = 6, I = Math.sqrt(x) + 1; x > 1 && i <= I; i += 6) {
for (; x % (i - 1) == 0; a = i - 1)
x /= i - 1;
for (; x % (i + 1) == 0; a = i + 1)
x /= i + 1;
}
if (x <= 1)
return a;
return x;
}
extraNumber.maxPrimeFactor = _build.maxPrimeFactor = maxPrimeFactor;
extraNumber.greatestPrimeFactor = _build.greatestPrimeFactor = maxPrimeFactor;
function primeFactors(x) {
var x = Math.abs(x), a = [];
if (x <= 1)
return [];
if (x <= 3)
return [x];
x = pushPrimeFactorTo$(a, x, 2);
x = pushPrimeFactorTo$(a, x, 3);
for (var i = 6, I = Math.sqrt(x) + 1; x > 1 && i <= I; i += 6) {
x = pushPrimeFactorTo$(a, x, i - 1);
x = pushPrimeFactorTo$(a, x, i + 1);
}
if (x > 1)
a.push(x);
return a;
}
extraNumber.primeFactors = _build.primeFactors = primeFactors;
function pushPrimeFactorTo$(a, x, f) {
if (x % f !== 0)
return x;
do {
x /= f;
} while (x % f === 0);
a.push(f);
return x;
}
function primeExponentials(x) {
var x = Math.abs(x), a = [];
if (x <= 1)
return [];
if (x <= 3)
return [[x, 1]];
x = pushPrimeExponentialTo$(a, x, 2);
x = pushPrimeExponentialTo$(a, x, 3);
for (var i = 6, I = Math.sqrt(x) + 1; x > 1 && i <= I; i += 6) {
x = pushPrimeExponentialTo$(a, x, i - 1);
x = pushPrimeExponentialTo$(a, x, i + 1);
}
if (x > 1)
a.push([x, 1]);
return a;
}
extraNumber.primeExponentials = _build.primeExponentials = primeExponentials;
function pushPrimeExponentialTo$(a, x, f) {
if (x % f !== 0)
return x;
var e = 0;
do {
x /= f;
++e;
} while (x % f === 0);
a.push([f, e]);
return x;
}
function isPrime(x) {
return x !== 0 && minPrimeFactor(x) === Math.abs(x);
}
extraNumber.isPrime = _build.isPrime = isPrime;
function gcd(...xs) {
var a = xs[0] || 1;
for (var i = 1, I = xs.length; i < I; i++)
a = gcdPair(a, xs[i]);
return a;
}
extraNumber.gcd = _build.gcd = gcd;
extraNumber.hcf = _build.hcf = gcd;
function gcdPair(x, y) {
while (y !== 0) {
var t = y;
y = x % y;
x = t;
}
return x;
}
function lcm(...xs) {
var a = xs[0] || 1;
for (var i = 1, I = xs.length; i < I; i++)
a = a * xs[i] / gcdPair(a, xs[i]);
return a;
}
extraNumber.lcm = _build.lcm = lcm;
function factorial(n, k = 0) {
if (n < 0)
return 0;
for (var i = k + 1, a = 1; i <= n; i++)
a *= i;
return a;
}
extraNumber.factorial = _build.factorial = factorial;
function binomial(n, k) {
if (k < 0 || k > Math.abs(n))
return 0;
if (n < 0)
return Math.pow(-1, k) * binomial(-n, k);
k = k > n - k ? n - k : k;
for (var a = 1, i = 1; i <= k; i++, n--)
a *= n / i;
return a;
}
extraNumber.binomial = _build.binomial = binomial;
function multinomial(...ks) {
var n = sum(...ks), a = 1;
for (var i = 0, j = 0, I = ks.length; i < I;) {
if (j <= 0)
j = ks[i++];
else
a *= n-- / j--;
}
return a;
}
extraNumber.multinomial = _build.multinomial = multinomial;
function degrees(x) {
return x * (180 / Math.PI);
}
extraNumber.degrees = _build.degrees = degrees;
function radians(x) {
return x * (Math.PI / 180);
}
extraNumber.radians = _build.radians = radians;
function sum(...xs) {
var a = 0;
for (var x of xs)
a += x;
return a;
}
extraNumber.sum = _build.sum = sum;
function product(...xs) {
var a = 1;
for (var x of xs)
a *= x;
return a;
}
extraNumber.product = _build.product = product;
function median(...xs) {
if (xs.length === 0)
return 0;
xs.sort((a, b) => a - b);
var i = xs.length >> 1;
if ((xs.length & 1) === 1)
return xs[i];
return (xs[i - 1] + xs[i]) / 2;
}
extraNumber.median = _build.median = median;
function modes(...xs) {
xs.sort((a, b) => a - b);
var r = maxRepeat(xs);
return getRepeats(xs, r);
}
extraNumber.modes = _build.modes = modes;
function maxRepeat(xs) {
var count = Math.min(xs.length, 1), max = count;
for (var i = 1, I = xs.length; i < I; i++) {
if (xs[i - 1] === xs[i])
count++;
else {
max = Math.max(max, count);
count = 1;
}
}
return Math.max(max, count);
}
function getRepeats(xs, r) {
var a = [];
r--;
for (var i = 0, I = xs.length - r; i < I; i++)
if (xs[i] === xs[i + r])
a.push(xs[i += r]);
return a;
}
function range(...xs) {
return [Math.min(...xs), Math.max(...xs)];
}
extraNumber.range = _build.range = range;
function variance(...xs) {
if (xs.length === 0)
return 0;
var m = arithmeticMean(...xs), a = 0;
for (var x of xs)
a += (x - m) ** 2;
return a / xs.length;
}
extraNumber.variance = _build.variance = variance;
function arithmeticMean(...xs) {
if (xs.length === 0)
return 0;
return sum(...xs) / xs.length;
}
extraNumber.arithmeticMean = _build.arithmeticMean = arithmeticMean;
extraNumber.mean = _build.mean = arithmeticMean;
function geometricMean(...xs) {
var n = xs.length;
return root(product(...xs), n);
}
extraNumber.geometricMean = _build.geometricMean = geometricMean;
function harmonicMean(...xs) {
var n = xs.length;
var p = product(...xs), q = 0;
for (var x of xs)
q += p / x;
return n * p / q;
}
extraNumber.harmonicMean = _build.harmonicMean = harmonicMean;
function quadriaticMean(...xs) {
var n = xs.length, a = 0;
for (var x of xs)
a += x * x;
return Math.sqrt(a / n);
}
extraNumber.quadriaticMean = _build.quadriaticMean = quadriaticMean;
extraNumber.rootMeanSquare = _build.rootMeanSquare = quadriaticMean;
function cubicMean(...xs) {
var n = xs.length, a = 0;
for (var x of xs)
a += x ** 3;
return Math.cbrt(a / n);
}
extraNumber.cubicMean = _build.cubicMean = cubicMean;
const ROMAN_SYMBOLS = ['I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M'];
const ROMAN_VALUES = [1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000];
function fromRomanNumerals(txt) {
var s = ROMAN_SYMBOLS.length - 1;
var n = txt.search(/^\s*-/) >= 0, a = 0;
var txt = txt.replace(/\W/g, '').toUpperCase();
for (var i = 0, I = txt.length; i < I; i += ROMAN_SYMBOLS[s].length) {
while (s >= 0 && txt.substring(i, i + ROMAN_SYMBOLS[s].length) !== ROMAN_SYMBOLS[s])
--s;
if (s < 0)
break;
a += ROMAN_VALUES[s];
}
return n ? -a : a;
}
extraNumber.fromRomanNumerals = _build.fromRomanNumerals = fromRomanNumerals;
extraNumber.fromRoman = _build.fromRoman = fromRomanNumerals;
function toRomanNumerals(x) {
var a = x < 0 ? '-' : '';
var x = Math.abs(x);
for (var s = ROMAN_SYMBOLS.length - 1; s >= 0; --s)
while (x >= ROMAN_VALUES[s]) {
x -= ROMAN_VALUES[s];
a += ROMAN_SYMBOLS[s];
}
return a;
}
extraNumber.toRomanNumerals = _build.toRomanNumerals = toRomanNumerals;
extraNumber.toRoman = _build.toRoman = toRomanNumerals;
extraNumber.default = _build;
(function (exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.quadriaticMean = exports.harmonicMean = exports.geometricMean = exports.mean = exports.arithmeticMean = exports.variance = exports.range = exports.modes = exports.median = exports.product = exports.sum = exports.radians = exports.degrees = exports.multinomial = exports.binomial = exports.factorial = exports.lcm = exports.hcf = exports.gcd = exports.isPrime = exports.primeExponentials = exports.primeFactors = exports.greatestPrimeFactor = exports.maxPrimeFactor = exports.leastPrimeFactor = exports.minPrimeFactor = exports.aliquotSum = exports.aliquotParts = exports.properDivisors = exports.log = exports.root = exports.nextPow = exports.prevPow = exports.isPow = exports.map = exports.remap = exports.lerp = exports.norm = exports.normalize = exports.clamp = exports.constrain = exports.modp = exports.mod = exports.rem = exports.roundDiv = exports.ceilDiv = exports.floorDiv = exports.round = exports.ceil = exports.floor = void 0;
exports.distance = exports.magnitude = exports.cubicMean = exports.rootMeanSquare = void 0;
var extra_number_1 = extraNumber;
Object.defineProperty(exports, "floor", { enumerable: true, get: function () { return extra_number_1.floor; } });
Object.defineProperty(exports, "ceil", { enumerable: true, get: function () { return extra_number_1.ceil; } });
Object.defineProperty(exports, "round", { enumerable: true, get: function () { return extra_number_1.round; } });
Object.defineProperty(exports, "floorDiv", { enumerable: true, get: function () { return extra_number_1.floorDiv; } });
Object.defineProperty(exports, "ceilDiv", { enumerable: true, get: function () { return extra_number_1.ceilDiv; } });
Object.defineProperty(exports, "roundDiv", { enumerable: true, get: function () { return extra_number_1.roundDiv; } });
Object.defineProperty(exports, "rem", { enumerable: true, get: function () { return extra_number_1.rem; } });
Object.defineProperty(exports, "mod", { enumerable: true, get: function () { return extra_number_1.mod; } });
Object.defineProperty(exports, "modp", { enumerable: true, get: function () { return extra_number_1.modp; } });
Object.defineProperty(exports, "constrain", { enumerable: true, get: function () { return extra_number_1.constrain; } });
Object.defineProperty(exports, "clamp", { enumerable: true, get: function () { return extra_number_1.constrain; } });
Object.defineProperty(exports, "normalize", { enumerable: true, get: function () { return extra_number_1.normalize; } });
Object.defineProperty(exports, "norm", { enumerable: true, get: function () { return extra_number_1.normalize; } });
Object.defineProperty(exports, "lerp", { enumerable: true, get: function () { return extra_number_1.lerp; } });
Object.defineProperty(exports, "remap", { enumerable: true, get: function () { return extra_number_1.remap; } });
Object.defineProperty(exports, "map", { enumerable: true, get: function () { return extra_number_1.remap; } });
Object.defineProperty(exports, "isPow", { enumerable: true, get: function () { return extra_number_1.isPow; } });
Object.defineProperty(exports, "prevPow", { enumerable: true, get: function () { return extra_number_1.prevPow; } });
Object.defineProperty(exports, "nextPow", { enumerable: true, get: function () { return extra_number_1.nextPow; } });
Object.defineProperty(exports, "root", { enumerable: true, get: function () { return extra_number_1.root; } });
Object.defineProperty(exports, "log", { enumerable: true, get: function () { return extra_number_1.log; } });
Object.defineProperty(exports, "properDivisors", { enumerable: true, get: function () { return extra_number_1.properDivisors; } });
Object.defineProperty(exports, "aliquotParts", { enumerable: true, get: function () { return extra_number_1.properDivisors; } });
Object.defineProperty(exports, "aliquotSum", { enumerable: true, get: function () { return extra_number_1.aliquotSum; } });
Object.defineProperty(exports, "minPrimeFactor", { enumerable: true, get: function () { return extra_number_1.minPrimeFactor; } });
Object.defineProperty(exports, "leastPrimeFactor", { enumerable: true, get: function () { return extra_number_1.minPrimeFactor; } });
Object.defineProperty(exports, "maxPrimeFactor", { enumerable: true, get: function () { return extra_number_1.maxPrimeFactor; } });
Object.defineProperty(exports, "greatestPrimeFactor", { enumerable: true, get: function () { return extra_number_1.maxPrimeFactor; } });
Object.defineProperty(exports, "primeFactors", { enumerable: true, get: function () { return extra_number_1.primeFactors; } });
Object.defineProperty(exports, "primeExponentials", { enumerable: true, get: function () { return extra_number_1.primeExponentials; } });
Object.defineProperty(exports, "isPrime", { enumerable: true, get: function () { return extra_number_1.isPrime; } });
Object.defineProperty(exports, "gcd", { enumerable: true, get: function () { return extra_number_1.gcd; } });
Object.defineProperty(exports, "hcf", { enumerable: true, get: function () { return extra_number_1.gcd; } });
Object.defineProperty(exports, "lcm", { enumerable: true, get: function () { return extra_number_1.lcm; } });
Object.defineProperty(exports, "factorial", { enumerable: true, get: function () { return extra_number_1.factorial; } });
Object.defineProperty(exports, "binomial", { enumerable: true, get: function () { return extra_number_1.binomial; } });
Object.defineProperty(exports, "multinomial", { enumerable: true, get: function () { return extra_number_1.multinomial; } });
Object.defineProperty(exports, "degrees", { enumerable: true, get: function () { return extra_number_1.degrees; } });
Object.defineProperty(exports, "radians", { enumerable: true, get: function () { return extra_number_1.radians; } });
Object.defineProperty(exports, "sum", { enumerable: true, get: function () { return extra_number_1.sum; } });
Object.defineProperty(exports, "product", { enumerable: true, get: function () { return extra_number_1.product; } });
Object.defineProperty(exports, "median", { enumerable: true, get: function () { return extra_number_1.median; } });
Object.defineProperty(exports, "modes", { enumerable: true, get: function () { return extra_number_1.modes; } });
Object.defineProperty(exports, "range", { enumerable: true, get: function () { return extra_number_1.range; } });
Object.defineProperty(exports, "variance", { enumerable: true, get: function () { return extra_number_1.variance; } });
Object.defineProperty(exports, "arithmeticMean", { enumerable: true, get: function () { return extra_number_1.arithmeticMean; } });
Object.defineProperty(exports, "mean", { enumerable: true, get: function () { return extra_number_1.arithmeticMean; } });
Object.defineProperty(exports, "geometricMean", { enumerable: true, get: function () { return extra_number_1.geometricMean; } });
Object.defineProperty(exports, "harmonicMean", { enumerable: true, get: function () { return extra_number_1.harmonicMean; } });
Object.defineProperty(exports, "quadriaticMean", { enumerable: true, get: function () { return extra_number_1.quadriaticMean; } });
Object.defineProperty(exports, "rootMeanSquare", { enumerable: true, get: function () { return extra_number_1.quadriaticMean; } });
Object.defineProperty(exports, "cubicMean", { enumerable: true, get: function () { return extra_number_1.cubicMean; } });
function magnitude(xs) {
var a = 0;
for (var i = 0, I = xs.length; i < I; i++)
a += xs[i] ** 2;
return Math.sqrt(a);
}
exports.magnitude = magnitude;
function distance(xs, ys) {
var a = 0;
for (var i = 0, I = xs.length; i < I; i++)
a += (xs[i] - ys[i]) ** 2;
return Math.sqrt(a);
}
exports.distance = distance;
} (_build$1));
var index = getDefaultExportFromCjs(_build$1);
module.exports = index;
} (extraMath));
var extraMathExports = extraMath.exports;
getDefaultExportFromCjs(extraMathExports);
var extraFunction = {};
Object.defineProperty(extraFunction, '__esModule', { value: true });
var _build = {};
Object.defineProperty(_build, "__esModule", { value: true });
extraFunction.throttleEarly = _build.throttleEarly = extraFunction.throttle = _build.throttle = extraFunction.debounceEarly = _build.debounceEarly = extraFunction.debounce = _build.debounce = extraFunction.after = _build.after = extraFunction.restrictAfter = _build.restrictAfter = extraFunction.before = _build.before = extraFunction.restrictBefore = _build.restrictBefore = extraFunction.once = _build.once = extraFunction.restrictOnce = _build.restrictOnce = extraFunction.restrict = _build.restrict = extraFunction.delay = _build.delay = extraFunction.defer = _build.defer = extraFunction.curryRight = _build.curryRight = extraFunction.curry = _build.curry = extraFunction.composeRight = _build.composeRight = extraFunction.compose = _build.compose = extraFunction.partialRight = _build.partialRight = extraFunction.attachRight = _build.attachRight = extraFunction.partial = _build.partial = extraFunction.attach = _build.attach = extraFunction.unspread = _build.unspread = extraFunction.spread = _build.spread = extraFunction.flip = _build.flip = extraFunction.reverse = _build.reverse = extraFunction.memoize = _build.memoize = extraFunction.negate = _build.negate = extraFunction.decontextify = _build.decontextify = extraFunction.contextify = _build.contextify = extraFunction.isGenerator = _build.isGenerator = extraFunction.isAsync = _build.isAsync = extraFunction.is = _build.is = extraFunction.apply = _build.apply = extraFunction.call = _build.call = extraFunction.bind = _build.bind = extraFunction.arity = _build.arity = extraFunction.length = _build.length = extraFunction.name = _build.name = extraFunction.ARGUMENTS = _build.ARGUMENTS = extraFunction.COMPARE = _build.COMPARE = extraFunction.IDENTITY = _build.IDENTITY = extraFunction.TRUE = _build.TRUE = extraFunction.FALSE = _build.FALSE = extraFunction.NOOP = _build.NOOP = void 0;
function NOOP(...args) { }
extraFunction.NOOP = _build.NOOP = NOOP;
function FALSE(...args) {
return false;
}
extraFunction.FALSE = _build.FALSE = FALSE;
function TRUE(...args) {
return true;
}
extraFunction.TRUE = _build.TRUE = TRUE;
function IDENTITY(v) {
return v;
}
extraFunction.IDENTITY = _build.IDENTITY = IDENTITY;
function COMPARE(a, b) {
return a < b ? -1 : (a > b ? 1 : 0);
}
extraFunction.COMPARE = _build.COMPARE = COMPARE;
function ARGUMENTS(...args) {
return args;
}
extraFunction.ARGUMENTS = _build.ARGUMENTS = ARGUMENTS;
function name(x) {
return x.name;
}
extraFunction.name = _build.name = name;
function length$1(x) {
return x.length;
}
extraFunction.length = _build.length = length$1;
extraFunction.arity = _build.arity = length$1;
function bind(x, ths, ...prefix) {
return x.bind(ths, ...prefix);
}
extraFunction.bind = _build.bind = bind;
function call(x, ths = null, ...args) {
return x.call(ths, ...args);
}
extraFunction.call = _build.call = call;
function apply(x, ths = null, args) {
return x.apply(ths, args);
}
extraFunction.apply = _build.apply = apply;
function is$1(v) {
return typeof v === "function";
}
extraFunction.is = _build.is = is$1;
function isAsync(v) {
const AsyncFunction = (async function () { }).constructor;
return v instanceof AsyncFunction;
}
extraFunction.isAsync = _build.isAsync = isAsync;
function isGenerator(v) {
const GeneratorFunction = (function* () { }).constructor;
return v instanceof GeneratorFunction;
}
extraFunction.isGenerator = _build.isGenerator = isGenerator;
function contextify(x) {
return function (...args) { return x(this, ...args); };
}
extraFunction.contextify = _build.contextify = contextify;
function decontextify(x) {
return (ths = null, ...args) => x.call(ths, ...args);
}
extraFunction.decontextify = _build.decontextify = decontextify;
function negate(x) {
return (...args) => !x(...args);
}
extraFunction.negate = _build.negate = negate;
function memoize(x, fr = null, cache = null) {
var fr = fr || IDENTITY;
var cache = cache || new Map();
return (...args) => {
var k = fr(...args);
if (cache.has(k))
return cache.get(k);
var v = x(...args);
cache.set(k, v);
return v;
};
}
extraFunction.memoize = _build.memoize = memoize;
function reverse$1(x) {
return (...args) => x(...args.reverse());
}
extraFunction.reverse = _build.reverse = reverse$1;
extraFunction.flip = _build.flip = reverse$1;
function spread(x) {
return (...args) => x(args);
}
extraFunction.spread = _build.spread = spread;
function unspread(x) {
return (args) => x(...args);
}
extraFunction.unspread = _build.unspread = unspread;
function attach(x, ...prefix) {
return (...args) => x(...prefix, ...args);
}
extraFunction.attach = _build.attach = attach;
extraFunction.partial = _build.partial = attach;
function attachRight(x, ...suffix) {
return (...args) => x(...args, ...suffix);
}
extraFunction.attachRight = _build.attachRight = attachRight;
extraFunction.partialRight = _build.partialRight = attachRight;
function compose(...xs) {
return composeRight(...xs.reverse());
}
extraFunction.compose = _build.compose = compose;
function composeRight(...xs) {
return (...args) => {
if (xs.length === 0)
return;
var a = xs[0](...args);
for (var i = 1, I = xs.length; i < I; i++)
a = xs[i](a);
return a;
};
}
extraFunction.composeRight = _build.composeRight = composeRight;
function curry(x, n = x.length) {
return (...args) => {
if (args.length >= n)
return x(...args);
else
return curry((...rest) => x(...args, ...rest), n - args.length);
};
}
extraFunction.curry = _build.curry = curry;
function curryRight(x, n = x.length) {
return curry(reverse$1(x), n);
}
extraFunction.curryRight = _build.curryRight = curryRight;
function defer(x) {
return (...args) => {
var h = setImmediate(flush);
function clear() { clearImmediate(h); h = null; }
function flush() { x(...args); clear(); }
return { clear, flush };
};
}
extraFunction.defer = _build.defer = defer;
function delay(x, t) {
return (...args) => {
var h = setTimeout(flush, t);
function clear() { clearTimeout(h); h = null; }
function flush() { x(...args); clear(); }
return { clear, flush };
};
}
extraFunction.delay = _build.delay = delay;
function restrict(x, start, end = -1) {
var i = -1;
return (...args) => {
if ((++i < start) === (i < end || end < 0))
return;
return x(...args);
};
}
extraFunction.restrict = _build.restrict = restrict;
function restrictOnce(x) {
return restrict(x, 0, 1);
}
extraFunction.restrictOnce = _build.restrictOnce = restrictOnce;
extraFunction.once = _build.once = restrictOnce;
function restrictBefore(x, n) {
return restrict(x, 0, n);
}
extraFunction.restrictBefore = _build.restrictBefore = restrictBefore;
extraFunction.before = _build.before = restrictBefore;
function restrictAfter(x, n) {
return restrict(x, n);
}
extraFunction.restrictAfter = _build.restrictAfter = restrictAfter;
extraFunction.after = _build.after = restrictAfter;
function debounce(x, t, T = -1) {
var savedArgs;
var h = null, H = null;
function clear() {
clearTimeout(h);
clearTimeout(H);
h = H = null;
}
function flush() { x(...savedArgs); clear(); }
return (...args) => {
savedArgs = args;
if (T >= 0)
H = H || setTimeout(flush, T);
if (T < 0 || t < T) {
clearTimeout(h);
h = setTimeout(flush, t);
}
return { clear, flush };
};
}
extraFunction.debounce = _build.debounce = debounce;
function debounceEarly(x, t, T = -1) {
var h = null, H = null;
function clear() { h = H = null; }
function flush() { clear(); }
return (...args) => {
if (!h && !H)
x(...args);
if (T >= 0)
H = H || setTimeout(flush, T);
if (T < 0 || t < T) {
clearTimeout(h);
h = setTimeout(flush, t);
}
return { clear, flush };
};
}
extraFunction.debounceEarly = _build.debounceEarly = debounceEarly;
function throttle(x, t) {
var savedArgs;
var h = null;
function clear() { h = null; }
function flush() { x(...savedArgs); clear(); }
return (...args) => {
savedArgs = args;
h = h || setTimeout(flush, t);
return { clear, flush };
};
}
extraFunction.throttle = _build.throttle = throttle;
function throttleEarly(x, t) {
var h = null;
function clear() { h = null; }
function flush() { clear(); }
return (...args) => {
if (!h)
x(...args);
h = h || setTimeout(flush, t);
return { clear, flush };
};
}
extraFunction.throttleEarly = _build.throttleEarly = throttleEarly;
extraFunction.default = _build;
Object.defineProperty(_build$1, "__esModule", { value: true });
exports.rangedSort$ = _build$1.rangedSort$ = exports.rangedSort = _build$1.rangedSort = exports.sort$ = _build$1.sort$ = exports.toSorted = _build$1.toSorted = exports.sort = _build$1.sort = exports.searchUnsortedValue = _build$1.searchUnsortedValue = exports.hasUnsortedValue = _build$1.hasUnsortedValue = exports.isSorted = _build$1.isSorted = exports.removePath$ = _build$1.removePath$ = exports.remove$ = _build$1.remove$ = exports.remove = _build$1.remove = exports.swapRanges$ = _build$1.swapRanges$ = exports.swapRanges = _build$1.swapRanges = exports.swap$ = _build$1.swap$ = exports.swap = _build$1.swap = exports.setPath$ = _build$1.setPath$ = exports.set$ = _build$1.set$ = exports.with = _build$1.with = exports.set = _build$1.set = exports.hasPath = _build$1.hasPath = exports.getPath = _build$1.getPath = exports.getAll = _build$1.getAll = exports.at = _build$1.at = exports.get = _build$1.get = exports.clear$ = _build$1.clear$ = exports.resize$ = _build$1.resize$ = exports.size = _build$1.size = exports.length = _build$1.length = exports.isEmpty = _build$1.isEmpty = exports.indexRange = _build$1.indexRange = exports.index = _build$1.index = exports.ientries = _build$1.ientries = exports.entries = _build$1.entries = exports.ivalues = _build$1.ivalues = exports.values = _build$1.values = exports.ikeys = _build$1.ikeys = exports.keys = _build$1.keys = exports.is = _build$1.is = exports.deepClone = _build$1.deepClone = exports.clone = _build$1.clone = exports.shallowClone = _build$1.shallowClone = exports.from$ = _build$1.from$ = exports.fromIterable$ = _build$1.fromIterable$ = exports.from = _build$1.from = exports.fromIterable = _build$1.fromIterable = exports.fromApply = _build$1.fromApply = exports.fromApplication = _build$1.fromApplication = exports.fromCall = _build$1.fromCall = exports.fromInvocation = _build$1.fromInvocation = exports.fromRange = _build$1.fromRange = void 0;
exports.hasPermutation = _build$1.hasPermutation = exports.hasSubsequence = _build$1.hasSubsequence = exports.hasInfix = _build$1.hasInfix = exports.endsWith = _build$1.endsWith = exports.hasSuffix = _build$1.hasSuffix = exports.startsWith = _build$1.startsWith = exports.hasPrefix = _build$1.hasPrefix = exports.searchMismatch = _build$1.searchMismatch = exports.searchMismatchedValue = _build$1.searchMismatchedValue = exports.searchAdjacentDuplicate = _build$1.searchAdjacentDuplicate = exports.searchAdjacentDuplicateValue = _build$1.searchAdjacentDuplicateValue = exports.searchValueAll = _build$1.searchValueAll = exports.searchValueRight = _build$1.searchValueRight = exports.searchValue = _build$1.searchValue = exports.hasValue = _build$1.hasValue = exports.includes = _build$1.includes = exports.slice$ = _build$1.slice$ = exports.slice = _build$1.slice = exports.middle = _build$1.middle = exports.back = _build$1.back = exports.last = _build$1.last = exports.init = _build$1.init = exports.tail = _build$1.tail = exports.first = _build$1.first = exports.front = _build$1.front = exports.head = _build$1.head = exports.compare = _build$1.compare = exports.isEqual = _build$1.isEqual = exports.searchMaximumValues = _build$1.searchMaximumValues = exports.searchMinimumValues = _build$1.searchMinimumValues = exports.searchMaximumValue = _build$1.searchMaximumValue = exports.searchMinimumValue = _build$1.searchMinimumValue = exports.maximumEntries = _build$1.maximumEntries = exports.maximums = _build$1.maximums = exports.minimumEntries = _build$1.minimumEntries = exports.minimums = _build$1.minimums = exports.rangeEntries = _build$1.rangeEntries = exports.range = _build$1.range = exports.maxEntry = _build$1.maxEntry = exports.maximumEntry = _build$1.maximumEntry = exports.max = _build$1.max = exports.maximum = _build$1.maximum = exports.minEntry = _build$1.minEntry = exports.minimumEntry = _build$1.minimumEntry = exports.min = _build$1.min = exports.minimum = _build$1.minimum = exports.rangedPartialSort$ = _build$1.rangedPartialSort$ = exports.rangedPartialSort = _build$1.rangedPartialSort = exports.partialSort$ = _build$1.partialSort$ = exports.partialSort = _build$1.partialSort = void 0;
exports.findIndex = _build$1.findIndex = exports.search = _build$1.search = exports.lastIndexOf = _build$1.lastIndexOf = exports.indexOf = _build$1.indexOf = exports.scanUntilRight = _build$1.scanUntilRight = exports.scanUntil = _build$1.scanUntil = exports.scanWhileRight = _build$1.scanWhileRight = exports.scanWhile = _build$1.scanWhile = exports.dropWhileRight = _build$1.dropWhileRight = exports.dropWhile = _build$1.dropWhile = exports.dropRight = _build$1.dropRight = exports.drop = _build$1.drop = exports.takeWhileRight = _build$1.takeWhileRight = exports.takeWhile = _build$1.takeWhile = exports.right = _build$1.right = exports.takeRight = _build$1.takeRight = exports.left = _build$1.left = exports.take = _build$1.take = exports.findRight = _build$1.findRight = exports.find = _build$1.find = exports.shuffle$ = _build$1.shuffle$ = exports.permute$ = _build$1.permute$ = exports.permutation$ = _build$1.permutation$ = exports.randomPermutation$ = _build$1.randomPermutation$ = exports.permutation = _build$1.permutation = exports.randomPermutation = _build$1.randomPermutation = exports.subsequence = _build$1.subsequence = exports.randomSubsequence = _build$1.randomSubsequence = exports.infix = _build$1.infix = exports.randomInfix = _build$1.randomInfix = exports.suffix = _build$1.suffix = exports.randomSuffix = _build$1.randomSuffix = exports.prefix = _build$1.prefix = exports.randomPrefix = _build$1.randomPrefix = exports.value = _build$1.value = exports.randomValue = _build$1.randomValue = exports.searchSubsequence = _build$1.searchSubsequence = exports.searchInfixAll = _build$1.searchInfixAll = exports.searchInfixRight = _build$1.searchInfixRight = exports.searchInfix = _build$1.searchInfix = exports.ipermutations = _build$1.ipermutations = exports.permutations = _build$1.permutations = exports.isubsequences = _build$1.isubsequences = exports.subsequences = _build$1.subsequences = exports.iinfixes = _build$1.iinfixes = exports.infixes = _build$1.infixes = exports.isuffixes = _build$1.isuffixes = exports.suffixes = _build$1.suffixes = exports.iprefixes = _build$1.iprefixes = exports.prefixes = _build$1.prefixes = void 0;
exports.unshift = _build$1.unshift = exports.popFront$ = _build$1.popFront$ = exports.shift$ = _build$1.shift$ = exports.popFront = _build$1.popFront = exports.shift = _build$1.shift = exports.popBack$ = _build$1.popBack$ = exports.pop$ = _build$1.pop$ = exports.popBack = _build$1.popBack = exports.pop = _build$1.pop = exports.append$ = _build$1.append$ = exports.pushBack$ = _build$1.pushBack$ = exports.push$ = _build$1.push$ = exports.append = _build$1.append = exports.pushBack = _build$1.pushBack = exports.push = _build$1.push = exports.fill$ = _build$1.fill$ = exports.fill = _build$1.fill = exports.zip = _build$1.zip = exports.interleave = _build$1.interleave = exports.intermix = _build$1.intermix = exports.interpolate = _build$1.interpolate = exports.intersperse = _build$1.intersperse = exports.adjacentCombine$ = _build$1.adjacentCombine$ = exports.adjacentCombine = _build$1.adjacentCombine = exports.inclusiveScan$ = _build$1.inclusiveScan$ = exports.accumulate = _build$1.accumulate = exports.inclusiveScan = _build$1.inclusiveScan = exports.exclusiveScan$ = _build$1.exclusiveScan$ = exports.exclusiveScan = _build$1.exclusiveScan = exports.flatMap = _build$1.flatMap = exports.flat = _build$1.flat = exports.rejectAt = _build$1.rejectAt = exports.reject$ = _build$1.reject$ = exports.reject = _build$1.reject = exports.filterAt = _build$1.filterAt = exports.filter$ = _build$1.filter$ = exports.findAll = _build$1.findAll = exports.filter = _build$1.filter = exports.reduceRight = _build$1.reduceRight = exports.reduce = _build$1.reduce = exports.map$ = _build$1.map$ = exports.map = _build$1.map = exports.allOf = _build$1.allOf = exports.every = _build$1.every = exports.anyOf = _build$1.anyOf = exports.some = _build$1.some = exports.forEach = _build$1.forEach = exports.searchAll = _build$1.searchAll = exports.findLastIndex = _build$1.findLastIndex = exports.searchRight = _build$1.searchRight = void 0;
exports.cartesianProduct = _build$1.cartesianProduct = exports.symmetricDifference = _build$1.symmetricDifference = exports.difference = _build$1.difference = exports.intersection = _build$1.intersection = exports.union$ = _build$1.union$ = exports.union = _build$1.union = exports.unique = _build$1.unique = exports.isDisjoint = _build$1.isDisjoint = exports.isUnique = _build$1.isUnique = exports.rotate$ = _build$1.rotate$ = exports.rotate = _build$1.rotate = exports.reverse$ = _build$1.reverse$ = exports.toReversed = _build$1.toReversed = exports.reverse = _build$1.reverse = exports.repeat = _build$1.repeat = exports.cycle = _build$1.cycle = exports.join = _build$1.join = exports.concat$ = _build$1.concat$ = exports.concat = _build$1.concat = exports.chunk = _build$1.chunk = exports.group = _build$1.group = exports.cutAtRight = _build$1.cutAtRight = exports.cutAt = _build$1.cutAt = exports.cutRight = _build$1.cutRight = exports.cut = _build$1.cut = exports.splitAt = _build$1.splitAt = exports.split = _build$1.split = exports.partitionAs = _build$1.partitionAs = exports.groupToMap = _build$1.groupToMap = exports.partitionEach = _build$1.partitionEach = exports.partition = _build$1.partition = exports.countAs = _build$1.countAs = exports.countEach = _build$1.countEach = exports.count = _build$1.count = exports.splice$ = _build$1.splice$ = exports.toSpliced = _build$1.toSpliced = exports.splice = _build$1.splice = exports.moveWithin$ = _build$1.moveWithin$ = exports.moveWithin = _build$1.moveWithin = exports.copyWithin$ = _build$1.copyWithin$ = exports.copyWithin = _build$1.copyWithin = exports.copy$ = _build$1.copy$ = exports.copy = _build$1.copy = exports.prepend$ = _build$1.prepend$ = exports.pushFront$ = _build$1.pushFront$ = exports.unshift$ = _build$1.unshift$ = exports.prepend = _build$1.prepend = exports.pushFront = _build$1.pushFront = void 0;
const extra_math_1 = extraMathExports;
const extra_function_1 = extraFunction;
function toSet(x, fm = null) {
if (!fm)
return new Set(x);
var a = new Set(), i = -1;
for (var v of x)
a.add(fm(v, ++i, x));
return a;
}
function fromRange(v, V, dv = 1) {
var n = (V - v) / dv, a = [];
for (var i = 0; i < n; ++i, v += dv)
a.push(v);
return a;
}
exports.fromRange = _build$1.fromRange = fromRange;
function fromInvocation(fn, n) {
var a = [];
for (var i = 0; i < n; ++i)
a.push(fn());
return a;
}
exports.fromInvocation = _build$1.fromInvocation = fromInvocation;
exports.fromCall = _build$1.fromCall = fromInvocation;
function fromApplication(fm, v, n) {
var a = [];
if (n !== 0)
a.push(v);
for (var i = 1; i !== n; ++i)
a.push(v = fm(v, i, null));
return a;
}
exports.fromApplication = _build$1.fromApplication = fromApplication;
exports.fromApply = _build$1.fromApply = fromApplication;
function fromIterable(x) {
return [...x];
}
exports.fromIterable = _build$1.fromIterable = fromIterable;
exports.from = _build$1.from = fromIterable;
function fromIterable$(x) {
return Array.isArray(x) ? x : [...x];
}
exports.fromIterable$ = _build$1.fromIterable$ = fromIterable$;
exports.from$ = _build$1.from$ = fromIterable$;
function shallowClone(x) {
return x.slice();
}
exports.shallowClone = _build$1.shallowClone = shallowClone;
exports.clone = _build$1.clone = shallowClone;
function deepClone(x) {
return structuredClone(x);
}
exports.deepClone = _build$1.deepClone = deepClone;
function is(v) {
return Array.isArray(v);
}
exports.is = _build$1.is = is;
function keys(x) {
return [...x.keys()];
}
exports.keys = _build$1.keys = keys;
function ikeys(x) {
return x.keys();
}
exports.ikeys = _build$1.ikeys = ikeys;
function values(x) {
return x.slice();
}
exports.values = _build$1.values = values;
function ivalues(x) {
return x.values();
}
exports.ivalues = _build$1.ivalues = ivalues;
function entries(x) {
return [...x.entries()];
}
exports.entries = _build$1.entries = entries;
function ientries(x) {
return x.entries();
}
exports.ientries = _build$1.ientries = ientries;
function index(x, i) {
var X = x.length;
return i >= 0 ? Math.min(i, X) : Math.max(X + i, 0);
}
exports.index = _build$1.index = index;
function indexRange(x, i = 0, I = x.length) {
var X = x.length;
var i = i >= 0 ? Math.min(i, X) : Math.max(X + i, 0);
var I = I >= 0 ? Math.min(I, X) : Math.max(X + I, 0);
return [i, Math.max(i, I)];
}
exports.indexRange = _build$1.indexRange = indexRange;
function isEmpty(x) {
return x.length === 0;
}
exports.isEmpty = _build$1.isEmpty = isEmpty;
function length(x, i = 0, I = x.length) {
var [i, I] = indexRange(x, i, I);
return I - i;
}
exports.length = _build$1.length = length;
exports.size = _build$1.size = length;
function resize$(x, n, vd) {
var X = x.length;
x.length = n;
if (n > X)
x.fill(vd, X);
return x;
}
exports.resize$ = _build$1.resize$ = resize$;
function clear$(x) {
x.length = 0;
return x;
}
exports.clear$ = _build$1.clear$ = clear$;
function get(x, i) {
return x[index(x, i)];
}
exports.get = _build$1.get = get;
exports.at = _build$1.at = get;
function getAll(x, is) {
return is.map(i => get(x, i));
}
exports.getAll = _build$1.getAll = getAll;
function getPath(x, p) {
for (var i of p)
x = is(x) ? get(x, i) : undefined;
return x;
}
exports.getPath = _build$1.getPath = getPath;
function hasPath(x, p) {
for (var i of p) {
if (!is(x))
return false;
x = get(x, i);
}
return true;
}
exports.hasPath = _build$1.hasPath = hasPath;
function set(x, i, v) {
return set$(x.slice(), i, v);
}
exports.set = _build$1.set = set;
exports.with = _build$1.with = set;
function set$(x, i, v) {
x[index(x, i)] = v;
return x;
}
exports.set$ = _build$1.set$ = set$;
function setPath$(x, p, v) {
var y = getPath(x, p.slice(0, -1));
if (is(y))
set$(y, last(p), v);
return x;
}
exports.setPath$ = _build$1.setPath$ = setPath$;
function swap(x, i, j) {
return swap$(x.slice(), i, j);
}
exports.swap = _build$1.swap = swap;
function swap$(x, i, j) {
var i = index(x, i), j = index(x, j);
var t = x[i];
x[i] = x[j];
x[j] = t;
return x;
}
exports.swap$ = _build$1.swap$ = swap$;
function swapRaw$(x, i, j) {
var t = x[i];
x[i] = x[j];
x[j] = t;
return x;
}
function swapRanges(x, i, I, j, J) {
var [i, I] = indexRange(x, i, I);
var [j, J] = indexRange(x, j, J);
if (j < i)
[i, I, j, J] = [j, J, i, I];
if (j < I)
return x.slice();
return x.slice(0, i).concat(x.slice(j, J), x.slice(i, j), x.slice(I));
}
exports.swapRanges = _build$1.swapRanges = swapRanges;
function swapRanges$(x, i, I, j, J) {
var [i, I] = indexRange(x, i, I);
var [j, J] = indexRange(x, j, J);
if (j < i)
[i, I, j, J] = [j, J, i, I];
if (j < I)
return x;
var t = x.slice(i, I);
x.splice(i, I - i, ...x.slice(j, J));
x.splice(j, J - j, ...t);
return x;
}
exports.swapRanges$ = _build$1.swapRanges$ = swapRanges$;
function remove(x, i) {
var i = index(x, i);
return x.slice(0, i).concat(x.slice(i + 1));
}
exports.remove = _build$1.remove = remove;
function remove$(x, i) {
x.splice(i, 1);
return x;
}
exports.remove$ = _build$1.remove$ = remove$;
function removePath$(x, p) {
var y = getPath(x, p.slice(0, -1));
if (is(y))
y.splice(last(p), 1);
return x;
}
exports.removePath$ = _build$1.removePath$ = removePath$;
function isSorted(x, fc = null, fm = null) {
return searchUnsortedValue(x, fc, fm) === -1;
}
exports.isSorted = _build$1.isSorted = isSorted;
function hasUnsortedValue(x, fc = null, fm = null) {
return searchUnsortedValue(x, fc, fm) >= 0;
}
exports.hasUnsortedValue = _build$1.hasUnsortedValue = hasUnsortedValue;
function searchUnsortedValue(x, fc = null, fm = null) {
var fc = fc || extra_function_1.COMPARE;
var fm = fm || extra_function_1.IDENTITY;
var X = x.length;
if (X <= 1)
return -1;
var w0 = fm(x[0], 0, x);
for (var i = 1; i < X; ++i) {
var w = fm(x[i], i, x);
if (fc(w0, w) > 0)
return i;
w0 = w;
}
return -1;
}
exports.searchUnsortedValue = _build$1.searchUnsortedValue = searchUnsortedValue;
function sort(x, fc = null, fm = null, fs = null) {
return sort$(x.slice(), fc, fm, fs);
}
exports.sort = _build$1.sort = sort;
exports.toSorted = _build$1.toSorted = sort;
function sort$(x, fc = null, fm = null, fs = null) {
var fc = fc || extra_function_1.COMPARE;
if (!fm && !fs)
return x.sort(fc);
var X = x.length;
var fm = fm || extra_function_1.IDENTITY;
var fs = fs || swapRaw$;
return rangedPartialIntroSort$(x, 0, X, X, fc, fm, fs);
}
exports.sort$ = _build$1.sort$ = sort$;
function rangedSort(x, i, I, fc = null, fm = null, fs = null) {
return rangedSort$(x.slice(), i, I, fc, fm, fs);
}
exports.rangedSort = _build$1.rangedSort = rangedSort;
function rangedSort$(x, i, I, fc = null, fm = null, fs = null) {
var fc = fc || extra_function_1.COMPARE;
var fm = fm || extra_function_1.IDENTITY;
var fs = fs || swapRaw$;
var [i, I] = indexRange(x, i, I);
return rangedPartialIntroSort$(x, i, I, I - i, fc, fm, fs);
}
exports.rangedSort$ = _build$1.rangedSort$ = rangedSort$;
function partialSort(x, n, fc = null, fm = null, fs = null) {
return partialSort$(x.slice(), n, fc, fm, fs);
}
exports.partialSort = _build$1.partialSort = partialSort;
function partialSort$(x, n, fc = null, fm = null, fs = null) {
return rangedPartialSort$(x, 0, x.length, n, fc, fm, fs);
}
exports.partialSort$ = _build$1.p