UNPKG

kuvio

Version:

Create string patterns and derive things from them, such as regexes

5,412 lines 177 kB
"use strict";
(() => {
  var __create = Object.create;
  var __defProp = Object.defineProperty;
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  var __getOwnPropNames = Object.getOwnPropertyNames;
  var __getProtoOf = Object.getPrototypeOf;
  var __hasOwnProp = Object.prototype.hasOwnProperty;
  var __commonJS = (cb, mod) => function __require() {
    return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
  };
  var __export = (target, all) => {
    for (var name in all)
      __defProp(target, name, { get: all[name], enumerable: true });
  };
  var __copyProps = (to, from, except, desc) => {
    if (from && typeof from === "object" || typeof from === "function") {
      for (let key of __getOwnPropNames(from))
        if (!__hasOwnProp.call(to, key) && key !== except)
          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
    }
    return to;
  };
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
    // If the importer is in node compatibility mode or this is not an ESM
    // file that has been converted to a CommonJS file using a Babel-
    // compatible transform (i.e. "__esModule" has not been set), then set
    // "default" to the CommonJS "module.exports" for node compatibility.
    isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
    mod
  ));

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/function.js
  var require_function = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/function.js"(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.getEndomorphismMonoid = exports.not = exports.SK = exports.hole = exports.pipe = exports.untupled = exports.tupled = exports.absurd = exports.decrement = exports.increment = exports.tuple = exports.flow = exports.flip = exports.constVoid = exports.constUndefined = exports.constNull = exports.constFalse = exports.constTrue = exports.constant = exports.unsafeCoerce = exports.identity = exports.apply = exports.getRing = exports.getSemiring = exports.getMonoid = exports.getSemigroup = exports.getBooleanAlgebra = void 0;
      var getBooleanAlgebra = function(B) {
        return function() {
          return {
            meet: function(x, y) {
              return function(a) {
                return B.meet(x(a), y(a));
              };
            },
            join: function(x, y) {
              return function(a) {
                return B.join(x(a), y(a));
              };
            },
            zero: function() {
              return B.zero;
            },
            one: function() {
              return B.one;
            },
            implies: function(x, y) {
              return function(a) {
                return B.implies(x(a), y(a));
              };
            },
            not: function(x) {
              return function(a) {
                return B.not(x(a));
              };
            }
          };
        };
      };
      exports.getBooleanAlgebra = getBooleanAlgebra;
      var getSemigroup = function(S) {
        return function() {
          return {
            concat: function(f, g) {
              return function(a) {
                return S.concat(f(a), g(a));
              };
            }
          };
        };
      };
      exports.getSemigroup = getSemigroup;
      var getMonoid = function(M) {
        var getSemigroupM = (0, exports.getSemigroup)(M);
        return function() {
          return {
            concat: getSemigroupM().concat,
            empty: function() {
              return M.empty;
            }
          };
        };
      };
      exports.getMonoid = getMonoid;
      var getSemiring = function(S) {
        return {
          add: function(f, g) {
            return function(x) {
              return S.add(f(x), g(x));
            };
          },
          zero: function() {
            return S.zero;
          },
          mul: function(f, g) {
            return function(x) {
              return S.mul(f(x), g(x));
            };
          },
          one: function() {
            return S.one;
          }
        };
      };
      exports.getSemiring = getSemiring;
      var getRing = function(R) {
        var S = (0, exports.getSemiring)(R);
        return {
          add: S.add,
          mul: S.mul,
          one: S.one,
          zero: S.zero,
          sub: function(f, g) {
            return function(x) {
              return R.sub(f(x), g(x));
            };
          }
        };
      };
      exports.getRing = getRing;
      var apply = function(a) {
        return function(f) {
          return f(a);
        };
      };
      exports.apply = apply;
      function identity(a) {
        return a;
      }
      exports.identity = identity;
      exports.unsafeCoerce = identity;
      function constant(a) {
        return function() {
          return a;
        };
      }
      exports.constant = constant;
      exports.constTrue = constant(true);
      exports.constFalse = constant(false);
      exports.constNull = constant(null);
      exports.constUndefined = constant(void 0);
      exports.constVoid = exports.constUndefined;
      function flip(f) {
        return function() {
          var args = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            args[_i] = arguments[_i];
          }
          if (args.length > 1) {
            return f(args[1], args[0]);
          }
          return function(a) {
            return f(a)(args[0]);
          };
        };
      }
      exports.flip = flip;
      function flow(ab, bc, cd, de, ef, fg, gh, hi, ij) {
        switch (arguments.length) {
          case 1:
            return ab;
          case 2:
            return function() {
              return bc(ab.apply(this, arguments));
            };
          case 3:
            return function() {
              return cd(bc(ab.apply(this, arguments)));
            };
          case 4:
            return function() {
              return de(cd(bc(ab.apply(this, arguments))));
            };
          case 5:
            return function() {
              return ef(de(cd(bc(ab.apply(this, arguments)))));
            };
          case 6:
            return function() {
              return fg(ef(de(cd(bc(ab.apply(this, arguments))))));
            };
          case 7:
            return function() {
              return gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))));
            };
          case 8:
            return function() {
              return hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments))))))));
            };
          case 9:
            return function() {
              return ij(hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))))));
            };
        }
        return;
      }
      exports.flow = flow;
      function tuple() {
        var t = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          t[_i] = arguments[_i];
        }
        return t;
      }
      exports.tuple = tuple;
      function increment(n) {
        return n + 1;
      }
      exports.increment = increment;
      function decrement(n) {
        return n - 1;
      }
      exports.decrement = decrement;
      function absurd(_) {
        throw new Error("Called `absurd` function which should be uncallable");
      }
      exports.absurd = absurd;
      function tupled(f) {
        return function(a) {
          return f.apply(void 0, a);
        };
      }
      exports.tupled = tupled;
      function untupled(f) {
        return function() {
          var a = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            a[_i] = arguments[_i];
          }
          return f(a);
        };
      }
      exports.untupled = untupled;
      function pipe2(a, ab, bc, cd, de, ef, fg, gh, hi) {
        switch (arguments.length) {
          case 1:
            return a;
          case 2:
            return ab(a);
          case 3:
            return bc(ab(a));
          case 4:
            return cd(bc(ab(a)));
          case 5:
            return de(cd(bc(ab(a))));
          case 6:
            return ef(de(cd(bc(ab(a)))));
          case 7:
            return fg(ef(de(cd(bc(ab(a))))));
          case 8:
            return gh(fg(ef(de(cd(bc(ab(a)))))));
          case 9:
            return hi(gh(fg(ef(de(cd(bc(ab(a))))))));
          default: {
            var ret = arguments[0];
            for (var i = 1; i < arguments.length; i++) {
              ret = arguments[i](ret);
            }
            return ret;
          }
        }
      }
      exports.pipe = pipe2;
      exports.hole = absurd;
      var SK = function(_, b) {
        return b;
      };
      exports.SK = SK;
      function not(predicate) {
        return function(a) {
          return !predicate(a);
        };
      }
      exports.not = not;
      var getEndomorphismMonoid = function() {
        return {
          concat: function(first, second) {
            return flow(first, second);
          },
          empty: identity
        };
      };
      exports.getEndomorphismMonoid = getEndomorphismMonoid;
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/internal.js
  var require_internal = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/internal.js"(exports) {
      "use strict";
      var __spreadArray = exports && exports.__spreadArray || function(to, from, pack) {
        if (pack || arguments.length === 2)
          for (var i = 0, l = from.length, ar; i < l; i++) {
            if (ar || !(i in from)) {
              if (!ar)
                ar = Array.prototype.slice.call(from, 0, i);
              ar[i] = from[i];
            }
          }
        return to.concat(ar || Array.prototype.slice.call(from));
      };
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.fromReadonlyNonEmptyArray = exports.has = exports.emptyRecord = exports.emptyReadonlyArray = exports.tail = exports.head = exports.isNonEmpty = exports.singleton = exports.right = exports.left = exports.isRight = exports.isLeft = exports.some = exports.none = exports.isSome = exports.isNone = void 0;
      var isNone2 = function(fa) {
        return fa._tag === "None";
      };
      exports.isNone = isNone2;
      var isSome2 = function(fa) {
        return fa._tag === "Some";
      };
      exports.isSome = isSome2;
      exports.none = { _tag: "None" };
      var some3 = function(a) {
        return { _tag: "Some", value: a };
      };
      exports.some = some3;
      var isLeft = function(ma) {
        return ma._tag === "Left";
      };
      exports.isLeft = isLeft;
      var isRight = function(ma) {
        return ma._tag === "Right";
      };
      exports.isRight = isRight;
      var left = function(e) {
        return { _tag: "Left", left: e };
      };
      exports.left = left;
      var right = function(a) {
        return { _tag: "Right", right: a };
      };
      exports.right = right;
      var singleton2 = function(a) {
        return [a];
      };
      exports.singleton = singleton2;
      var isNonEmpty3 = function(as) {
        return as.length > 0;
      };
      exports.isNonEmpty = isNonEmpty3;
      var head2 = function(as) {
        return as[0];
      };
      exports.head = head2;
      var tail2 = function(as) {
        return as.slice(1);
      };
      exports.tail = tail2;
      exports.emptyReadonlyArray = [];
      exports.emptyRecord = {};
      exports.has = Object.prototype.hasOwnProperty;
      var fromReadonlyNonEmptyArray2 = function(as) {
        return __spreadArray([as[0]], as.slice(1), true);
      };
      exports.fromReadonlyNonEmptyArray = fromReadonlyNonEmptyArray2;
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Apply.js
  var require_Apply = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Apply.js"(exports) {
      "use strict";
      var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
        if (k2 === void 0)
          k2 = k;
        var desc = Object.getOwnPropertyDescriptor(m, k);
        if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
          desc = { enumerable: true, get: function() {
            return m[k];
          } };
        }
        Object.defineProperty(o, k2, desc);
      } : function(o, m, k, k2) {
        if (k2 === void 0)
          k2 = k;
        o[k2] = m[k];
      });
      var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
        Object.defineProperty(o, "default", { enumerable: true, value: v });
      } : function(o, v) {
        o["default"] = v;
      });
      var __importStar = exports && exports.__importStar || function(mod) {
        if (mod && mod.__esModule)
          return mod;
        var result = {};
        if (mod != null) {
          for (var k in mod)
            if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
              __createBinding(result, mod, k);
        }
        __setModuleDefault(result, mod);
        return result;
      };
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.sequenceS = exports.sequenceT = exports.getApplySemigroup = exports.apS = exports.apSecond = exports.apFirst = exports.ap = void 0;
      var function_1 = require_function();
      var _ = __importStar(require_internal());
      function ap(F, G) {
        return function(fa) {
          return function(fab) {
            return F.ap(F.map(fab, function(gab) {
              return function(ga) {
                return G.ap(gab, ga);
              };
            }), fa);
          };
        };
      }
      exports.ap = ap;
      function apFirst(A) {
        return function(second) {
          return function(first) {
            return A.ap(A.map(first, function(a) {
              return function() {
                return a;
              };
            }), second);
          };
        };
      }
      exports.apFirst = apFirst;
      function apSecond(A) {
        return function(second) {
          return function(first) {
            return A.ap(A.map(first, function() {
              return function(b) {
                return b;
              };
            }), second);
          };
        };
      }
      exports.apSecond = apSecond;
      function apS(F) {
        return function(name, fb) {
          return function(fa) {
            return F.ap(F.map(fa, function(a) {
              return function(b) {
                var _a;
                return Object.assign({}, a, (_a = {}, _a[name] = b, _a));
              };
            }), fb);
          };
        };
      }
      exports.apS = apS;
      function getApplySemigroup(F) {
        return function(S) {
          return {
            concat: function(first, second) {
              return F.ap(F.map(first, function(x) {
                return function(y) {
                  return S.concat(x, y);
                };
              }), second);
            }
          };
        };
      }
      exports.getApplySemigroup = getApplySemigroup;
      function curried(f, n, acc) {
        return function(x) {
          var combined = Array(acc.length + 1);
          for (var i = 0; i < acc.length; i++) {
            combined[i] = acc[i];
          }
          combined[acc.length] = x;
          return n === 0 ? f.apply(null, combined) : curried(f, n - 1, combined);
        };
      }
      var tupleConstructors = {
        1: function(a) {
          return [a];
        },
        2: function(a) {
          return function(b) {
            return [a, b];
          };
        },
        3: function(a) {
          return function(b) {
            return function(c) {
              return [a, b, c];
            };
          };
        },
        4: function(a) {
          return function(b) {
            return function(c) {
              return function(d) {
                return [a, b, c, d];
              };
            };
          };
        },
        5: function(a) {
          return function(b) {
            return function(c) {
              return function(d) {
                return function(e) {
                  return [a, b, c, d, e];
                };
              };
            };
          };
        }
      };
      function getTupleConstructor(len) {
        if (!_.has.call(tupleConstructors, len)) {
          tupleConstructors[len] = curried(function_1.tuple, len - 1, []);
        }
        return tupleConstructors[len];
      }
      function sequenceT(F) {
        return function() {
          var args = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            args[_i] = arguments[_i];
          }
          var len = args.length;
          var f = getTupleConstructor(len);
          var fas = F.map(args[0], f);
          for (var i = 1; i < len; i++) {
            fas = F.ap(fas, args[i]);
          }
          return fas;
        };
      }
      exports.sequenceT = sequenceT;
      function getRecordConstructor(keys) {
        var len = keys.length;
        switch (len) {
          case 1:
            return function(a) {
              var _a;
              return _a = {}, _a[keys[0]] = a, _a;
            };
          case 2:
            return function(a) {
              return function(b) {
                var _a;
                return _a = {}, _a[keys[0]] = a, _a[keys[1]] = b, _a;
              };
            };
          case 3:
            return function(a) {
              return function(b) {
                return function(c) {
                  var _a;
                  return _a = {}, _a[keys[0]] = a, _a[keys[1]] = b, _a[keys[2]] = c, _a;
                };
              };
            };
          case 4:
            return function(a) {
              return function(b) {
                return function(c) {
                  return function(d) {
                    var _a;
                    return _a = {}, _a[keys[0]] = a, _a[keys[1]] = b, _a[keys[2]] = c, _a[keys[3]] = d, _a;
                  };
                };
              };
            };
          case 5:
            return function(a) {
              return function(b) {
                return function(c) {
                  return function(d) {
                    return function(e) {
                      var _a;
                      return _a = {}, _a[keys[0]] = a, _a[keys[1]] = b, _a[keys[2]] = c, _a[keys[3]] = d, _a[keys[4]] = e, _a;
                    };
                  };
                };
              };
            };
          default:
            return curried(function() {
              var args = [];
              for (var _i = 0; _i < arguments.length; _i++) {
                args[_i] = arguments[_i];
              }
              var r = {};
              for (var i = 0; i < len; i++) {
                r[keys[i]] = args[i];
              }
              return r;
            }, len - 1, []);
        }
      }
      function sequenceS(F) {
        return function(r) {
          var keys = Object.keys(r);
          var len = keys.length;
          var f = getRecordConstructor(keys);
          var fr = F.map(r[keys[0]], f);
          for (var i = 1; i < len; i++) {
            fr = F.ap(fr, r[keys[i]]);
          }
          return fr;
        };
      }
      exports.sequenceS = sequenceS;
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Functor.js
  var require_Functor = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Functor.js"(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.getFunctorComposition = exports.let = exports.bindTo = exports.flap = exports.map = void 0;
      var function_1 = require_function();
      function map2(F, G) {
        return function(f) {
          return function(fa) {
            return F.map(fa, function(ga) {
              return G.map(ga, f);
            });
          };
        };
      }
      exports.map = map2;
      function flap(F) {
        return function(a) {
          return function(fab) {
            return F.map(fab, function(f) {
              return f(a);
            });
          };
        };
      }
      exports.flap = flap;
      function bindTo(F) {
        return function(name) {
          return function(fa) {
            return F.map(fa, function(a) {
              var _a;
              return _a = {}, _a[name] = a, _a;
            });
          };
        };
      }
      exports.bindTo = bindTo;
      function let_(F) {
        return function(name, f) {
          return function(fa) {
            return F.map(fa, function(a) {
              var _a;
              return Object.assign({}, a, (_a = {}, _a[name] = f(a), _a));
            });
          };
        };
      }
      exports.let = let_;
      function getFunctorComposition(F, G) {
        var _map = map2(F, G);
        return {
          map: function(fga, f) {
            return (0, function_1.pipe)(fga, _map(f));
          }
        };
      }
      exports.getFunctorComposition = getFunctorComposition;
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Applicative.js
  var require_Applicative = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Applicative.js"(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.getApplicativeComposition = exports.getApplicativeMonoid = void 0;
      var Apply_1 = require_Apply();
      var function_1 = require_function();
      var Functor_1 = require_Functor();
      function getApplicativeMonoid(F) {
        var f = (0, Apply_1.getApplySemigroup)(F);
        return function(M) {
          return {
            concat: f(M).concat,
            empty: F.of(M.empty)
          };
        };
      }
      exports.getApplicativeMonoid = getApplicativeMonoid;
      function getApplicativeComposition(F, G) {
        var map2 = (0, Functor_1.getFunctorComposition)(F, G).map;
        var _ap = (0, Apply_1.ap)(F, G);
        return {
          map: map2,
          of: function(a) {
            return F.of(G.of(a));
          },
          ap: function(fgab, fga) {
            return (0, function_1.pipe)(fgab, _ap(fga));
          }
        };
      }
      exports.getApplicativeComposition = getApplicativeComposition;
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Chain.js
  var require_Chain = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Chain.js"(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.bind = exports.chainFirst = void 0;
      function chainFirst(M) {
        return function(f) {
          return function(first) {
            return M.chain(first, function(a) {
              return M.map(f(a), function() {
                return a;
              });
            });
          };
        };
      }
      exports.chainFirst = chainFirst;
      function bind(M) {
        return function(name, f) {
          return function(ma) {
            return M.chain(ma, function(a) {
              return M.map(f(a), function(b) {
                var _a;
                return Object.assign({}, a, (_a = {}, _a[name] = b, _a));
              });
            });
          };
        };
      }
      exports.bind = bind;
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/FromEither.js
  var require_FromEither = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/FromEither.js"(exports) {
      "use strict";
      var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
        if (k2 === void 0)
          k2 = k;
        var desc = Object.getOwnPropertyDescriptor(m, k);
        if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
          desc = { enumerable: true, get: function() {
            return m[k];
          } };
        }
        Object.defineProperty(o, k2, desc);
      } : function(o, m, k, k2) {
        if (k2 === void 0)
          k2 = k;
        o[k2] = m[k];
      });
      var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
        Object.defineProperty(o, "default", { enumerable: true, value: v });
      } : function(o, v) {
        o["default"] = v;
      });
      var __importStar = exports && exports.__importStar || function(mod) {
        if (mod && mod.__esModule)
          return mod;
        var result = {};
        if (mod != null) {
          for (var k in mod)
            if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
              __createBinding(result, mod, k);
        }
        __setModuleDefault(result, mod);
        return result;
      };
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.filterOrElse = exports.chainFirstEitherK = exports.chainEitherK = exports.fromEitherK = exports.chainOptionK = exports.fromOptionK = exports.fromPredicate = exports.fromOption = void 0;
      var Chain_1 = require_Chain();
      var function_1 = require_function();
      var _ = __importStar(require_internal());
      function fromOption(F) {
        return function(onNone) {
          return function(ma) {
            return F.fromEither(_.isNone(ma) ? _.left(onNone()) : _.right(ma.value));
          };
        };
      }
      exports.fromOption = fromOption;
      function fromPredicate2(F) {
        return function(predicate, onFalse) {
          return function(a) {
            return F.fromEither(predicate(a) ? _.right(a) : _.left(onFalse(a)));
          };
        };
      }
      exports.fromPredicate = fromPredicate2;
      function fromOptionK(F) {
        var fromOptionF = fromOption(F);
        return function(onNone) {
          var from = fromOptionF(onNone);
          return function(f) {
            return (0, function_1.flow)(f, from);
          };
        };
      }
      exports.fromOptionK = fromOptionK;
      function chainOptionK(F, M) {
        var fromOptionKF = fromOptionK(F);
        return function(onNone) {
          var from = fromOptionKF(onNone);
          return function(f) {
            return function(ma) {
              return M.chain(ma, from(f));
            };
          };
        };
      }
      exports.chainOptionK = chainOptionK;
      function fromEitherK(F) {
        return function(f) {
          return (0, function_1.flow)(f, F.fromEither);
        };
      }
      exports.fromEitherK = fromEitherK;
      function chainEitherK(F, M) {
        var fromEitherKF = fromEitherK(F);
        return function(f) {
          return function(ma) {
            return M.chain(ma, fromEitherKF(f));
          };
        };
      }
      exports.chainEitherK = chainEitherK;
      function chainFirstEitherK(F, M) {
        return (0, function_1.flow)(fromEitherK(F), (0, Chain_1.chainFirst)(M));
      }
      exports.chainFirstEitherK = chainFirstEitherK;
      function filterOrElse(F, M) {
        return function(predicate, onFalse) {
          return function(ma) {
            return M.chain(ma, function(a) {
              return F.fromEither(predicate(a) ? _.right(a) : _.left(onFalse(a)));
            });
          };
        };
      }
      exports.filterOrElse = filterOrElse;
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Predicate.js
  var require_Predicate = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Predicate.js"(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.and = exports.or = exports.not = exports.Contravariant = exports.getMonoidAll = exports.getSemigroupAll = exports.getMonoidAny = exports.getSemigroupAny = exports.URI = exports.contramap = void 0;
      var function_1 = require_function();
      var contramap_ = function(predicate, f) {
        return (0, function_1.pipe)(predicate, (0, exports.contramap)(f));
      };
      var contramap = function(f) {
        return function(predicate) {
          return (0, function_1.flow)(f, predicate);
        };
      };
      exports.contramap = contramap;
      exports.URI = "Predicate";
      var getSemigroupAny = function() {
        return {
          concat: function(first, second) {
            return (0, function_1.pipe)(first, (0, exports.or)(second));
          }
        };
      };
      exports.getSemigroupAny = getSemigroupAny;
      var getMonoidAny = function() {
        return {
          concat: (0, exports.getSemigroupAny)().concat,
          empty: function_1.constFalse
        };
      };
      exports.getMonoidAny = getMonoidAny;
      var getSemigroupAll = function() {
        return {
          concat: function(first, second) {
            return (0, function_1.pipe)(first, (0, exports.and)(second));
          }
        };
      };
      exports.getSemigroupAll = getSemigroupAll;
      var getMonoidAll = function() {
        return {
          concat: (0, exports.getSemigroupAll)().concat,
          empty: function_1.constTrue
        };
      };
      exports.getMonoidAll = getMonoidAll;
      exports.Contravariant = {
        URI: exports.URI,
        contramap: contramap_
      };
      var not = function(predicate) {
        return function(a) {
          return !predicate(a);
        };
      };
      exports.not = not;
      var or2 = function(second) {
        return function(first) {
          return function(a) {
            return first(a) || second(a);
          };
        };
      };
      exports.or = or2;
      var and2 = function(second) {
        return function(first) {
          return function(a) {
            return first(a) && second(a);
          };
        };
      };
      exports.and = and2;
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Magma.js
  var require_Magma = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Magma.js"(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.concatAll = exports.endo = exports.filterSecond = exports.filterFirst = exports.reverse = void 0;
      var reverse = function(M) {
        return {
          concat: function(first, second) {
            return M.concat(second, first);
          }
        };
      };
      exports.reverse = reverse;
      var filterFirst = function(predicate) {
        return function(M) {
          return {
            concat: function(first, second) {
              return predicate(first) ? M.concat(first, second) : second;
            }
          };
        };
      };
      exports.filterFirst = filterFirst;
      var filterSecond = function(predicate) {
        return function(M) {
          return {
            concat: function(first, second) {
              return predicate(second) ? M.concat(first, second) : first;
            }
          };
        };
      };
      exports.filterSecond = filterSecond;
      var endo = function(f) {
        return function(M) {
          return {
            concat: function(first, second) {
              return M.concat(f(first), f(second));
            }
          };
        };
      };
      exports.endo = endo;
      var concatAll = function(M) {
        return function(startWith) {
          return function(as) {
            return as.reduce(function(a, acc) {
              return M.concat(a, acc);
            }, startWith);
          };
        };
      };
      exports.concatAll = concatAll;
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Eq.js
  var require_Eq = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Eq.js"(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.eqDate = exports.eqNumber = exports.eqString = exports.eqBoolean = exports.eq = exports.strictEqual = exports.getStructEq = exports.getTupleEq = exports.Contravariant = exports.getMonoid = exports.getSemigroup = exports.eqStrict = exports.URI = exports.contramap = exports.tuple = exports.struct = exports.fromEquals = void 0;
      var function_1 = require_function();
      var fromEquals = function(equals) {
        return {
          equals: function(x, y) {
            return x === y || equals(x, y);
          }
        };
      };
      exports.fromEquals = fromEquals;
      var struct = function(eqs) {
        return (0, exports.fromEquals)(function(first, second) {
          for (var key in eqs) {
            if (!eqs[key].equals(first[key], second[key])) {
              return false;
            }
          }
          return true;
        });
      };
      exports.struct = struct;
      var tuple = function() {
        var eqs = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          eqs[_i] = arguments[_i];
        }
        return (0, exports.fromEquals)(function(first, second) {
          return eqs.every(function(E, i) {
            return E.equals(first[i], second[i]);
          });
        });
      };
      exports.tuple = tuple;
      var contramap_ = function(fa, f) {
        return (0, function_1.pipe)(fa, (0, exports.contramap)(f));
      };
      var contramap = function(f) {
        return function(fa) {
          return (0, exports.fromEquals)(function(x, y) {
            return fa.equals(f(x), f(y));
          });
        };
      };
      exports.contramap = contramap;
      exports.URI = "Eq";
      exports.eqStrict = {
        equals: function(a, b) {
          return a === b;
        }
      };
      var empty2 = {
        equals: function() {
          return true;
        }
      };
      var getSemigroup = function() {
        return {
          concat: function(x, y) {
            return (0, exports.fromEquals)(function(a, b) {
              return x.equals(a, b) && y.equals(a, b);
            });
          }
        };
      };
      exports.getSemigroup = getSemigroup;
      var getMonoid = function() {
        return {
          concat: (0, exports.getSemigroup)().concat,
          empty: empty2
        };
      };
      exports.getMonoid = getMonoid;
      exports.Contravariant = {
        URI: exports.URI,
        contramap: contramap_
      };
      exports.getTupleEq = exports.tuple;
      exports.getStructEq = exports.struct;
      exports.strictEqual = exports.eqStrict.equals;
      exports.eq = exports.Contravariant;
      exports.eqBoolean = exports.eqStrict;
      exports.eqString = exports.eqStrict;
      exports.eqNumber = exports.eqStrict;
      exports.eqDate = {
        equals: function(first, second) {
          return first.valueOf() === second.valueOf();
        }
      };
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Ord.js
  var require_Ord = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Ord.js"(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.ordDate = exports.ordNumber = exports.ordString = exports.ordBoolean = exports.ord = exports.getDualOrd = exports.getTupleOrd = exports.between = exports.clamp = exports.max = exports.min = exports.geq = exports.leq = exports.gt = exports.lt = exports.equals = exports.trivial = exports.Contravariant = exports.getMonoid = exports.getSemigroup = exports.URI = exports.contramap = exports.reverse = exports.tuple = exports.fromCompare = exports.equalsDefault = void 0;
      var Eq_1 = require_Eq();
      var function_1 = require_function();
      var equalsDefault = function(compare2) {
        return function(first, second) {
          return first === second || compare2(first, second) === 0;
        };
      };
      exports.equalsDefault = equalsDefault;
      var fromCompare = function(compare2) {
        return {
          equals: (0, exports.equalsDefault)(compare2),
          compare: function(first, second) {
            return first === second ? 0 : compare2(first, second);
          }
        };
      };
      exports.fromCompare = fromCompare;
      var tuple = function() {
        var ords = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          ords[_i] = arguments[_i];
        }
        return (0, exports.fromCompare)(function(first, second) {
          var i = 0;
          for (; i < ords.length - 1; i++) {
            var r = ords[i].compare(first[i], second[i]);
            if (r !== 0) {
              return r;
            }
          }
          return ords[i].compare(first[i], second[i]);
        });
      };
      exports.tuple = tuple;
      var reverse = function(O) {
        return (0, exports.fromCompare)(function(first, second) {
          return O.compare(second, first);
        });
      };
      exports.reverse = reverse;
      var contramap_ = function(fa, f) {
        return (0, function_1.pipe)(fa, (0, exports.contramap)(f));
      };
      var contramap = function(f) {
        return function(fa) {
          return (0, exports.fromCompare)(function(first, second) {
            return fa.compare(f(first), f(second));
          });
        };
      };
      exports.contramap = contramap;
      exports.URI = "Ord";
      var getSemigroup = function() {
        return {
          concat: function(first, second) {
            return (0, exports.fromCompare)(function(a, b) {
              var ox = first.compare(a, b);
              return ox !== 0 ? ox : second.compare(a, b);
            });
          }
        };
      };
      exports.getSemigroup = getSemigroup;
      var getMonoid = function() {
        return {
          concat: (0, exports.getSemigroup)().concat,
          empty: (0, exports.fromCompare)(function() {
            return 0;
          })
        };
      };
      exports.getMonoid = getMonoid;
      exports.Contravariant = {
        URI: exports.URI,
        contramap: contramap_
      };
      exports.trivial = {
        equals: function_1.constTrue,
        compare: /* @__PURE__ */ (0, function_1.constant)(0)
      };
      var equals = function(O) {
        return function(second) {
          return function(first) {
            return first === second || O.compare(first, second) === 0;
          };
        };
      };
      exports.equals = equals;
      var lt = function(O) {
        return function(first, second) {
          return O.compare(first, second) === -1;
        };
      };
      exports.lt = lt;
      var gt = function(O) {
        return function(first, second) {
          return O.compare(first, second) === 1;
        };
      };
      exports.gt = gt;
      var leq = function(O) {
        return function(first, second) {
          return O.compare(first, second) !== 1;
        };
      };
      exports.leq = leq;
      var geq = function(O) {
        return function(first, second) {
          return O.compare(first, second) !== -1;
        };
      };
      exports.geq = geq;
      var min = function(O) {
        return function(first, second) {
          return first === second || O.compare(first, second) < 1 ? first : second;
        };
      };
      exports.min = min;
      var max = function(O) {
        return function(first, second) {
          return first === second || O.compare(first, second) > -1 ? first : second;
        };
      };
      exports.max = max;
      var clamp = function(O) {
        var minO = (0, exports.min)(O);
        var maxO = (0, exports.max)(O);
        return function(low, hi) {
          return function(a) {
            return maxO(minO(a, hi), low);
          };
        };
      };
      exports.clamp = clamp;
      var between2 = function(O) {
        var ltO = (0, exports.lt)(O);
        var gtO = (0, exports.gt)(O);
        return function(low, hi) {
          return function(a) {
            return ltO(a, low) || gtO(a, hi) ? false : true;
          };
        };
      };
      exports.between = between2;
      exports.getTupleOrd = exports.tuple;
      exports.getDualOrd = exports.reverse;
      exports.ord = exports.Contravariant;
      function compare(first, second) {
        return first < second ? -1 : first > second ? 1 : 0;
      }
      var strictOrd = {
        equals: Eq_1.eqStrict.equals,
        compare
      };
      exports.ordBoolean = strictOrd;
      exports.ordString = strictOrd;
      exports.ordNumber = strictOrd;
      exports.ordDate = (0, function_1.pipe)(
        exports.ordNumber,
        /* @__PURE__ */ (0, exports.contramap)(function(date) {
          return date.valueOf();
        })
      );
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Semigroup.js
  var require_Semigroup = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Semigroup.js"(exports) {
      "use strict";
      var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
        if (k2 === void 0)
          k2 = k;
        var desc = Object.getOwnPropertyDescriptor(m, k);
        if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
          desc = { enumerable: true, get: function() {
            return m[k];
          } };
        }
        Object.defineProperty(o, k2, desc);
      } : function(o, m, k, k2) {
        if (k2 === void 0)
          k2 = k;
        o[k2] = m[k];
      });
      var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
        Object.defineProperty(o, "default", { enumerable: true, value: v });
      } : function(o, v) {
        o["default"] = v;
      });
      var __importStar = exports && exports.__importStar || function(mod) {
        if (mod && mod.__esModule)
          return mod;
        var result = {};
        if (mod != null) {
          for (var k in mod)
            if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
              __createBinding(result, mod, k);
        }
        __setModuleDefault(result, mod);
        return result;
      };
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.semigroupProduct = exports.semigroupSum = exports.semigroupString = exports.getFunctionSemigroup = exports.semigroupAny = exports.semigroupAll = exports.fold = exports.getIntercalateSemigroup = exports.getMeetSemigroup = exports.getJoinSemigroup = exports.getDualSemigroup = exports.getStructSemigroup = exports.getTupleSemigroup = exports.getFirstSemigroup = exports.getLastSemigroup = exports.getObjectSemigroup = exports.semigroupVoid = exports.concatAll = exports.last = exports.first = exports.intercalate = exports.tuple = exports.struct = exports.reverse = exports.constant = exports.max = exports.min = void 0;
      var function_1 = require_function();
      var _ = __importStar(require_internal());
      var M = __importStar(require_Magma());
      var Or = __importStar(require_Ord());
      var min = function(O) {
        return {
          concat: Or.min(O)
        };
      };
      exports.min = min;
      var max = function(O) {
        return {
          concat: Or.max(O)
        };
      };
      exports.max = max;
      var constant = function(a) {
        return {
          concat: function() {
            return a;
          }
        };
      };
      exports.constant = constant;
      exports.reverse = M.reverse;
      var struct = function(semigroups) {
        return {
          concat: function(first2, second) {
            var r = {};
            for (var k in semigroups) {
              if (_.has.call(semigroups, k)) {
                r[k] = semigroups[k].concat(first2[k], second[k]);
              }
            }
            return r;
          }
        };
      };
      exports.struct = struct;
      var tuple = function() {
        var semigroups = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          semigroups[_i] = arguments[_i];
        }
        return {
          concat: function(first2, second) {
            return semigroups.map(function(s, i) {
              return s.concat(first2[i], second[i]);
            });
          }
        };
      };
      exports.tuple = tuple;
      var intercalate = function(middle) {
        return function(S) {
          return {
            concat: function(x, y) {
              return S.concat(x, S.concat(middle, y));
            }
          };
        };
      };
      exports.intercalate = intercalate;
      var first = function() {
        return { concat: function_1.identity };
      };
      exports.first = first;
      var last = function() {
        return { concat: function(_2, y) {
          return y;
        } };
      };
      exports.last = last;
      exports.concatAll = M.concatAll;
      exports.semigroupVoid = (0, exports.constant)(void 0);
      var getObjectSemigroup = function() {
        return {
          concat: function(first2, second) {
            return Object.assign({}, first2, second);
          }
        };
      };
      exports.getObjectSemigroup = getObjectSemigroup;
      exports.getLastSemigroup = exports.last;
      exports.getFirstSemigroup = exports.first;
      exports.getTupleSemigroup = exports.tuple;
      exports.getStructSemigroup = exports.struct;
      exports.getDualSemigroup = exports.reverse;
      exports.getJoinSemigroup = exports.max;
      exports.getMeetSemigroup = exports.min;
      exports.getIntercalateSemigroup = exports.intercalate;
      function fold(S) {
        var concatAllS = (0, exports.concatAll)(S);
        return function(startWith, as) {
          return as === void 0 ? concatAllS(startWith) : concatAllS(startWith)(as);
        };
      }
      exports.fold = fold;
      exports.semigroupAll = {
        concat: function(x, y) {
          return x && y;
        }
      };
      exports.semigroupAny = {
        concat: function(x, y) {
          return x || y;
        }
      };
      exports.getFunctionSemigroup = function_1.getSemigroup;
      exports.semigroupString = {
        concat: function(x, y) {
          return x + y;
        }
      };
      exports.semigroupSum = {
        concat: function(x, y) {
          return x + y;
        }
      };
      exports.semigroupProduct = {
        concat: function(x, y) {
          return x * y;
        }
      };
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Separated.js
  var require_Separated = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Separated.js"(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.right = exports.left = exports.flap = exports.Functor = exports.Bifunctor = exports.URI = exports.bimap = exports.mapLeft = exports.map = exports.separated = void 0;
      var function_1 = require_function();
      var Functor_1 = require_Functor();
      var separated = function(left2, right2) {
        return { left: left2, right: right2 };
      };
      exports.separated = separated;
      var _map = function(fa, f) {
        return (0, function_1.pipe)(fa, (0, exports.map)(f));
      };
      var _mapLeft = function(fa, f) {
        return (0, function_1.pipe)(fa, (0, exports.mapLeft)(f));
      };
      var _bimap = function(fa, g, f) {
        return (0, function_1.pipe)(fa, (0, exports.bimap)(g, f));
      };
      var map2 = function(f) {
        return function(fa) {
          return (0, exports.separated)((0, exports.left)(fa), f((0, exports.right)(fa)));
        };
      };
      exports.map = map2;
      var mapLeft = function(f) {
        return function(fa) {
          return (0, exports.separated)(f((0, exports.left)(fa)), (0, exports.right)(fa));
        };
      };
      exports.mapLeft = mapLeft;
      var bimap = function(f, g) {
        return function(fa) {
          return (0, exports.separated)(f((0, exports.left)(fa)), g((0, exports.right)(fa)));
        };
      };
      exports.bimap = bimap;
      exports.URI = "Separated";
      exports.Bifunctor = {
        URI: exports.URI,
        mapLeft: _mapLeft,
        bimap: _bimap
      };
      exports.Functor = {
        URI: exports.URI,
        map: _map
      };
      exports.flap = (0, Functor_1.flap)(exports.Functor);
      var left = function(s) {
        return s.left;
      };
      exports.left = left;
      var right = function(s) {
        return s.right;
      };
      exports.right = right;
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Witherable.js
  var require_Witherable = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Witherable.js"(exports) {
      "use strict";
      var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
        if (k2 === void 0)
          k2 = k;
        var desc = Object.getOwnPropertyDescriptor(m, k);
        if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
          desc = { enumerable: true, get: function() {
            return m[k];
          } };
        }
        Object.defineProperty(o, k2, desc);
      } : function(o, m, k, k2) {
        if (k2 === void 0)
          k2 = k;
        o[k2] = m[k];
      });
      var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
        Object.defineProperty(o, "default", { enumerable: true, value: v });
      } : function(o, v) {
        o["default"] = v;
      });
      var __importStar = exports && exports.__importStar || function(mod) {
        if (mod && mod.__esModule)
          return mod;
        var result = {};
        if (mod != null) {
          for (var k in mod)
            if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
              __createBinding(result, mod, k);
        }
        __setModuleDefault(result, mod);
        return result;
      };
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.filterE = exports.witherDefault = exports.wiltDefault = void 0;
      var _ = __importStar(require_internal());
      function wiltDefault(T, C) {
        return function(F) {
          var traverseF = T.traverse(F);
          return function(wa, f) {
            return F.map(traverseF(wa, f), C.separate);
          };
        };
      }
      exports.wiltDefault = wiltDefault;
      function witherDefault(T, C) {
        return function(F) {
          var traverseF = T.traverse(F);
          return function(wa, f) {
            return F.map(traverseF(wa, f), C.compact);
          };
        };
      }
      exports.witherDefault = witherDefault;
      function filterE(W) {
        return function(F) {
          var witherF = W.wither(F);
          return function(predicate) {
            return function(ga) {
              return witherF(ga, function(a) {
                return F.map(predicate(a), function(b) {
                  return b ? _.some(a) : _.none;
                });
              });
            };
          };
        };
      }
      exports.filterE = filterE;
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Zero.js
  var require_Zero = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Zero.js"(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.guard = void 0;
      function guard(F, P) {
        return function(b) {
          return b ? P.of(void 0) : F.zero();
        };
      }
      exports.guard = guard;
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Option.js
  var require_Option = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/Option.js"(exports) {
      "use strict";
      var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
        if (k2 === void 0)
          k2 = k;
        var desc = Object.getOwnPropertyDescriptor(m, k);
        if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
          desc = { enumerable: true, get: function() {
            return m[k];
          } };
        }
        Object.defineProperty(o, k2, desc);
      } : function(o, m, k, k2) {
        if (k2 === void 0)
          k2 = k;
        o[k2] = m[k];
      });
      var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
        Object.defineProperty(o, "default", { enumerable: true, value: v });
      } : function(o, v) {
        o["default"] = v;
      });
      var __importStar = exports && exports.__importStar || function(mod) {
        if (mod && mod.__esModule)
          return mod;
        var result = {};
        if (mod != null) {
          for (var k in mod)
            if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
              __createBinding(result, mod, k);
        }
        __setModuleDefault(result, mod);
        return result;
      };
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.fromEither = exports.MonadThrow = exports.throwError = exports.Witherable = exports.wilt = exports.wither = exports.Traversable = exports.sequence = exports.traverse = exports.Filterable = exports.partitionMap = exports.partition = exports.filterMap = exports.filter = exports.Compactable = exports.separate = exports.compact = exports.Extend = exports.extend = exports.Alternative = exports.guard = exports.Zero = exports.zero = exports.Alt = exports.alt = exports.altW = exports.Foldable = exports.reduceRight = exports.foldMap = exports.reduce = exports.Monad = exports.Chain = exports.chain = exports.Applicative = exports.Apply = exports.ap = exports.Pointed = exports.of = exports.Functor = exports.map = exports.getMonoid = exports.getOrd = exports.getEq = exports.getShow = exports.URI = exports.getRight = exports.getLeft = exports.fromPredicate = exports.some = exports.none = void 0;
      exports.getLastMonoid = exports.getFirstMonoid = exports.getApplyMonoid = exports.getApplySemigroup = exports.option = exports.mapNullable = exports.getRefinement = exports.sequenceArray = exports.traverseArray = exports.traverseArrayWithIndex = exports.traverseReadonlyArrayWithIndex = exports.traverseReadonlyNonEmptyArrayWithIndex = exports.ApT = exports.apS = exports.bind = exports.let = exports.bindTo = exports.Do = exports.exists = exports.elem = exports.toUndefined = exports.toNullable = exports.chainNullableK = exports.fromNullableK = exports.tryCatchK = exports.tryCatch = exports.fromNullable = exports.chainFirstEitherK = exports.chainEitherK = exports.fromEitherK = exports.duplicate = exports.chainFirst = exports.flatten = exports.apSecond = exports.apFirst = exports.flap = exports.getOrElse = exports.getOrElseW = exports.fold = exports.match = exports.foldW = exports.matchW = exports.isNone = exports.isSome = exports.FromEither = void 0;
      var Applicative_1 = require_Applicative();
      var Apply_1 = require_Apply();
      var Chain_1 = require_Chain();
      var FromEither_1 = require_FromEither();
      var function_1 = require_function();
      var Functor_1 = require_Functor();
      var _ = __importStar(require_internal());
      var Predicate_1 = require_Predicate();
      var Semigroup_1 = require_Semigroup();
      var Separated_1 = require_Separated();
      var Witherable_1 = require_Witherable();
      var Zero_1 = require_Zero();
      exports.none = _.none;
      exports.some = _.some;
      function fromPredicate2(predicate) {
        return function(a) {
          return predicate(a) ? (0, exports.some)(a) : exports.none;
        };
      }
      exports.fromPredicate = fromPredicate2;
      var getLeft = function(ma) {
        return ma._tag === "Right" ? exports.none : (0, exports.some)(ma.left);
      };
      exports.getLeft = getLeft;
      var getRight = function(ma) {
        return ma._tag === "Left" ? exports.none : (0, exports.some)(ma.right);
      };
      exports.getRight = getRight;
      var _map = function(fa, f) {
        return (0, function_1.pipe)(fa, (0, exports.map)(f));
      };
      var _ap = function(fab, fa) {
        return (0, function_1.pipe)(fab, (0, exports.ap)(fa));
      };
      var _chain = function(ma, f) {
        return (0, function_1.pipe)(ma, (0, exports.chain)(f));
      };
      var _reduce = function(fa, b, f) {
        return (0, function_1.pipe)(fa, (0, exports.reduce)(b, f));
      };
      var _foldMap = function(M) {
        var foldMapM = (0, exports.foldMap)(M);
        return function(fa, f) {
          return (0, function_1.pipe)(fa, foldMapM(f));
        };
      };
      var _reduceRight = function(fa, b, f) {
        return (0, function_1.pipe)(fa, (0, exports.reduceRight)(b, f));
      };
      var _traverse = function(F) {
        var traverseF = (0, exports.traverse)(F);
        return function(ta, f) {
          return (0, function_1.pipe)(ta, traverseF(f));
        };
      };
      var _alt = function(fa, that) {
        return (0, function_1.pipe)(fa, (0, exports.alt)(that));
      };
      var _filter = function(fa, predicate) {
        return (0, function_1.pipe)(fa, (0, exports.filter)(predicate));
      };
      var _filterMap = function(fa, f) {
        return (0, function_1.pipe)(fa, (0, exports.filterMap)(f));
      };
      var _extend = function(wa, f) {
        return (0, function_1.pipe)(wa, (0, exports.extend)(f));
      };
      var _partition = function(fa, predicate) {
        return (0, function_1.pipe)(fa, (0, exports.partition)(predicate));
      };
      var _partitionMap = function(fa, f) {
        return (0, function_1.pipe)(fa, (0, exports.partitionMap)(f));
      };
      exports.URI = "Option";
      var getShow = function(S) {
        return {
          show: function(ma) {
            return (0, exports.isNone)(ma) ? "none" : "some(".concat(S.show(ma.value), ")");
          }
        };
      };
      exports.getShow = getShow;
      var getEq = function(E) {
        return {
          equals: function(x, y) {
            return x === y || ((0, exports.isNone)(x) ? (0, exports.isNone)(y) : (0, exports.isNone)(y) ? false : E.equals(x.value, y.value));
          }
        };
      };
      exports.getEq = getEq;
      var getOrd = function(O) {
        return {
          equals: (0, exports.getEq)(O).equals,
          compare: function(x, y) {
            return x === y ? 0 : (0, exports.isSome)(x) ? (0, exports.isSome)(y) ? O.compare(x.value, y.value) : 1 : -1;
          }
        };
      };
      exports.getOrd = getOrd;
      var getMonoid = function(S) {
        return {
          concat: function(x, y) {
            return (0, exports.isNone)(x) ? y : (0, exports.isNone)(y) ? x : (0, exports.some)(S.concat(x.value, y.value));
          },
          empty: exports.none
        };
      };
      exports.getMonoid = getMonoid;
      var map2 = function(f) {
        return function(fa) {
          return (0, exports.isNone)(fa) ? exports.none : (0, exports.some)(f(fa.value));
        };
      };
      exports.map = map2;
      exports.Functor = {
        URI: exports.URI,
        map: _map
      };
      exports.of = exports.some;
      exports.Pointed = {
        URI: exports.URI,
        of: exports.of
      };
      var ap = function(fa) {
        return function(fab) {
          return (0, exports.isNone)(fab) ? exports.none : (0, exports.isNone)(fa) ? exports.none : (0, exports.some)(fab.value(fa.value));
        };
      };
      exports.ap = ap;
      exports.Apply = {
        URI: exports.URI,
        map: _map,
        ap: _ap
      };
      exports.Applicative = {
        URI: exports.URI,
        map: _map,
        ap: _ap,
        of: exports.of
      };
      var chain2 = function(f) {
        return function(ma) {
          return (0, exports.isNone)(ma) ? exports.none : f(ma.value);
        };
      };
      exports.chain = chain2;
      exports.Chain = {
        URI: exports.URI,
        map: _map,
        ap: _ap,
        chain: _chain
      };
      exports.Monad = {
        URI: exports.URI,
        map: _map,
        ap: _ap,
        of: exports.of,
        chain: _chain
      };
      var reduce2 = function(b, f) {
        return function(fa) {
          return (0, exports.isNone)(fa) ? b : f(b, fa.value);
        };
      };
      exports.reduce = reduce2;
      var foldMap = function(M) {
        return function(f) {
          return function(fa) {
            return (0, exports.isNone)(fa) ? M.empty : f(fa.value);
          };
        };
      };
      exports.foldMap = foldMap;
      var reduceRight = function(b, f) {
        return function(fa) {
          return (0, exports.isNone)(fa) ? b : f(fa.value, b);
        };
      };
      exports.reduceRight = reduceRight;
      exports.Foldable = {
        URI: exports.URI,
        reduce: _reduce,
        foldMap: _foldMap,
        reduceRight: _reduceRight
      };
      var altW = function(that) {
        return function(fa) {
          return (0, exports.isNone)(fa) ? that() : fa;
        };
      };
      exports.altW = altW;
      exports.alt = exports.altW;
      exports.Alt = {
        URI: exports.URI,
        map: _map,
        alt: _alt
      };
      var zero = function() {
        return exports.none;
      };
      exports.zero = zero;
      exports.Zero = {
        URI: exports.URI,
        zero: exports.zero
      };
      exports.guard = (0, Zero_1.guard)(exports.Zero, exports.Pointed);
      exports.Alternative = {
        URI: exports.URI,
        map: _map,
        ap: _ap,
        of: exports.of,
        alt: _alt,
        zero: exports.zero
      };
      var extend = function(f) {
        return function(wa) {
          return (0, exports.isNone)(wa) ? exports.none : (0, exports.some)(f(wa));
        };
      };
      exports.extend = extend;
      exports.Extend = {
        URI: exports.URI,
        map: _map,
        extend: _extend
      };
      exports.compact = (0, exports.chain)(function_1.identity);
      var defaultSeparated = /* @__PURE__ */ (0, Separated_1.separated)(exports.none, exports.none);
      var separate = function(ma) {
        return (0, exports.isNone)(ma) ? defaultSeparated : (0, Separated_1.separated)((0, exports.getLeft)(ma.value), (0, exports.getRight)(ma.value));
      };
      exports.separate = separate;
      exports.Compactable = {
        URI: exports.URI,
        compact: exports.compact,
        separate: exports.separate
      };
      var filter = function(predicate) {
        return function(fa) {
          return (0, exports.isNone)(fa) ? exports.none : predicate(fa.value) ? fa : exports.none;
        };
      };
      exports.filter = filter;
      var filterMap = function(f) {
        return function(fa) {
          return (0, exports.isNone)(fa) ? exports.none : f(fa.value);
        };
      };
      exports.filterMap = filterMap;
      var partition = function(predicate) {
        return function(fa) {
          return (0, Separated_1.separated)(_filter(fa, (0, Predicate_1.not)(predicate)), _filter(fa, predicate));
        };
      };
      exports.partition = partition;
      var partitionMap = function(f) {
        return (0, function_1.flow)((0, exports.map)(f), exports.separate);
      };
      exports.partitionMap = partitionMap;
      exports.Filterable = {
        URI: exports.URI,
        map: _map,
        compact: exports.compact,
        separate: exports.separate,
        filter: _filter,
        filterMap: _filterMap,
        partition: _partition,
        partitionMap: _partitionMap
      };
      var traverse = function(F) {
        return function(f) {
          return function(ta) {
            return (0, exports.isNone)(ta) ? F.of(exports.none) : F.map(f(ta.value), exports.some);
          };
        };
      };
      exports.traverse = traverse;
      var sequence2 = function(F) {
        return function(ta) {
          return (0, exports.isNone)(ta) ? F.of(exports.none) : F.map(ta.value, exports.some);
        };
      };
      exports.sequence = sequence2;
      exports.Traversable = {
        URI: exports.URI,
        map: _map,
        reduce: _reduce,
        foldMap: _foldMap,
        reduceRight: _reduceRight,
        traverse: _traverse,
        sequence: exports.sequence
      };
      var _wither = /* @__PURE__ */ (0, Witherable_1.witherDefault)(exports.Traversable, exports.Compactable);
      var _wilt = /* @__PURE__ */ (0, Witherable_1.wiltDefault)(exports.Traversable, exports.Compactable);
      var wither = function(F) {
        var _witherF = _wither(F);
        return function(f) {
          return function(fa) {
            return _witherF(fa, f);
          };
        };
      };
      exports.wither = wither;
      var wilt = function(F) {
        var _wiltF = _wilt(F);
        return function(f) {
          return function(fa) {
            return _wiltF(fa, f);
          };
        };
      };
      exports.wilt = wilt;
      exports.Witherable = {
        URI: exports.URI,
        map: _map,
        reduce: _reduce,
        foldMap: _foldMap,
        reduceRight: _reduceRight,
        traverse: _traverse,
        sequence: exports.sequence,
        compact: exports.compact,
        separate: exports.separate,
        filter: _filter,
        filterMap: _filterMap,
        partition: _partition,
        partitionMap: _partitionMap,
        wither: _wither,
        wilt: _wilt
      };
      var throwError = function() {
        return exports.none;
      };
      exports.throwError = throwError;
      exports.MonadThrow = {
        URI: exports.URI,
        map: _map,
        ap: _ap,
        of: exports.of,
        chain: _chain,
        throwError: exports.throwError
      };
      exports.fromEither = exports.getRight;
      exports.FromEither = {
        URI: exports.URI,
        fromEither: exports.fromEither
      };
      exports.isSome = _.isSome;
      var isNone2 = function(fa) {
        return fa._tag === "None";
      };
      exports.isNone = isNone2;
      var matchW = function(onNone, onSome) {
        return function(ma) {
          return (0, exports.isNone)(ma) ? onNone() : onSome(ma.value);
        };
      };
      exports.matchW = matchW;
      exports.foldW = exports.matchW;
      exports.match = exports.matchW;
      exports.fold = exports.match;
      var getOrElseW2 = function(onNone) {
        return function(ma) {
          return (0, exports.isNone)(ma) ? onNone() : ma.value;
        };
      };
      exports.getOrElseW = getOrElseW2;
      exports.getOrElse = exports.getOrElseW;
      exports.flap = (0, Functor_1.flap)(exports.Functor);
      exports.apFirst = (0, Apply_1.apFirst)(exports.Apply);
      exports.apSecond = (0, Apply_1.apSecond)(exports.Apply);
      exports.flatten = exports.compact;
      exports.chainFirst = /* @__PURE__ */ (0, Chain_1.chainFirst)(exports.Chain);
      exports.duplicate = (0, exports.extend)(function_1.identity);
      exports.fromEitherK = (0, FromEither_1.fromEitherK)(exports.FromEither);
      exports.chainEitherK = /* @__PURE__ */ (0, FromEither_1.chainEitherK)(exports.FromEither, exports.Chain);
      exports.chainFirstEitherK = /* @__PURE__ */ (0, FromEither_1.chainFirstEitherK)(exports.FromEither, exports.Chain);
      var fromNullable = function(a) {
        return a == null ? exports.none : (0, exports.some)(a);
      };
      exports.fromNullable = fromNullable;
      var tryCatch = function(f) {
        try {
          return (0, exports.some)(f());
        } catch (e) {
          return exports.none;
        }
      };
      exports.tryCatch = tryCatch;
      var tryCatchK = function(f) {
        return function() {
          var a = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            a[_i] = arguments[_i];
          }
          return (0, exports.tryCatch)(function() {
            return f.apply(void 0, a);
          });
        };
      };
      exports.tryCatchK = tryCatchK;
      var fromNullableK = function(f) {
        return (0, function_1.flow)(f, exports.fromNullable);
      };
      exports.fromNullableK = fromNullableK;
      var chainNullableK = function(f) {
        return function(ma) {
          return (0, exports.isNone)(ma) ? exports.none : (0, exports.fromNullable)(f(ma.value));
        };
      };
      exports.chainNullableK = chainNullableK;
      exports.toNullable = (0, exports.match)(function_1.constNull, function_1.identity);
      exports.toUndefined = (0, exports.match)(function_1.constUndefined, function_1.identity);
      function elem(E) {
        return function(a, ma) {
          if (ma === void 0) {
            var elemE_1 = elem(E);
            return function(ma2) {
              return elemE_1(a, ma2);
            };
          }
          return (0, exports.isNone)(ma) ? false : E.equals(a, ma.value);
        };
      }
      exports.elem = elem;
      var exists = function(predicate) {
        return function(ma) {
          return (0, exports.isNone)(ma) ? false : predicate(ma.value);
        };
      };
      exports.exists = exists;
      exports.Do = (0, exports.of)(_.emptyRecord);
      exports.bindTo = (0, Functor_1.bindTo)(exports.Functor);
      var let_ = /* @__PURE__ */ (0, Functor_1.let)(exports.Functor);
      exports.let = let_;
      exports.bind = (0, Chain_1.bind)(exports.Chain);
      exports.apS = (0, Apply_1.apS)(exports.Apply);
      exports.ApT = (0, exports.of)(_.emptyReadonlyArray);
      var traverseReadonlyNonEmptyArrayWithIndex = function(f) {
        return function(as) {
          var o = f(0, _.head(as));
          if ((0, exports.isNone)(o)) {
            return exports.none;
          }
          var out = [o.value];
          for (var i = 1; i < as.length; i++) {
            var o_1 = f(i, as[i]);
            if ((0, exports.isNone)(o_1)) {
              return exports.none;
            }
            out.push(o_1.value);
          }
          return (0, exports.some)(out);
        };
      };
      exports.traverseReadonlyNonEmptyArrayWithIndex = traverseReadonlyNonEmptyArrayWithIndex;
      var traverseReadonlyArrayWithIndex = function(f) {
        var g = (0, exports.traverseReadonlyNonEmptyArrayWithIndex)(f);
        return function(as) {
          return _.isNonEmpty(as) ? g(as) : exports.ApT;
        };
      };
      exports.traverseReadonlyArrayWithIndex = traverseReadonlyArrayWithIndex;
      exports.traverseArrayWithIndex = exports.traverseReadonlyArrayWithIndex;
      var traverseArray = function(f) {
        return (0, exports.traverseReadonlyArrayWithIndex)(function(_2, a) {
          return f(a);
        });
      };
      exports.traverseArray = traverseArray;
      exports.sequenceArray = /* @__PURE__ */ (0, exports.traverseArray)(function_1.identity);
      function getRefinement(getOption) {
        return function(a) {
          return (0, exports.isSome)(getOption(a));
        };
      }
      exports.getRefinement = getRefinement;
      exports.mapNullable = exports.chainNullableK;
      exports.option = {
        URI: exports.URI,
        map: _map,
        of: exports.of,
        ap: _ap,
        chain: _chain,
        reduce: _reduce,
        foldMap: _foldMap,
        reduceRight: _reduceRight,
        traverse: _traverse,
        sequence: exports.sequence,
        zero: exports.zero,
        alt: _alt,
        extend: _extend,
        compact: exports.compact,
        separate: exports.separate,
        filter: _filter,
        filterMap: _filterMap,
        partition: _partition,
        partitionMap: _partitionMap,
        wither: _wither,
        wilt: _wilt,
        throwError: exports.throwError
      };
      exports.getApplySemigroup = (0, Apply_1.getApplySemigroup)(exports.Apply);
      exports.getApplyMonoid = (0, Applicative_1.getApplicativeMonoid)(exports.Applicative);
      var getFirstMonoid = function() {
        return (0, exports.getMonoid)((0, Semigroup_1.first)());
      };
      exports.getFirstMonoid = getFirstMonoid;
      var getLastMonoid = function() {
        return (0, exports.getMonoid)((0, Semigroup_1.last)());
      };
      exports.getLastMonoid = getLastMonoid;
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/number.js
  var require_number = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/number.js"(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.Field = exports.MonoidProduct = exports.MonoidSum = exports.SemigroupProduct = exports.SemigroupSum = exports.MagmaSub = exports.Show = exports.Bounded = exports.Ord = exports.Eq = exports.isNumber = void 0;
      var isNumber = function(u) {
        return typeof u === "number";
      };
      exports.isNumber = isNumber;
      exports.Eq = {
        equals: function(first, second) {
          return first === second;
        }
      };
      exports.Ord = {
        equals: exports.Eq.equals,
        compare: function(first, second) {
          return first < second ? -1 : first > second ? 1 : 0;
        }
      };
      exports.Bounded = {
        equals: exports.Eq.equals,
        compare: exports.Ord.compare,
        top: Infinity,
        bottom: -Infinity
      };
      exports.Show = {
        show: function(n) {
          return JSON.stringify(n);
        }
      };
      exports.MagmaSub = {
        concat: function(first, second) {
          return first - second;
        }
      };
      exports.SemigroupSum = {
        concat: function(first, second) {
          return first + second;
        }
      };
      exports.SemigroupProduct = {
        concat: function(first, second) {
          return first * second;
        }
      };
      exports.MonoidSum = {
        concat: exports.SemigroupSum.concat,
        empty: 0
      };
      exports.MonoidProduct = {
        concat: exports.SemigroupProduct.concat,
        empty: 1
      };
      exports.Field = {
        add: exports.SemigroupSum.concat,
        zero: 0,
        mul: exports.SemigroupProduct.concat,
        one: 1,
        sub: exports.MagmaSub.concat,
        degree: function(_) {
          return 1;
        },
        div: function(first, second) {
          return first / second;
        },
        mod: function(first, second) {
          return first % second;
        }
      };
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/ReadonlyNonEmptyArray.js
  var require_ReadonlyNonEmptyArray = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/ReadonlyNonEmptyArray.js"(exports) {
      "use strict";
      var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
        if (k2 === void 0)
          k2 = k;
        var desc = Object.getOwnPropertyDescriptor(m, k);
        if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
          desc = { enumerable: true, get: function() {
            return m[k];
          } };
        }
        Object.defineProperty(o, k2, desc);
      } : function(o, m, k, k2) {
        if (k2 === void 0)
          k2 = k;
        o[k2] = m[k];
      });
      var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
        Object.defineProperty(o, "default", { enumerable: true, value: v });
      } : function(o, v) {
        o["default"] = v;
      });
      var __importStar = exports && exports.__importStar || function(mod) {
        if (mod && mod.__esModule)
          return mod;
        var result = {};
        if (mod != null) {
          for (var k in mod)
            if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
              __createBinding(result, mod, k);
        }
        __setModuleDefault(result, mod);
        return result;
      };
      var __spreadArray = exports && exports.__spreadArray || function(to, from, pack) {
        if (pack || arguments.length === 2)
          for (var i = 0, l = from.length, ar; i < l; i++) {
            if (ar || !(i in from)) {
              if (!ar)
                ar = Array.prototype.slice.call(from, 0, i);
              ar[i] = from[i];
            }
          }
        return to.concat(ar || Array.prototype.slice.call(from));
      };
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.reduceRight = exports.foldMap = exports.reduce = exports.mapWithIndex = exports.map = exports.flatten = exports.duplicate = exports.extend = exports.chain = exports.ap = exports.alt = exports.altW = exports.of = exports.chunksOf = exports.splitAt = exports.chop = exports.chainWithIndex = exports.intersperse = exports.prependAll = exports.unzip = exports.zip = exports.zipWith = exports.modifyAt = exports.updateAt = exports.sort = exports.groupBy = exports.group = exports.reverse = exports.concat = exports.concatW = exports.fromArray = exports.unappend = exports.unprepend = exports.range = exports.replicate = exports.makeBy = exports.fromReadonlyArray = exports.rotate = exports.union = exports.sortBy = exports.uniq = exports.unsafeUpdateAt = exports.unsafeInsertAt = exports.append = exports.appendW = exports.prepend = exports.prependW = exports.isOutOfBound = exports.isNonEmpty = exports.empty = void 0;
      exports.filter = exports.groupSort = exports.intercalate = exports.updateLast = exports.modifyLast = exports.updateHead = exports.modifyHead = exports.matchRight = exports.matchLeft = exports.concatAll = exports.max = exports.min = exports.init = exports.last = exports.tail = exports.head = exports.apS = exports.bind = exports.let = exports.bindTo = exports.Do = exports.Comonad = exports.Alt = exports.TraversableWithIndex = exports.Traversable = exports.FoldableWithIndex = exports.Foldable = exports.Monad = exports.chainFirst = exports.Chain = exports.Applicative = exports.apSecond = exports.apFirst = exports.Apply = exports.FunctorWithIndex = exports.Pointed = exports.flap = exports.Functor = exports.getUnionSemigroup = exports.getEq = exports.getSemigroup = exports.getShow = exports.URI = exports.extract = exports.traverseWithIndex = exports.sequence = exports.traverse = exports.reduceRightWithIndex = exports.foldMapWithIndex = exports.reduceWithIndex = void 0;
      exports.readonlyNonEmptyArray = exports.fold = exports.prependToAll = exports.insertAt = exports.snoc = exports.cons = exports.unsnoc = exports.uncons = exports.filterWithIndex = void 0;
      var Apply_1 = require_Apply();
      var Chain_1 = require_Chain();
      var Eq_1 = require_Eq();
      var function_1 = require_function();
      var Functor_1 = require_Functor();
      var _ = __importStar(require_internal());
      var Ord_1 = require_Ord();
      var Se = __importStar(require_Semigroup());
      exports.empty = _.emptyReadonlyArray;
      exports.isNonEmpty = _.isNonEmpty;
      var isOutOfBound = function(i, as) {
        return i < 0 || i >= as.length;
      };
      exports.isOutOfBound = isOutOfBound;
      var prependW = function(head2) {
        return function(tail2) {
          return __spreadArray([head2], tail2, true);
        };
      };
      exports.prependW = prependW;
      exports.prepend = exports.prependW;
      var appendW = function(end) {
        return function(init2) {
          return __spreadArray(__spreadArray([], init2, true), [end], false);
        };
      };
      exports.appendW = appendW;
      exports.append = exports.appendW;
      var unsafeInsertAt = function(i, a, as) {
        if ((0, exports.isNonEmpty)(as)) {
          var xs = _.fromReadonlyNonEmptyArray(as);
          xs.splice(i, 0, a);
          return xs;
        }
        return [a];
      };
      exports.unsafeInsertAt = unsafeInsertAt;
      var unsafeUpdateAt = function(i, a, as) {
        if (as[i] === a) {
          return as;
        } else {
          var xs = _.fromReadonlyNonEmptyArray(as);
          xs[i] = a;
          return xs;
        }
      };
      exports.unsafeUpdateAt = unsafeUpdateAt;
      var uniq = function(E) {
        return function(as) {
          if (as.length === 1) {
            return as;
          }
          var out = [(0, exports.head)(as)];
          var rest = (0, exports.tail)(as);
          var _loop_1 = function(a2) {
            if (out.every(function(o) {
              return !E.equals(o, a2);
            })) {
              out.push(a2);
            }
          };
          for (var _i = 0, rest_1 = rest; _i < rest_1.length; _i++) {
            var a = rest_1[_i];
            _loop_1(a);
          }
          return out;
        };
      };
      exports.uniq = uniq;
      var sortBy = function(ords) {
        if ((0, exports.isNonEmpty)(ords)) {
          var M = (0, Ord_1.getMonoid)();
          return (0, exports.sort)(ords.reduce(M.concat, M.empty));
        }
        return function_1.identity;
      };
      exports.sortBy = sortBy;
      var union = function(E) {
        var uniqE = (0, exports.uniq)(E);
        return function(second) {
          return function(first) {
            return uniqE((0, function_1.pipe)(first, concat(second)));
          };
        };
      };
      exports.union = union;
      var rotate = function(n) {
        return function(as) {
          var len = as.length;
          var m = Math.round(n) % len;
          if ((0, exports.isOutOfBound)(Math.abs(m), as) || m === 0) {
            return as;
          }
          if (m < 0) {
            var _a = (0, exports.splitAt)(-m)(as), f = _a[0], s = _a[1];
            return (0, function_1.pipe)(s, concat(f));
          } else {
            return (0, exports.rotate)(m - len)(as);
          }
        };
      };
      exports.rotate = rotate;
      var fromReadonlyArray2 = function(as) {
        return (0, exports.isNonEmpty)(as) ? _.some(as) : _.none;
      };
      exports.fromReadonlyArray = fromReadonlyArray2;
      var makeBy = function(f) {
        return function(n) {
          var j = Math.max(0, Math.floor(n));
          var out = [f(0)];
          for (var i = 1; i < j; i++) {
            out.push(f(i));
          }
          return out;
        };
      };
      exports.makeBy = makeBy;
      var replicate = function(a) {
        return (0, exports.makeBy)(function() {
          return a;
        });
      };
      exports.replicate = replicate;
      var range = function(start, end) {
        return start <= end ? (0, exports.makeBy)(function(i) {
          return start + i;
        })(end - start + 1) : [start];
      };
      exports.range = range;
      var unprepend = function(as) {
        return [(0, exports.head)(as), (0, exports.tail)(as)];
      };
      exports.unprepend = unprepend;
      var unappend = function(as) {
        return [(0, exports.init)(as), (0, exports.last)(as)];
      };
      exports.unappend = unappend;
      var fromArray = function(as) {
        return (0, exports.fromReadonlyArray)(as.slice());
      };
      exports.fromArray = fromArray;
      function concatW(second) {
        return function(first) {
          return first.concat(second);
        };
      }
      exports.concatW = concatW;
      function concat(x, y) {
        return y ? x.concat(y) : function(y2) {
          return y2.concat(x);
        };
      }
      exports.concat = concat;
      var reverse = function(as) {
        return as.length === 1 ? as : __spreadArray([(0, exports.last)(as)], as.slice(0, -1).reverse(), true);
      };
      exports.reverse = reverse;
      function group(E) {
        return function(as) {
          var len = as.length;
          if (len === 0) {
            return exports.empty;
          }
          var out = [];
          var head2 = as[0];
          var nea = [head2];
          for (var i = 1; i < len; i++) {
            var a = as[i];
            if (E.equals(a, head2)) {
              nea.push(a);
            } else {
              out.push(nea);
              head2 = a;
              nea = [head2];
            }
          }
          out.push(nea);
          return out;
        };
      }
      exports.group = group;
      var groupBy = function(f) {
        return function(as) {
          var out = {};
          for (var _i = 0, as_1 = as; _i < as_1.length; _i++) {
            var a = as_1[_i];
            var k = f(a);
            if (_.has.call(out, k)) {
              out[k].push(a);
            } else {
              out[k] = [a];
            }
          }
          return out;
        };
      };
      exports.groupBy = groupBy;
      var sort = function(O) {
        return function(as) {
          return as.length === 1 ? as : as.slice().sort(O.compare);
        };
      };
      exports.sort = sort;
      var updateAt = function(i, a) {
        return (0, exports.modifyAt)(i, function() {
          return a;
        });
      };
      exports.updateAt = updateAt;
      var modifyAt = function(i, f) {
        return function(as) {
          return (0, exports.isOutOfBound)(i, as) ? _.none : _.some((0, exports.unsafeUpdateAt)(i, f(as[i]), as));
        };
      };
      exports.modifyAt = modifyAt;
      var zipWith = function(as, bs, f) {
        var cs = [f(as[0], bs[0])];
        var len = Math.min(as.length, bs.length);
        for (var i = 1; i < len; i++) {
          cs[i] = f(as[i], bs[i]);
        }
        return cs;
      };
      exports.zipWith = zipWith;
      function zip(as, bs) {
        if (bs === void 0) {
          return function(bs2) {
            return zip(bs2, as);
          };
        }
        return (0, exports.zipWith)(as, bs, function(a, b) {
          return [a, b];
        });
      }
      exports.zip = zip;
      var unzip = function(abs) {
        var fa = [abs[0][0]];
        var fb = [abs[0][1]];
        for (var i = 1; i < abs.length; i++) {
          fa[i] = abs[i][0];
          fb[i] = abs[i][1];
        }
        return [fa, fb];
      };
      exports.unzip = unzip;
      var prependAll = function(middle) {
        return function(as) {
          var out = [middle, as[0]];
          for (var i = 1; i < as.length; i++) {
            out.push(middle, as[i]);
          }
          return out;
        };
      };
      exports.prependAll = prependAll;
      var intersperse = function(middle) {
        return function(as) {
          var rest = (0, exports.tail)(as);
          return (0, exports.isNonEmpty)(rest) ? (0, function_1.pipe)(rest, (0, exports.prependAll)(middle), (0, exports.prepend)((0, exports.head)(as))) : as;
        };
      };
      exports.intersperse = intersperse;
      var chainWithIndex = function(f) {
        return function(as) {
          var out = _.fromReadonlyNonEmptyArray(f(0, (0, exports.head)(as)));
          for (var i = 1; i < as.length; i++) {
            out.push.apply(out, f(i, as[i]));
          }
          return out;
        };
      };
      exports.chainWithIndex = chainWithIndex;
      var chop = function(f) {
        return function(as) {
          var _a = f(as), b = _a[0], rest = _a[1];
          var out = [b];
          var next = rest;
          while ((0, exports.isNonEmpty)(next)) {
            var _b = f(next), b_1 = _b[0], rest_2 = _b[1];
            out.push(b_1);
            next = rest_2;
          }
          return out;
        };
      };
      exports.chop = chop;
      var splitAt = function(n) {
        return function(as) {
          var m = Math.max(1, n);
          return m >= as.length ? [as, exports.empty] : [(0, function_1.pipe)(as.slice(1, m), (0, exports.prepend)((0, exports.head)(as))), as.slice(m)];
        };
      };
      exports.splitAt = splitAt;
      var chunksOf = function(n) {
        return (0, exports.chop)((0, exports.splitAt)(n));
      };
      exports.chunksOf = chunksOf;
      var _map = function(fa, f) {
        return (0, function_1.pipe)(fa, (0, exports.map)(f));
      };
      var _mapWithIndex = function(fa, f) {
        return (0, function_1.pipe)(fa, (0, exports.mapWithIndex)(f));
      };
      var _ap = function(fab, fa) {
        return (0, function_1.pipe)(fab, (0, exports.ap)(fa));
      };
      var _chain = function(ma, f) {
        return (0, function_1.pipe)(ma, (0, exports.chain)(f));
      };
      var _extend = function(wa, f) {
        return (0, function_1.pipe)(wa, (0, exports.extend)(f));
      };
      var _reduce = function(fa, b, f) {
        return (0, function_1.pipe)(fa, (0, exports.reduce)(b, f));
      };
      var _foldMap = function(M) {
        var foldMapM = (0, exports.foldMap)(M);
        return function(fa, f) {
          return (0, function_1.pipe)(fa, foldMapM(f));
        };
      };
      var _reduceRight = function(fa, b, f) {
        return (0, function_1.pipe)(fa, (0, exports.reduceRight)(b, f));
      };
      var _traverse = function(F) {
        var traverseF = (0, exports.traverse)(F);
        return function(ta, f) {
          return (0, function_1.pipe)(ta, traverseF(f));
        };
      };
      var _alt = function(fa, that) {
        return (0, function_1.pipe)(fa, (0, exports.alt)(that));
      };
      var _reduceWithIndex = function(fa, b, f) {
        return (0, function_1.pipe)(fa, (0, exports.reduceWithIndex)(b, f));
      };
      var _foldMapWithIndex = function(M) {
        var foldMapWithIndexM = (0, exports.foldMapWithIndex)(M);
        return function(fa, f) {
          return (0, function_1.pipe)(fa, foldMapWithIndexM(f));
        };
      };
      var _reduceRightWithIndex = function(fa, b, f) {
        return (0, function_1.pipe)(fa, (0, exports.reduceRightWithIndex)(b, f));
      };
      var _traverseWithIndex = function(F) {
        var traverseWithIndexF = (0, exports.traverseWithIndex)(F);
        return function(ta, f) {
          return (0, function_1.pipe)(ta, traverseWithIndexF(f));
        };
      };
      exports.of = _.singleton;
      var altW = function(that) {
        return function(as) {
          return (0, function_1.pipe)(as, concatW(that()));
        };
      };
      exports.altW = altW;
      exports.alt = exports.altW;
      var ap = function(as) {
        return (0, exports.chain)(function(f) {
          return (0, function_1.pipe)(as, (0, exports.map)(f));
        });
      };
      exports.ap = ap;
      var chain2 = function(f) {
        return (0, exports.chainWithIndex)(function(_2, a) {
          return f(a);
        });
      };
      exports.chain = chain2;
      var extend = function(f) {
        return function(as) {
          var next = (0, exports.tail)(as);
          var out = [f(as)];
          while ((0, exports.isNonEmpty)(next)) {
            out.push(f(next));
            next = (0, exports.tail)(next);
          }
          return out;
        };
      };
      exports.extend = extend;
      exports.duplicate = /* @__PURE__ */ (0, exports.extend)(function_1.identity);
      exports.flatten = /* @__PURE__ */ (0, exports.chain)(function_1.identity);
      var map2 = function(f) {
        return (0, exports.mapWithIndex)(function(_2, a) {
          return f(a);
        });
      };
      exports.map = map2;
      var mapWithIndex = function(f) {
        return function(as) {
          var out = [f(0, (0, exports.head)(as))];
          for (var i = 1; i < as.length; i++) {
            out.push(f(i, as[i]));
          }
          return out;
        };
      };
      exports.mapWithIndex = mapWithIndex;
      var reduce2 = function(b, f) {
        return (0, exports.reduceWithIndex)(b, function(_2, b2, a) {
          return f(b2, a);
        });
      };
      exports.reduce = reduce2;
      var foldMap = function(S) {
        return function(f) {
          return function(as) {
            return as.slice(1).reduce(function(s, a) {
              return S.concat(s, f(a));
            }, f(as[0]));
          };
        };
      };
      exports.foldMap = foldMap;
      var reduceRight = function(b, f) {
        return (0, exports.reduceRightWithIndex)(b, function(_2, b2, a) {
          return f(b2, a);
        });
      };
      exports.reduceRight = reduceRight;
      var reduceWithIndex2 = function(b, f) {
        return function(as) {
          return as.reduce(function(b2, a, i) {
            return f(i, b2, a);
          }, b);
        };
      };
      exports.reduceWithIndex = reduceWithIndex2;
      var foldMapWithIndex = function(S) {
        return function(f) {
          return function(as) {
            return as.slice(1).reduce(function(s, a, i) {
              return S.concat(s, f(i + 1, a));
            }, f(0, as[0]));
          };
        };
      };
      exports.foldMapWithIndex = foldMapWithIndex;
      var reduceRightWithIndex = function(b, f) {
        return function(as) {
          return as.reduceRight(function(b2, a, i) {
            return f(i, a, b2);
          }, b);
        };
      };
      exports.reduceRightWithIndex = reduceRightWithIndex;
      var traverse = function(F) {
        var traverseWithIndexF = (0, exports.traverseWithIndex)(F);
        return function(f) {
          return traverseWithIndexF(function(_2, a) {
            return f(a);
          });
        };
      };
      exports.traverse = traverse;
      var sequence2 = function(F) {
        return (0, exports.traverseWithIndex)(F)(function_1.SK);
      };
      exports.sequence = sequence2;
      var traverseWithIndex = function(F) {
        return function(f) {
          return function(as) {
            var out = F.map(f(0, (0, exports.head)(as)), exports.of);
            for (var i = 1; i < as.length; i++) {
              out = F.ap(F.map(out, function(bs) {
                return function(b) {
                  return (0, function_1.pipe)(bs, (0, exports.append)(b));
                };
              }), f(i, as[i]));
            }
            return out;
          };
        };
      };
      exports.traverseWithIndex = traverseWithIndex;
      exports.extract = _.head;
      exports.URI = "ReadonlyNonEmptyArray";
      var getShow = function(S) {
        return {
          show: function(as) {
            return "[".concat(as.map(S.show).join(", "), "]");
          }
        };
      };
      exports.getShow = getShow;
      var getSemigroup = function() {
        return {
          concat
        };
      };
      exports.getSemigroup = getSemigroup;
      var getEq = function(E) {
        return (0, Eq_1.fromEquals)(function(xs, ys) {
          return xs.length === ys.length && xs.every(function(x, i) {
            return E.equals(x, ys[i]);
          });
        });
      };
      exports.getEq = getEq;
      var getUnionSemigroup = function(E) {
        var unionE = (0, exports.union)(E);
        return {
          concat: function(first, second) {
            return unionE(second)(first);
          }
        };
      };
      exports.getUnionSemigroup = getUnionSemigroup;
      exports.Functor = {
        URI: exports.URI,
        map: _map
      };
      exports.flap = (0, Functor_1.flap)(exports.Functor);
      exports.Pointed = {
        URI: exports.URI,
        of: exports.of
      };
      exports.FunctorWithIndex = {
        URI: exports.URI,
        map: _map,
        mapWithIndex: _mapWithIndex
      };
      exports.Apply = {
        URI: exports.URI,
        map: _map,
        ap: _ap
      };
      exports.apFirst = (0, Apply_1.apFirst)(exports.Apply);
      exports.apSecond = (0, Apply_1.apSecond)(exports.Apply);
      exports.Applicative = {
        URI: exports.URI,
        map: _map,
        ap: _ap,
        of: exports.of
      };
      exports.Chain = {
        URI: exports.URI,
        map: _map,
        ap: _ap,
        chain: _chain
      };
      exports.chainFirst = (0, Chain_1.chainFirst)(exports.Chain);
      exports.Monad = {
        URI: exports.URI,
        map: _map,
        ap: _ap,
        of: exports.of,
        chain: _chain
      };
      exports.Foldable = {
        URI: exports.URI,
        reduce: _reduce,
        foldMap: _foldMap,
        reduceRight: _reduceRight
      };
      exports.FoldableWithIndex = {
        URI: exports.URI,
        reduce: _reduce,
        foldMap: _foldMap,
        reduceRight: _reduceRight,
        reduceWithIndex: _reduceWithIndex,
        foldMapWithIndex: _foldMapWithIndex,
        reduceRightWithIndex: _reduceRightWithIndex
      };
      exports.Traversable = {
        URI: exports.URI,
        map: _map,
        reduce: _reduce,
        foldMap: _foldMap,
        reduceRight: _reduceRight,
        traverse: _traverse,
        sequence: exports.sequence
      };
      exports.TraversableWithIndex = {
        URI: exports.URI,
        map: _map,
        mapWithIndex: _mapWithIndex,
        reduce: _reduce,
        foldMap: _foldMap,
        reduceRight: _reduceRight,
        traverse: _traverse,
        sequence: exports.sequence,
        reduceWithIndex: _reduceWithIndex,
        foldMapWithIndex: _foldMapWithIndex,
        reduceRightWithIndex: _reduceRightWithIndex,
        traverseWithIndex: _traverseWithIndex
      };
      exports.Alt = {
        URI: exports.URI,
        map: _map,
        alt: _alt
      };
      exports.Comonad = {
        URI: exports.URI,
        map: _map,
        extend: _extend,
        extract: exports.extract
      };
      exports.Do = (0, exports.of)(_.emptyRecord);
      exports.bindTo = (0, Functor_1.bindTo)(exports.Functor);
      var let_ = /* @__PURE__ */ (0, Functor_1.let)(exports.Functor);
      exports.let = let_;
      exports.bind = (0, Chain_1.bind)(exports.Chain);
      exports.apS = (0, Apply_1.apS)(exports.Apply);
      exports.head = exports.extract;
      exports.tail = _.tail;
      var last = function(as) {
        return as[as.length - 1];
      };
      exports.last = last;
      var init = function(as) {
        return as.slice(0, -1);
      };
      exports.init = init;
      var min = function(O) {
        var S = Se.min(O);
        return function(as) {
          return as.reduce(S.concat);
        };
      };
      exports.min = min;
      var max = function(O) {
        var S = Se.max(O);
        return function(as) {
          return as.reduce(S.concat);
        };
      };
      exports.max = max;
      var concatAll = function(S) {
        return function(as) {
          return as.reduce(S.concat);
        };
      };
      exports.concatAll = concatAll;
      var matchLeft = function(f) {
        return function(as) {
          return f((0, exports.head)(as), (0, exports.tail)(as));
        };
      };
      exports.matchLeft = matchLeft;
      var matchRight = function(f) {
        return function(as) {
          return f((0, exports.init)(as), (0, exports.last)(as));
        };
      };
      exports.matchRight = matchRight;
      var modifyHead = function(f) {
        return function(as) {
          return __spreadArray([f((0, exports.head)(as))], (0, exports.tail)(as), true);
        };
      };
      exports.modifyHead = modifyHead;
      var updateHead = function(a) {
        return (0, exports.modifyHead)(function() {
          return a;
        });
      };
      exports.updateHead = updateHead;
      var modifyLast = function(f) {
        return function(as) {
          return (0, function_1.pipe)((0, exports.init)(as), (0, exports.append)(f((0, exports.last)(as))));
        };
      };
      exports.modifyLast = modifyLast;
      var updateLast = function(a) {
        return (0, exports.modifyLast)(function() {
          return a;
        });
      };
      exports.updateLast = updateLast;
      var intercalate = function(S) {
        var concatAllS = (0, exports.concatAll)(S);
        return function(middle) {
          return (0, function_1.flow)((0, exports.intersperse)(middle), concatAllS);
        };
      };
      exports.intercalate = intercalate;
      function groupSort(O) {
        var sortO = (0, exports.sort)(O);
        var groupO = group(O);
        return function(as) {
          return (0, exports.isNonEmpty)(as) ? groupO(sortO(as)) : exports.empty;
        };
      }
      exports.groupSort = groupSort;
      function filter(predicate) {
        return (0, exports.filterWithIndex)(function(_2, a) {
          return predicate(a);
        });
      }
      exports.filter = filter;
      var filterWithIndex = function(predicate) {
        return function(as) {
          return (0, exports.fromReadonlyArray)(as.filter(function(a, i) {
            return predicate(i, a);
          }));
        };
      };
      exports.filterWithIndex = filterWithIndex;
      exports.uncons = exports.unprepend;
      exports.unsnoc = exports.unappend;
      function cons(head2, tail2) {
        return tail2 === void 0 ? (0, exports.prepend)(head2) : (0, function_1.pipe)(tail2, (0, exports.prepend)(head2));
      }
      exports.cons = cons;
      var snoc = function(init2, end) {
        return (0, function_1.pipe)(init2, concat([end]));
      };
      exports.snoc = snoc;
      var insertAt = function(i, a) {
        return function(as) {
          return i < 0 || i > as.length ? _.none : _.some((0, exports.unsafeInsertAt)(i, a, as));
        };
      };
      exports.insertAt = insertAt;
      exports.prependToAll = exports.prependAll;
      exports.fold = exports.concatAll;
      exports.readonlyNonEmptyArray = {
        URI: exports.URI,
        of: exports.of,
        map: _map,
        mapWithIndex: _mapWithIndex,
        ap: _ap,
        chain: _chain,
        extend: _extend,
        extract: exports.extract,
        reduce: _reduce,
        foldMap: _foldMap,
        reduceRight: _reduceRight,
        traverse: _traverse,
        sequence: exports.sequence,
        reduceWithIndex: _reduceWithIndex,
        foldMapWithIndex: _foldMapWithIndex,
        reduceRightWithIndex: _reduceRightWithIndex,
        traverseWithIndex: _traverseWithIndex,
        alt: _alt
      };
    }
  });

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/ReadonlyArray.js
  var require_ReadonlyArray = __commonJS({
    "node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/lib/ReadonlyArray.js"(exports) {
      "use strict";
      var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
        if (k2 === void 0)
          k2 = k;
        var desc = Object.getOwnPropertyDescriptor(m, k);
        if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
          desc = { enumerable: true, get: function() {
            return m[k];
          } };
        }
        Object.defineProperty(o, k2, desc);
      } : function(o, m, k, k2) {
        if (k2 === void 0)
          k2 = k;
        o[k2] = m[k];
      });
      var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
        Object.defineProperty(o, "default", { enumerable: true, value: v });
      } : function(o, v) {
        o["default"] = v;
      });
      var __importStar = exports && exports.__importStar || function(mod) {
        if (mod && mod.__esModule)
          return mod;
        var result = {};
        if (mod != null) {
          for (var k in mod)
            if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
              __createBinding(result, mod, k);
        }
        __setModuleDefault(result, mod);
        return result;
      };
      var __spreadArray = exports && exports.__spreadArray || function(to, from, pack) {
        if (pack || arguments.length === 2)
          for (var i = 0, l = from.length, ar; i < l; i++) {
            if (ar || !(i in from)) {
              if (!ar)
                ar = Array.prototype.slice.call(from, 0, i);
              ar[i] = from[i];
            }
          }
        return to.concat(ar || Array.prototype.slice.call(from));
      };
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.sort = exports.lefts = exports.rights = exports.reverse = exports.modifyAt = exports.deleteAt = exports.updateAt = exports.insertAt = exports.findLastIndex = exports.findLastMap = exports.findLast = exports.findFirstMap = exports.findFirst = exports.findIndex = exports.dropLeftWhile = exports.dropRight = exports.dropLeft = exports.spanLeft = exports.takeLeftWhile = exports.takeRight = exports.takeLeft = exports.init = exports.tail = exports.last = exports.head = exports.lookup = exports.isOutOfBound = exports.size = exports.scanRight = exports.scanLeft = exports.chainWithIndex = exports.foldRight = exports.matchRight = exports.matchRightW = exports.foldLeft = exports.matchLeft = exports.matchLeftW = exports.match = exports.matchW = exports.fromEither = exports.fromOption = exports.fromPredicate = exports.replicate = exports.makeBy = exports.appendW = exports.append = exports.prependW = exports.prepend = exports.isNonEmpty = exports.isEmpty = void 0;
      exports.sequence = exports.traverse = exports.reduceRightWithIndex = exports.reduceRight = exports.reduceWithIndex = exports.foldMap = exports.reduce = exports.foldMapWithIndex = exports.duplicate = exports.extend = exports.filterWithIndex = exports.partitionMapWithIndex = exports.partitionMap = exports.partitionWithIndex = exports.partition = exports.compact = exports.filterMap = exports.filterMapWithIndex = exports.filter = exports.separate = exports.mapWithIndex = exports.map = exports.flatten = exports.chain = exports.ap = exports.alt = exports.altW = exports.zero = exports.of = exports._chainRecBreadthFirst = exports._chainRecDepthFirst = exports.difference = exports.intersection = exports.union = exports.concat = exports.concatW = exports.comprehension = exports.fromOptionK = exports.chunksOf = exports.splitAt = exports.chop = exports.sortBy = exports.uniq = exports.elem = exports.rotate = exports.intersperse = exports.prependAll = exports.unzip = exports.zip = exports.zipWith = void 0;
      exports.toArray = exports.unsafeDeleteAt = exports.unsafeUpdateAt = exports.unsafeInsertAt = exports.fromEitherK = exports.FromEither = exports.filterE = exports.Witherable = exports.ChainRecBreadthFirst = exports.chainRecBreadthFirst = exports.ChainRecDepthFirst = exports.chainRecDepthFirst = exports.TraversableWithIndex = exports.Traversable = exports.FoldableWithIndex = exports.Foldable = exports.FilterableWithIndex = exports.Filterable = exports.Compactable = exports.Extend = exports.Alternative = exports.guard = exports.Zero = exports.Alt = exports.Unfoldable = exports.chainFirst = exports.Monad = exports.Chain = exports.Applicative = exports.apSecond = exports.apFirst = exports.Apply = exports.FunctorWithIndex = exports.Pointed = exports.flap = exports.Functor = exports.getDifferenceMagma = exports.getIntersectionSemigroup = exports.getUnionMonoid = exports.getUnionSemigroup = exports.getOrd = exports.getEq = exports.getMonoid = exports.getSemigroup = exports.getShow = exports.URI = exports.unfold = exports.wilt = exports.wither = exports.traverseWithIndex = void 0;
      exports.readonlyArray = exports.prependToAll = exports.snoc = exports.cons = exports.range = exports.apS = exports.bind = exports.let = exports.bindTo = exports.Do = exports.intercalate = exports.exists = exports.some = exports.every = exports.empty = exports.fromArray = void 0;
      var Apply_1 = require_Apply();
      var Chain_1 = require_Chain();
      var Eq_1 = require_Eq();
      var FromEither_1 = require_FromEither();
      var function_1 = require_function();
      var Functor_1 = require_Functor();
      var _ = __importStar(require_internal());
      var N = __importStar(require_number());
      var Ord_1 = require_Ord();
      var RNEA = __importStar(require_ReadonlyNonEmptyArray());
      var Separated_1 = require_Separated();
      var Witherable_1 = require_Witherable();
      var Zero_1 = require_Zero();
      var isEmpty = function(as) {
        return as.length === 0;
      };
      exports.isEmpty = isEmpty;
      exports.isNonEmpty = RNEA.isNonEmpty;
      exports.prepend = RNEA.prepend;
      exports.prependW = RNEA.prependW;
      exports.append = RNEA.append;
      exports.appendW = RNEA.appendW;
      var makeBy = function(n, f) {
        return n <= 0 ? exports.empty : RNEA.makeBy(f)(n);
      };
      exports.makeBy = makeBy;
      var replicate = function(n, a) {
        return (0, exports.makeBy)(n, function() {
          return a;
        });
      };
      exports.replicate = replicate;
      function fromPredicate2(predicate) {
        return function(a) {
          return predicate(a) ? [a] : exports.empty;
        };
      }
      exports.fromPredicate = fromPredicate2;
      var fromOption = function(ma) {
        return _.isNone(ma) ? exports.empty : [ma.value];
      };
      exports.fromOption = fromOption;
      var fromEither = function(e) {
        return _.isLeft(e) ? exports.empty : [e.right];
      };
      exports.fromEither = fromEither;
      var matchW = function(onEmpty, onNonEmpty) {
        return function(as) {
          return (0, exports.isNonEmpty)(as) ? onNonEmpty(as) : onEmpty();
        };
      };
      exports.matchW = matchW;
      exports.match = exports.matchW;
      var matchLeftW = function(onEmpty, onNonEmpty) {
        return function(as) {
          return (0, exports.isNonEmpty)(as) ? onNonEmpty(RNEA.head(as), RNEA.tail(as)) : onEmpty();
        };
      };
      exports.matchLeftW = matchLeftW;
      exports.matchLeft = exports.matchLeftW;
      exports.foldLeft = exports.matchLeft;
      var matchRightW = function(onEmpty, onNonEmpty) {
        return function(as) {
          return (0, exports.isNonEmpty)(as) ? onNonEmpty(RNEA.init(as), RNEA.last(as)) : onEmpty();
        };
      };
      exports.matchRightW = matchRightW;
      exports.matchRight = exports.matchRightW;
      exports.foldRight = exports.matchRight;
      var chainWithIndex = function(f) {
        return function(as) {
          if ((0, exports.isEmpty)(as)) {
            return exports.empty;
          }
          var out = [];
          for (var i = 0; i < as.length; i++) {
            out.push.apply(out, f(i, as[i]));
          }
          return out;
        };
      };
      exports.chainWithIndex = chainWithIndex;
      var scanLeft = function(b, f) {
        return function(as) {
          var len = as.length;
          var out = new Array(len + 1);
          out[0] = b;
          for (var i = 0; i < len; i++) {
            out[i + 1] = f(out[i], as[i]);
          }
          return out;
        };
      };
      exports.scanLeft = scanLeft;
      var scanRight = function(b, f) {
        return function(as) {
          var len = as.length;
          var out = new Array(len + 1);
          out[len] = b;
          for (var i = len - 1; i >= 0; i--) {
            out[i] = f(as[i], out[i + 1]);
          }
          return out;
        };
      };
      exports.scanRight = scanRight;
      var size = function(as) {
        return as.length;
      };
      exports.size = size;
      exports.isOutOfBound = RNEA.isOutOfBound;
      function lookup(i, as) {
        return as === void 0 ? function(as2) {
          return lookup(i, as2);
        } : (0, exports.isOutOfBound)(i, as) ? _.none : _.some(as[i]);
      }
      exports.lookup = lookup;
      var head2 = function(as) {
        return (0, exports.isNonEmpty)(as) ? _.some(RNEA.head(as)) : _.none;
      };
      exports.head = head2;
      var last = function(as) {
        return (0, exports.isNonEmpty)(as) ? _.some(RNEA.last(as)) : _.none;
      };
      exports.last = last;
      var tail2 = function(as) {
        return (0, exports.isNonEmpty)(as) ? _.some(RNEA.tail(as)) : _.none;
      };
      exports.tail = tail2;
      var init = function(as) {
        return (0, exports.isNonEmpty)(as) ? _.some(RNEA.init(as)) : _.none;
      };
      exports.init = init;
      var takeLeft = function(n) {
        return function(as) {
          return (0, exports.isOutOfBound)(n, as) ? as : n === 0 ? exports.empty : as.slice(0, n);
        };
      };
      exports.takeLeft = takeLeft;
      var takeRight = function(n) {
        return function(as) {
          return (0, exports.isOutOfBound)(n, as) ? as : n === 0 ? exports.empty : as.slice(-n);
        };
      };
      exports.takeRight = takeRight;
      function takeLeftWhile(predicate) {
        return function(as) {
          var out = [];
          for (var _i = 0, as_1 = as; _i < as_1.length; _i++) {
            var a = as_1[_i];
            if (!predicate(a)) {
              break;
            }
            out.push(a);
          }
          var len = out.length;
          return len === as.length ? as : len === 0 ? exports.empty : out;
        };
      }
      exports.takeLeftWhile = takeLeftWhile;
      var spanLeftIndex = function(as, predicate) {
        var l = as.length;
        var i = 0;
        for (; i < l; i++) {
          if (!predicate(as[i])) {
            break;
          }
        }
        return i;
      };
      function spanLeft(predicate) {
        return function(as) {
          var _a = (0, exports.splitAt)(spanLeftIndex(as, predicate))(as), init2 = _a[0], rest = _a[1];
          return { init: init2, rest };
        };
      }
      exports.spanLeft = spanLeft;
      var dropLeft = function(n) {
        return function(as) {
          return n <= 0 || (0, exports.isEmpty)(as) ? as : n >= as.length ? exports.empty : as.slice(n, as.length);
        };
      };
      exports.dropLeft = dropLeft;
      var dropRight = function(n) {
        return function(as) {
          return n <= 0 || (0, exports.isEmpty)(as) ? as : n >= as.length ? exports.empty : as.slice(0, as.length - n);
        };
      };
      exports.dropRight = dropRight;
      function dropLeftWhile(predicate) {
        return function(as) {
          var i = spanLeftIndex(as, predicate);
          return i === 0 ? as : i === as.length ? exports.empty : as.slice(i);
        };
      }
      exports.dropLeftWhile = dropLeftWhile;
      var findIndex = function(predicate) {
        return function(as) {
          for (var i = 0; i < as.length; i++) {
            if (predicate(as[i])) {
              return _.some(i);
            }
          }
          return _.none;
        };
      };
      exports.findIndex = findIndex;
      function findFirst(predicate) {
        return function(as) {
          for (var i = 0; i < as.length; i++) {
            if (predicate(as[i])) {
              return _.some(as[i]);
            }
          }
          return _.none;
        };
      }
      exports.findFirst = findFirst;
      var findFirstMap = function(f) {
        return function(as) {
          for (var i = 0; i < as.length; i++) {
            var out = f(as[i]);
            if (_.isSome(out)) {
              return out;
            }
          }
          return _.none;
        };
      };
      exports.findFirstMap = findFirstMap;
      function findLast(predicate) {
        return function(as) {
          for (var i = as.length - 1; i >= 0; i--) {
            if (predicate(as[i])) {
              return _.some(as[i]);
            }
          }
          return _.none;
        };
      }
      exports.findLast = findLast;
      var findLastMap = function(f) {
        return function(as) {
          for (var i = as.length - 1; i >= 0; i--) {
            var out = f(as[i]);
            if (_.isSome(out)) {
              return out;
            }
          }
          return _.none;
        };
      };
      exports.findLastMap = findLastMap;
      var findLastIndex = function(predicate) {
        return function(as) {
          for (var i = as.length - 1; i >= 0; i--) {
            if (predicate(as[i])) {
              return _.some(i);
            }
          }
          return _.none;
        };
      };
      exports.findLastIndex = findLastIndex;
      var insertAt = function(i, a) {
        return function(as) {
          return i < 0 || i > as.length ? _.none : _.some(RNEA.unsafeInsertAt(i, a, as));
        };
      };
      exports.insertAt = insertAt;
      var updateAt = function(i, a) {
        return (0, exports.modifyAt)(i, function() {
          return a;
        });
      };
      exports.updateAt = updateAt;
      var deleteAt = function(i) {
        return function(as) {
          return (0, exports.isOutOfBound)(i, as) ? _.none : _.some((0, exports.unsafeDeleteAt)(i, as));
        };
      };
      exports.deleteAt = deleteAt;
      var modifyAt = function(i, f) {
        return function(as) {
          return (0, exports.isOutOfBound)(i, as) ? _.none : _.some((0, exports.unsafeUpdateAt)(i, f(as[i]), as));
        };
      };
      exports.modifyAt = modifyAt;
      var reverse = function(as) {
        return as.length <= 1 ? as : as.slice().reverse();
      };
      exports.reverse = reverse;
      var rights = function(as) {
        var r = [];
        for (var i = 0; i < as.length; i++) {
          var a = as[i];
          if (a._tag === "Right") {
            r.push(a.right);
          }
        }
        return r;
      };
      exports.rights = rights;
      var lefts = function(as) {
        var r = [];
        for (var i = 0; i < as.length; i++) {
          var a = as[i];
          if (a._tag === "Left") {
            r.push(a.left);
          }
        }
        return r;
      };
      exports.lefts = lefts;
      var sort = function(O) {
        return function(as) {
          return as.length <= 1 ? as : as.slice().sort(O.compare);
        };
      };
      exports.sort = sort;
      var zipWith = function(fa, fb, f) {
        var fc = [];
        var len = Math.min(fa.length, fb.length);
        for (var i = 0; i < len; i++) {
          fc[i] = f(fa[i], fb[i]);
        }
        return fc;
      };
      exports.zipWith = zipWith;
      function zip(as, bs) {
        if (bs === void 0) {
          return function(bs2) {
            return zip(bs2, as);
          };
        }
        return (0, exports.zipWith)(as, bs, function(a, b) {
          return [a, b];
        });
      }
      exports.zip = zip;
      var unzip = function(as) {
        var fa = [];
        var fb = [];
        for (var i = 0; i < as.length; i++) {
          fa[i] = as[i][0];
          fb[i] = as[i][1];
        }
        return [fa, fb];
      };
      exports.unzip = unzip;
      var prependAll = function(middle) {
        var f = RNEA.prependAll(middle);
        return function(as) {
          return (0, exports.isNonEmpty)(as) ? f(as) : as;
        };
      };
      exports.prependAll = prependAll;
      var intersperse = function(middle) {
        var f = RNEA.intersperse(middle);
        return function(as) {
          return (0, exports.isNonEmpty)(as) ? f(as) : as;
        };
      };
      exports.intersperse = intersperse;
      var rotate = function(n) {
        var f = RNEA.rotate(n);
        return function(as) {
          return (0, exports.isNonEmpty)(as) ? f(as) : as;
        };
      };
      exports.rotate = rotate;
      function elem(E) {
        return function(a, as) {
          if (as === void 0) {
            var elemE_1 = elem(E);
            return function(as2) {
              return elemE_1(a, as2);
            };
          }
          var predicate = function(element) {
            return E.equals(element, a);
          };
          var i = 0;
          for (; i < as.length; i++) {
            if (predicate(as[i])) {
              return true;
            }
          }
          return false;
        };
      }
      exports.elem = elem;
      var uniq = function(E) {
        var f = RNEA.uniq(E);
        return function(as) {
          return (0, exports.isNonEmpty)(as) ? f(as) : as;
        };
      };
      exports.uniq = uniq;
      var sortBy = function(ords) {
        var f = RNEA.sortBy(ords);
        return function(as) {
          return (0, exports.isNonEmpty)(as) ? f(as) : as;
        };
      };
      exports.sortBy = sortBy;
      var chop = function(f) {
        var g = RNEA.chop(f);
        return function(as) {
          return (0, exports.isNonEmpty)(as) ? g(as) : exports.empty;
        };
      };
      exports.chop = chop;
      var splitAt = function(n) {
        return function(as) {
          return n >= 1 && (0, exports.isNonEmpty)(as) ? RNEA.splitAt(n)(as) : (0, exports.isEmpty)(as) ? [as, exports.empty] : [exports.empty, as];
        };
      };
      exports.splitAt = splitAt;
      var chunksOf = function(n) {
        var f = RNEA.chunksOf(n);
        return function(as) {
          return (0, exports.isNonEmpty)(as) ? f(as) : exports.empty;
        };
      };
      exports.chunksOf = chunksOf;
      var fromOptionK = function(f) {
        return function() {
          var a = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            a[_i] = arguments[_i];
          }
          return (0, exports.fromOption)(f.apply(void 0, a));
        };
      };
      exports.fromOptionK = fromOptionK;
      function comprehension(input, f, g) {
        if (g === void 0) {
          g = function() {
            return true;
          };
        }
        var go = function(scope, input2) {
          return (0, exports.isNonEmpty)(input2) ? (0, function_1.pipe)(RNEA.head(input2), (0, exports.chain)(function(x) {
            return go((0, function_1.pipe)(scope, (0, exports.append)(x)), RNEA.tail(input2));
          })) : g.apply(void 0, scope) ? [f.apply(void 0, scope)] : exports.empty;
        };
        return go(exports.empty, input);
      }
      exports.comprehension = comprehension;
      var concatW = function(second) {
        return function(first) {
          return (0, exports.isEmpty)(first) ? second : (0, exports.isEmpty)(second) ? first : first.concat(second);
        };
      };
      exports.concatW = concatW;
      exports.concat = exports.concatW;
      function union(E) {
        var unionE = RNEA.union(E);
        return function(first, second) {
          if (second === void 0) {
            var unionE_1 = union(E);
            return function(second2) {
              return unionE_1(second2, first);
            };
          }
          return (0, exports.isNonEmpty)(first) && (0, exports.isNonEmpty)(second) ? unionE(second)(first) : (0, exports.isNonEmpty)(first) ? first : second;
        };
      }
      exports.union = union;
      function intersection(E) {
        var elemE = elem(E);
        return function(xs, ys) {
          if (ys === void 0) {
            var intersectionE_1 = intersection(E);
            return function(ys2) {
              return intersectionE_1(ys2, xs);
            };
          }
          return xs.filter(function(a) {
            return elemE(a, ys);
          });
        };
      }
      exports.intersection = intersection;
      function difference(E) {
        var elemE = elem(E);
        return function(xs, ys) {
          if (ys === void 0) {
            var differenceE_1 = difference(E);
            return function(ys2) {
              return differenceE_1(ys2, xs);
            };
          }
          return xs.filter(function(a) {
            return !elemE(a, ys);
          });
        };
      }
      exports.difference = difference;
      var _map = function(fa, f) {
        return (0, function_1.pipe)(fa, (0, exports.map)(f));
      };
      var _mapWithIndex = function(fa, f) {
        return (0, function_1.pipe)(fa, (0, exports.mapWithIndex)(f));
      };
      var _ap = function(fab, fa) {
        return (0, function_1.pipe)(fab, (0, exports.ap)(fa));
      };
      var _chain = function(ma, f) {
        return (0, function_1.pipe)(ma, (0, exports.chain)(f));
      };
      var _filter = function(fa, predicate) {
        return (0, function_1.pipe)(fa, (0, exports.filter)(predicate));
      };
      var _filterMap = function(fa, f) {
        return (0, function_1.pipe)(fa, (0, exports.filterMap)(f));
      };
      var _partition = function(fa, predicate) {
        return (0, function_1.pipe)(fa, (0, exports.partition)(predicate));
      };
      var _partitionMap = function(fa, f) {
        return (0, function_1.pipe)(fa, (0, exports.partitionMap)(f));
      };
      var _partitionWithIndex = function(fa, predicateWithIndex) {
        return (0, function_1.pipe)(fa, (0, exports.partitionWithIndex)(predicateWithIndex));
      };
      var _partitionMapWithIndex = function(fa, f) {
        return (0, function_1.pipe)(fa, (0, exports.partitionMapWithIndex)(f));
      };
      var _alt = function(fa, that) {
        return (0, function_1.pipe)(fa, (0, exports.alt)(that));
      };
      var _reduce = function(fa, b, f) {
        return (0, function_1.pipe)(fa, (0, exports.reduce)(b, f));
      };
      var _foldMap = function(M) {
        var foldMapM = (0, exports.foldMap)(M);
        return function(fa, f) {
          return (0, function_1.pipe)(fa, foldMapM(f));
        };
      };
      var _reduceRight = function(fa, b, f) {
        return (0, function_1.pipe)(fa, (0, exports.reduceRight)(b, f));
      };
      var _reduceWithIndex = function(fa, b, f) {
        return (0, function_1.pipe)(fa, (0, exports.reduceWithIndex)(b, f));
      };
      var _foldMapWithIndex = function(M) {
        var foldMapWithIndexM = (0, exports.foldMapWithIndex)(M);
        return function(fa, f) {
          return (0, function_1.pipe)(fa, foldMapWithIndexM(f));
        };
      };
      var _reduceRightWithIndex = function(fa, b, f) {
        return (0, function_1.pipe)(fa, (0, exports.reduceRightWithIndex)(b, f));
      };
      var _filterMapWithIndex = function(fa, f) {
        return (0, function_1.pipe)(fa, (0, exports.filterMapWithIndex)(f));
      };
      var _filterWithIndex = function(fa, predicateWithIndex) {
        return (0, function_1.pipe)(fa, (0, exports.filterWithIndex)(predicateWithIndex));
      };
      var _extend = function(fa, f) {
        return (0, function_1.pipe)(fa, (0, exports.extend)(f));
      };
      var _traverse = function(F) {
        var traverseF = (0, exports.traverse)(F);
        return function(ta, f) {
          return (0, function_1.pipe)(ta, traverseF(f));
        };
      };
      var _traverseWithIndex = function(F) {
        var traverseWithIndexF = (0, exports.traverseWithIndex)(F);
        return function(ta, f) {
          return (0, function_1.pipe)(ta, traverseWithIndexF(f));
        };
      };
      var _chainRecDepthFirst = function(a, f) {
        return (0, function_1.pipe)(a, (0, exports.chainRecDepthFirst)(f));
      };
      exports._chainRecDepthFirst = _chainRecDepthFirst;
      var _chainRecBreadthFirst = function(a, f) {
        return (0, function_1.pipe)(a, (0, exports.chainRecBreadthFirst)(f));
      };
      exports._chainRecBreadthFirst = _chainRecBreadthFirst;
      exports.of = RNEA.of;
      var zero = function() {
        return exports.empty;
      };
      exports.zero = zero;
      var altW = function(that) {
        return function(fa) {
          return fa.concat(that());
        };
      };
      exports.altW = altW;
      exports.alt = exports.altW;
      var ap = function(fa) {
        return (0, exports.chain)(function(f) {
          return (0, function_1.pipe)(fa, (0, exports.map)(f));
        });
      };
      exports.ap = ap;
      var chain2 = function(f) {
        return function(ma) {
          return (0, function_1.pipe)(ma, (0, exports.chainWithIndex)(function(_2, a) {
            return f(a);
          }));
        };
      };
      exports.chain = chain2;
      exports.flatten = (0, exports.chain)(function_1.identity);
      var map2 = function(f) {
        return function(fa) {
          return fa.map(function(a) {
            return f(a);
          });
        };
      };
      exports.map = map2;
      var mapWithIndex = function(f) {
        return function(fa) {
          return fa.map(function(a, i) {
            return f(i, a);
          });
        };
      };
      exports.mapWithIndex = mapWithIndex;
      var separate = function(fa) {
        var left = [];
        var right = [];
        for (var _i = 0, fa_1 = fa; _i < fa_1.length; _i++) {
          var e = fa_1[_i];
          if (e._tag === "Left") {
            left.push(e.left);
          } else {
            right.push(e.right);
          }
        }
        return (0, Separated_1.separated)(left, right);
      };
      exports.separate = separate;
      var filter = function(predicate) {
        return function(as) {
          return as.filter(predicate);
        };
      };
      exports.filter = filter;
      var filterMapWithIndex = function(f) {
        return function(fa) {
          var out = [];
          for (var i = 0; i < fa.length; i++) {
            var optionB = f(i, fa[i]);
            if (_.isSome(optionB)) {
              out.push(optionB.value);
            }
          }
          return out;
        };
      };
      exports.filterMapWithIndex = filterMapWithIndex;
      var filterMap = function(f) {
        return (0, exports.filterMapWithIndex)(function(_2, a) {
          return f(a);
        });
      };
      exports.filterMap = filterMap;
      exports.compact = (0, exports.filterMap)(function_1.identity);
      var partition = function(predicate) {
        return (0, exports.partitionWithIndex)(function(_2, a) {
          return predicate(a);
        });
      };
      exports.partition = partition;
      var partitionWithIndex = function(predicateWithIndex) {
        return function(as) {
          var left = [];
          var right = [];
          for (var i = 0; i < as.length; i++) {
            var a = as[i];
            if (predicateWithIndex(i, a)) {
              right.push(a);
            } else {
              left.push(a);
            }
          }
          return (0, Separated_1.separated)(left, right);
        };
      };
      exports.partitionWithIndex = partitionWithIndex;
      var partitionMap = function(f) {
        return (0, exports.partitionMapWithIndex)(function(_2, a) {
          return f(a);
        });
      };
      exports.partitionMap = partitionMap;
      var partitionMapWithIndex = function(f) {
        return function(fa) {
          var left = [];
          var right = [];
          for (var i = 0; i < fa.length; i++) {
            var e = f(i, fa[i]);
            if (e._tag === "Left") {
              left.push(e.left);
            } else {
              right.push(e.right);
            }
          }
          return (0, Separated_1.separated)(left, right);
        };
      };
      exports.partitionMapWithIndex = partitionMapWithIndex;
      var filterWithIndex = function(predicateWithIndex) {
        return function(as) {
          return as.filter(function(a, i) {
            return predicateWithIndex(i, a);
          });
        };
      };
      exports.filterWithIndex = filterWithIndex;
      var extend = function(f) {
        return function(wa) {
          return wa.map(function(_2, i) {
            return f(wa.slice(i));
          });
        };
      };
      exports.extend = extend;
      exports.duplicate = (0, exports.extend)(function_1.identity);
      var foldMapWithIndex = function(M) {
        return function(f) {
          return function(fa) {
            return fa.reduce(function(b, a, i) {
              return M.concat(b, f(i, a));
            }, M.empty);
          };
        };
      };
      exports.foldMapWithIndex = foldMapWithIndex;
      var reduce2 = function(b, f) {
        return (0, exports.reduceWithIndex)(b, function(_2, b2, a) {
          return f(b2, a);
        });
      };
      exports.reduce = reduce2;
      var foldMap = function(M) {
        var foldMapWithIndexM = (0, exports.foldMapWithIndex)(M);
        return function(f) {
          return foldMapWithIndexM(function(_2, a) {
            return f(a);
          });
        };
      };
      exports.foldMap = foldMap;
      var reduceWithIndex2 = function(b, f) {
        return function(fa) {
          var len = fa.length;
          var out = b;
          for (var i = 0; i < len; i++) {
            out = f(i, out, fa[i]);
          }
          return out;
        };
      };
      exports.reduceWithIndex = reduceWithIndex2;
      var reduceRight = function(b, f) {
        return (0, exports.reduceRightWithIndex)(b, function(_2, a, b2) {
          return f(a, b2);
        });
      };
      exports.reduceRight = reduceRight;
      var reduceRightWithIndex = function(b, f) {
        return function(fa) {
          return fa.reduceRight(function(b2, a, i) {
            return f(i, a, b2);
          }, b);
        };
      };
      exports.reduceRightWithIndex = reduceRightWithIndex;
      var traverse = function(F) {
        var traverseWithIndexF = (0, exports.traverseWithIndex)(F);
        return function(f) {
          return traverseWithIndexF(function(_2, a) {
            return f(a);
          });
        };
      };
      exports.traverse = traverse;
      var sequence2 = function(F) {
        return function(ta) {
          return _reduce(ta, F.of((0, exports.zero)()), function(fas, fa) {
            return F.ap(F.map(fas, function(as) {
              return function(a) {
                return (0, function_1.pipe)(as, (0, exports.append)(a));
              };
            }), fa);
          });
        };
      };
      exports.sequence = sequence2;
      var traverseWithIndex = function(F) {
        return function(f) {
          return (0, exports.reduceWithIndex)(F.of((0, exports.zero)()), function(i, fbs, a) {
            return F.ap(F.map(fbs, function(bs) {
              return function(b) {
                return (0, function_1.pipe)(bs, (0, exports.append)(b));
              };
            }), f(i, a));
          });
        };
      };
      exports.traverseWithIndex = traverseWithIndex;
      var wither = function(F) {
        var _witherF = _wither(F);
        return function(f) {
          return function(fa) {
            return _witherF(fa, f);
          };
        };
      };
      exports.wither = wither;
      var wilt = function(F) {
        var _wiltF = _wilt(F);
        return function(f) {
          return function(fa) {
            return _wiltF(fa, f);
          };
        };
      };
      exports.wilt = wilt;
      var unfold = function(b, f) {
        var out = [];
        var bb = b;
        while (true) {
          var mt = f(bb);
          if (_.isSome(mt)) {
            var _a = mt.value, a = _a[0], b_1 = _a[1];
            out.push(a);
            bb = b_1;
          } else {
            break;
          }
        }
        return out;
      };
      exports.unfold = unfold;
      exports.URI = "ReadonlyArray";
      var getShow = function(S) {
        return {
          show: function(as) {
            return "[".concat(as.map(S.show).join(", "), "]");
          }
        };
      };
      exports.getShow = getShow;
      var getSemigroup = function() {
        return {
          concat: function(first, second) {
            return (0, exports.isEmpty)(first) ? second : (0, exports.isEmpty)(second) ? first : first.concat(second);
          }
        };
      };
      exports.getSemigroup = getSemigroup;
      var getMonoid = function() {
        return {
          concat: (0, exports.getSemigroup)().concat,
          empty: exports.empty
        };
      };
      exports.getMonoid = getMonoid;
      var getEq = function(E) {
        return (0, Eq_1.fromEquals)(function(xs, ys) {
          return xs.length === ys.length && xs.every(function(x, i) {
            return E.equals(x, ys[i]);
          });
        });
      };
      exports.getEq = getEq;
      var getOrd = function(O) {
        return (0, Ord_1.fromCompare)(function(a, b) {
          var aLen = a.length;
          var bLen = b.length;
          var len = Math.min(aLen, bLen);
          for (var i = 0; i < len; i++) {
            var ordering = O.compare(a[i], b[i]);
            if (ordering !== 0) {
              return ordering;
            }
          }
          return N.Ord.compare(aLen, bLen);
        });
      };
      exports.getOrd = getOrd;
      var getUnionSemigroup = function(E) {
        var unionE = union(E);
        return {
          concat: function(first, second) {
            return unionE(second)(first);
          }
        };
      };
      exports.getUnionSemigroup = getUnionSemigroup;
      var getUnionMonoid = function(E) {
        return {
          concat: (0, exports.getUnionSemigroup)(E).concat,
          empty: exports.empty
        };
      };
      exports.getUnionMonoid = getUnionMonoid;
      var getIntersectionSemigroup = function(E) {
        var intersectionE = intersection(E);
        return {
          concat: function(first, second) {
            return intersectionE(second)(first);
          }
        };
      };
      exports.getIntersectionSemigroup = getIntersectionSemigroup;
      var getDifferenceMagma = function(E) {
        var differenceE = difference(E);
        return {
          concat: function(first, second) {
            return differenceE(second)(first);
          }
        };
      };
      exports.getDifferenceMagma = getDifferenceMagma;
      exports.Functor = {
        URI: exports.URI,
        map: _map
      };
      exports.flap = (0, Functor_1.flap)(exports.Functor);
      exports.Pointed = {
        URI: exports.URI,
        of: exports.of
      };
      exports.FunctorWithIndex = {
        URI: exports.URI,
        map: _map,
        mapWithIndex: _mapWithIndex
      };
      exports.Apply = {
        URI: exports.URI,
        map: _map,
        ap: _ap
      };
      exports.apFirst = (0, Apply_1.apFirst)(exports.Apply);
      exports.apSecond = (0, Apply_1.apSecond)(exports.Apply);
      exports.Applicative = {
        URI: exports.URI,
        map: _map,
        ap: _ap,
        of: exports.of
      };
      exports.Chain = {
        URI: exports.URI,
        map: _map,
        ap: _ap,
        chain: _chain
      };
      exports.Monad = {
        URI: exports.URI,
        map: _map,
        ap: _ap,
        of: exports.of,
        chain: _chain
      };
      exports.chainFirst = /* @__PURE__ */ (0, Chain_1.chainFirst)(exports.Chain);
      exports.Unfoldable = {
        URI: exports.URI,
        unfold: exports.unfold
      };
      exports.Alt = {
        URI: exports.URI,
        map: _map,
        alt: _alt
      };
      exports.Zero = {
        URI: exports.URI,
        zero: exports.zero
      };
      exports.guard = (0, Zero_1.guard)(exports.Zero, exports.Pointed);
      exports.Alternative = {
        URI: exports.URI,
        map: _map,
        ap: _ap,
        of: exports.of,
        alt: _alt,
        zero: exports.zero
      };
      exports.Extend = {
        URI: exports.URI,
        map: _map,
        extend: _extend
      };
      exports.Compactable = {
        URI: exports.URI,
        compact: exports.compact,
        separate: exports.separate
      };
      exports.Filterable = {
        URI: exports.URI,
        map: _map,
        compact: exports.compact,
        separate: exports.separate,
        filter: _filter,
        filterMap: _filterMap,
        partition: _partition,
        partitionMap: _partitionMap
      };
      exports.FilterableWithIndex = {
        URI: exports.URI,
        map: _map,
        mapWithIndex: _mapWithIndex,
        compact: exports.compact,
        separate: exports.separate,
        filter: _filter,
        filterMap: _filterMap,
        partition: _partition,
        partitionMap: _partitionMap,
        partitionMapWithIndex: _partitionMapWithIndex,
        partitionWithIndex: _partitionWithIndex,
        filterMapWithIndex: _filterMapWithIndex,
        filterWithIndex: _filterWithIndex
      };
      exports.Foldable = {
        URI: exports.URI,
        reduce: _reduce,
        foldMap: _foldMap,
        reduceRight: _reduceRight
      };
      exports.FoldableWithIndex = {
        URI: exports.URI,
        reduce: _reduce,
        foldMap: _foldMap,
        reduceRight: _reduceRight,
        reduceWithIndex: _reduceWithIndex,
        foldMapWithIndex: _foldMapWithIndex,
        reduceRightWithIndex: _reduceRightWithIndex
      };
      exports.Traversable = {
        URI: exports.URI,
        map: _map,
        reduce: _reduce,
        foldMap: _foldMap,
        reduceRight: _reduceRight,
        traverse: _traverse,
        sequence: exports.sequence
      };
      exports.TraversableWithIndex = {
        URI: exports.URI,
        map: _map,
        mapWithIndex: _mapWithIndex,
        reduce: _reduce,
        foldMap: _foldMap,
        reduceRight: _reduceRight,
        reduceWithIndex: _reduceWithIndex,
        foldMapWithIndex: _foldMapWithIndex,
        reduceRightWithIndex: _reduceRightWithIndex,
        traverse: _traverse,
        sequence: exports.sequence,
        traverseWithIndex: _traverseWithIndex
      };
      var chainRecDepthFirst = function(f) {
        return function(a) {
          var todo = __spreadArray([], f(a), true);
          var out = [];
          while (todo.length > 0) {
            var e = todo.shift();
            if (_.isLeft(e)) {
              todo.unshift.apply(todo, f(e.left));
            } else {
              out.push(e.right);
            }
          }
          return out;
        };
      };
      exports.chainRecDepthFirst = chainRecDepthFirst;
      exports.ChainRecDepthFirst = {
        URI: exports.URI,
        map: _map,
        ap: _ap,
        chain: _chain,
        chainRec: exports._chainRecDepthFirst
      };
      var chainRecBreadthFirst = function(f) {
        return function(a) {
          var initial = f(a);
          var todo = [];
          var out = [];
          function go(e2) {
            if (_.isLeft(e2)) {
              f(e2.left).forEach(function(v) {
                return todo.push(v);
              });
            } else {
              out.push(e2.right);
            }
          }
          for (var _i = 0, initial_1 = initial; _i < initial_1.length; _i++) {
            var e = initial_1[_i];
            go(e);
          }
          while (todo.length > 0) {
            go(todo.shift());
          }
          return out;
        };
      };
      exports.chainRecBreadthFirst = chainRecBreadthFirst;
      exports.ChainRecBreadthFirst = {
        URI: exports.URI,
        map: _map,
        ap: _ap,
        chain: _chain,
        chainRec: exports._chainRecBreadthFirst
      };
      var _wither = /* @__PURE__ */ (0, Witherable_1.witherDefault)(exports.Traversable, exports.Compactable);
      var _wilt = /* @__PURE__ */ (0, Witherable_1.wiltDefault)(exports.Traversable, exports.Compactable);
      exports.Witherable = {
        URI: exports.URI,
        map: _map,
        compact: exports.compact,
        separate: exports.separate,
        filter: _filter,
        filterMap: _filterMap,
        partition: _partition,
        partitionMap: _partitionMap,
        reduce: _reduce,
        foldMap: _foldMap,
        reduceRight: _reduceRight,
        traverse: _traverse,
        sequence: exports.sequence,
        wither: _wither,
        wilt: _wilt
      };
      exports.filterE = (0, Witherable_1.filterE)(exports.Witherable);
      exports.FromEither = {
        URI: exports.URI,
        fromEither: exports.fromEither
      };
      exports.fromEitherK = (0, FromEither_1.fromEitherK)(exports.FromEither);
      exports.unsafeInsertAt = RNEA.unsafeInsertAt;
      var unsafeUpdateAt = function(i, a, as) {
        return (0, exports.isNonEmpty)(as) ? RNEA.unsafeUpdateAt(i, a, as) : as;
      };
      exports.unsafeUpdateAt = unsafeUpdateAt;
      var unsafeDeleteAt = function(i, as) {
        var xs = as.slice();
        xs.splice(i, 1);
        return xs;
      };
      exports.unsafeDeleteAt = unsafeDeleteAt;
      var toArray = function(as) {
        return as.slice();
      };
      exports.toArray = toArray;
      var fromArray = function(as) {
        return (0, exports.isEmpty)(as) ? exports.empty : as.slice();
      };
      exports.fromArray = fromArray;
      exports.empty = RNEA.empty;
      function every(predicate) {
        return function(as) {
          return as.every(predicate);
        };
      }
      exports.every = every;
      var some3 = function(predicate) {
        return function(as) {
          return as.some(predicate);
        };
      };
      exports.some = some3;
      exports.exists = exports.some;
      var intercalate = function(M) {
        var intercalateM = RNEA.intercalate(M);
        return function(middle) {
          return (0, exports.match)(function() {
            return M.empty;
          }, intercalateM(middle));
        };
      };
      exports.intercalate = intercalate;
      exports.Do = (0, exports.of)(_.emptyRecord);
      exports.bindTo = (0, Functor_1.bindTo)(exports.Functor);
      var let_ = /* @__PURE__ */ (0, Functor_1.let)(exports.Functor);
      exports.let = let_;
      exports.bind = (0, Chain_1.bind)(exports.Chain);
      exports.apS = (0, Apply_1.apS)(exports.Apply);
      exports.range = RNEA.range;
      exports.cons = RNEA.cons;
      exports.snoc = RNEA.snoc;
      exports.prependToAll = exports.prependAll;
      exports.readonlyArray = {
        URI: exports.URI,
        compact: exports.compact,
        separate: exports.separate,
        map: _map,
        ap: _ap,
        of: exports.of,
        chain: _chain,
        filter: _filter,
        filterMap: _filterMap,
        partition: _partition,
        partitionMap: _partitionMap,
        mapWithIndex: _mapWithIndex,
        partitionMapWithIndex: _partitionMapWithIndex,
        partitionWithIndex: _partitionWithIndex,
        filterMapWithIndex: _filterMapWithIndex,
        filterWithIndex: _filterWithIndex,
        alt: _alt,
        zero: exports.zero,
        unfold: exports.unfold,
        reduce: _reduce,
        foldMap: _foldMap,
        reduceRight: _reduceRight,
        traverse: _traverse,
        sequence: exports.sequence,
        reduceWithIndex: _reduceWithIndex,
        foldMapWithIndex: _foldMapWithIndex,
        reduceRightWithIndex: _reduceRightWithIndex,
        traverseWithIndex: _traverseWithIndex,
        extend: _extend,
        wither: _wither,
        wilt: _wilt
      };
    }
  });

  // node_modules/.pnpm/@simspace+matchers@0.0.4_fp-ts@2.13.1/node_modules/@simspace/matchers/_cjs/index.cjs
  var require_cjs = __commonJS({
    "node_modules/.pnpm/@simspace+matchers@0.0.4_fp-ts@2.13.1/node_modules/@simspace/matchers/_cjs/index.cjs"(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.matchSI = exports.matchS = exports.match = void 0;
      var _function = require_function();
      var O = /* @__PURE__ */ _interopRequireWildcard(require_Option());
      var RA = /* @__PURE__ */ _interopRequireWildcard(require_ReadonlyArray());
      function _getRequireWildcardCache(nodeInterop) {
        if (typeof WeakMap !== "function")
          return null;
        var cacheBabelInterop = /* @__PURE__ */ new WeakMap();
        var cacheNodeInterop = /* @__PURE__ */ new WeakMap();
        return (_getRequireWildcardCache = function(nodeInterop2) {
          return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop;
        })(nodeInterop);
      }
      function _interopRequireWildcard(obj, nodeInterop) {
        if (!nodeInterop && obj && obj.__esModule) {
          return obj;
        }
        if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
          return { default: obj };
        }
        var cache = _getRequireWildcardCache(nodeInterop);
        if (cache && cache.has(obj)) {
          return cache.get(obj);
        }
        var newObj = {};
        var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
        for (var key in obj) {
          if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
            if (desc && (desc.get || desc.set)) {
              Object.defineProperty(newObj, key, desc);
            } else {
              newObj[key] = obj[key];
            }
          }
        }
        newObj.default = obj;
        if (cache) {
          cache.set(obj, newObj);
        }
        return newObj;
      }
      var matchOnKey = (key) => Object.assign((matchObj) => (tu) => matchObj[tu[key]](tu), {
        i: inverted(key),
        p: partial(key),
        w: widened(key),
        ip: invertedPartial(key),
        iw: invertedWidened(key),
        pw: partialWidened(key),
        ipw: invertedPartialWidened(key),
        extract: extract(key)
      });
      var match3 = /* @__PURE__ */ Object.assign(/* @__PURE__ */ matchOnKey("tag"), {
        on: matchOnKey
      });
      exports.match = match3;
      var matchS = (s) => (matchObj) => matchObj[s]();
      exports.matchS = matchS;
      var matchSI = (matchObj) => (s) => matchObj[s]();
      exports.matchSI = matchSI;
      function inverted(key) {
        return (tu) => (matchObj) => matchObj[tu[key]](tu);
      }
      function partial(key) {
        return (matchObj, otherwise) => (tu) => {
          const matchedTag = tu[key];
          const f = matchedTag in matchObj && matchObj[matchedTag];
          if (f !== false) {
            const ret = f(tu);
            return otherwise ? ret : O.some(ret);
          }
          return otherwise ? otherwise() : O.none;
        };
      }
      function widened(key) {
        return (matchObj) => (tu) => matchObj[tu[key]](tu);
      }
      function invertedPartial(key) {
        return (tu) => (matchObj, otherwise) => otherwise ? matchOnKey(key).p(matchObj, otherwise)(tu) : matchOnKey(key).p(matchObj)(tu);
      }
      function invertedWidened(key) {
        return (tu) => (matchObj) => matchObj[tu[key]](tu);
      }
      function partialWidened(key) {
        return (matchObj, otherwise) => (tu) => {
          const matchedTag = tu[key];
          const f = matchedTag in matchObj && matchObj[matchedTag];
          if (f !== false) {
            const ret = f(tu);
            return otherwise ? ret : O.some(ret);
          }
          return otherwise ? otherwise() : O.none;
        };
      }
      function invertedPartialWidened(key) {
        return (tu) => (matchObj, otherwise) => otherwise ? matchOnKey(key).pw(matchObj, otherwise)(tu) : matchOnKey(key).pw(matchObj)(tu);
      }
      function extract(key) {
        return (...kus) => (tu) => (0, _function.pipe)(kus, RA.findFirstMap((k) => tu[key] === k ? O.some(tu) : O.none));
      }
    }
  });

  // src/base.ts
  var import_matchers = __toESM(require_cjs());

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/es6/function.js
  function pipe(a, ab, bc, cd, de, ef, fg, gh, hi) {
    switch (arguments.length) {
      case 1:
        return a;
      case 2:
        return ab(a);
      case 3:
        return bc(ab(a));
      case 4:
        return cd(bc(ab(a)));
      case 5:
        return de(cd(bc(ab(a))));
      case 6:
        return ef(de(cd(bc(ab(a)))));
      case 7:
        return fg(ef(de(cd(bc(ab(a))))));
      case 8:
        return gh(fg(ef(de(cd(bc(ab(a)))))));
      case 9:
        return hi(gh(fg(ef(de(cd(bc(ab(a))))))));
      default: {
        var ret = arguments[0];
        for (var i = 1; i < arguments.length; i++) {
          ret = arguments[i](ret);
        }
        return ret;
      }
    }
  }

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/es6/internal.js
  var none = { _tag: "None" };
  var some = function(a) {
    return { _tag: "Some", value: a };
  };
  var isNonEmpty = function(as) {
    return as.length > 0;
  };

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/es6/ReadonlyNonEmptyArray.js
  var isNonEmpty2 = isNonEmpty;
  var fromReadonlyArray = function(as) {
    return isNonEmpty2(as) ? some(as) : none;
  };

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/es6/ReadonlyArray.js
  var map = function(f) {
    return function(fa) {
      return fa.map(function(a) {
        return f(a);
      });
    };
  };
  var reduce = function(b, f) {
    return reduceWithIndex(b, function(_, b2, a) {
      return f(b2, a);
    });
  };
  var reduceWithIndex = function(b, f) {
    return function(fa) {
      var len = fa.length;
      var out = b;
      for (var i = 0; i < len; i++) {
        out = f(i, out, fa[i]);
      }
      return out;
    };
  };

  // src/base.ts
  var char = (c) => ({
    tag: "atom",
    kind: "character",
    char: c
  });
  var anything = { tag: "atom", kind: "anything" };
  var convertRanges = map((range) => {
    if (typeof range === "string") {
      return { lower: range.charCodeAt(0), upper: range.charCodeAt(0) };
    }
    const [c1, c2] = range;
    const lower2 = typeof c1 === "string" ? c1.charCodeAt(0) : c1;
    const upper2 = typeof c2 === "string" ? c2.charCodeAt(0) : c2;
    return { lower: lower2, upper: upper2 };
  });
  var characterClass = (exclude, ...ranges) => ({
    tag: "atom",
    kind: "characterClass",
    exclude,
    ranges: convertRanges(ranges)
  });
  var subgroup = (subpattern) => subpattern.tag === "atom" ? subpattern : {
    tag: "atom",
    kind: "subgroup",
    subpattern
  };
  var anyNumber = (opts = { greedy: false }) => (atom) => ({
    tag: "quantifiedAtom",
    atom,
    greedy: opts.greedy,
    kind: "star"
  });
  var atLeastOne = (opts = { greedy: false }) => (atom) => ({
    tag: "quantifiedAtom",
    atom,
    greedy: opts.greedy,
    kind: "plus"
  });
  var maybe = (atom) => ({
    tag: "quantifiedAtom",
    atom,
    greedy: false,
    kind: "question"
  });
  var times = (count) => (atom) => ({
    tag: "quantifiedAtom",
    atom,
    greedy: true,
    kind: "exactly",
    count
  });
  var exactly = times;
  var atLeast = (min) => (atom) => ({
    tag: "quantifiedAtom",
    atom,
    kind: "minimum",
    min
  });
  var between = (min, max) => (atom) => ({
    tag: "quantifiedAtom",
    atom,
    greedy: true,
    kind: "between",
    min,
    max
  });
  var atMost = (max) => (atom) => ({
    tag: "quantifiedAtom",
    atom,
    kind: "between",
    min: 0,
    max
  });
  var or = (right) => (left) => ({
    tag: "disjunction",
    left,
    right
  });
  var getTerms = import_matchers.match.w({
    termSequence: ({ terms }) => terms,
    atom: (atom) => [atom],
    quantifiedAtom: (qatom) => [qatom]
  });
  var then = (term) => (alt) => ({
    tag: "termSequence",
    terms: [...getTerms(alt), ...getTerms(term)]
  });
  var exactString = (s) => subgroup({
    tag: "termSequence",
    terms: s.split("").map(char)
  });
  var sequence = (term, ...terms) => ({
    tag: "termSequence",
    terms: [term, ...terms]
  });
  var and = (first, ...addl) => (cc) => ({
    tag: "atom",
    kind: "characterClass",
    exclude: cc.exclude,
    ranges: cc.ranges.concat(
      typeof first === "string" || first instanceof Array ? convertRanges([first, ...addl]) : first.ranges
    )
  });
  var non = (cc) => ({
    ...cc,
    exclude: !cc.exclude
  });
  var empty = { tag: "atom", kind: "character", char: "" };

  // src/character-classes.ts
  var upper = characterClass(false, ["A", "Z"]);
  var lower = characterClass(false, ["a", "z"]);
  var alpha = pipe(upper, and(lower));
  var digit = characterClass(false, ["0", "9"]);
  var xdigit = pipe(digit, and(["A", "F"], ["a", "f"]));
  var hexDigit = xdigit;
  var alnum = pipe(alpha, and(digit));
  var word = pipe(alnum, and("_"));
  var punct = characterClass(
    false,
    ["!", "/"],
    [":", "@"],
    ["[", "_"],
    ["{", "~"]
  );
  var blank = characterClass(false, " ", "	");
  var space = pipe(blank, and("\n", "\r", "\f", "\v"));
  var graph = characterClass(false, [33, 127]);
  var print = pipe(graph, and(" "));

  // src/combinators.ts
  var oneOf = (pattern, ...patterns) => pipe(
    patterns,
    reduce(pattern, (ored, next) => pipe(ored, or(next)))
  );
  var integerRange_ = (min, max, omitInitialZeros = false) => {
    const curMinDigit = Number(min[0] ?? "0");
    const restMin = min.slice(1);
    const curMaxDigit = Number(max[0] ?? "9");
    const restMax = max.slice(1);
    const res = restMin.length === 0 ? curMinDigit === curMaxDigit ? char(min) : characterClass(false, [min, max]) : curMinDigit === curMaxDigit ? pipe(
      char(curMinDigit.toString(10)),
      then(subgroup(integerRange_(restMin, restMax)))
    ) : oneOf(
      curMinDigit === 0 && omitInitialZeros ? integerRange_(restMin, restMax.replace(/./g, "9"), true) : pipe(
        char(curMinDigit.toString(10)),
        then(
          subgroup(integerRange_(restMin, restMin.replace(/./g, "9")))
        )
      ),
      ...curMaxDigit - curMinDigit > 1 ? [
        pipe(
          characterClass(false, [
            (curMinDigit + 1).toString(10),
            (curMaxDigit - 1).toString(10)
          ]),
          then(sequence(empty, ...restMin.split("").map(() => digit)))
        )
      ] : [],
      pipe(
        char(curMaxDigit.toString(10)),
        then(subgroup(integerRange_(restMin.replace(/./g, "0"), restMax)))
      )
    );
    return res;
  };
  var integerRange = (min, max) => {
    if (min > max || Number.isNaN(min) || Number.isNaN(max) || !Number.isInteger(min) || !Number.isInteger(max) || min < 0 || max < 0) {
      return empty;
    }
    const maxStr = max.toString(10);
    const minStr = min.toString(10).padStart(maxStr.length, "0");
    return integerRange_(minStr, maxStr, true);
  };

  // src/regex.ts
  var import_matchers2 = __toESM(require_cjs());

  // node_modules/.pnpm/fp-ts@2.13.1/node_modules/fp-ts/es6/Option.js
  var none2 = none;
  var some2 = some;
  function fromPredicate(predicate) {
    return function(a) {
      return predicate(a) ? some2(a) : none2;
    };
  }
  var chain = function(f) {
    return function(ma) {
      return isNone(ma) ? none2 : f(ma.value);
    };
  };
  var isNone = function(fa) {
    return fa._tag === "None";
  };
  var getOrElseW = function(onNone) {
    return function(ma) {
      return isNone(ma) ? onNone() : ma.value;
    };
  };
  var getOrElse = getOrElseW;

  // src/regex.ts
  var matchK = import_matchers2.match.on("kind").w;
  var repr = (n) => (
    // < 32 -> control characters
    // 45 -> '-'.. seems like `/[--z]/` for example actually works, but looks weird.
    // 93 -> ']' which needs to be escaped
    // 94 -> '^' which might get parsed as class exclusion marker, so escape just in case
    // 127 -> del
    // >127 -> outside normal ascii range. escape 'em
    n < 32 || n === 45 || n === 93 || n === 94 || n >= 127 ? n > 255 ? `\\u${n.toString(16).padStart(4, "0")}` : `\\x${n.toString(16).padStart(2, "0")}` : String.fromCharCode(n)
  );
  var regexStringFromAtom = matchK({
    anything: () => ".",
    character: ({ char: char2 }) => char2 === "[" ? "\\[" : char2 === "]" ? "\\]" : char2 === "." ? "\\." : char2 === "(" ? "\\(" : char2 === ")" ? "\\)" : char2 === "+" ? "\\+" : char2,
    characterClass: ({ exclude, ranges }) => pipe(
      fromReadonlyArray(ranges),
      chain(fromPredicate((s) => s.length === 1)),
      chain(
        ([{ lower: lower2, upper: upper2 }]) => lower2 === 48 && upper2 === 57 ? some2("\\d") : none2
      ),
      getOrElse(
        () => `[${exclude ? "^" : ""}${ranges.map(
          ({ lower: lower2, upper: upper2 }) => lower2 === upper2 ? repr(lower2) : `${repr(lower2)}-${repr(upper2)}`
        ).join("")}]`
      )
    ),
    subgroup: ({ subpattern }) => `(${regexStringFromPattern(subpattern)})`
  });
  var regexStringFromQuantifiedAtom = matchK({
    star: ({ atom, greedy }) => `${regexStringFromAtom(atom)}*${greedy ? "" : "?"}`,
    plus: ({ atom, greedy }) => `${regexStringFromAtom(atom)}+${greedy ? "" : "?"}`,
    question: ({ atom }) => `${regexStringFromAtom(atom)}?`,
    exactly: ({ atom, count }) => `${regexStringFromAtom(atom)}{${count}}`,
    between: ({ atom, min, max }) => `${regexStringFromAtom(atom)}{${min},${max}}`,
    minimum: ({ atom, min }) => `${regexStringFromAtom(atom)}{${min},}`
  });
  var regexStringFromTerm = import_matchers2.match.w({
    atom: regexStringFromAtom,
    quantifiedAtom: regexStringFromQuantifiedAtom
  });
  var regexStringFromPattern = import_matchers2.match.w({
    atom: regexStringFromAtom,
    disjunction: ({ left, right }) => `${regexStringFromPattern(left)}|${regexStringFromPattern(right)}`,
    quantifiedAtom: regexStringFromQuantifiedAtom,
    termSequence: ({ terms }) => terms.map(regexStringFromTerm).join("")
  });
  var regexFromPattern = (pattern, caseInsensitive = false) => new RegExp(
    `^(${regexStringFromPattern(pattern)})$`,
    caseInsensitive ? "i" : ""
  );

  // src/patterns/index.ts
  var patterns_exports = {};
  __export(patterns_exports, {
    anyUUID: () => anyUUID,
    base64: () => base64,
    base64Character: () => base64Character,
    base64Url: () => base64Url,
    creditCard: () => creditCard,
    emailAddress: () => emailAddress,
    hexColor: () => hexColor,
    hexadecimal: () => hexadecimal,
    hslColor: () => hslColor,
    jwt: () => jwt,
    latLong: () => latLong,
    rgbColor: () => rgbColor,
    rgbColorDecimal: () => rgbColorDecimal,
    rgbColorPercent: () => rgbColorPercent,
    rgbColorWithAlphaDecimal: () => rgbColorWithAlphaDecimal,
    rgbColorWithAlphaPercent: () => rgbColorWithAlphaPercent,
    uuidV1: () => uuidV1,
    uuidV2: () => uuidV2,
    uuidV3: () => uuidV3,
    uuidV4: () => uuidV4,
    uuidV5: () => uuidV5
  });

  // src/patterns/base64.ts
  var base64Character = pipe(alnum, and(characterClass(false, "+", "/")));
  var base64 = pipe(
    base64Character,
    exactly(4),
    subgroup,
    anyNumber(),
    then(
      maybe(
        subgroup(
          oneOf(
            sequence(exactly(2)(base64Character), exactly(2)(char("="))),
            sequence(exactly(3)(base64Character), char("="))
          )
        )
      )
    )
  );

  // src/patterns/base64url.ts
  var base64Url = pipe(
    word,
    and("-"),
    anyNumber({ greedy: true })
  );

  // src/patterns/credit-card.ts
  var visa = pipe(
    char("4"),
    then(pipe(exactly(12)(digit), or(exactly(15)(digit)), subgroup))
  );
  var mastercard = pipe(
    subgroup(
      pipe(
        sequence(char("5"), characterClass(false, ["1", "5"]), exactly(4)(digit)),
        or(
          sequence(
            exactString("222"),
            characterClass(false, ["1", "9"]),
            exactly(2)(digit)
          )
        ),
        or(
          sequence(
            exactString("22"),
            characterClass(false, ["3", "9"]),
            exactly(3)(digit)
          )
        ),
        or(
          sequence(
            exactString("2"),
            characterClass(false, ["3", "6"]),
            exactly(4)(digit)
          )
        ),
        or(
          sequence(
            exactString("27"),
            characterClass(false, "0", "1"),
            exactly(3)(digit)
          )
        ),
        or(sequence(exactString("2720"), exactly(2)(digit)))
      )
    ),
    then(exactly(10)(digit))
  );
  var amex = sequence(
    char("3"),
    characterClass(false, "4", "7"),
    exactly(13)(digit)
  );
  var dinersClub = pipe(
    sequence(
      char("3"),
      subgroup(
        pipe(
          sequence(
            char("0"),
            subgroup(
              pipe(
                sequence(characterClass(false, ["0", "5"]), exactly(5)(digit)),
                or(sequence(exactString("95"), exactly(4)(digit)))
              )
            )
          ),
          or(sequence(characterClass(false, "8", "9"), exactly(6)(digit)))
        )
      ),
      between(8, 11)(digit)
    ),
    or(sequence(exactString("36"), exactly(6)(digit), between(6, 11)(digit))),
    subgroup
  );
  var discover = pipe(
    oneOf(
      pipe(
        exactString("6011"),
        then(
          subgroup(
            oneOf(
              sequence(
                char("0"),
                characterClass(false, ["5", "9"]),
                exactly(2)(digit)
              ),
              sequence(characterClass(false, ["2", "4"]), exactly(3)(digit)),
              sequence(exactString("74"), exactly(2)(digit)),
              sequence(
                exactString("7"),
                characterClass(false, ["7", "9"]),
                exactly(2)(digit)
              ),
              sequence(
                exactString("8"),
                characterClass(false, ["6", "9"]),
                exactly(2)(digit)
              ),
              sequence(exactString("9"), exactly(3)(digit))
            )
          )
        )
      ),
      sequence(
        exactString("64"),
        characterClass(false, ["4", "9"]),
        exactly(5)(digit)
      ),
      sequence(
        exactString("650"),
        characterClass(false, ["0", "5"]),
        exactly(4)(digit)
      ),
      sequence(
        exactString("65060"),
        characterClass(false, ["1", "9"]),
        exactly(2)(digit)
      ),
      sequence(
        exactString("65061"),
        characterClass(false, ["1", "9"]),
        exactly(2)(digit)
      ),
      sequence(
        exactString("6506"),
        characterClass(false, ["2", "9"]),
        exactly(3)(digit)
      ),
      sequence(
        exactString("650"),
        characterClass(false, ["7", "9"]),
        exactly(4)(digit)
      ),
      sequence(
        exactString("65"),
        characterClass(false, ["1", "9"]),
        exactly(5)(digit)
      )
    ),
    subgroup,
    then(between(8, 11)(digit))
  );
  var jcb = pipe(
    sequence(
      exactString("352"),
      characterClass(false, "8", "9"),
      exactly(4)(digit)
    ),
    or(
      sequence(
        exactString("35"),
        characterClass(false, ["3", "8"]),
        exactly(5)(digit)
      )
    ),
    subgroup,
    then(between(8, 11)(digit))
  );
  var rupay = subgroup(
    oneOf(
      sequence(
        subgroup(
          oneOf(
            exactString("60"),
            exactString("65"),
            exactString("81"),
            exactString("82")
          )
        ),
        exactly(14)(digit)
      ),
      sequence(exactString("508"), exactly(14)(digit))
    )
  );
  var unionPay = sequence(
    exactString("62"),
    subgroup(
      oneOf(
        sequence(
          char("2"),
          subgroup(
            oneOf(
              sequence(
                exactString("12"),
                characterClass(false, ["6", "9"]),
                exactly(2)(digit)
              ),
              sequence(
                char("1"),
                characterClass(false, ["3", "9"]),
                exactly(3)(digit)
              ),
              sequence(characterClass(false, ["2", "8"]), digit),
              sequence(
                exactString("9"),
                characterClass(false, "0", "1"),
                exactly(3)(digit)
              ),
              sequence(
                exactString("92"),
                characterClass(false, ["0", "5"]),
                exactly(2)(digit)
              )
            )
          )
        ),
        sequence(characterClass(false, ["4", "6"]), exactly(5)(digit)),
        sequence(
          exactString("8"),
          characterClass(false, ["2", "8"]),
          exactly(4)(digit)
        )
      )
    ),
    between(8, 11)(digit)
  );
  var creditCard = oneOf(
    visa,
    mastercard,
    amex,
    dinersClub,
    discover,
    jcb,
    rupay,
    unionPay
  );

  // src/patterns/email-address.ts
  var localPartQuoted = pipe(
    char('"'),
    then(atLeastOne({ greedy: true })(characterClass(true, '"', [0, 31]))),
    then(char('"'))
  );
  var localPartUnquotedAllowedCharacters = characterClass(
    false,
    ["A", "Z"],
    ["a", "z"],
    ["0", "9"],
    "!",
    "#",
    "$",
    "%",
    "&",
    "'",
    "*",
    "+",
    "-",
    "/",
    "=",
    "?",
    "^",
    "_",
    "`",
    "{",
    "|",
    "}",
    "~"
  );
  var localPartUnquoted = pipe(
    atLeastOne({ greedy: true })(localPartUnquotedAllowedCharacters),
    then(
      pipe(
        char("."),
        then(atLeastOne({ greedy: true })(localPartUnquotedAllowedCharacters)),
        subgroup,
        anyNumber({ greedy: true })
      )
    )
  );
  var localPart = pipe(localPartUnquoted, or(localPartQuoted), subgroup);
  var ipAddressByte = between(1, 3)(digit);
  var domainIpAddress = pipe(
    sequence(
      char("["),
      ipAddressByte,
      char("."),
      ipAddressByte,
      char("."),
      ipAddressByte,
      char("."),
      ipAddressByte,
      char("]")
    )
  );
  var domainName = pipe(
    alnum,
    and("-"),
    atMost(63),
    then(char(".")),
    subgroup,
    atLeastOne({ greedy: true }),
    then(atLeast(2)(alpha))
  );
  var domain = pipe(domainIpAddress, or(domainName), subgroup);
  var emailAddress = pipe(
    localPart,
    then(char("@")),
    then(domain)
  );

  // src/patterns/hex-color.ts
  var hexColor = pipe(
    maybe(char("#")),
    then(
      subgroup(
        pipe(
          between(3, 4)(hexDigit),
          or(exactly(6)(hexDigit)),
          or(exactly(8)(hexDigit))
        )
      )
    )
  );

  // src/patterns/hexadecimal.ts
  var hexadecimal = pipe(
    exactString("0x"),
    or(exactString("0X")),
    or(exactString("0h")),
    or(exactString("0H")),
    subgroup,
    maybe,
    then(atLeastOne()(xdigit))
  );

  // src/patterns/hsl-color.ts
  var anyDecimal = subgroup(
    sequence(char("."), atLeastOne({ greedy: true })(digit))
  );
  var zeroDecimal = subgroup(
    sequence(char("."), atLeastOne({ greedy: true })(char("0")))
  );
  var exponential = subgroup(
    sequence(
      char("e"),
      maybe(subgroup(oneOf(char("+"), char("-")))),
      atLeastOne({ greedy: true })(digit)
    )
  );
  var hue = subgroup(
    sequence(
      maybe(subgroup(oneOf(char("+"), char("-")))),
      subgroup(
        oneOf(
          pipe(atLeastOne({ greedy: true })(digit), then(maybe(anyDecimal))),
          anyDecimal
        )
      ),
      maybe(exponential),
      maybe(
        subgroup(
          oneOf(
            exactString("deg"),
            exactString("grad"),
            exactString("rad"),
            exactString("turn")
          )
        )
      )
    )
  );
  var percentage = subgroup(
    sequence(
      maybe(char("+")),
      anyNumber({ greedy: true })(char("0")),
      subgroup(
        oneOf(
          pipe(exactString("100"), then(maybe(zeroDecimal))),
          pipe(subgroup(integerRange(0, 99)), then(maybe(anyDecimal))),
          anyDecimal
        )
      ),
      maybe(exponential),
      char("%")
    )
  );
  var alpha2 = subgroup(
    sequence(
      anyNumber({ greedy: true })(digit),
      subgroup(oneOf(digit, anyDecimal)),
      maybe(exponential),
      maybe(char("%"))
    )
  );
  var anySpace = anyNumber({ greedy: true })(blank);
  var commaDelimiter = subgroup(sequence(anySpace, char(","), anySpace));
  var slashDelimiter = subgroup(sequence(anySpace, char("/"), anySpace));
  var hslColor = sequence(
    exactString("hsl"),
    maybe(char("a")),
    char("("),
    anySpace,
    hue,
    subgroup(
      oneOf(
        sequence(
          commaDelimiter,
          percentage,
          commaDelimiter,
          percentage,
          maybe(subgroup(sequence(commaDelimiter, alpha2)))
        ),
        sequence(
          anySpace,
          percentage,
          anySpace,
          percentage,
          maybe(subgroup(sequence(slashDelimiter, alpha2)))
        )
      )
    ),
    anySpace,
    char(")")
  );

  // src/patterns/jwt.ts
  var jwt = sequence(
    subgroup(base64Url),
    char("."),
    subgroup(base64Url),
    pipe(char("."), then(subgroup(base64Url)), subgroup, maybe)
  );

  // src/patterns/lat-long.ts
  var latPattern = pipe(
    maybe(characterClass(false, "+", "-")),
    then(
      subgroup(
        oneOf(
          sequence(
            char("9"),
            char("0"),
            maybe(
              subgroup(
                pipe(char("."), then(atLeastOne({ greedy: true })(char("0"))))
              )
            )
          ),
          pipe(
            integerRange(0, 89),
            subgroup,
            then(
              maybe(
                subgroup(
                  pipe(char("."), then(atLeastOne({ greedy: true })(digit)))
                )
              )
            )
          )
        )
      )
    )
  );
  var longPattern = pipe(
    maybe(characterClass(false, "+", "-")),
    then(
      subgroup(
        oneOf(
          sequence(
            char("1"),
            char("8"),
            char("0"),
            maybe(
              subgroup(
                pipe(char("."), then(atLeastOne({ greedy: true })(char("0"))))
              )
            )
          ),
          pipe(
            integerRange(0, 179),
            subgroup,
            then(
              maybe(
                subgroup(
                  pipe(char("."), then(atLeastOne({ greedy: true })(digit)))
                )
              )
            )
          )
        )
      )
    )
  );
  var latLong = oneOf(
    pipe(
      latPattern,
      then(char(",")),
      then(anyNumber({ greedy: true })(space)),
      then(longPattern)
    ),
    pipe(
      char("("),
      then(latPattern),
      then(char(",")),
      then(anyNumber({ greedy: true })(space)),
      then(longPattern),
      then(char(")"))
    )
  );

  // src/patterns/rgb-color.ts
  var rgbColorDecimal = sequence(
    exactString("rgb("),
    subgroup(integerRange(0, 255)),
    char(","),
    subgroup(integerRange(0, 255)),
    char(","),
    subgroup(integerRange(0, 255)),
    char(")")
  );
  var rgbColorWithAlphaDecimal = sequence(
    exactString("rgba("),
    subgroup(integerRange(0, 255)),
    char(","),
    subgroup(integerRange(0, 255)),
    char(","),
    subgroup(integerRange(0, 255)),
    char(","),
    subgroup(
      oneOf(
        char("0"),
        char("1"),
        exactString("1.0"),
        sequence(
          maybe(char("0")),
          char("."),
          atLeastOne({ greedy: true })(digit)
        )
      )
    ),
    char(")")
  );
  var rgbColorPercent = sequence(
    exactString("rgb("),
    subgroup(integerRange(0, 100)),
    exactString("%,"),
    subgroup(integerRange(0, 100)),
    exactString("%,"),
    subgroup(integerRange(0, 100)),
    exactString("%)")
  );
  var rgbColorWithAlphaPercent = sequence(
    exactString("rgba("),
    subgroup(integerRange(0, 100)),
    exactString("%,"),
    subgroup(integerRange(0, 100)),
    exactString("%,"),
    subgroup(integerRange(0, 100)),
    exactString("%,"),
    subgroup(
      oneOf(
        char("0"),
        char("1"),
        exactString("1.0"),
        sequence(
          maybe(char("0")),
          char("."),
          atLeastOne({ greedy: true })(digit)
        )
      )
    ),
    char(")")
  );
  var rgbColor = oneOf(
    rgbColorDecimal,
    rgbColorWithAlphaDecimal,
    rgbColorPercent,
    rgbColorWithAlphaPercent
  );

  // src/patterns/uuid.ts
  var nHexDigits = (n) => exactly(n)(hexDigit);
  var uuidV1 = sequence(
    nHexDigits(8),
    char("-"),
    nHexDigits(4),
    char("-"),
    char("1"),
    nHexDigits(3),
    char("-"),
    nHexDigits(4),
    char("-"),
    nHexDigits(12)
  );
  var uuidV2 = sequence(
    nHexDigits(8),
    char("-"),
    nHexDigits(4),
    char("-"),
    char("2"),
    nHexDigits(3),
    char("-"),
    nHexDigits(4),
    char("-"),
    nHexDigits(12)
  );
  var uuidV3 = sequence(
    nHexDigits(8),
    char("-"),
    nHexDigits(4),
    char("-"),
    char("3"),
    nHexDigits(3),
    char("-"),
    nHexDigits(4),
    char("-"),
    nHexDigits(12)
  );
  var uuidV4 = sequence(
    nHexDigits(8),
    char("-"),
    nHexDigits(4),
    char("-"),
    char("4"),
    nHexDigits(3),
    char("-"),
    characterClass(false, "A", "a", "B", "b", "8", "9"),
    nHexDigits(3),
    char("-"),
    nHexDigits(12)
  );
  var uuidV5 = sequence(
    nHexDigits(8),
    char("-"),
    nHexDigits(4),
    char("-"),
    char("5"),
    nHexDigits(3),
    char("-"),
    characterClass(false, "A", "a", "B", "b", "8", "9"),
    nHexDigits(3),
    char("-"),
    nHexDigits(12)
  );
  var anyUUID = sequence(
    nHexDigits(8),
    char("-"),
    nHexDigits(4),
    char("-"),
    nHexDigits(4),
    char("-"),
    nHexDigits(4),
    char("-"),
    nHexDigits(12)
  );
})();