UNPKG

@dashkite/joy

Version:

*The simplicity of Lodash with the functional flair of Rambda.*

147 lines (146 loc) 22.3 kB
var cat, compact, complement, dequeue, difference, dupes, enqueue, fifth, fill, first, floor, fourth, insert, intersection, last, nth, pair, peek, pluck, poke, pop, push, random, range, remove, rest, round, second, shift, shuffle, slice, sort, splice, third, union, unique, unshift, splice1 = [].splice; import { curry, flip, compose, partial, _, identity, unary, binary, ternary, detach } from "./function"; import { equal } from "./value"; import * as Se from "./set"; nth = curry(function(i, ax) { return ax[i - 1]; }); first = nth(1); second = nth(2); third = nth(3); fourth = nth(4); fifth = nth(5); last = function(arg) { var arg, last, rest; [...rest] = arg, [last] = splice1.call(rest, -1); return last; }; rest = function([first, ...rest]) { return rest; }; // Array mutators push = curry(function(a, ax) { ax.push(a); return ax; }); pop = detach(Array.prototype.pop); shift = detach(Array.prototype.shift); unshift = curry(function(a, ax) { ax.unshift(a); return ax; }); enqueue = unshift; dequeue = pop; // Add for completeness peek = function(ax) { return ax[ax.length - 1]; }; poke = function(a, ax) { return ax[ax.length - 1] = a; }; // true splice without weird insertion option // or compose-breaking return value splice = curry(function(i, n, ax) { ax.splice(i, n); return ax; }); insert = curry(function(i, a, ax) { ax.splice(i, 0, a); return ax; }); remove = curry(function(a, ax) { var i; if ((i = ax.indexOf(a)) !== -1) { ax.splice(i, 1); } return ax; }); cat = detach(Array.prototype.concat); slice = curry(function(i, j, ax) { return ax.slice(i, j); }); fill = curry(function(a, ax) { return ax.fill(a); }); range = curry(function(start, finish) { return (function() { var results = []; for(var k = start; start <= finish ? k <= finish : k >= finish; start <= finish ? k++ : k--){ results.push(k); } return results; }).apply(this); }); ({ random, round } = Math); pluck = function(ax) { return ax[round(random() * (ax.length - 1))]; }; pair = curry(function(a, b) { return [ a, b ]; }); sort = curry(function(f, ax) { return ax.toSorted(f, ax); }); compact = curry(function(ax) { return ax.filter(function(a) { return a != null; }); }); union = compose([ Array.from, Se.union ]); intersection = compose([ Array.from, Se.intersection ]); complement = compose([ Array.from, Se.complement ]); difference = compose([ Array.from, Se.difference ]); unique = compose([ Array.from, Se.unique ]); dupes = compose([ Array.from, Se.dupes ]); // https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle ({ floor, random } = Math); shuffle = function(ax) { var bx, i, j; bx = [ ...ax ]; i = bx.length; if (!(i <= 1)) { while(--i > 0){ // the distinguishing characteristic of fisher-yates is that the random // value generated is bounded by the iterator index (Math.random() * i) // instead of the size of the array (Math.random() * bx.length) j = floor(random() * (i + 1)); [bx[i], bx[j]] = [ bx[j], bx[i] ]; } if (equal(ax, bx)) { return shuffle(ax); } else { return bx; } } else { return bx; } }; export { first, second, third, fourth, fifth, nth, last, rest, push, pop, shift, unshift, enqueue, dequeue, peek, poke, splice, insert, remove, cat, slice, fill, range, pluck, pair, sort, compact, union, intersection, complement, difference, unique, dupes, shuffle }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS9qb3kvc3JjL2FycmF5LmNvZmZlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFBLEdBQUEsRUFBQSxPQUFBLEVBQUEsVUFBQSxFQUFBLE9BQUEsRUFBQSxVQUFBLEVBQUEsS0FBQSxFQUFBLE9BQUEsRUFBQSxLQUFBLEVBQUEsSUFBQSxFQUFBLEtBQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxFQUFBLE1BQUEsRUFBQSxZQUFBLEVBQUEsSUFBQSxFQUFBLEdBQUEsRUFBQSxJQUFBLEVBQUEsSUFBQSxFQUFBLEtBQUEsRUFBQSxJQUFBLEVBQUEsR0FBQSxFQUFBLElBQUEsRUFBQSxNQUFBLEVBQUEsS0FBQSxFQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsS0FBQSxFQUFBLE1BQUEsRUFBQSxLQUFBLEVBQUEsT0FBQSxFQUFBLEtBQUEsRUFBQSxJQUFBLEVBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxFQUFBLE9BQUE7RUFBQTs7QUFBQSxPQUFBO0VBQVEsS0FBUjtFQUFlLElBQWY7RUFBcUIsT0FBckI7RUFBOEIsT0FBOUI7RUFBdUMsQ0FBdkM7RUFBMEMsUUFBMUM7RUFDRSxLQURGO0VBQ1MsTUFEVDtFQUNpQixPQURqQjtFQUMwQixNQUQxQjtDQUFBLE1BQUE7O0FBRUEsT0FBQTtFQUFRLEtBQVI7Q0FBQSxNQUFBOztBQUNBLE9BQU8sQ0FBQSxNQUFQLE1BQUE7O0FBRUEsR0FBQSxHQUFNLEtBQUEsQ0FBTSxRQUFBLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FBQTtTQUFXLEVBQUUsQ0FBQyxDQUFBLEdBQUksQ0FBTDtBQUFiLENBQU47O0FBQ04sS0FBQSxHQUFTLEdBQUEsQ0FBSSxDQUFKOztBQUNULE1BQUEsR0FBUyxHQUFBLENBQUksQ0FBSjs7QUFDVCxLQUFBLEdBQVMsR0FBQSxDQUFJLENBQUo7O0FBQ1QsTUFBQSxHQUFTLEdBQUEsQ0FBSSxDQUFKOztB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QSxDQUFNLE1BQUEsQ0FBQSxDQUFBLEdBQVcsQ0FBQyxDQUFBLEdBQUksQ0FBTCxDQUFqQjtNQUNKLENBQUMsRUFBRSxDQUFDLENBQUQsQ0FBSCxFQUFRLEVBQUUsQ0FBQyxDQUFELENBQVYsQ0FBQSxHQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFELENBQUgsRUFBUSxFQUFFLENBQUMsQ0FBRCxDQUFWO0lBTG5CO0lBTUEsSUFBRyxLQUFBLENBQU0sRUFBTixFQUFVLEVBQVYsQ0FBSDthQUFxQixPQUFBLENBQVEsRUFBUixFQUFyQjtLQUFBLE1BQUE7YUFBcUMsR0FBckM7S0FQRjtHQUFBLE1BQUE7V0FTRSxHQVRGOztBQUhROztBQWNWLE9BQUE7RUFDRSxLQURGO0VBRUUsTUFGRjtFQUdFLEtBSEY7RUFJRSxNQUpGO0VBS0UsS0FMRjtFQU1FLEdBTkY7RUFPRSxJQVBGO0VBUUUsSUFSRjtFQVNFLElBVEY7RUFVRSxHQVZGO0VBV0UsS0FYRjtFQVlFLE9BWkY7RUFhRSxPQWJGO0VBY0UsT0FkRjtFQWVFLElBZkY7RUFnQkUsSUFoQkY7RUFpQkUsTUFqQkY7RUFrQkUsTUFsQkY7RUFtQkUsTUFuQkY7RUFvQkUsR0FwQkY7RUFxQkUsS0FyQkY7RUFzQkUsSUF0QkY7RUF1QkUsS0F2QkY7RUF3QkUsS0F4QkY7RUF5QkUsSUF6QkY7RUEwQkUsSUExQkY7RUEyQkUsT0EzQkY7RUE0QkUsS0E1QkY7RUE2QkUsWUE3QkY7RUE4QkUsVUE5QkY7RUErQkUsVUEvQkY7RUFnQ0UsTUFoQ0Y7RUFpQ0UsS0FqQ0Y7RUFrQ0UsT0FsQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2N1cnJ5LCBmbGlwLCBjb21wb3NlLCBwYXJ0aWFsLCBfLCBpZGVudGl0eSxcbiAgdW5hcnksIGJpbmFyeSwgdGVybmFyeSwgZGV0YWNofSBmcm9tIFwiLi9mdW5jdGlvblwiXG5pbXBvcnQge2VxdWFsfSBmcm9tIFwiLi92YWx1ZVwiXG5pbXBvcnQgKiBhcyBTZSBmcm9tIFwiLi9zZXRcIlxuXG5udGggPSBjdXJyeSAoaSwgYXgpIC0+IGF4W2kgLSAxXVxuZmlyc3QgID0gbnRoIDFcbnNlY29uZCA9IG50aCAyXG50aGlyZCAgPSBudGggM1xuZm91cnRoID0gbnRoIDRcbmZpZnRoICA9IG50aCA1XG5sYXN0ID0gKFtyZXN0Li4uLCBsYXN0XSkgLT4gbGFzdFxucmVzdCA9IChbZmlyc3QsIHJlc3QuLi5dKSAtPiByZXN0XG5cbiMgQXJyYXkgbXV0YXRvcnNcbnB1c2ggPSBjdXJyeSAoYSwgYXgpIC0+IGF4LnB1c2ggYTsgYXhcbnBvcCA9IGRldGFjaCBBcnJheTo6cG9wXG5zaGlmdCA9IGRldGFjaCBBcnJheTo6c2hpZnRcbnVuc2hpZnQgPSBjdXJyeSAoYSwgYXgpIC0+IGF4LnVuc2hpZnQgYTsgYXhcbmVucXVldWUgPSB1bnNoaWZ0XG5kZXF1ZXVlID0gcG9wXG5cbiMgQWRkIGZvciBjb21wbGV0ZW5lc3NcbnBlZWsgPSAoIGF4ICkgLT4gYXhbIGF4Lmxlbmd0aCAtIDEgXVxucG9rZSA9ICggYSwgYXggKSAtPiBheFsgYXgubGVuZ3RoIC0gMSBdID0gYVxuXG4jIHRydWUgc3BsaWNlIHdpdGhvdXQgd2VpcmQgaW5zZXJ0aW9uIG9wdGlvblxuIyBvciBjb21wb3NlLWJyZWFraW5nIHJldHVybiB2YWx1ZVxuc3BsaWNlID0gY3VycnkgKGksIG4sIGF4KSAtPlxuICBheC5zcGxpY2UgaSwgblxuICBheFxuXG5pbnNlcnQgPSBjdXJyeSAoaSwgYSwgYXgpIC0+XG4gIGF4LnNwbGljZSBpLCAwLCBhXG4gIGF4XG5cbnJlbW92ZSA9IGN1cnJ5IChhLCBheCkgLT5cbiAgKGF4LnNwbGljZSBpLCAxKSBpZiAoaSA9IGF4LmluZGV4T2YoIGEgKSkgIT0gLTFcbiAgYXhcblxuY2F0ID0gZGV0YWNoIEFycmF5Ojpjb25jYXRcblxuc2xpY2UgPSBjdXJyeSAoaSwgaiwgYXgpIC0+IGF4W2kuLi5qXVxuXG5maWxsID0gY3VycnkgKGEsIGF4KSAtPiBheC5maWxsIGFcblxucmFuZ2UgPSBjdXJyeSAoc3RhcnQsIGZpbmlzaCkgLT4gW3N0YXJ0Li5maW5pc2hdXG5cbntyYW5kb20sIHJvdW5kfSA9IE1hdGhcbnBsdWNrID0gKGF4KSAtPiBheFsocm91bmQgcmFuZG9tKCkgKiAoYXgubGVuZ3RoIC0gMSkpXVxuXG5wYWlyID0gY3VycnkgKGEsIGIpIC0+IFthLCBiXVxuXG5zb3J0ID0gY3VycnkgKGYsIGF4KSAtPiBheC50b1NvcnRlZCBmLCBheFxuXG5jb21wYWN0ID0gY3VycnkgKCBheCApIC0+IGF4LmZpbHRlciAoIGEgKSAtPiBhP1xuXG51bmlvbiA9IGNvbXBvc2UgW1xuICBBcnJheS5mcm9tXG4gIFNlLnVuaW9uXG5dXG5cbmludGVyc2VjdGlvbiA9IGNvbXBvc2UgW1xuICBBcnJheS5mcm9tXG4gIFNlLmludGVyc2VjdGlvblxuXVxuXG5jb21wbGVtZW50ID0gY29tcG9zZSBbXG4gIEFycmF5LmZyb21cbiAgU2UuY29tcGxlbWVudFxuXVxuXG5kaWZmZXJlbmNlID0gY29tcG9zZSBbXG4gIEFycmF5LmZyb21cbiAgU2UuZGlmZmVyZW5jZVxuXVxuXG51bmlxdWUgPSBjb21wb3NlIFtcbiAgQXJyYXkuZnJvbVxuICBTZS51bmlxdWVcbl1cblxuZHVwZXMgPSBjb21wb3NlIFtcbiAgQXJyYXkuZnJvbVxuICBTZS5kdXBlc1xuXVxuXG5cbiMgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlzaGVyJUUyJTgwJTkzWWF0ZXNfc2h1ZmZsZVxuI1xueyBmbG9vciwgcmFuZG9tIH0gPSBNYXRoXG5zaHVmZmxlID0gKCBheCApIC0+XG4gIGJ4ID0gWyBheC4uLiBdXG4gIGkgPSBieC5sZW5ndGhcbiAgdW5sZXNzIGkgPD0gMVxuICAgIHdoaWxlIC0taSA+IDBcbiAgICAgICMgdGhlIGRpc3Rpbmd1aXNoaW5nIGNoYXJhY3RlcmlzdGljIG9mIGZpc2hlci15YXRlcyBpcyB0aGF0IHRoZSByYW5kb21cbiAgICAgICMgdmFsdWUgZ2VuZXJhdGVkIGlzIGJvdW5kZWQgYnkgdGhlIGl0ZXJhdG9yIGluZGV4IChNYXRoLnJhbmRvbSgpICogaSlcbiAgICAgICMgaW5zdGVhZCBvZiB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgKE1hdGgucmFuZG9tKCkgKiBieC5sZW5ndGgpXG4gICAgICBqID0gZmxvb3IgcmFuZG9tKCkgKiAoaSArIDEpXG4gICAgICBbYnhbaV0sIGJ4W2pdXSA9IFtieFtqXSwgYnhbaV1dXG4gICAgaWYgZXF1YWwgYXgsIGJ4IHRoZW4gc2h1ZmZsZSBheCBlbHNlIGJ4XG4gIGVsc2VcbiAgICBieFxuXG5leHBvcnQge1xuICBmaXJzdFxuICBzZWNvbmRcbiAgdGhpcmRcbiAgZm91cnRoXG4gIGZpZnRoXG4gIG50aFxuICBsYXN0XG4gIHJlc3RcbiAgcHVzaFxuICBwb3BcbiAgc2hpZnRcbiAgdW5zaGlmdFxuICBlbnF1ZXVlXG4gIGRlcXVldWVcbiAgcGVla1xuICBwb2tlXG4gIHNwbGljZVxuICBpbnNlcnRcbiAgcmVtb3ZlXG4gIGNhdFxuICBzbGljZVxuICBmaWxsXG4gIHJhbmdlXG4gIHBsdWNrXG4gIHBhaXJcbiAgc29ydFxuICBjb21wYWN0XG4gIHVuaW9uXG4gIGludGVyc2VjdGlvblxuICBjb21wbGVtZW50XG4gIGRpZmZlcmVuY2VcbiAgdW5pcXVlXG4gIGR1cGVzXG4gIHNodWZmbGVcbn1cbiJdfQ== //# sourceURL=/@dashkite/joy/src/array.coffee //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyIvQGRhc2hraXRlL2pveS9zcmMvYXJyYXkuY29mZmVlIl0sInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2N1cnJ5LCBmbGlwLCBjb21wb3NlLCBwYXJ0aWFsLCBfLCBpZGVudGl0eSxcbiAgdW5hcnksIGJpbmFyeSwgdGVybmFyeSwgZGV0YWNofSBmcm9tIFwiLi9mdW5jdGlvblwiXG5pbXBvcnQge2VxdWFsfSBmcm9tIFwiLi92YWx1ZVwiXG5pbXBvcnQgKiBhcyBTZSBmcm9tIFwiLi9zZXRcIlxuXG5udGggPSBjdXJyeSAoaSwgYXgpIC0+IGF4W2kgLSAxXVxuZmlyc3QgID0gbnRoIDFcbnNlY29uZCA9IG50aCAyXG50aGlyZCAgPSBudGggM1xuZm91cnRoID0gbnRoIDRcbmZpZnRoICA9IG50aCA1XG5sYXN0ID0gKFtyZXN0Li4uLCBsYXN0XSkgLT4gbGFzdFxucmVzdCA9IChbZmlyc3QsIHJlc3QuLi5dKSAtPiByZXN0XG5cbiMgQXJyYXkgbXV0YXRvcnNcbnB1c2ggPSBjdXJyeSAoYSwgYXgpIC0+IGF4LnB1c2ggYTsgYXhcbnBvcCA9IGRldGFjaCBBcnJheTo6cG9wXG5zaGlmdCA9IGRldGFjaCBBcnJheTo6c2hpZnRcbnVuc2hpZnQgPSBjdXJyeSAoYSwgYXgpIC0+IGF4LnVuc2hpZnQgYTsgYXhcbmVucXVldWUgPSB1bnNoaWZ0XG5kZXF1ZXVlID0gcG9wXG5cbiMgQWRkIGZvciBjb21wbGV0ZW5lc3NcbnBlZWsgPSAoIGF4ICkgLT4gYXhbIGF4Lmxlbmd0aCAtIDEgXVxucG9rZSA9ICggYSwgYXggKSAtPiBheFsgYXgubGVuZ3RoIC0gMSBdID0gYVxuXG4jIHRydWUgc3BsaWNlIHdpdGhvdXQgd2VpcmQgaW5zZXJ0aW9uIG9wdGlvblxuIyBvciBjb21wb3NlLWJyZWFraW5nIHJldHVybiB2YWx1ZVxuc3BsaWNlID0gY3VycnkgKGksIG4sIGF4KSAtPlxuICBheC5zcGxpY2UgaSwgblxuICBheFxuXG5pbnNlcnQgPSBjdXJyeSAoaSwgYSwgYXgpIC0+XG4gIGF4LnNwbGljZSBpLCAwLCBhXG4gIGF4XG5cbnJlbW92ZSA9IGN1cnJ5IChhLCBheCkgLT5cbiAgKGF4LnNwbGljZSBpLCAxKSBpZiAoaSA9IGF4LmluZGV4T2YoIGEgKSkgIT0gLTFcbiAgYXhcblxuY2F0ID0gZGV0YWNoIEFycmF5Ojpjb25jYXRcblxuc2xpY2UgPSBjdXJyeSAoaSwgaiwgYXgpIC0+IGF4W2kuLi5qXVxuXG5maWxsID0gY3VycnkgKGEsIGF4KSAtPiBheC5maWxsIGFcblxucmFuZ2UgPSBjdXJyeSAoc3RhcnQsIGZpbmlzaCkgLT4gW3N0YXJ0Li5maW5pc2hdXG5cbntyYW5kb20sIHJvdW5kfSA9IE1hdGhcbnBsdWNrID0gKGF4KSAtPiBheFsocm91bmQgcmFuZG9tKCkgKiAoYXgubGVuZ3RoIC0gMSkpXVxuXG5wYWlyID0gY3VycnkgKGEsIGIpIC0+IFthLCBiXVxuXG5zb3J0ID0gY3VycnkgKGYsIGF4KSAtPiBheC50b1NvcnRlZCBmLCBheFxuXG5jb21wYWN0ID0gY3VycnkgKCBheCApIC0+IGF4LmZpbHRlciAoIGEgKSAtPiBhP1xuXG51bmlvbiA9IGNvbXBvc2UgW1xuICBBcnJheS5mcm9tXG4gIFNlLnVuaW9uXG5dXG5cbmludGVyc2VjdGlvbiA9IGNvbXBvc2UgW1xuICBBcnJheS5mcm9tXG4gIFNlLmludGVyc2VjdGlvblxuXVxuXG5jb21wbGVtZW50ID0gY29tcG9zZSBbXG4gIEFycmF5LmZyb21cbiAgU2UuY29tcGxlbWVudFxuXVxuXG5kaWZmZXJlbmNlID0gY29tcG9zZSBbXG4gIEFycmF5LmZyb21cbiAgU2UuZGlmZmVyZW5jZVxuXVxuXG51bmlxdWUgPSBjb21wb3NlIFtcbiAgQXJyYXkuZnJvbVxuICBTZS51bmlxdWVcbl1cblxuZHVwZXMgPSBjb21wb3NlIFtcbiAgQXJyYXkuZnJvbVxuICBTZS5kdXBlc1xuXVxuXG5cbiMgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlzaGVyJUUyJTgwJTkzWWF0ZXNfc2h1ZmZsZVxuI1xueyBmbG9vciwgcmFuZG9tIH0gPSBNYXRoXG5zaHVmZmxlID0gKCBheCApIC0+XG4gIGJ4ID0gWyBheC4uLiBdXG4gIGkgPSBieC5sZW5ndGhcbiAgdW5sZXNzIGkgPD0gMVxuICAgIHdoaWxlIC0taSA+IDBcbiAgICAgICMgdGhlIGRpc3Rpbmd1aXNoaW5nIGNoYXJhY3RlcmlzdGljIG9mIGZpc2hlci15YXRlcyBpcyB0aGF0IHRoZSByYW5kb21cbiAgICAgICMgdmFsdWUgZ2VuZXJhdGVkIGlzIGJvdW5kZWQgYnkgdGhlIGl0ZXJhdG9yIGluZGV4IChNYXRoLnJhbmRvbSgpICogaSlcbiAgICAgICMgaW5zdGVhZCBvZiB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgKE1hdGgucmFuZG9tKCkgKiBieC5sZW5ndGgpXG4gICAgICBqID0gZmxvb3IgcmFuZG9tKCkgKiAoaSArIDEpXG4gICAgICBbYnhbaV0sIGJ4W2pdXSA9IFtieFtqXSwgYnhbaV1dXG4gICAgaWYgZXF1YWwgYXgsIGJ4IHRoZW4gc2h1ZmZsZSBheCBlbHNlIGJ4XG4gIGVsc2VcbiAgICBieFxuXG5leHBvcnQge1xuICBmaXJzdFxuICBzZWNvbmRcbiAgdGhpcmRcbiAgZm91cnRoXG4gIGZpZnRoXG4gIG50aFxuICBsYXN0XG4gIHJlc3RcbiAgcHVzaFxuICBwb3BcbiAgc2hpZnRcbiAgdW5zaGlmdFxuICBlbnF1ZXVlXG4gIGRlcXVldWVcbiAgcGVla1xuICBwb2tlXG4gIHNwbGljZVxuICBpbnNlcnRcbiAgcmVtb3ZlXG4gIGNhdFxuICBzbGljZVxuICBmaWxsXG4gIHJhbmdlXG4gIHBsdWNrXG4gIHBhaXJcbiAgc29ydFxuICBjb21wYWN0XG4gIHVuaW9uXG4gIGludGVyc2VjdGlvblxuICBjb21wbGVtZW50XG4gIGRpZmZlcmVuY2VcbiAgdW5pcXVlXG4gIGR1cGVzXG4gIHNodWZmbGVcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFBLEdBQUEsRUFBQSxPQUFBLEVBQUEsVUFB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