const pe = " ögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2", Se = "ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2", M = (t, n) => {
  for (const e in n)
    t[e] = n[e];
  return t;
}, Bt = "numeric", Ft = "ascii", Kt = "alpha", W = "asciinumeric", K = "alphanumeric", Wt = "domain", ue = "emoji", ye = "scheme", ke = "slashscheme", vt = "whitespace";
function Oe(t, n) {
  return t in n || (n[t] = []), n[t];
}
function j(t, n, e) {
  n[Bt] && (n[W] = !0, n[K] = !0), n[Ft] && (n[W] = !0, n[Kt] = !0), n[W] && (n[K] = !0), n[Kt] && (n[K] = !0), n[K] && (n[Wt] = !0), n[ue] && (n[Wt] = !0);
  for (const s in n) {
    const i = Oe(s, e);
    i.indexOf(t) < 0 && i.push(t);
  }
}
function be(t, n) {
  const e = {};
  for (const s in n)
    n[s].indexOf(t) >= 0 && (e[s] = !0);
  return e;
}
function p(t = null) {
  this.j = {}, this.jr = [], this.jd = null, this.t = t;
}
p.groups = {};
p.prototype = {
  accepts() {
    return !!this.t;
  },
  /**
   * Follow an existing transition from the given input to the next state.
   * Does not mutate.
   * @param {string} input character or token type to transition on
   * @returns {?State<T>} the next state, if any
   */
  go(t) {
    const n = this, e = n.j[t];
    if (e)
      return e;
    for (let s = 0; s < n.jr.length; s++) {
      const i = n.jr[s][0], r = n.jr[s][1];
      if (r && i.test(t))
        return r;
    }
    return n.jd;
  },
  /**
   * Whether the state has a transition for the given input. Set the second
   * argument to true to only look for an exact match (and not a default or
   * regular-expression-based transition)
   * @param {string} input
   * @param {boolean} exactOnly
   */
  has(t, n = !1) {
    return n ? t in this.j : !!this.go(t);
  },
  /**
   * Short for "transition all"; create a transition from the array of items
   * in the given list to the same final resulting state.
   * @param {string | string[]} inputs Group of inputs to transition on
   * @param {Transition<T> | State<T>} [next] Transition options
   * @param {Flags} [flags] Collections flags to add token to
   * @param {Collections<T>} [groups] Master list of token groups
   */
  ta(t, n, e, s) {
    for (let i = 0; i < t.length; i++)
      this.tt(t[i], n, e, s);
  },
  /**
   * Short for "take regexp transition"; defines a transition for this state
   * when it encounters a token which matches the given regular expression
   * @param {RegExp} regexp Regular expression transition (populate first)
   * @param {T | State<T>} [next] Transition options
   * @param {Flags} [flags] Collections flags to add token to
   * @param {Collections<T>} [groups] Master list of token groups
   * @returns {State<T>} taken after the given input
   */
  tr(t, n, e, s) {
    s = s || p.groups;
    let i;
    return n && n.j ? i = n : (i = new p(n), e && s && j(n, e, s)), this.jr.push([t, i]), i;
  },
  /**
   * Short for "take transitions", will take as many sequential transitions as
   * the length of the given input and returns the
   * resulting final state.
   * @param {string | string[]} input
   * @param {T | State<T>} [next] Transition options
   * @param {Flags} [flags] Collections flags to add token to
   * @param {Collections<T>} [groups] Master list of token groups
   * @returns {State<T>} taken after the given input
   */
  ts(t, n, e, s) {
    let i = this;
    const r = t.length;
    if (!r)
      return i;
    for (let a = 0; a < r - 1; a++)
      i = i.tt(t[a]);
    return i.tt(t[r - 1], n, e, s);
  },
  /**
   * Short for "take transition", this is a method for building/working with
   * state machines.
   *
   * If a state already exists for the given input, returns it.
   *
   * If a token is specified, that state will emit that token when reached by
   * the linkify engine.
   *
   * If no state exists, it will be initialized with some default transitions
   * that resemble existing default transitions.
   *
   * If a state is given for the second argument, that state will be
   * transitioned to on the given input regardless of what that input
   * previously did.
   *
   * Specify a token group flags to define groups that this token belongs to.
   * The token will be added to corresponding entires in the given groups
   * object.
   *
   * @param {string} input character, token type to transition on
   * @param {T | State<T>} [next] Transition options
   * @param {Flags} [flags] Collections flags to add token to
   * @param {Collections<T>} [groups] Master list of groups
   * @returns {State<T>} taken after the given input
   */
  tt(t, n, e, s) {
    s = s || p.groups;
    const i = this;
    if (n && n.j)
      return i.j[t] = n, n;
    const r = n;
    let a, c = i.go(t);
    if (c ? (a = new p(), M(a.j, c.j), a.jr.push.apply(a.jr, c.jr), a.jd = c.jd, a.t = c.t) : a = new p(), r) {
      if (s)
        if (a.t && typeof a.t == "string") {
          const d = M(be(a.t, s), e);
          j(r, d, s);
        } else e && j(r, e, s);
      a.t = r;
    }
    return i.j[t] = a, a;
  }
};
const l = (t, n, e, s, i) => t.ta(n, e, s, i), f = (t, n, e, s, i) => t.tr(n, e, s, i), ie = (t, n, e, s, i) => t.ts(n, e, s, i), o = (t, n, e, s, i) => t.tt(n, e, s, i), I = "WORD", Gt = "UWORD", he = "ASCIINUMERICAL", de = "ALPHANUMERICAL", J = "LOCALHOST", Qt = "TLD", $t = "UTLD", et = "SCHEME", U = "SLASH_SCHEME", _t = "NUM", qt = "WS", Jt = "NL", G = "OPENBRACE", Q = "CLOSEBRACE", nt = "OPENBRACKET", st = "CLOSEBRACKET", it = "OPENPAREN", ot = "CLOSEPAREN", rt = "OPENANGLEBRACKET", at = "CLOSEANGLEBRACKET", ct = "FULLWIDTHLEFTPAREN", lt = "FULLWIDTHRIGHTPAREN", ut = "LEFTCORNERBRACKET", ht = "RIGHTCORNERBRACKET", dt = "LEFTWHITECORNERBRACKET", Et = "RIGHTWHITECORNERBRACKET", ft = "FULLWIDTHLESSTHAN", mt = "FULLWIDTHGREATERTHAN", gt = "AMPERSAND", At = "APOSTROPHE", Tt = "ASTERISK", P = "AT", Lt = "BACKSLASH", Rt = "BACKTICK", Ct = "CARET", v = "COLON", Yt = "COMMA", pt = "DOLLAR", k = "DOT", St = "EQUALS", Xt = "EXCLAMATION", y = "HYPHEN", $ = "PERCENT", yt = "PIPE", kt = "PLUS", Ot = "POUND", q = "QUERY", Vt = "QUOTE", Ee = "FULLWIDTHMIDDLEDOT", Zt = "SEMI", O = "SLASH", _ = "TILDE", bt = "UNDERSCORE", fe = "EMOJI", Nt = "SYM";
var me = /* @__PURE__ */ Object.freeze({
  __proto__: null,
  ALPHANUMERICAL: de,
  AMPERSAND: gt,
  APOSTROPHE: At,
  ASCIINUMERICAL: he,
  ASTERISK: Tt,
  AT: P,
  BACKSLASH: Lt,
  BACKTICK: Rt,
  CARET: Ct,
  CLOSEANGLEBRACKET: at,
  CLOSEBRACE: Q,
  CLOSEBRACKET: st,
  CLOSEPAREN: ot,
  COLON: v,
  COMMA: Yt,
  DOLLAR: pt,
  DOT: k,
  EMOJI: fe,
  EQUALS: St,
  EXCLAMATION: Xt,
  FULLWIDTHGREATERTHAN: mt,
  FULLWIDTHLEFTPAREN: ct,
  FULLWIDTHLESSTHAN: ft,
  FULLWIDTHMIDDLEDOT: Ee,
  FULLWIDTHRIGHTPAREN: lt,
  HYPHEN: y,
  LEFTCORNERBRACKET: ut,
  LEFTWHITECORNERBRACKET: dt,
  LOCALHOST: J,
  NL: Jt,
  NUM: _t,
  OPENANGLEBRACKET: rt,
  OPENBRACE: G,
  OPENBRACKET: nt,
  OPENPAREN: it,
  PERCENT: $,
  PIPE: yt,
  PLUS: kt,
  POUND: Ot,
  QUERY: q,
  QUOTE: Vt,
  RIGHTCORNERBRACKET: ht,
  RIGHTWHITECORNERBRACKET: Et,
  SCHEME: et,
  SEMI: Zt,
  SLASH: O,
  SLASH_SCHEME: U,
  SYM: Nt,
  TILDE: _,
  TLD: Qt,
  UNDERSCORE: bt,
  UTLD: $t,
  UWORD: Gt,
  WORD: I,
  WS: qt
});
const b = /[a-z]/, F = new RegExp("\\p{L}", "u"), jt = new RegExp("\\p{Emoji}", "u"), N = /\d/, xt = /\s/, oe = "\r", Ut = `
`, Ne = "️", Ie = "‍", Mt = "￼";
let V = null, Z = null;
function He(t = []) {
  const n = {};
  p.groups = n;
  const e = new p();
  V == null && (V = re(pe)), Z == null && (Z = re(Se)), o(e, "'", At), o(e, "{", G), o(e, "}", Q), o(e, "[", nt), o(e, "]", st), o(e, "(", it), o(e, ")", ot), o(e, "<", rt), o(e, ">", at), o(e, "（", ct), o(e, "）", lt), o(e, "「", ut), o(e, "」", ht), o(e, "『", dt), o(e, "』", Et), o(e, "＜", ft), o(e, "＞", mt), o(e, "&", gt), o(e, "*", Tt), o(e, "@", P), o(e, "`", Rt), o(e, "^", Ct), o(e, ":", v), o(e, ",", Yt), o(e, "$", pt), o(e, ".", k), o(e, "=", St), o(e, "!", Xt), o(e, "-", y), o(e, "%", $), o(e, "|", yt), o(e, "+", kt), o(e, "#", Ot), o(e, "?", q), o(e, '"', Vt), o(e, "/", O), o(e, ";", Zt), o(e, "~", _), o(e, "_", bt), o(e, "\\", Lt), o(e, "・", Ee);
  const s = f(e, N, _t, {
    [Bt]: !0
  });
  f(s, N, s);
  const i = f(s, b, he, {
    [W]: !0
  }), r = f(s, F, de, {
    [K]: !0
  }), a = f(e, b, I, {
    [Ft]: !0
  });
  f(a, N, i), f(a, b, a), f(i, N, i), f(i, b, i);
  const c = f(e, F, Gt, {
    [Kt]: !0
  });
  f(c, b), f(c, N, r), f(c, F, c), f(r, N, r), f(r, b), f(r, F, r);
  const d = o(e, Ut, Jt, {
    [vt]: !0
  }), m = o(e, oe, qt, {
    [vt]: !0
  }), E = f(e, xt, qt, {
    [vt]: !0
  });
  o(e, Mt, E), o(m, Ut, d), o(m, Mt, E), f(m, xt, E), o(E, oe), o(E, Ut), f(E, xt, E), o(E, Mt, E);
  const u = f(e, jt, fe, {
    [ue]: !0
  });
  o(u, "#"), f(u, jt, u), o(u, Ne, u);
  const g = o(u, Ie);
  o(g, "#"), f(g, jt, u);
  const A = [[b, a], [N, i]], H = [[b, null], [F, c], [N, r]];
  for (let T = 0; T < V.length; T++)
    D(e, V[T], Qt, I, A);
  for (let T = 0; T < Z.length; T++)
    D(e, Z[T], $t, Gt, H);
  j(Qt, {
    tld: !0,
    ascii: !0
  }, n), j($t, {
    utld: !0,
    alpha: !0
  }, n), D(e, "file", et, I, A), D(e, "mailto", et, I, A), D(e, "http", U, I, A), D(e, "https", U, I, A), D(e, "ftp", U, I, A), D(e, "ftps", U, I, A), j(et, {
    scheme: !0,
    ascii: !0
  }, n), j(U, {
    slashscheme: !0,
    ascii: !0
  }, n), t = t.sort((T, C) => T[0] > C[0] ? 1 : -1);
  for (let T = 0; T < t.length; T++) {
    const C = t[T][0], L = t[T][1] ? {
      [ye]: !0
    } : {
      [ke]: !0
    };
    C.indexOf("-") >= 0 ? L[Wt] = !0 : b.test(C) ? N.test(C) ? L[W] = !0 : L[Ft] = !0 : L[Bt] = !0, ie(e, C, C, L);
  }
  return ie(e, "localhost", J, {
    ascii: !0
  }), e.jd = new p(Nt), {
    start: e,
    tokens: M({
      groups: n
    }, me)
  };
}
function ge(t, n) {
  const e = we(n.replace(/[A-Z]/g, (c) => c.toLowerCase())), s = e.length, i = [];
  let r = 0, a = 0;
  for (; a < s; ) {
    let c = t, d = null, m = 0, E = null, u = -1, g = -1;
    for (; a < s && (d = c.go(e[a])); )
      c = d, c.accepts() ? (u = 0, g = 0, E = c) : u >= 0 && (u += e[a].length, g++), m += e[a].length, r += e[a].length, a++;
    r -= u, a -= g, m -= u, i.push({
      t: E.t,
      // token type/name
      v: n.slice(r - m, r),
      // string value
      s: r - m,
      // start index
      e: r
      // end index (excluding)
    });
  }
  return i;
}
function we(t) {
  const n = [], e = t.length;
  let s = 0;
  for (; s < e; ) {
    let i = t.charCodeAt(s), r, a = i < 55296 || i > 56319 || s + 1 === e || (r = t.charCodeAt(s + 1)) < 56320 || r > 57343 ? t[s] : t.slice(s, s + 2);
    n.push(a), s += a.length;
  }
  return n;
}
function D(t, n, e, s, i) {
  let r;
  const a = n.length;
  for (let c = 0; c < a - 1; c++) {
    const d = n[c];
    t.j[d] ? r = t.j[d] : (r = new p(s), r.jr = i.slice(), t.j[d] = r), t = r;
  }
  return r = new p(e), r.jr = i.slice(), t.j[n[a - 1]] = r, r;
}
function re(t) {
  const n = [], e = [];
  let s = 0, i = "0123456789";
  for (; s < t.length; ) {
    let r = 0;
    for (; i.indexOf(t[s + r]) >= 0; )
      r++;
    if (r > 0) {
      n.push(e.join(""));
      for (let a = parseInt(t.substring(s, s + r), 10); a > 0; a--)
        e.pop();
      s += r;
    } else
      e.push(t[s]), s++;
  }
  return n;
}
const Y = {
  defaultProtocol: "http",
  events: null,
  format: ae,
  formatHref: ae,
  nl2br: !1,
  tagName: "a",
  target: null,
  rel: null,
  validate: !0,
  truncate: 1 / 0,
  className: null,
  attributes: null,
  ignoreTags: [],
  render: null
};
function te(t, n = null) {
  let e = M({}, Y);
  t && (e = M(e, t instanceof te ? t.o : t));
  const s = e.ignoreTags, i = [];
  for (let r = 0; r < s.length; r++)
    i.push(s[r].toUpperCase());
  this.o = e, n && (this.defaultRender = n), this.ignoreTags = i;
}
te.prototype = {
  o: Y,
  /**
   * @type string[]
   */
  ignoreTags: [],
  /**
   * @param {IntermediateRepresentation} ir
   * @returns {any}
   */
  defaultRender(t) {
    return t;
  },
  /**
   * Returns true or false based on whether a token should be displayed as a
   * link based on the user options.
   * @param {MultiToken} token
   * @returns {boolean}
   */
  check(t) {
    return this.get("validate", t.toString(), t);
  },
  // Private methods
  /**
   * Resolve an option's value based on the value of the option and the given
   * params. If operator and token are specified and the target option is
   * callable, automatically calls the function with the given argument.
   * @template {keyof Opts} K
   * @param {K} key Name of option to use
   * @param {string} [operator] will be passed to the target option if it's a
   * function. If not specified, RAW function value gets returned
   * @param {MultiToken} [token] The token from linkify.tokenize
   * @returns {Opts[K] | any}
   */
  get(t, n, e) {
    const s = n != null;
    let i = this.o[t];
    return i && (typeof i == "object" ? (i = e.t in i ? i[e.t] : Y[t], typeof i == "function" && s && (i = i(n, e))) : typeof i == "function" && s && (i = i(n, e.t, e)), i);
  },
  /**
   * @template {keyof Opts} L
   * @param {L} key Name of options object to use
   * @param {string} [operator]
   * @param {MultiToken} [token]
   * @returns {Opts[L] | any}
   */
  getObj(t, n, e) {
    let s = this.o[t];
    return typeof s == "function" && n != null && (s = s(n, e.t, e)), s;
  },
  /**
   * Convert the given token to a rendered element that may be added to the
   * calling-interface's DOM
   * @param {MultiToken} token Token to render to an HTML element
   * @returns {any} Render result; e.g., HTML string, DOM element, React
   *   Component, etc.
   */
  render(t) {
    const n = t.render(this);
    return (this.get("render", null, t) || this.defaultRender)(n, t.t, t);
  }
};
function ae(t) {
  return t;
}
function Ae(t, n) {
  this.t = "token", this.v = t, this.tk = n;
}
Ae.prototype = {
  isLink: !1,
  /**
   * Return the string this token represents.
   * @return {string}
   */
  toString() {
    return this.v;
  },
  /**
   * What should the value for this token be in the `href` HTML attribute?
   * Returns the `.toString` value by default.
   * @param {string} [scheme]
   * @return {string}
   */
  toHref(t) {
    return this.toString();
  },
  /**
   * @param {Options} options Formatting options
   * @returns {string}
   */
  toFormattedString(t) {
    const n = this.toString(), e = t.get("truncate", n, this), s = t.get("format", n, this);
    return e && s.length > e ? s.substring(0, e) + "…" : s;
  },
  /**
   *
   * @param {Options} options
   * @returns {string}
   */
  toFormattedHref(t) {
    return t.get("formatHref", this.toHref(t.get("defaultProtocol")), this);
  },
  /**
   * The start index of this token in the original input string
   * @returns {number}
   */
  startIndex() {
    return this.tk[0].s;
  },
  /**
   * The end index of this token in the original input string (up to this
   * index but not including it)
   * @returns {number}
   */
  endIndex() {
    return this.tk[this.tk.length - 1].e;
  },
  /**
  	Returns an object  of relevant values for this token, which includes keys
  	* type - Kind of token ('url', 'email', etc.)
  	* value - Original text
  	* href - The value that should be added to the anchor tag's href
  		attribute
  		@method toObject
  	@param {string} [protocol] `'http'` by default
  */
  toObject(t = Y.defaultProtocol) {
    return {
      type: this.t,
      value: this.toString(),
      isLink: this.isLink,
      href: this.toHref(t),
      start: this.startIndex(),
      end: this.endIndex()
    };
  },
  /**
   *
   * @param {Options} options Formatting option
   */
  toFormattedObject(t) {
    return {
      type: this.t,
      value: this.toFormattedString(t),
      isLink: this.isLink,
      href: this.toFormattedHref(t),
      start: this.startIndex(),
      end: this.endIndex()
    };
  },
  /**
   * Whether this token should be rendered as a link according to the given options
   * @param {Options} options
   * @returns {boolean}
   */
  validate(t) {
    return t.get("validate", this.toString(), this);
  },
  /**
   * Return an object that represents how this link should be rendered.
   * @param {Options} options Formattinng options
   */
  render(t) {
    const n = this, e = this.toHref(t.get("defaultProtocol")), s = t.get("formatHref", e, this), i = t.get("tagName", e, n), r = this.toFormattedString(t), a = {}, c = t.get("className", e, n), d = t.get("target", e, n), m = t.get("rel", e, n), E = t.getObj("attributes", e, n), u = t.getObj("events", e, n);
    return a.href = s, c && (a.class = c), d && (a.target = d), m && (a.rel = m), E && M(a, E), {
      tagName: i,
      attributes: a,
      content: r,
      eventListeners: u
    };
  }
};
function It(t, n) {
  class e extends Ae {
    constructor(i, r) {
      super(i, r), this.t = t;
    }
  }
  for (const s in n)
    e.prototype[s] = n[s];
  return e.t = t, e;
}
const ce = It("email", {
  isLink: !0,
  toHref() {
    return "mailto:" + this.toString();
  }
}), le = It("text"), De = It("nl"), tt = It("url", {
  isLink: !0,
  /**
  	Lowercases relevant parts of the domain and adds the protocol if
  	required. Note that this will not escape unsafe HTML characters in the
  	URL.
  		@param {string} [scheme] default scheme (e.g., 'https')
  	@return {string} the full href
  */
  toHref(t = Y.defaultProtocol) {
    return this.hasProtocol() ? this.v : `${t}://${this.v}`;
  },
  /**
   * Check whether this URL token has a protocol
   * @return {boolean}
   */
  hasProtocol() {
    const t = this.tk;
    return t.length >= 2 && t[0].t !== J && t[1].t === v;
  }
}), S = (t) => new p(t);
function Pe({
  groups: t
}) {
  const n = t.domain.concat([gt, Tt, P, Lt, Rt, Ct, pt, St, y, _t, $, yt, kt, Ot, O, Nt, _, bt]), e = [At, v, Yt, k, Xt, $, q, Vt, Zt, rt, at, G, Q, st, nt, it, ot, ct, lt, ut, ht, dt, Et, ft, mt], s = [gt, At, Tt, Lt, Rt, Ct, pt, St, y, G, Q, $, yt, kt, Ot, q, O, Nt, _, bt], i = S(), r = o(i, _);
  l(r, s, r), l(r, t.domain, r);
  const a = S(), c = S(), d = S();
  l(i, t.domain, a), l(i, t.scheme, c), l(i, t.slashscheme, d), l(a, s, r), l(a, t.domain, a);
  const m = o(a, P);
  o(r, P, m), o(c, P, m), o(d, P, m);
  const E = o(r, k);
  l(E, s, r), l(E, t.domain, r);
  const u = S();
  l(m, t.domain, u), l(u, t.domain, u);
  const g = o(u, k);
  l(g, t.domain, u);
  const A = S(ce);
  l(g, t.tld, A), l(g, t.utld, A), o(m, J, A);
  const H = o(u, y);
  o(H, y, H), l(H, t.domain, u), l(A, t.domain, u), o(A, k, g), o(A, y, H);
  const T = o(A, v);
  l(T, t.numeric, ce);
  const C = o(a, y), w = o(a, k);
  o(C, y, C), l(C, t.domain, a), l(w, s, r), l(w, t.domain, a);
  const L = S(tt);
  l(w, t.tld, L), l(w, t.utld, L), l(L, t.domain, a), l(L, s, r), o(L, k, w), o(L, y, C), o(L, P, m);
  const Le = o(L, v), ee = S(tt);
  l(Le, t.numeric, ee);
  const R = S(tt), z = S();
  l(R, n, R), l(R, e, z), l(z, n, R), l(z, e, z), o(L, O, R), o(ee, O, R);
  const Ht = o(c, v), Re = o(d, v), Ce = o(Re, O), wt = o(Ce, O);
  l(c, t.domain, a), o(c, k, w), o(c, y, C), l(d, t.domain, a), o(d, k, w), o(d, y, C), l(Ht, t.domain, R), o(Ht, O, R), o(Ht, q, R), l(wt, t.domain, R), l(wt, n, R), o(wt, O, R);
  const ne = [
    [G, Q],
    // {}
    [nt, st],
    // []
    [it, ot],
    // ()
    [rt, at],
    // <>
    [ct, lt],
    // （）
    [ut, ht],
    // 「」
    [dt, Et],
    // 『』
    [ft, mt]
    // ＜＞
  ];
  for (let Dt = 0; Dt < ne.length; Dt++) {
    const [se, Pt] = ne[Dt], X = o(R, se);
    o(z, se, X), o(X, Pt, R);
    const x = S(tt);
    l(X, n, x);
    const B = S();
    l(X, e), l(x, n, x), l(x, e, B), l(B, n, x), l(B, e, B), o(x, Pt, R), o(B, Pt, R);
  }
  return o(i, J, L), o(i, Jt, De), {
    start: i,
    tokens: me
  };
}
function ve(t, n, e) {
  let s = e.length, i = 0, r = [], a = [];
  for (; i < s; ) {
    let c = t, d = null, m = null, E = 0, u = null, g = -1;
    for (; i < s && !(d = c.go(e[i].t)); )
      a.push(e[i++]);
    for (; i < s && (m = d || c.go(e[i].t)); )
      d = null, c = m, c.accepts() ? (g = 0, u = c) : g >= 0 && g++, i++, E++;
    if (g < 0)
      i -= E, i < s && (a.push(e[i]), i++);
    else {
      a.length > 0 && (r.push(zt(le, n, a)), a = []), i -= g, E -= g;
      const A = u.t, H = e.slice(i - E, i);
      r.push(zt(A, n, H));
    }
  }
  return a.length > 0 && r.push(zt(le, n, a)), r;
}
function zt(t, n, e) {
  const s = e[0].s, i = e[e.length - 1].e, r = n.slice(s, i);
  return new t(r, e);
}
const je = typeof console < "u" && console && console.warn || (() => {
}), xe = "until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.", h = {
  scanner: null,
  parser: null,
  tokenQueue: [],
  pluginQueue: [],
  customSchemes: [],
  initialized: !1
};
function Me() {
  return p.groups = {}, h.scanner = null, h.parser = null, h.tokenQueue = [], h.pluginQueue = [], h.customSchemes = [], h.initialized = !1, h;
}
function ze(t, n = !1) {
  if (h.initialized && je(`linkifyjs: already initialized - will not register custom scheme "${t}" ${xe}`), !/^[0-9a-z]+(-[0-9a-z]+)*$/.test(t))
    throw new Error(`linkifyjs: incorrect scheme format.
1. Must only contain digits, lowercase ASCII letters or "-"
2. Cannot start or end with "-"
3. "-" cannot repeat`);
  h.customSchemes.push([t, n]);
}
function Ue() {
  h.scanner = He(h.customSchemes);
  for (let t = 0; t < h.tokenQueue.length; t++)
    h.tokenQueue[t][1]({
      scanner: h.scanner
    });
  h.parser = Pe(h.scanner.tokens);
  for (let t = 0; t < h.pluginQueue.length; t++)
    h.pluginQueue[t][1]({
      scanner: h.scanner,
      parser: h.parser
    });
  return h.initialized = !0, h;
}
function Te(t) {
  return h.initialized || Ue(), ve(h.parser.start, t, ge(h.scanner.start, t));
}
Te.scan = ge;
function Be(t, n = null, e = null) {
  if (n && typeof n == "object") {
    if (e)
      throw Error(`linkifyjs: Invalid link type ${n}; must be a string`);
    e = n, n = null;
  }
  const s = new te(e), i = Te(t), r = [];
  for (let a = 0; a < i.length; a++) {
    const c = i[a];
    c.isLink && (!n || c.t === n) && s.check(c) && r.push(c.toFormattedObject(s));
  }
  return r;
}
export {
  Ae as MultiToken,
  te as Options,
  p as State,
  It as createTokenClass,
  Be as find,
  Ue as init,
  ze as registerCustomProtocol,
  Me as reset,
  we as stringToArray,
  Te as tokenize
};
//# sourceMappingURL=linkify.js.map
