"use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _class;

var _chunkS3T27X3Ujs = require('./chunk-S3T27X3U.js');


var _chunkH2RXSEUSjs = require('./chunk-H2RXSEUS.js');


var _chunkT4ZJ6CA2js = require('./chunk-T4ZJ6CA2.js');









var _chunkR2MJP25Ojs = require('./chunk-R2MJP25O.js');


var _chunkD6EN5A4Bjs = require('./chunk-D6EN5A4B.js');



var _chunkUNAIGMDHjs = require('./chunk-UNAIGMDH.js');






var _chunk7K74W2G3js = require('./chunk-7K74W2G3.js');



var _chunkF6EGFU3Wjs = require('./chunk-F6EGFU3W.js');





var _chunkQ2LZCTWPjs = require('./chunk-Q2LZCTWP.js');



var _chunkEBISTSVAjs = require('./chunk-EBISTSVA.js');

















var _chunkOTKMOSH2js = require('./chunk-OTKMOSH2.js');








var _chunkSQA7G4TEjs = require('./chunk-SQA7G4TE.js');


var _chunk6C3VEZWHjs = require('./chunk-6C3VEZWH.js');

// src/Either.ts
var Either_exports = {};
_chunk6C3VEZWHjs.__export.call(void 0, Either_exports, {
  Alt: () => Alt2,
  ApT: () => ApT2,
  Applicative: () => Applicative2,
  Apply: () => Apply2,
  Bifunctor: () => Bifunctor,
  Chain: () => Chain2,
  ChainRec: () => ChainRec2,
  Do: () => Do2,
  Extend: () => Extend2,
  Foldable: () => Foldable2,
  FromEither: () => FromEither2,
  Functor: () => Functor2,
  Monad: () => Monad2,
  MonadThrow: () => MonadThrow2,
  Pointed: () => Pointed2,
  Traversable: () => Traversable2,
  URI: () => URI2,
  alt: () => alt2,
  altW: () => altW2,
  ap: () => ap2,
  apFirst: () => apFirst3,
  apFirstW: () => apFirstW,
  apS: () => apS3,
  apSW: () => apSW,
  apSecond: () => apSecond3,
  apSecondW: () => apSecondW,
  apW: () => apW,
  as: () => as3,
  asUnit: () => asUnit3,
  bimap: () => bimap,
  bind: () => bind3,
  bindTo: () => bindTo3,
  bindW: () => bindW,
  chain: () => chain2,
  chainFirst: () => chainFirst2,
  chainFirstW: () => chainFirstW,
  chainNullableK: () => chainNullableK2,
  chainOptionK: () => chainOptionK2,
  chainOptionKW: () => chainOptionKW,
  chainW: () => chainW,
  do: () => do_3,
  duplicate: () => duplicate2,
  either: () => either,
  elem: () => elem2,
  exists: () => exists2,
  extend: () => extend2,
  filterOrElse: () => filterOrElse2,
  filterOrElseW: () => filterOrElseW,
  flap: () => flap3,
  flatMap: () => flatMap2,
  flatMapNullable: () => flatMapNullable2,
  flatMapOption: () => flatMapOption2,
  flatten: () => flatten2,
  flattenW: () => flattenW,
  fold: () => fold2,
  foldMap: () => foldMap2,
  foldW: () => foldW2,
  fromNullable: () => fromNullable2,
  fromNullableK: () => fromNullableK2,
  fromOption: () => fromOption2,
  fromOptionK: () => fromOptionK2,
  fromPredicate: () => fromPredicate3,
  getAltValidation: () => getAltValidation,
  getApplicativeValidation: () => getApplicativeValidation,
  getApplyMonoid: () => getApplyMonoid2,
  getApplySemigroup: () => getApplySemigroup3,
  getCompactable: () => getCompactable,
  getEq: () => getEq2,
  getFilterable: () => getFilterable,
  getOrElse: () => getOrElse2,
  getOrElseW: () => getOrElseW2,
  getSemigroup: () => getSemigroup,
  getShow: () => getShow2,
  getValidation: () => getValidation,
  getValidationMonoid: () => getValidationMonoid,
  getValidationSemigroup: () => getValidationSemigroup,
  getWitherable: () => getWitherable,
  isLeft: () => isLeft2,
  isRight: () => isRight2,
  left: () => left2,
  let: () => let_3,
  liftNullable: () => liftNullable2,
  liftOption: () => liftOption2,
  map: () => map2,
  mapLeft: () => mapLeft,
  match: () => match2,
  matchW: () => matchW2,
  of: () => of2,
  orElse: () => orElse2,
  orElseW: () => orElseW,
  parseJSON: () => parseJSON,
  reduce: () => reduce2,
  reduceRight: () => reduceRight2,
  right: () => right2,
  sequence: () => sequence2,
  sequenceArray: () => sequenceArray2,
  stringifyJSON: () => stringifyJSON,
  swap: () => swap,
  tap: () => tap3,
  throwError: () => throwError2,
  toError: () => toError,
  toUnion: () => toUnion,
  traverse: () => traverse2,
  traverseArray: () => traverseArray2,
  traverseArrayWithIndex: () => traverseArrayWithIndex2,
  traverseReadonlyArrayWithIndex: () => traverseReadonlyArrayWithIndex2,
  traverseReadonlyNonEmptyArrayWithIndex: () => traverseReadonlyNonEmptyArrayWithIndex2,
  tryCatch: () => tryCatch2,
  tryCatchK: () => tryCatchK2
});

// src/ChainRec.ts
var ChainRec_exports = {};
_chunk6C3VEZWHjs.__export.call(void 0, ChainRec_exports, {
  chainRec2: () => chainRec2,
  chainRec3: () => chainRec3,
  do: () => do_,
  forever: () => forever,
  tailRec: () => tailRec,
  tailRec2: () => tailRec2,
  tailRec3: () => tailRec3,
  untilSome: () => untilSome,
  whileSome: () => whileSome
});

// src/Option.ts
var Option_exports = {};
_chunk6C3VEZWHjs.__export.call(void 0, Option_exports, {
  Alt: () => Alt,
  Alternative: () => Alternative,
  ApT: () => ApT,
  Applicative: () => Applicative,
  Apply: () => Apply,
  Chain: () => Chain,
  ChainRec: () => ChainRec,
  Compactable: () => Compactable,
  Do: () => Do,
  Extend: () => Extend,
  Filterable: () => Filterable,
  Foldable: () => Foldable,
  FromEither: () => FromEither,
  Functor: () => Functor,
  Monad: () => Monad,
  MonadThrow: () => MonadThrow,
  Pointed: () => Pointed,
  Traversable: () => Traversable,
  URI: () => URI,
  Witherable: () => Witherable,
  Zero: () => Zero,
  alt: () => alt,
  altW: () => altW,
  ap: () => ap,
  apFirst: () => apFirst2,
  apS: () => apS2,
  apSecond: () => apSecond2,
  as: () => as2,
  asUnit: () => asUnit2,
  bind: () => bind2,
  bindTo: () => bindTo2,
  chain: () => chain,
  chainEitherK: () => chainEitherK2,
  chainFirst: () => chainFirst,
  chainFirstEitherK: () => chainFirstEitherK,
  chainNullableK: () => chainNullableK,
  chainRec: () => chainRec,
  compact: () => compact,
  do: () => do_2,
  duplicate: () => duplicate,
  elem: () => elem,
  exists: () => exists,
  extend: () => extend,
  filter: () => filter,
  filterMap: () => filterMap,
  flap: () => flap2,
  flatMap: () => flatMap,
  flatten: () => flatten,
  fold: () => fold,
  foldMap: () => foldMap,
  foldW: () => foldW,
  fromEither: () => fromEither,
  fromEitherK: () => fromEitherK2,
  fromNullable: () => fromNullable,
  fromNullableK: () => fromNullableK,
  fromPredicate: () => fromPredicate2,
  getApplyMonoid: () => getApplyMonoid,
  getApplySemigroup: () => getApplySemigroup2,
  getEq: () => getEq,
  getFirstMonoid: () => getFirstMonoid,
  getLastMonoid: () => getLastMonoid,
  getLeft: () => getLeft,
  getMonoid: () => getMonoid,
  getOrElse: () => getOrElse,
  getOrElseW: () => getOrElseW,
  getOrd: () => getOrd,
  getRefinement: () => getRefinement,
  getRight: () => getRight,
  getShow: () => getShow,
  guard: () => guard2,
  isNone: () => isNone2,
  isSome: () => isSome2,
  let: () => let_2,
  map: () => map,
  mapNullable: () => mapNullable,
  match: () => match,
  matchW: () => matchW,
  none: () => none2,
  of: () => of,
  option: () => option,
  orElse: () => orElse,
  partition: () => partition,
  partitionMap: () => partitionMap,
  reduce: () => reduce,
  reduceRight: () => reduceRight,
  separate: () => separate,
  sequence: () => sequence,
  sequenceArray: () => sequenceArray,
  some: () => some2,
  tap: () => tap2,
  tapEither: () => tapEither2,
  throwError: () => throwError,
  toNullable: () => toNullable,
  toUndefined: () => toUndefined,
  traverse: () => traverse,
  traverseArray: () => traverseArray,
  traverseArrayWithIndex: () => traverseArrayWithIndex,
  traverseReadonlyArrayWithIndex: () => traverseReadonlyArrayWithIndex,
  traverseReadonlyNonEmptyArrayWithIndex: () => traverseReadonlyNonEmptyArrayWithIndex,
  tryCatch: () => tryCatch,
  tryCatchK: () => tryCatchK,
  wilt: () => wilt,
  wither: () => wither,
  zero: () => zero
});
var none2 = _chunkOTKMOSH2js.none;
var some2 = _chunkOTKMOSH2js.some;
function fromPredicate2(predicate) {
  return (a) => predicate(a) ? some2(a) : none2;
}
var getLeft = (ma) => ma._tag === "Right" ? none2 : some2(ma.left);
var getRight = (ma) => ma._tag === "Left" ? none2 : some2(ma.right);
var _map = (fa, f) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, map(f));
var _ap = (fab, fa) => _chunkSQA7G4TEjs.pipe.call(void 0, fab, ap(fa));
var _reduce = (fa, b, f) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, reduce(b, f));
var _foldMap = (M) => {
  const foldMapM = foldMap(M);
  return (fa, f) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, foldMapM(f));
};
var _reduceRight = (fa, b, f) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, reduceRight(b, f));
var _traverse = (F) => {
  const traverseF = traverse(F);
  return (ta, f) => _chunkSQA7G4TEjs.pipe.call(void 0, ta, traverseF(f));
};
var _alt = (fa, that) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, alt(that));
var _filter = (fa, predicate) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, filter(predicate));
var _filterMap = (fa, f) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, filterMap(f));
var _extend = (wa, f) => _chunkSQA7G4TEjs.pipe.call(void 0, wa, extend(f));
var _partition = (fa, predicate) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, partition(predicate));
var _partitionMap = (fa, f) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, partitionMap(f));
var URI = "Option";
var getShow = (S) => ({
  show: (ma) => isNone2(ma) ? "none" : `some(${S.show(ma.value)})`
});
var getEq = (E) => ({
  equals: (x, y) => x === y || (isNone2(x) ? isNone2(y) : isNone2(y) ? false : E.equals(x.value, y.value))
});
var getOrd = (O) => ({
  equals: getEq(O).equals,
  compare: (x, y) => x === y ? 0 : isSome2(x) ? isSome2(y) ? O.compare(x.value, y.value) : 1 : -1
});
var getMonoid = (S) => ({
  concat: (x, y) => isNone2(x) ? y : isNone2(y) ? x : some2(S.concat(x.value, y.value)),
  empty: none2
});
var map = (f) => (fa) => isNone2(fa) ? none2 : some2(f(fa.value));
var Functor = {
  URI,
  map: _map
};
var as2 = _chunkSQA7G4TEjs.dual.call(void 0, 2, _chunk7K74W2G3js.as.call(void 0, Functor));
var asUnit2 = _chunk7K74W2G3js.asUnit.call(void 0, Functor);
var of = some2;
var Pointed = {
  URI,
  of
};
var ap = (fa) => (fab) => isNone2(fab) ? none2 : isNone2(fa) ? none2 : some2(fab.value(fa.value));
var Apply = {
  URI,
  map: _map,
  ap: _ap
};
var Applicative = {
  URI,
  map: _map,
  ap: _ap,
  of
};
var flatMap = /* @__PURE__ */ _chunkSQA7G4TEjs.dual.call(void 0, 2, (ma, f) => isNone2(ma) ? none2 : f(ma.value));
var Chain = {
  URI,
  map: _map,
  ap: _ap,
  chain: flatMap
};
var chainRec = (a, f) => {
  let current = f(a);
  while (true) {
    if (isSome2(current) && _chunkOTKMOSH2js.isLeft.call(void 0, current.value)) {
      current = f(current.value.left);
      continue;
    }
    if (_chunkOTKMOSH2js.isNone.call(void 0, current)) {
      return current;
    }
    if (_chunkOTKMOSH2js.isRight.call(void 0, current.value)) {
      return some2(current.value.right);
    }
  }
};
var ChainRec = {
  ...Chain,
  chainRec
};
var Monad = {
  URI,
  map: _map,
  ap: _ap,
  of,
  chain: flatMap
};
var reduce = (b, f) => (fa) => isNone2(fa) ? b : f(b, fa.value);
var foldMap = (M) => (f) => (fa) => isNone2(fa) ? M.empty : f(fa.value);
var reduceRight = (b, f) => (fa) => isNone2(fa) ? b : f(fa.value, b);
var Foldable = {
  URI,
  reduce: _reduce,
  foldMap: _foldMap,
  reduceRight: _reduceRight
};
var orElse = _chunkSQA7G4TEjs.dual.call(void 0, 2, (self, that) => isNone2(self) ? that() : self);
var altW = orElse;
var alt = orElse;
var Alt = {
  URI,
  map: _map,
  alt: _alt
};
var zero = () => none2;
var Zero = {
  URI,
  zero
};
var guard2 = /* @__PURE__ */ _chunkD6EN5A4Bjs.guard.call(void 0, Zero, Pointed);
var Alternative = {
  URI,
  map: _map,
  ap: _ap,
  of,
  alt: _alt,
  zero
};
var extend = (f) => (wa) => isNone2(wa) ? none2 : some2(f(wa));
var Extend = {
  URI,
  map: _map,
  extend: _extend
};
var compact = /* @__PURE__ */ flatMap(_chunkSQA7G4TEjs.identity);
var defaultSeparated = /* @__PURE__ */ _chunkT4ZJ6CA2js.separated.call(void 0, none2, none2);
var separate = (ma) => isNone2(ma) ? defaultSeparated : _chunkT4ZJ6CA2js.separated.call(void 0, getLeft(ma.value), getRight(ma.value));
var Compactable = {
  URI,
  compact,
  separate
};
var filter = (predicate) => (fa) => isNone2(fa) ? none2 : predicate(fa.value) ? fa : none2;
var filterMap = (f) => (fa) => isNone2(fa) ? none2 : f(fa.value);
var partition = (predicate) => (fa) => _chunkT4ZJ6CA2js.separated.call(void 0, _filter(fa, _chunkH2RXSEUSjs.not.call(void 0, predicate)), _filter(fa, predicate));
var partitionMap = (f) => _chunkSQA7G4TEjs.flow.call(void 0, map(f), separate);
var Filterable = {
  URI,
  map: _map,
  compact,
  separate,
  filter: _filter,
  filterMap: _filterMap,
  partition: _partition,
  partitionMap: _partitionMap
};
var traverse = (F) => (f) => (ta) => isNone2(ta) ? F.of(none2) : F.map(f(ta.value), some2);
var sequence = (F) => (ta) => isNone2(ta) ? F.of(none2) : F.map(ta.value, some2);
var Traversable = {
  URI,
  map: _map,
  reduce: _reduce,
  foldMap: _foldMap,
  reduceRight: _reduceRight,
  traverse: _traverse,
  sequence
};
var _wither = /* @__PURE__ */ _chunkUNAIGMDHjs.witherDefault.call(void 0, Traversable, Compactable);
var _wilt = /* @__PURE__ */ _chunkUNAIGMDHjs.wiltDefault.call(void 0, Traversable, Compactable);
var wither = (F) => {
  const _witherF = _wither(F);
  return (f) => (fa) => _witherF(fa, f);
};
var wilt = (F) => {
  const _wiltF = _wilt(F);
  return (f) => (fa) => _wiltF(fa, f);
};
var Witherable = {
  URI,
  map: _map,
  reduce: _reduce,
  foldMap: _foldMap,
  reduceRight: _reduceRight,
  traverse: _traverse,
  sequence,
  compact,
  separate,
  filter: _filter,
  filterMap: _filterMap,
  partition: _partition,
  partitionMap: _partitionMap,
  wither: _wither,
  wilt: _wilt
};
var throwError = () => none2;
var MonadThrow = {
  URI,
  map: _map,
  ap: _ap,
  of,
  chain: flatMap,
  throwError
};
var fromEither = getRight;
var FromEither = {
  URI,
  fromEither
};
var isSome2 = _chunkOTKMOSH2js.isSome;
var isNone2 = (fa) => fa._tag === "None";
var matchW = (onNone, onSome) => (ma) => isNone2(ma) ? onNone() : onSome(ma.value);
var foldW = matchW;
var match = matchW;
var fold = match;
var getOrElseW = (onNone) => (ma) => isNone2(ma) ? onNone() : ma.value;
var getOrElse = getOrElseW;
var flap2 = /* @__PURE__ */ _chunk7K74W2G3js.flap.call(void 0, Functor);
var apFirst2 = /* @__PURE__ */ _chunkQ2LZCTWPjs.apFirst.call(void 0, Apply);
var apSecond2 = /* @__PURE__ */ _chunkQ2LZCTWPjs.apSecond.call(void 0, Apply);
var flatten = compact;
var tap2 = /* @__PURE__ */ _chunkSQA7G4TEjs.dual.call(void 0, 2, _chunkEBISTSVAjs.tap.call(void 0, Chain));
var tapEither2 = /* @__PURE__ */ _chunkSQA7G4TEjs.dual.call(void 0, 2, _chunkR2MJP25Ojs.tapEither.call(void 0, FromEither, Chain));
var duplicate = /* @__PURE__ */ extend(_chunkSQA7G4TEjs.identity);
var fromEitherK2 = /* @__PURE__ */ _chunkR2MJP25Ojs.fromEitherK.call(void 0, FromEither);
var chainEitherK2 = /* @__PURE__ */ _chunkR2MJP25Ojs.chainEitherK.call(void 0, FromEither, Chain);
var chainFirstEitherK = tapEither2;
var fromNullable = (a) => a == null ? none2 : some2(a);
var tryCatch = (f) => {
  try {
    return some2(f());
  } catch (e) {
    return none2;
  }
};
var tryCatchK = (f) => (...a) => tryCatch(() => f(...a));
var fromNullableK = (f) => _chunkSQA7G4TEjs.flow.call(void 0, f, fromNullable);
var chainNullableK = (f) => (ma) => isNone2(ma) ? none2 : fromNullable(f(ma.value));
var toNullable = /* @__PURE__ */ match(_chunkSQA7G4TEjs.constNull, _chunkSQA7G4TEjs.identity);
var toUndefined = /* @__PURE__ */ match(_chunkSQA7G4TEjs.constUndefined, _chunkSQA7G4TEjs.identity);
function elem(E) {
  return (a, ma) => {
    if (ma === void 0) {
      const elemE = elem(E);
      return (ma2) => elemE(a, ma2);
    }
    return isNone2(ma) ? false : E.equals(a, ma.value);
  };
}
var exists = (predicate) => (ma) => isNone2(ma) ? false : predicate(ma.value);
var Do = /* @__PURE__ */ of(_chunkOTKMOSH2js.emptyRecord);
var bindTo2 = /* @__PURE__ */ _chunk7K74W2G3js.bindTo.call(void 0, Functor);
var let_2 = /* @__PURE__ */ _chunk7K74W2G3js.let_.call(void 0, Functor);
var bind2 = /* @__PURE__ */ _chunkEBISTSVAjs.bind.call(void 0, Chain);
var apS2 = /* @__PURE__ */ _chunkQ2LZCTWPjs.apS.call(void 0, Apply);
var ApT = /* @__PURE__ */ of(_chunkOTKMOSH2js.emptyReadonlyArray);
var do_2 = do_(Pointed, ChainRec);
var traverseReadonlyNonEmptyArrayWithIndex = (f) => (as4) => {
  const o = f(0, _chunkOTKMOSH2js.head.call(void 0, as4));
  if (isNone2(o)) {
    return none2;
  }
  const out = [o.value];
  for (let i = 1; i < as4.length; i++) {
    const o2 = f(i, as4[i]);
    if (isNone2(o2)) {
      return none2;
    }
    out.push(o2.value);
  }
  return some2(out);
};
var traverseReadonlyArrayWithIndex = (f) => {
  const g = traverseReadonlyNonEmptyArrayWithIndex(f);
  return (as4) => _chunkOTKMOSH2js.isNonEmpty.call(void 0, as4) ? g(as4) : ApT;
};
var traverseArrayWithIndex = traverseReadonlyArrayWithIndex;
var traverseArray = (f) => traverseReadonlyArrayWithIndex((_, a) => f(a));
var sequenceArray = /* @__PURE__ */ traverseArray(_chunkSQA7G4TEjs.identity);
var chain = flatMap;
var chainFirst = tap2;
function getRefinement(getOption) {
  return (a) => isSome2(getOption(a));
}
var mapNullable = chainNullableK;
var option = {
  URI,
  map: _map,
  of,
  ap: _ap,
  chain: flatMap,
  reduce: _reduce,
  foldMap: _foldMap,
  reduceRight: _reduceRight,
  traverse: _traverse,
  sequence,
  zero,
  alt: _alt,
  extend: _extend,
  compact,
  separate,
  filter: _filter,
  filterMap: _filterMap,
  partition: _partition,
  partitionMap: _partitionMap,
  wither: _wither,
  wilt: _wilt,
  throwError
};
var getApplySemigroup2 = /* @__PURE__ */ _chunkQ2LZCTWPjs.getApplySemigroup.call(void 0, Apply);
var getApplyMonoid = /* @__PURE__ */ _chunkS3T27X3Ujs.getApplicativeMonoid.call(void 0, Applicative);
var getFirstMonoid = () => getMonoid(_chunkF6EGFU3Wjs.first.call(void 0, ));
var getLastMonoid = () => getMonoid(_chunkF6EGFU3Wjs.last.call(void 0, ));

// src/ChainRec.ts
var tailRec = (startWith, f) => {
  let ab = f(startWith);
  while (ab._tag === "Left") {
    ab = f(ab.left);
  }
  return ab.right;
};
function forever(M) {
  return (ma) => M.chainRec(void 0, () => M.map(ma, left2));
}
function whileSome(M, Mn) {
  return (ma) => M.chainRec(
    Mn.empty,
    (v) => M.map(
      ma,
      fold(
        () => right2(v),
        (x) => left2(Mn.concat(v, x))
      )
    )
  );
}
function untilSome(M) {
  return (ma) => M.chainRec(void 0, () => M.map(ma, fromOption2(_chunkSQA7G4TEjs.constUndefined)));
}
function chainRec2(M) {
  return (a, b, f) => M.chainRec(_chunkSQA7G4TEjs.tuple.call(void 0, a, b), ([a2, b2]) => f(a2, b2));
}
function chainRec3(M) {
  return (a, b, c, f) => M.chainRec(_chunkSQA7G4TEjs.tuple.call(void 0, a, b, c), ([a2, b2, c2]) => f(a2, b2, c2));
}
var tailRec2 = (ai, bi, f) => {
  let result = f(ai, bi);
  while (isLeft2(result)) {
    const [a, b] = result.left;
    result = f(a, b);
  }
  return result.right;
};
var tailRec3 = (ai, bi, ci, f) => {
  let result = f(ai, bi, ci);
  while (isLeft2(result)) {
    const [a, b, c] = result.left;
    result = f(a, b, c);
  }
  return result.right;
};
function do_(P, M) {
  return (yieldFunction) => {
    const iterator = yieldFunction(unwrap);
    const state = iterator.next();
    const go = (state2) => {
      if (state2.done) {
        return P.of(right2(state2.value));
      }
      return M.map(
        // eslint-disable-next-line @typescript-eslint/ban-ts-comment
        // @ts-ignore -- Shouldn't be an error
        state2.value.value,
        (a) => left2(iterator.next(a))
      );
    };
    return M.chainRec(state, go);
  };
}
var SingletonGenerator = (_class = class _SingletonGenerator {
  constructor(value) {;_class.prototype.__init.call(this);
    this.value = value;
  }
  __init() {this.finished = false}
  next(value) {
    if (this.finished) {
      return { done: true, value };
    }
    this.finished = true;
    return { done: false, value: this.value };
  }
  return(value) {
    return this.next(value);
  }
  throw(e) {
    throw e;
  }
  [Symbol.iterator]() {
    return new _SingletonGenerator(this.value);
  }
}, _class);
function kindGenerator(ma) {
  class KindGenerator {
    constructor(value) {
      this.value = value;
    }
    [Symbol.iterator]() {
      return new SingletonGenerator(this);
    }
  }
  return new KindGenerator(ma);
}
function unwrap(ma) {
  return kindGenerator(ma);
}

// src/Either.ts
var left2 = _chunkOTKMOSH2js.left;
var right2 = _chunkOTKMOSH2js.right;
var flatMap2 = /* @__PURE__ */ _chunkSQA7G4TEjs.dual.call(void 0, 
  2,
  (ma, f) => isLeft2(ma) ? ma : f(ma.right)
);
var _map2 = (fa, f) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, map2(f));
var _ap2 = (fab, fa) => _chunkSQA7G4TEjs.pipe.call(void 0, fab, ap2(fa));
var _reduce2 = (fa, b, f) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, reduce2(b, f));
var _foldMap2 = (M) => (fa, f) => {
  const foldMapM = foldMap2(M);
  return _chunkSQA7G4TEjs.pipe.call(void 0, fa, foldMapM(f));
};
var _reduceRight2 = (fa, b, f) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, reduceRight2(b, f));
var _traverse2 = (F) => {
  const traverseF = traverse2(F);
  return (ta, f) => _chunkSQA7G4TEjs.pipe.call(void 0, ta, traverseF(f));
};
var _bimap = (fa, f, g) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, bimap(f, g));
var _mapLeft = (fa, f) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, mapLeft(f));
var _alt2 = (fa, that) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, alt2(that));
var _extend2 = (wa, f) => _chunkSQA7G4TEjs.pipe.call(void 0, wa, extend2(f));
var URI2 = "Either";
var getShow2 = (SE, SA) => ({
  show: (ma) => isLeft2(ma) ? `left(${SE.show(ma.left)})` : `right(${SA.show(ma.right)})`
});
var getEq2 = (EL, EA) => ({
  equals: (x, y) => x === y || (isLeft2(x) ? isLeft2(y) && EL.equals(x.left, y.left) : isRight2(y) && EA.equals(x.right, y.right))
});
var getSemigroup = (S) => ({
  concat: (x, y) => isLeft2(y) ? x : isLeft2(x) ? y : right2(S.concat(x.right, y.right))
});
var getCompactable = (M) => {
  const empty = left2(M.empty);
  return {
    URI: URI2,
    _E: void 0,
    compact: (ma) => isLeft2(ma) ? ma : ma.right._tag === "None" ? empty : right2(ma.right.value),
    separate: (ma) => isLeft2(ma) ? _chunkT4ZJ6CA2js.separated.call(void 0, ma, ma) : isLeft2(ma.right) ? _chunkT4ZJ6CA2js.separated.call(void 0, right2(ma.right.left), empty) : _chunkT4ZJ6CA2js.separated.call(void 0, empty, right2(ma.right.right))
  };
};
var getFilterable = (M) => {
  const empty = left2(M.empty);
  const { compact: compact2, separate: separate2 } = getCompactable(M);
  const filter2 = (ma, predicate) => isLeft2(ma) ? ma : predicate(ma.right) ? ma : empty;
  const partition2 = (ma, p) => {
    return isLeft2(ma) ? _chunkT4ZJ6CA2js.separated.call(void 0, ma, ma) : p(ma.right) ? _chunkT4ZJ6CA2js.separated.call(void 0, empty, right2(ma.right)) : _chunkT4ZJ6CA2js.separated.call(void 0, right2(ma.right), empty);
  };
  return {
    URI: URI2,
    _E: void 0,
    map: _map2,
    compact: compact2,
    separate: separate2,
    filter: filter2,
    filterMap: (ma, f) => {
      if (isLeft2(ma)) {
        return ma;
      }
      const ob = f(ma.right);
      return ob._tag === "None" ? empty : right2(ob.value);
    },
    partition: partition2,
    partitionMap: (ma, f) => {
      if (isLeft2(ma)) {
        return _chunkT4ZJ6CA2js.separated.call(void 0, ma, ma);
      }
      const e = f(ma.right);
      return isLeft2(e) ? _chunkT4ZJ6CA2js.separated.call(void 0, right2(e.left), empty) : _chunkT4ZJ6CA2js.separated.call(void 0, empty, right2(e.right));
    }
  };
};
var getWitherable = (M) => {
  const F_ = getFilterable(M);
  const C = getCompactable(M);
  return {
    URI: URI2,
    _E: void 0,
    map: _map2,
    compact: F_.compact,
    separate: F_.separate,
    filter: F_.filter,
    filterMap: F_.filterMap,
    partition: F_.partition,
    partitionMap: F_.partitionMap,
    traverse: _traverse2,
    sequence: sequence2,
    reduce: _reduce2,
    foldMap: _foldMap2,
    reduceRight: _reduceRight2,
    wither: _chunkUNAIGMDHjs.witherDefault.call(void 0, Traversable2, C),
    wilt: _chunkUNAIGMDHjs.wiltDefault.call(void 0, Traversable2, C)
  };
};
var getApplicativeValidation = (SE) => ({
  URI: URI2,
  _E: void 0,
  map: _map2,
  ap: (fab, fa) => isLeft2(fab) ? isLeft2(fa) ? left2(SE.concat(fab.left, fa.left)) : fab : isLeft2(fa) ? fa : right2(fab.right(fa.right)),
  of: of2
});
var getAltValidation = (SE) => ({
  URI: URI2,
  _E: void 0,
  map: _map2,
  alt: (me, that) => {
    if (isRight2(me)) {
      return me;
    }
    const ea = that();
    return isLeft2(ea) ? left2(SE.concat(me.left, ea.left)) : ea;
  }
});
var map2 = (f) => (fa) => isLeft2(fa) ? fa : right2(f(fa.right));
var Functor2 = {
  URI: URI2,
  map: _map2
};
var as3 = _chunkSQA7G4TEjs.dual.call(void 0, 2, _chunk7K74W2G3js.as.call(void 0, Functor2));
var asUnit3 = _chunk7K74W2G3js.asUnit.call(void 0, Functor2);
var of2 = right2;
var Pointed2 = {
  URI: URI2,
  of: of2
};
var apW = (fa) => (fab) => isLeft2(fab) ? fab : isLeft2(fa) ? fa : right2(fab.right(fa.right));
var ap2 = apW;
var Apply2 = {
  URI: URI2,
  map: _map2,
  ap: _ap2
};
var Applicative2 = {
  URI: URI2,
  map: _map2,
  ap: _ap2,
  of: of2
};
var Chain2 = {
  URI: URI2,
  map: _map2,
  ap: _ap2,
  chain: flatMap2
};
var Monad2 = {
  URI: URI2,
  map: _map2,
  ap: _ap2,
  of: of2,
  chain: flatMap2
};
var reduce2 = (b, f) => (fa) => isLeft2(fa) ? b : f(b, fa.right);
var foldMap2 = (M) => (f) => (fa) => isLeft2(fa) ? M.empty : f(fa.right);
var reduceRight2 = (b, f) => (fa) => isLeft2(fa) ? b : f(fa.right, b);
var Foldable2 = {
  URI: URI2,
  reduce: _reduce2,
  foldMap: _foldMap2,
  reduceRight: _reduceRight2
};
var traverse2 = (F) => (f) => (ta) => isLeft2(ta) ? F.of(left2(ta.left)) : F.map(f(ta.right), right2);
var sequence2 = (F) => (ma) => {
  return isLeft2(ma) ? F.of(left2(ma.left)) : F.map(ma.right, right2);
};
var Traversable2 = {
  URI: URI2,
  map: _map2,
  reduce: _reduce2,
  foldMap: _foldMap2,
  reduceRight: _reduceRight2,
  traverse: _traverse2,
  sequence: sequence2
};
var bimap = (f, g) => (fa) => isLeft2(fa) ? left2(f(fa.left)) : right2(g(fa.right));
var mapLeft = (f) => (fa) => isLeft2(fa) ? left2(f(fa.left)) : fa;
var Bifunctor = {
  URI: URI2,
  bimap: _bimap,
  mapLeft: _mapLeft
};
var altW2 = (that) => (fa) => isLeft2(fa) ? that() : fa;
var alt2 = altW2;
var Alt2 = {
  URI: URI2,
  map: _map2,
  alt: _alt2
};
var extend2 = (f) => (wa) => isLeft2(wa) ? wa : right2(f(wa));
var Extend2 = {
  URI: URI2,
  map: _map2,
  extend: _extend2
};
var chainRec4 = (a, f) => tailRec(
  f(a),
  (e) => isLeft2(e) ? right2(left2(e.left)) : isLeft2(e.right) ? left2(f(e.right.left)) : right2(right2(e.right.right))
);
var ChainRec2 = {
  URI: URI2,
  map: _map2,
  ap: _ap2,
  chain: flatMap2,
  chainRec: chainRec4
};
var throwError2 = left2;
var MonadThrow2 = {
  URI: URI2,
  map: _map2,
  ap: _ap2,
  of: of2,
  chain: flatMap2,
  throwError: throwError2
};
var FromEither2 = {
  URI: URI2,
  fromEither: _chunkSQA7G4TEjs.identity
};
var fromPredicate3 = /* @__PURE__ */ _chunkR2MJP25Ojs.fromPredicate.call(void 0, FromEither2);
var fromOption2 = /* @__PURE__ */ _chunkR2MJP25Ojs.fromOption.call(void 0, FromEither2);
var isLeft2 = _chunkOTKMOSH2js.isLeft;
var isRight2 = _chunkOTKMOSH2js.isRight;
var matchW2 = (onLeft, onRight) => (ma) => isLeft2(ma) ? onLeft(ma.left) : onRight(ma.right);
var foldW2 = matchW2;
var match2 = matchW2;
var fold2 = match2;
var getOrElseW2 = (onLeft) => (ma) => isLeft2(ma) ? onLeft(ma.left) : ma.right;
var getOrElse2 = getOrElseW2;
var flap3 = /* @__PURE__ */ _chunk7K74W2G3js.flap.call(void 0, Functor2);
var apFirst3 = /* @__PURE__ */ _chunkQ2LZCTWPjs.apFirst.call(void 0, Apply2);
var apFirstW = apFirst3;
var apSecond3 = /* @__PURE__ */ _chunkQ2LZCTWPjs.apSecond.call(void 0, Apply2);
var apSecondW = apSecond3;
var tap3 = /* @__PURE__ */ _chunkSQA7G4TEjs.dual.call(void 0, 2, _chunkEBISTSVAjs.tap.call(void 0, Chain2));
var flattenW = /* @__PURE__ */ flatMap2(_chunkSQA7G4TEjs.identity);
var flatten2 = flattenW;
var duplicate2 = /* @__PURE__ */ extend2(_chunkSQA7G4TEjs.identity);
var fromOptionK2 = /* @__PURE__ */ _chunkR2MJP25Ojs.fromOptionK.call(void 0, FromEither2);
var chainOptionK2 = /* @__PURE__ */ _chunkR2MJP25Ojs.chainOptionK.call(void 0, 
  FromEither2,
  Chain2
);
var chainOptionKW = chainOptionK2;
var _FromEither = {
  fromEither: FromEither2.fromEither
};
var liftNullable2 = /* @__PURE__ */ _chunkOTKMOSH2js.liftNullable.call(void 0, _FromEither);
var liftOption2 = /* @__PURE__ */ _chunkOTKMOSH2js.liftOption.call(void 0, _FromEither);
var _FlatMap = {
  flatMap: flatMap2
};
var flatMapNullable2 = /* @__PURE__ */ _chunkOTKMOSH2js.flatMapNullable.call(void 0, _FromEither, _FlatMap);
var flatMapOption2 = /* @__PURE__ */ _chunkOTKMOSH2js.flatMapOption.call(void 0, _FromEither, _FlatMap);
var filterOrElse2 = /* @__PURE__ */ _chunkR2MJP25Ojs.filterOrElse.call(void 0, FromEither2, Chain2);
var filterOrElseW = filterOrElse2;
var swap = (ma) => isLeft2(ma) ? right2(ma.left) : left2(ma.right);
var orElseW = (onLeft) => (ma) => isLeft2(ma) ? onLeft(ma.left) : ma;
var orElse2 = orElseW;
var fromNullable2 = (e) => (a) => a == null ? left2(e) : right2(a);
var tryCatch2 = (f, onThrow) => {
  try {
    return right2(f());
  } catch (e) {
    return left2(onThrow(e));
  }
};
var tryCatchK2 = (f, onThrow) => (...a) => tryCatch2(() => f(...a), onThrow);
var fromNullableK2 = (e) => {
  const from = fromNullable2(e);
  return (f) => _chunkSQA7G4TEjs.flow.call(void 0, f, from);
};
var chainNullableK2 = (e) => {
  const from = fromNullableK2(e);
  return (f) => flatMap2(from(f));
};
var toUnion = /* @__PURE__ */ foldW2(_chunkSQA7G4TEjs.identity, _chunkSQA7G4TEjs.identity);
function toError(e) {
  return e instanceof Error ? e : new Error(String(e));
}
function elem2(E) {
  return (a, ma) => {
    if (ma === void 0) {
      const elemE = elem2(E);
      return (ma2) => elemE(a, ma2);
    }
    return isLeft2(ma) ? false : E.equals(a, ma.right);
  };
}
var exists2 = (predicate) => (ma) => isLeft2(ma) ? false : predicate(ma.right);
var Do2 = /* @__PURE__ */ of2(_chunkOTKMOSH2js.emptyRecord);
var bindTo3 = /* @__PURE__ */ _chunk7K74W2G3js.bindTo.call(void 0, Functor2);
var let_3 = /* @__PURE__ */ _chunk7K74W2G3js.let_.call(void 0, Functor2);
var bind3 = /* @__PURE__ */ _chunkEBISTSVAjs.bind.call(void 0, Chain2);
var bindW = bind3;
var apS3 = /* @__PURE__ */ _chunkQ2LZCTWPjs.apS.call(void 0, Apply2);
var apSW = apS3;
var ApT2 = /* @__PURE__ */ of2(_chunkOTKMOSH2js.emptyReadonlyArray);
var do_3 = do_(Pointed2, ChainRec2);
var traverseReadonlyNonEmptyArrayWithIndex2 = (f) => (as4) => {
  const e = f(0, _chunkOTKMOSH2js.head.call(void 0, as4));
  if (isLeft2(e)) {
    return e;
  }
  const out = [e.right];
  for (let i = 1; i < as4.length; i++) {
    const e2 = f(i, as4[i]);
    if (isLeft2(e2)) {
      return e2;
    }
    out.push(e2.right);
  }
  return right2(out);
};
var traverseReadonlyArrayWithIndex2 = (f) => {
  const g = traverseReadonlyNonEmptyArrayWithIndex2(f);
  return (as4) => _chunkOTKMOSH2js.isNonEmpty.call(void 0, as4) ? g(as4) : ApT2;
};
var traverseArrayWithIndex2 = traverseReadonlyArrayWithIndex2;
var traverseArray2 = (f) => traverseReadonlyArrayWithIndex2((_, a) => f(a));
var sequenceArray2 = /* @__PURE__ */ traverseArray2(_chunkSQA7G4TEjs.identity);
var chainW = flatMap2;
var chain2 = flatMap2;
var chainFirst2 = tap3;
var chainFirstW = tap3;
function parseJSON(s, onError) {
  return tryCatch2(() => JSON.parse(s), onError);
}
var stringifyJSON = (u, onError) => tryCatch2(() => {
  const s = JSON.stringify(u);
  if (typeof s !== "string") {
    throw new Error("Converting unsupported structure to JSON");
  }
  return s;
}, onError);
var either = {
  URI: URI2,
  map: _map2,
  of: of2,
  ap: _ap2,
  chain: flatMap2,
  reduce: _reduce2,
  foldMap: _foldMap2,
  reduceRight: _reduceRight2,
  traverse: _traverse2,
  sequence: sequence2,
  bimap: _bimap,
  mapLeft: _mapLeft,
  alt: _alt2,
  extend: _extend2,
  chainRec: chainRec4,
  throwError: throwError2
};
var getApplySemigroup3 = /* @__PURE__ */ _chunkQ2LZCTWPjs.getApplySemigroup.call(void 0, Apply2);
var getApplyMonoid2 = /* @__PURE__ */ _chunkS3T27X3Ujs.getApplicativeMonoid.call(void 0, Applicative2);
var getValidationSemigroup = (SE, SA) => _chunkQ2LZCTWPjs.getApplySemigroup.call(void 0, getApplicativeValidation(SE))(SA);
var getValidationMonoid = (SE, MA) => _chunkS3T27X3Ujs.getApplicativeMonoid.call(void 0, getApplicativeValidation(SE))(MA);
function getValidation(SE) {
  const ap3 = getApplicativeValidation(SE).ap;
  const alt3 = getAltValidation(SE).alt;
  return {
    URI: URI2,
    _E: void 0,
    map: _map2,
    of: of2,
    chain: flatMap2,
    bimap: _bimap,
    mapLeft: _mapLeft,
    reduce: _reduce2,
    foldMap: _foldMap2,
    reduceRight: _reduceRight2,
    extend: _extend2,
    traverse: _traverse2,
    sequence: sequence2,
    chainRec: chainRec4,
    throwError: throwError2,
    ap: ap3,
    alt: alt3
  };
}



































































































































































































































exports.left = left2; exports.right = right2; exports.flatMap = flatMap2; exports.URI = URI2; exports.getShow = getShow2; exports.getEq = getEq2; exports.getSemigroup = getSemigroup; exports.getCompactable = getCompactable; exports.getFilterable = getFilterable; exports.getWitherable = getWitherable; exports.getApplicativeValidation = getApplicativeValidation; exports.getAltValidation = getAltValidation; exports.map = map2; exports.Functor = Functor2; exports.as = as3; exports.asUnit = asUnit3; exports.of = of2; exports.Pointed = Pointed2; exports.apW = apW; exports.ap = ap2; exports.Apply = Apply2; exports.Applicative = Applicative2; exports.Chain = Chain2; exports.Monad = Monad2; exports.reduce = reduce2; exports.foldMap = foldMap2; exports.reduceRight = reduceRight2; exports.Foldable = Foldable2; exports.traverse = traverse2; exports.sequence = sequence2; exports.Traversable = Traversable2; exports.bimap = bimap; exports.mapLeft = mapLeft; exports.Bifunctor = Bifunctor; exports.altW = altW2; exports.alt = alt2; exports.Alt = Alt2; exports.extend = extend2; exports.Extend = Extend2; exports.ChainRec = ChainRec2; exports.throwError = throwError2; exports.MonadThrow = MonadThrow2; exports.FromEither = FromEither2; exports.fromPredicate = fromPredicate3; exports.fromOption = fromOption2; exports.isLeft = isLeft2; exports.isRight = isRight2; exports.matchW = matchW2; exports.foldW = foldW2; exports.match = match2; exports.fold = fold2; exports.getOrElseW = getOrElseW2; exports.getOrElse = getOrElse2; exports.flap = flap3; exports.apFirst = apFirst3; exports.apFirstW = apFirstW; exports.apSecond = apSecond3; exports.apSecondW = apSecondW; exports.tap = tap3; exports.flattenW = flattenW; exports.flatten = flatten2; exports.duplicate = duplicate2; exports.fromOptionK = fromOptionK2; exports.chainOptionK = chainOptionK2; exports.chainOptionKW = chainOptionKW; exports.liftNullable = liftNullable2; exports.liftOption = liftOption2; exports.flatMapNullable = flatMapNullable2; exports.flatMapOption = flatMapOption2; exports.filterOrElse = filterOrElse2; exports.filterOrElseW = filterOrElseW; exports.swap = swap; exports.orElseW = orElseW; exports.orElse = orElse2; exports.fromNullable = fromNullable2; exports.tryCatch = tryCatch2; exports.tryCatchK = tryCatchK2; exports.fromNullableK = fromNullableK2; exports.chainNullableK = chainNullableK2; exports.toUnion = toUnion; exports.toError = toError; exports.elem = elem2; exports.exists = exists2; exports.Do = Do2; exports.bindTo = bindTo3; exports.let_ = let_3; exports.bind = bind3; exports.bindW = bindW; exports.apS = apS3; exports.apSW = apSW; exports.ApT = ApT2; exports.do_ = do_3; exports.traverseReadonlyNonEmptyArrayWithIndex = traverseReadonlyNonEmptyArrayWithIndex2; exports.traverseReadonlyArrayWithIndex = traverseReadonlyArrayWithIndex2; exports.traverseArrayWithIndex = traverseArrayWithIndex2; exports.traverseArray = traverseArray2; exports.sequenceArray = sequenceArray2; exports.chainW = chainW; exports.chain = chain2; exports.chainFirst = chainFirst2; exports.chainFirstW = chainFirstW; exports.parseJSON = parseJSON; exports.stringifyJSON = stringifyJSON; exports.either = either; exports.getApplySemigroup = getApplySemigroup3; exports.getApplyMonoid = getApplyMonoid2; exports.getValidationSemigroup = getValidationSemigroup; exports.getValidationMonoid = getValidationMonoid; exports.getValidation = getValidation; exports.Either_exports = Either_exports; exports.none = none2; exports.some = some2; exports.fromPredicate2 = fromPredicate2; exports.getLeft = getLeft; exports.getRight = getRight; exports.URI2 = URI; exports.getShow2 = getShow; exports.getEq2 = getEq; exports.getOrd = getOrd; exports.getMonoid = getMonoid; exports.map2 = map; exports.Functor2 = Functor; exports.as2 = as2; exports.asUnit2 = asUnit2; exports.of2 = of; exports.Pointed2 = Pointed; exports.ap2 = ap; exports.Apply2 = Apply; exports.Applicative2 = Applicative; exports.flatMap2 = flatMap; exports.Chain2 = Chain; exports.chainRec = chainRec; exports.ChainRec2 = ChainRec; exports.Monad2 = Monad; exports.reduce2 = reduce; exports.foldMap2 = foldMap; exports.reduceRight2 = reduceRight; exports.Foldable2 = Foldable; exports.orElse2 = orElse; exports.altW2 = altW; exports.alt2 = alt; exports.Alt2 = Alt; exports.zero = zero; exports.Zero = Zero; exports.guard = guard2; exports.Alternative = Alternative; exports.extend2 = extend; exports.Extend2 = Extend; exports.compact = compact; exports.separate = separate; exports.Compactable = Compactable; exports.filter = filter; exports.filterMap = filterMap; exports.partition = partition; exports.partitionMap = partitionMap; exports.Filterable = Filterable; exports.traverse2 = traverse; exports.sequence2 = sequence; exports.Traversable2 = Traversable; exports.wither = wither; exports.wilt = wilt; exports.Witherable = Witherable; exports.throwError2 = throwError; exports.MonadThrow2 = MonadThrow; exports.fromEither = fromEither; exports.FromEither2 = FromEither; exports.isSome = isSome2; exports.isNone = isNone2; exports.matchW2 = matchW; exports.foldW2 = foldW; exports.match2 = match; exports.fold2 = fold; exports.getOrElseW2 = getOrElseW; exports.getOrElse2 = getOrElse; exports.flap2 = flap2; exports.apFirst2 = apFirst2; exports.apSecond2 = apSecond2; exports.flatten2 = flatten; exports.tap2 = tap2; exports.tapEither = tapEither2; exports.duplicate2 = duplicate; exports.fromEitherK = fromEitherK2; exports.chainEitherK = chainEitherK2; exports.chainFirstEitherK = chainFirstEitherK; exports.fromNullable2 = fromNullable; exports.tryCatch2 = tryCatch; exports.tryCatchK2 = tryCatchK; exports.fromNullableK2 = fromNullableK; exports.chainNullableK2 = chainNullableK; exports.toNullable = toNullable; exports.toUndefined = toUndefined; exports.elem2 = elem; exports.exists2 = exists; exports.Do2 = Do; exports.bindTo2 = bindTo2; exports.let_2 = let_2; exports.bind2 = bind2; exports.apS2 = apS2; exports.ApT2 = ApT; exports.do_2 = do_2; exports.traverseReadonlyNonEmptyArrayWithIndex2 = traverseReadonlyNonEmptyArrayWithIndex; exports.traverseReadonlyArrayWithIndex2 = traverseReadonlyArrayWithIndex; exports.traverseArrayWithIndex2 = traverseArrayWithIndex; exports.traverseArray2 = traverseArray; exports.sequenceArray2 = sequenceArray; exports.chain2 = chain; exports.chainFirst2 = chainFirst; exports.getRefinement = getRefinement; exports.mapNullable = mapNullable; exports.option = option; exports.getApplySemigroup2 = getApplySemigroup2; exports.getApplyMonoid2 = getApplyMonoid; exports.getFirstMonoid = getFirstMonoid; exports.getLastMonoid = getLastMonoid; exports.Option_exports = Option_exports; exports.tailRec = tailRec; exports.forever = forever; exports.whileSome = whileSome; exports.untilSome = untilSome; exports.chainRec2 = chainRec2; exports.chainRec3 = chainRec3; exports.tailRec2 = tailRec2; exports.tailRec3 = tailRec3; exports.do_3 = do_; exports.ChainRec_exports = ChainRec_exports;
