UNPKG

net.akehurst.language-agl-processor

Version:
2,283 lines 82.1 kB
import {
  initMetadataForObject1cxne3s9w65el as initMetadataForObject,
  Unit_instance104q5opgivhr8 as Unit_instance,
  ArrayList3it5z8td81qkl as ArrayList,
  collectionSizeOrDefault36dulx8yinfqm as collectionSizeOrDefault,
  LinkedHashMap1zhqxkxv3xnkl as LinkedHashMap,
  ensureNotNull1e947j3ixpazm as ensureNotNull,
  plus310ted5e4i90h as plus,
  plus20p0vtfmu0596 as plus_0,
  listOfvhqybd2zx248 as listOf,
  initMetadataForClassbxx6q50dy2s7 as initMetadataForClass,
  initMetadataForCompanion1wyw17z38v6ac as initMetadataForCompanion,
  VOID7hggqo3abtya as VOID,
  IllegalStateExceptionkoljg5n0nrlr as IllegalStateException,
  toString1pkumu07cwy4m as toString,
  charSequenceLength3278n89t01tmv as charSequenceLength,
  charSequenceGet1vxk1y5n17t1z as charSequenceGet,
  _Char___init__impl__6a9atx281r2pd9o601g as _Char___init__impl__6a9atx,
  noWhenBranchMatchedException2a6r7ubxgky5j as noWhenBranchMatchedException,
  copyToArray2j022khrow2yi as copyToArray,
  charSequenceSubSequence1iwpdba8s3jc7 as charSequenceSubSequence,
  protoOf180f3jzyo7rfj as protoOf,
  Enum3alwj03lh1n41 as Enum,
  Paire9pteg33gng7 as Pair,
  StringBuildermazzzhj6kkai as StringBuilder,
  toIntOrNull1j8dcc6to13o4 as toIntOrNull,
  NotImplementedErrorfzlkpv14xxr8 as NotImplementedError,
  THROW_CCE2g6jy02ryeudk as THROW_CCE,
  isCharSequence1ju9jr1w86plq as isCharSequence,
  toString35i91qxh73cps as toString_0,
  numberToChar93r9buh19yek as numberToChar,
  Char__rangeTo_impl_tkncvp940rgm6i9zbm as Char__rangeTo_impl_tkncvp,
  plus39kp8wyage607 as plus_1,
  Char19o2r8palgjof as Char,
  listOf1jh22dvmctj1r as listOf_0,
  toMutableList20rdgwi7d3cwi as toMutableList,
  removeAll1oodkx28jk9ud as removeAll,
  first58ocm7j58k3q as first,
  emptyList1g2z5xcrvp2zy as emptyList,
  addAll1k27qatfgp3k5 as addAll,
  toList3jhuyej2anx2q as toList,
  Collection1k04j3hzsbod0 as Collection,
  isInterface3d6p8outrmvmk as isInterface,
  first1vi3grnpj1175 as first_0,
  firstOrNull1982767dljvdy as firstOrNull,
  joinToString1cxrrlmo0chqs as joinToString,
  defineProp3hxgpk2knu2px as defineProp,
  joinToStringxqcavsxcmh4q as joinToString_0,
  equals2au1ep9vhcato as equals,
  throwUninitializedPropertyAccessExceptionyynx7gkm73wd as throwUninitializedPropertyAccessException,
  THROW_IAE23kobfj9wdoxr as THROW_IAE,
  getStringHashCode26igk1bx568vk as getStringHashCode,
  initMetadataForInterface1egvbzx539z91 as initMetadataForInterface,
  hashCodeq5arwsb9dgti as hashCode,
  Regexxgw0gjiagf4z as Regex,
} from './kotlin-kotlin-stdlib.mjs';
import { MutableStack2yps18c21tyxt as MutableStack } from './net.akehurst.language-collections.mjs';
//region block: imports
var imul = Math.imul;
//endregion
//region block: pre-declaration
class BuildConfig_0 {
  constructor() {
    this.version = '4.2.1.21';
    this.buildStamp = '2025-06-13T13:57:23.749867Z[UTC]';
    this.buildDate = '2025-Jun-13';
    this.buildTime = '13:57:23 UTC';
  }
  ml() {
    return this.version;
  }
  nl() {
    return this.buildStamp;
  }
  ol() {
    return this.buildDate;
  }
  pl() {
    return this.buildTime;
  }
}
class RegexMatcherBuilder {
  constructor(pattern) {
    this.ql_1 = pattern;
    var tmp = this;
    // Inline function 'kotlin.collections.mutableListOf' call
    tmp.rl_1 = ArrayList.y();
    this.sl_1 = 0;
    this.tl_1 = new MutableStack();
    this.ul_1 = Companion_getInstance().am_1;
  }
  yl(orig, nullTransitions, map) {
    var clone = new Transition(orig.bm_1, orig.cm_1);
    clone.dm_1 = cloneState(this, orig.dm_1, nullTransitions, map);
    if (null == clone.dm_1) {
      nullTransitions.r(clone);
    }
    return clone;
  }
  gm(orig) {
    // Inline function 'kotlin.collections.mutableListOf' call
    var coutgoing = ArrayList.y();
    // Inline function 'kotlin.collections.mutableMapOf' call
    var tmp$ret$1 = LinkedHashMap.l4();
    var cstart = ensureNotNull(cloneState(this, orig.hm_1, coutgoing, tmp$ret$1));
    return new Fragment(cstart, coutgoing);
  }
  jm() {
    var state = createState(this, false);
    var trans = new Transition(TransitionKind_MATCHER_getInstance(), Companion_getInstance_2().lm_1);
    state.xl_1.r(trans);
    var frag = new Fragment(state, state.xl_1);
    this.tl_1.nk(frag);
  }
  nm() {
    var state = createState(this, false);
    var trans = new Transition(TransitionKind_MATCHER_getInstance(), Companion_getInstance_2().mm_1);
    state.xl_1.r(trans);
    var frag = new Fragment(state, state.xl_1);
    this.tl_1.nk(frag);
  }
  om(value) {
    var state = createState(this, false);
    var trans = new Transition(TransitionKind_MATCHER_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), value));
    state.xl_1.r(trans);
    var frag = new Fragment(state, state.xl_1);
    this.tl_1.nk(frag);
  }
  pm(matcher) {
    var state = createState(this, false);
    var trans = new Transition(TransitionKind_MATCHER_getInstance(), matcher);
    state.xl_1.r(trans);
    var frag = new Fragment(state, state.xl_1);
    this.tl_1.nk(frag);
  }
  qm() {
    switch (this.tl_1.v()) {
      case 0:
        break;
      case 1:
        break;
      default:
        var f2 = this.tl_1.rk();
        var f1 = this.tl_1.rk();
        // Inline function 'kotlin.collections.forEach' call

        var _iterator__ex2g4s = f1.im_1.s();
        while (_iterator__ex2g4s.t()) {
          var element = _iterator__ex2g4s.u();
          element.dm_1 = f2.hm_1;
        }

        var frag = new Fragment(f1.hm_1, f2.im_1);
        this.tl_1.nk(frag);
        break;
    }
  }
  rm() {
    var f2 = this.tl_1.rk();
    var f1 = this.tl_1.rk();
    var split = createState(this, true);
    var t1 = new Transition(TransitionKind_EMPTY_getInstance(), Companion_getInstance_2().km_1);
    t1.dm_1 = f1.hm_1;
    var t2 = new Transition(TransitionKind_EMPTY_getInstance(), Companion_getInstance_2().km_1);
    t2.dm_1 = f2.hm_1;
    split.xl_1.r(t1);
    split.xl_1.r(t2);
    var frag = new Fragment(split, plus(f1.im_1, f2.im_1));
    this.tl_1.nk(frag);
  }
  sm() {
    var f1 = this.tl_1.rk();
    var split = createState(this, true);
    var t1 = new Transition(TransitionKind_EMPTY_getInstance(), Companion_getInstance_2().km_1);
    t1.dm_1 = f1.hm_1;
    var t2 = new Transition(TransitionKind_EMPTY_getInstance(), Companion_getInstance_2().km_1);
    split.xl_1.r(t1);
    split.xl_1.r(t2);
    var frag = new Fragment(split, plus_0(f1.im_1, t2));
    this.tl_1.nk(frag);
  }
  tm() {
    var f1 = this.tl_1.rk();
    var split = createState(this, true);
    // Inline function 'kotlin.collections.forEach' call
    var _iterator__ex2g4s = f1.im_1.s();
    while (_iterator__ex2g4s.t()) {
      var element = _iterator__ex2g4s.u();
      element.dm_1 = split;
    }
    var t1 = new Transition(TransitionKind_EMPTY_getInstance(), Companion_getInstance_2().km_1);
    t1.dm_1 = f1.hm_1;
    var t2 = new Transition(TransitionKind_EMPTY_getInstance(), Companion_getInstance_2().km_1);
    split.xl_1.r(t1);
    split.xl_1.r(t2);
    var frag = new Fragment(f1.hm_1, listOf(t2));
    this.tl_1.nk(frag);
  }
  um() {
    var f1 = this.tl_1.rk();
    var split = createState(this, true);
    var t1 = new Transition(TransitionKind_EMPTY_getInstance(), Companion_getInstance_2().km_1);
    t1.dm_1 = f1.hm_1;
    var t2 = new Transition(TransitionKind_EMPTY_getInstance(), Companion_getInstance_2().km_1);
    split.xl_1.r(t1);
    split.xl_1.r(t2);
    // Inline function 'kotlin.collections.forEach' call
    var _iterator__ex2g4s = f1.im_1.s();
    while (_iterator__ex2g4s.t()) {
      var element = _iterator__ex2g4s.u();
      element.dm_1 = split;
    }
    var frag = new Fragment(split, listOf(t2));
    this.tl_1.nk(frag);
  }
  vm(n, m) {
    var repFrag = this.tl_1.rk();
    // Inline function 'kotlin.collections.mutableListOf' call
    var nRepetitions = ArrayList.y();
    var inductionVariable = 0;
    if (inductionVariable < n)
      do {
        var r = inductionVariable;
        inductionVariable = inductionVariable + 1 | 0;
        var nextFrag = this.gm(repFrag);
        nRepetitions.r(nextFrag);
      }
       while (inductionVariable < n);
    // Inline function 'kotlin.collections.mutableListOf' call
    var mRepetitions = ArrayList.y();
    if (-1 === m) {
      mRepetitions.r(this.gm(repFrag));
    } else {
      var inductionVariable_0 = n;
      if (inductionVariable_0 < m)
        do {
          var r_0 = inductionVariable_0;
          inductionVariable_0 = inductionVariable_0 + 1 | 0;
          var nextFrag_0 = this.gm(repFrag);
          mRepetitions.r(nextFrag_0);
        }
         while (inductionVariable_0 < m);
    }
    var needConcat = false;
    var inductionVariable_1 = 0;
    if (inductionVariable_1 < n)
      do {
        var r_1 = inductionVariable_1;
        inductionVariable_1 = inductionVariable_1 + 1 | 0;
        var nextFrag_1 = nRepetitions.z(r_1);
        this.tl_1.nk(nextFrag_1);
        if (needConcat) {
          this.qm();
        } else {
          needConcat = true;
        }
      }
       while (inductionVariable_1 < n);
    if (-1 === m) {
      this.tl_1.nk(mRepetitions.z(0));
      this.um();
      if (needConcat) {
        this.qm();
      } else {
        needConcat = true;
      }
    } else {
      var inductionVariable_2 = n;
      if (inductionVariable_2 < m)
        do {
          var r_2 = inductionVariable_2;
          inductionVariable_2 = inductionVariable_2 + 1 | 0;
          var nextFrag_2 = mRepetitions.z(r_2 - n | 0);
          this.tl_1.nk(nextFrag_2);
          this.sm();
          if (needConcat) {
            this.qm();
          } else {
            needConcat = true;
          }
        }
         while (inductionVariable_2 < m);
    }
  }
  wm() {
    return new RegexMatcherImpl(this.ql_1, this.ul_1, this.rl_1);
  }
  xm() {
    if (!this.tl_1.mk()) {
      var f1 = this.tl_1.rk();
      // Inline function 'kotlin.collections.forEach' call
      var _iterator__ex2g4s = f1.im_1.s();
      while (_iterator__ex2g4s.t()) {
        var element = _iterator__ex2g4s.u();
        element.dm_1 = Companion_getInstance().zl_1;
      }
      this.ul_1 = f1.hm_1;
    }
  }
}
class Companion {
  constructor() {
    Companion_instance = this;
    this.zl_1 = new State(-1, false);
    this.am_1 = new State(-2, false);
  }
}
class RegexMatcher {}
function match(text, startPosition, $super) {
  startPosition = startPosition === VOID ? 0 : startPosition;
  return $super === VOID ? this.rn(text, startPosition) : $super.rn.call(this, text, startPosition);
}
class RegexMatcherImpl {
  constructor(pattern, start, nfa) {
    Companion_getInstance();
    this.jn_1 = pattern;
    this.kn_1 = start;
    this.ln_1 = nfa;
    // Inline function 'kotlin.collections.mutableListOf' call
    var ns = ArrayList.y();
    addNextStates(ns, this.kn_1);
    var tmp = this;
    // Inline function 'kotlin.collections.toTypedArray' call
    tmp.mn_1 = copyToArray(ns);
    // Inline function 'kotlin.collections.forEach' call
    var _iterator__ex2g4s = this.ln_1.s();
    while (_iterator__ex2g4s.t()) {
      var element = _iterator__ex2g4s.u();
      // Inline function 'kotlin.collections.forEach' call
      var _iterator__ex2g4s_0 = element.xl_1.s();
      while (_iterator__ex2g4s_0.t()) {
        var element_0 = _iterator__ex2g4s_0.u();
        element_0.qn();
      }
    }
    this.nn_1 = ArrayList.w(10);
    this.on_1 = ArrayList.w(10);
    this.pn_1 = ArrayList.w(10);
  }
  matchAt(text, atPosition) {
    return this.match(text, atPosition);
  }
  matchesAt(text, atPosition) {
    return !(null == this.match(text, atPosition));
  }
  rn(text, startPosition) {
    var pos = startPosition;
    this.nn_1.n2();
    this.on_1.n2();
    this.pn_1.n2();
    this.nn_1.r(this.mn_1);
    var tmp0 = this.nn_1.z(0);
    var tmp$ret$1;
    $l$block: {
      // Inline function 'kotlin.collections.any' call
      var inductionVariable = 0;
      var last = tmp0.length;
      while (inductionVariable < last) {
        var element = tmp0[inductionVariable];
        inductionVariable = inductionVariable + 1 | 0;
        if (element.sn()) {
          tmp$ret$1 = true;
          break $l$block;
        }
      }
      tmp$ret$1 = false;
    }
    var matchesEmpty = tmp$ret$1;
    var maxMatchedPos = -1;
    $l$loop: while (true) {
      var tmp;
      // Inline function 'kotlin.collections.isNotEmpty' call
      if (!this.nn_1.a1()) {
        tmp = pos < charSequenceLength(text);
      } else {
        tmp = false;
      }
      if (!tmp) {
        break $l$loop;
      }
      if (charSequenceGet(text, pos) === _Char___init__impl__6a9atx(10)) {
        this.pn_1.r(pos);
      }
      var inductionVariable_0 = 0;
      var last_0 = this.nn_1.v();
      if (inductionVariable_0 < last_0)
        do {
          var ss = inductionVariable_0;
          inductionVariable_0 = inductionVariable_0 + 1 | 0;
          var states = this.nn_1.z(ss);
          var inductionVariable_1 = 0;
          var last_1 = states.length;
          if (inductionVariable_1 < last_1)
            do {
              var s = inductionVariable_1;
              inductionVariable_1 = inductionVariable_1 + 1 | 0;
              var state = states[s];
              var outgoing = state.xl_1;
              var inductionVariable_2 = 0;
              var last_2 = outgoing.v();
              if (inductionVariable_2 < last_2)
                do {
                  var t = inductionVariable_2;
                  inductionVariable_2 = inductionVariable_2 + 1 | 0;
                  var trans = outgoing.z(t);
                  if (matches(this, trans.cm_1, text, pos)) {
                    this.on_1.r(trans.tn());
                    if (trans.fm_1) {
                      var tmp3 = maxMatchedPos;
                      // Inline function 'kotlin.comparisons.maxOf' call
                      var b = pos;
                      maxMatchedPos = Math.max(tmp3, b);
                    }
                  }
                }
                 while (inductionVariable_2 < last_2);
            }
             while (inductionVariable_1 < last_1);
        }
         while (inductionVariable_0 < last_0);
      var t_0 = this.nn_1;
      this.nn_1 = this.on_1;
      this.on_1 = t_0;
      this.on_1.n2();
      pos = pos + 1 | 0;
    }
    var tmp_0;
    if (!(maxMatchedPos === -1)) {
      // Inline function 'kotlin.text.substring' call
      var endIndex = maxMatchedPos + 1 | 0;
      var matchedText = toString(charSequenceSubSequence(text, startPosition, endIndex));
      tmp_0 = new MatchResultAgl(matchedText);
    } else if (matchesEmpty) {
      tmp_0 = new MatchResultAgl('');
    } else {
      tmp_0 = null;
    }
    return tmp_0;
  }
  toString() {
    return 'Regex{' + this.jn_1 + '}';
  }
}
class EscapeKind extends Enum {}
class Companion_0 {
  constructor() {
    Companion_instance_0 = this;
    this.PREC_GROUP_OPEN = 1;
    this.PREC_GROUP_CLOSE = 1;
    this.PREC_LITERAL = 2;
    this.PREC_MULTI_01 = 3;
    this.PREC_MULTI_0n = 4;
    this.PREC_MULTI_1n = 5;
    this.PREC_REP = 6;
    this.PREC_CONCAT = 7;
    this.PREC_CHOICE = 8;
    this.PREDEFINED_DIGIT = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_RANGE_getInstance(), _Char___init__impl__6a9atx(48), _Char___init__impl__6a9atx(57)));
    var tmp = this;
    var tmp_0 = EscapeKind_SINGLE_getInstance();
    var tmp_1 = MatcherKind_NEGATED_getInstance();
    // Inline function 'kotlin.arrayOf' call
    // Inline function 'kotlin.js.unsafeCast' call
    // Inline function 'kotlin.js.asDynamic' call
    var tmp$ret$2 = [new CharacterMatcher(MatcherKind_RANGE_getInstance(), _Char___init__impl__6a9atx(48), _Char___init__impl__6a9atx(57))];
    tmp.PREDEFINED_DIGIT_NEGATED = new Pair(tmp_0, new CharacterMatcher(tmp_1, VOID, VOID, tmp$ret$2));
    var tmp_2 = this;
    var tmp_3 = EscapeKind_SINGLE_getInstance();
    var tmp_4 = MatcherKind_ONE_OF_getInstance();
    // Inline function 'kotlin.arrayOf' call
    // Inline function 'kotlin.js.unsafeCast' call
    // Inline function 'kotlin.js.asDynamic' call
    var tmp$ret$5 = [new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(10)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(11)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(12)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(13)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(133)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(8233))];
    tmp_2.PREDEFINED_UNICODE_LINEBREAK = new Pair(tmp_3, new CharacterMatcher(tmp_4, VOID, VOID, tmp$ret$5));
    var tmp_5 = this;
    var tmp_6 = EscapeKind_SINGLE_getInstance();
    var tmp_7 = MatcherKind_ONE_OF_getInstance();
    // Inline function 'kotlin.arrayOf' call
    // Inline function 'kotlin.js.unsafeCast' call
    // Inline function 'kotlin.js.asDynamic' call
    var tmp$ret$8 = [new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(32)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(9)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(10)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(11)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(12)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(13))];
    tmp_5.PREDEFINED_WHITESPACE = new Pair(tmp_6, new CharacterMatcher(tmp_7, VOID, VOID, tmp$ret$8));
    var tmp_8 = this;
    var tmp_9 = EscapeKind_SINGLE_getInstance();
    var tmp_10 = MatcherKind_NEGATED_getInstance();
    var tmp_11 = MatcherKind_ONE_OF_getInstance();
    // Inline function 'kotlin.arrayOf' call
    // Inline function 'kotlin.js.unsafeCast' call
    // Inline function 'kotlin.js.asDynamic' call
    var tmp$ret$11 = [new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(32)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(9)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(10)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(11)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(12)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(13))];
    // Inline function 'kotlin.arrayOf' call
    // Inline function 'kotlin.js.unsafeCast' call
    // Inline function 'kotlin.js.asDynamic' call
    var tmp$ret$14 = [new CharacterMatcher(tmp_11, VOID, VOID, tmp$ret$11)];
    tmp_8.PREDEFINED_WHITESPACE_NEGATED = new Pair(tmp_9, new CharacterMatcher(tmp_10, VOID, VOID, tmp$ret$14));
    var tmp_12 = this;
    var tmp_13 = EscapeKind_SINGLE_getInstance();
    var tmp_14 = MatcherKind_ONE_OF_getInstance();
    // Inline function 'kotlin.arrayOf' call
    // Inline function 'kotlin.js.unsafeCast' call
    // Inline function 'kotlin.js.asDynamic' call
    var tmp$ret$17 = [new CharacterMatcher(MatcherKind_RANGE_getInstance(), _Char___init__impl__6a9atx(97), _Char___init__impl__6a9atx(122)), new CharacterMatcher(MatcherKind_RANGE_getInstance(), _Char___init__impl__6a9atx(65), _Char___init__impl__6a9atx(90)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(95)), new CharacterMatcher(MatcherKind_RANGE_getInstance(), _Char___init__impl__6a9atx(48), _Char___init__impl__6a9atx(57))];
    tmp_12.PREDEFINED_WORD = new Pair(tmp_13, new CharacterMatcher(tmp_14, VOID, VOID, tmp$ret$17));
    var tmp_15 = this;
    var tmp_16 = EscapeKind_SINGLE_getInstance();
    var tmp_17 = MatcherKind_NEGATED_getInstance();
    var tmp_18 = MatcherKind_ONE_OF_getInstance();
    // Inline function 'kotlin.arrayOf' call
    // Inline function 'kotlin.js.unsafeCast' call
    // Inline function 'kotlin.js.asDynamic' call
    var tmp$ret$20 = [new CharacterMatcher(MatcherKind_RANGE_getInstance(), _Char___init__impl__6a9atx(97), _Char___init__impl__6a9atx(122)), new CharacterMatcher(MatcherKind_RANGE_getInstance(), _Char___init__impl__6a9atx(65), _Char___init__impl__6a9atx(90)), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(95)), new CharacterMatcher(MatcherKind_RANGE_getInstance(), _Char___init__impl__6a9atx(48), _Char___init__impl__6a9atx(57))];
    // Inline function 'kotlin.arrayOf' call
    // Inline function 'kotlin.js.unsafeCast' call
    // Inline function 'kotlin.js.asDynamic' call
    var tmp$ret$23 = [new CharacterMatcher(tmp_18, VOID, VOID, tmp$ret$20)];
    tmp_15.PREDEFINED_WORD_NEGATED = new Pair(tmp_16, new CharacterMatcher(tmp_17, VOID, VOID, tmp$ret$23));
  }
  un() {
    return this.PREC_GROUP_OPEN;
  }
  vn() {
    return this.PREC_GROUP_CLOSE;
  }
  wn() {
    return this.PREC_LITERAL;
  }
  xn() {
    return this.PREC_MULTI_01;
  }
  yn() {
    return this.PREC_MULTI_0n;
  }
  zn() {
    return this.PREC_MULTI_1n;
  }
  ao() {
    return this.PREC_REP;
  }
  bo() {
    return this.PREC_CONCAT;
  }
  co() {
    return this.PREC_CHOICE;
  }
  do() {
    return this.PREDEFINED_DIGIT;
  }
  eo() {
    return this.PREDEFINED_DIGIT_NEGATED;
  }
  fo() {
    return this.PREDEFINED_UNICODE_LINEBREAK;
  }
  go() {
    return this.PREDEFINED_WHITESPACE;
  }
  ho() {
    return this.PREDEFINED_WHITESPACE_NEGATED;
  }
  io() {
    return this.PREDEFINED_WORD;
  }
  jo() {
    return this.PREDEFINED_WORD_NEGATED;
  }
}
class RegexParser {
  constructor(pattern) {
    Companion_getInstance_0();
    this.ym_1 = pattern;
    this.zm_1 = this.ym_1 + '\x00';
    this.an_1 = 0;
    this.bn_1 = new RegexMatcherBuilder(this.ym_1);
  }
  cn() {
    parsePattern(this);
    return this.bn_1.wm();
  }
}
class Companion_1 {
  constructor() {
    Companion_instance_1 = this;
    this.PRINTABLE_ASCII = plus(plus(plus(plus(plus(plus(plus_1(Char__rangeTo_impl_tkncvp(_Char___init__impl__6a9atx(65), _Char___init__impl__6a9atx(90)), Char__rangeTo_impl_tkncvp(_Char___init__impl__6a9atx(97), _Char___init__impl__6a9atx(122))), Char__rangeTo_impl_tkncvp(_Char___init__impl__6a9atx(48), _Char___init__impl__6a9atx(57))), listOf_0([new Char(_Char___init__impl__6a9atx(33)), new Char(_Char___init__impl__6a9atx(34)), new Char(_Char___init__impl__6a9atx(35)), new Char(_Char___init__impl__6a9atx(36)), new Char(_Char___init__impl__6a9atx(37)), new Char(_Char___init__impl__6a9atx(38)), new Char(_Char___init__impl__6a9atx(39)), new Char(_Char___init__impl__6a9atx(40)), new Char(_Char___init__impl__6a9atx(41)), new Char(_Char___init__impl__6a9atx(42)), new Char(_Char___init__impl__6a9atx(43)), new Char(_Char___init__impl__6a9atx(44)), new Char(_Char___init__impl__6a9atx(45)), new Char(_Char___init__impl__6a9atx(46)), new Char(_Char___init__impl__6a9atx(47))])), listOf_0([new Char(_Char___init__impl__6a9atx(58)), new Char(_Char___init__impl__6a9atx(59)), new Char(_Char___init__impl__6a9atx(60)), new Char(_Char___init__impl__6a9atx(61)), new Char(_Char___init__impl__6a9atx(62)), new Char(_Char___init__impl__6a9atx(63)), new Char(_Char___init__impl__6a9atx(64))])), listOf_0([new Char(_Char___init__impl__6a9atx(91)), new Char(_Char___init__impl__6a9atx(92)), new Char(_Char___init__impl__6a9atx(93)), new Char(_Char___init__impl__6a9atx(94)), new Char(_Char___init__impl__6a9atx(95)), new Char(_Char___init__impl__6a9atx(96))])), listOf_0([new Char(_Char___init__impl__6a9atx(123)), new Char(_Char___init__impl__6a9atx(124)), new Char(_Char___init__impl__6a9atx(125)), new Char(_Char___init__impl__6a9atx(126))])), toMutableList(listOf(new Char(_Char___init__impl__6a9atx(32)))));
  }
  ko() {
    return this.PRINTABLE_ASCII;
  }
}
class RegexValueProvider {
  constructor(pattern, anyChar) {
    Companion_getInstance_1();
    this.anyChar = anyChar;
    var tmp = this;
    var tmp_0 = regexMatcher(pattern);
    tmp.lo_1 = tmp_0 instanceof RegexMatcherImpl ? tmp_0 : THROW_CCE();
    this.matcher = this.lo_1;
    this.mo_1 = this.lo_1.kn_1;
    this.no_1 = this.lo_1.ln_1;
    var tmp_1 = this;
    // Inline function 'kotlin.collections.mutableListOf' call
    tmp_1.oo_1 = ArrayList.y();
    // Inline function 'kotlin.collections.mutableListOf' call
    var ns = ArrayList.y();
    addNextStates(ns, this.mo_1);
    var tmp_2 = this;
    // Inline function 'kotlin.collections.toTypedArray' call
    tmp_2.po_1 = copyToArray(ns);
    // Inline function 'kotlin.collections.forEach' call
    var _iterator__ex2g4s = this.no_1.s();
    while (_iterator__ex2g4s.t()) {
      var element = _iterator__ex2g4s.u();
      // Inline function 'kotlin.collections.forEach' call
      var _iterator__ex2g4s_0 = element.xl_1.s();
      while (_iterator__ex2g4s_0.t()) {
        var element_0 = _iterator__ex2g4s_0.u();
        element_0.qn();
      }
    }
  }
  qo() {
    return this.anyChar;
  }
  in() {
    return this.matcher;
  }
  provide() {
    // Inline function 'kotlin.arrayOf' call
    // Inline function 'kotlin.js.unsafeCast' call
    // Inline function 'kotlin.js.asDynamic' call
    var currentStates = [];
    currentStates = this.po_1;
    var lastState = null;
    $l$loop: while (true) {
      // Inline function 'kotlin.collections.isNotEmpty' call
      // Inline function 'kotlin.collections.isEmpty' call
      if (!!(currentStates.length === 0)) {
        break $l$loop;
      }
      var tmp2 = currentStates;
      var tmp$ret$6;
      $l$block: {
        // Inline function 'kotlin.collections.firstOrNull' call
        var inductionVariable = 0;
        var last = tmp2.length;
        while (inductionVariable < last) {
          var element = tmp2[inductionVariable];
          inductionVariable = inductionVariable + 1 | 0;
          if (element.sn()) {
            tmp$ret$6 = element;
            break $l$block;
          }
        }
        tmp$ret$6 = null;
      }
      var tmp0_elvis_lhs = tmp$ret$6;
      var tmp;
      if (tmp0_elvis_lhs == null) {
        var tmp4 = currentStates;
        var tmp$ret$10;
        $l$block_2: {
          // Inline function 'kotlin.collections.firstOrNull' call
          var inductionVariable_0 = 0;
          var last_0 = tmp4.length;
          while (inductionVariable_0 < last_0) {
            var element_0 = tmp4[inductionVariable_0];
            inductionVariable_0 = inductionVariable_0 + 1 | 0;
            var tmp0 = element_0.xl_1;
            var tmp$ret$7;
            $l$block_1: {
              // Inline function 'kotlin.collections.any' call
              var tmp_0;
              if (isInterface(tmp0, Collection)) {
                tmp_0 = tmp0.a1();
              } else {
                tmp_0 = false;
              }
              if (tmp_0) {
                tmp$ret$7 = false;
                break $l$block_1;
              }
              var _iterator__ex2g4s = tmp0.s();
              while (_iterator__ex2g4s.t()) {
                var element_1 = _iterator__ex2g4s.u();
                if (element_1.fm_1) {
                  tmp$ret$7 = true;
                  break $l$block_1;
                }
              }
              tmp$ret$7 = false;
            }
            if (tmp$ret$7) {
              tmp$ret$10 = element_0;
              break $l$block_2;
            }
          }
          tmp$ret$10 = null;
        }
        tmp = tmp$ret$10;
      } else {
        tmp = tmp0_elvis_lhs;
      }
      var tmp1_elvis_lhs = tmp;
      var tmp_1;
      if (tmp1_elvis_lhs == null) {
        var tmp6 = currentStates;
        var tmp$ret$12;
        $l$block_3: {
          // Inline function 'kotlin.collections.firstOrNull' call
          var inductionVariable_1 = 0;
          var last_1 = tmp6.length;
          while (inductionVariable_1 < last_1) {
            var element_2 = tmp6[inductionVariable_1];
            inductionVariable_1 = inductionVariable_1 + 1 | 0;
            if (!element_2.equals(lastState)) {
              tmp$ret$12 = element_2;
              break $l$block_3;
            }
          }
          tmp$ret$12 = null;
        }
        tmp_1 = tmp$ret$12;
      } else {
        tmp_1 = tmp1_elvis_lhs;
      }
      var tmp2_elvis_lhs = tmp_1;
      lastState = tmp2_elvis_lhs == null ? first_0(currentStates) : tmp2_elvis_lhs;
      var tmp8 = lastState.xl_1;
      var tmp$ret$14;
      $l$block_4: {
        // Inline function 'kotlin.collections.firstOrNull' call
        var _iterator__ex2g4s_0 = tmp8.s();
        while (_iterator__ex2g4s_0.t()) {
          var element_3 = _iterator__ex2g4s_0.u();
          if (element_3.fm_1) {
            tmp$ret$14 = element_3;
            break $l$block_4;
          }
        }
        tmp$ret$14 = null;
      }
      var tmp3_elvis_lhs = tmp$ret$14;
      var outgoing = tmp3_elvis_lhs == null ? firstOrNull(lastState.xl_1) : tmp3_elvis_lhs;
      if (null == outgoing) {
        // Inline function 'kotlin.arrayOf' call
        // Inline function 'kotlin.js.unsafeCast' call
        // Inline function 'kotlin.js.asDynamic' call
        currentStates = [];
      } else {
        var c = this.ro(outgoing.cm_1);
        var tmp_2 = c;
        if (!((tmp_2 == null ? null : new Char(tmp_2)) == null)) {
          var tmp_3 = c;
          this.oo_1.r(tmp_3 == null ? null : new Char(tmp_3));
        }
        var tmp_4;
        if (outgoing.fm_1) {
          // Inline function 'kotlin.emptyArray' call
          tmp_4 = [];
        } else {
          tmp_4 = outgoing.tn();
        }
        currentStates = tmp_4;
      }
    }
    return joinToString(this.oo_1, '');
  }
  ro(matcher) {
    var tmp;
    switch (matcher.dn_1.d3_1) {
      case 0:
        tmp = null;
        break;
      case 1:
        tmp = this.anyChar;
        break;
      case 2:
        tmp = _Char___init__impl__6a9atx(10);
        break;
      case 3:
        tmp = notOneOf(this, matcher.gn_1);
        break;
      case 4:
        tmp = matcher.so() ? matcher.en_1 : null;
        break;
      case 5:
        tmp = this.ro(matcher.gn_1[0]);
        break;
      case 6:
        tmp = matcher.hn_1;
        break;
      default:
        noWhenBranchMatchedException();
        break;
    }
    return tmp;
  }
}
class Companion_2 {
  constructor() {
    Companion_instance_2 = this;
    this.km_1 = new CharacterMatcher(MatcherKind_EMPTY_getInstance());
    this.lm_1 = new CharacterMatcher(MatcherKind_ANY_getInstance());
    this.mm_1 = new CharacterMatcher(MatcherKind_END_OF_LINE_OR_INPUT_getInstance());
  }
}
class CharacterMatcher {
  constructor(kind, literal, max, options) {
    Companion_getInstance_2();
    literal = literal === VOID ? _Char___init__impl__6a9atx(0) : literal;
    max = max === VOID ? _Char___init__impl__6a9atx(0) : max;
    var tmp;
    if (options === VOID) {
      // Inline function 'kotlin.arrayOf' call
      // Inline function 'kotlin.js.unsafeCast' call
      // Inline function 'kotlin.js.asDynamic' call
      tmp = [];
    } else {
      tmp = options;
    }
    options = tmp;
    this.dn_1 = kind;
    this.en_1 = literal;
    this.fn_1 = max;
    this.gn_1 = options;
    this.hn_1 = this.en_1;
  }
  so() {
    var tmp;
    switch (this.dn_1.d3_1) {
      case 0:
        tmp = false;
        break;
      case 1:
        tmp = true;
        break;
      case 2:
        tmp = true;
        break;
      case 3:
        tmp = true;
        break;
      case 4:
        var tmp_0;
        // Inline function 'kotlin.collections.isEmpty' call

        if (this.gn_1.length === 0) {
          tmp_0 = true;
        } else {
          var tmp1 = this.gn_1;
          var tmp$ret$2;
          $l$block: {
            // Inline function 'kotlin.collections.all' call
            var inductionVariable = 0;
            var last = tmp1.length;
            while (inductionVariable < last) {
              var element = tmp1[inductionVariable];
              inductionVariable = inductionVariable + 1 | 0;
              if (!element.so()) {
                tmp$ret$2 = false;
                break $l$block;
              }
            }
            tmp$ret$2 = true;
          }
          tmp_0 = tmp$ret$2;
        }

        tmp = tmp_0;
        break;
      case 5:
        tmp = true;
        break;
      case 6:
        tmp = true;
        break;
      default:
        noWhenBranchMatchedException();
        break;
    }
    return tmp;
  }
  in() {
    return this.gn_1[0];
  }
  toString() {
    var tmp;
    switch (this.dn_1.d3_1) {
      case 0:
        tmp = 'EMPTY';
        break;
      case 1:
        tmp = 'ANY';
        break;
      case 2:
        tmp = '$';
        break;
      case 3:
        tmp = '!(' + this.in().toString() + ')';
        break;
      case 4:
        tmp = "'" + toString_0(this.en_1) + "'";
        break;
      case 5:
        tmp = '{' + joinToString_0(this.gn_1, ',') + '}';
        break;
      case 6:
        tmp = '[' + toString_0(this.hn_1) + '-' + toString_0(this.fn_1) + ']';
        break;
      default:
        noWhenBranchMatchedException();
        break;
    }
    return tmp;
  }
}
class MatcherKind extends Enum {}
class State {
  constructor(number, isSplit) {
    this.vl_1 = number;
    this.wl_1 = isSplit;
    var tmp = this;
    // Inline function 'kotlin.collections.mutableListOf' call
    tmp.xl_1 = ArrayList.y();
  }
  sn() {
    return this.equals(Companion_getInstance().zl_1);
  }
  hashCode() {
    return this.vl_1;
  }
  equals(other) {
    var tmp;
    if (other instanceof State) {
      tmp = this.vl_1 === other.vl_1;
    } else {
      tmp = false;
    }
    return tmp;
  }
  toString() {
    return 'State{' + this.vl_1 + '}';
  }
}
class Transition {
  constructor(kind, matcher) {
    this.bm_1 = kind;
    this.cm_1 = matcher;
    this.dm_1 = null;
    this.fm_1 = false;
  }
  tn() {
    var tmp = this.em_1;
    if (!(tmp == null))
      return tmp;
    else {
      throwUninitializedPropertyAccessException('nextStates');
    }
  }
  qn() {
    // Inline function 'kotlin.collections.mutableListOf' call
    var ns = ArrayList.y();
    this.fm_1 = addNextStates(ns, this.dm_1);
    var tmp = this;
    // Inline function 'kotlin.collections.toTypedArray' call
    tmp.em_1 = copyToArray(ns);
  }
  toString() {
    var tmp = this.cm_1.toString();
    var tmp0_safe_receiver = this.dm_1;
    return '-' + tmp + '->(' + (tmp0_safe_receiver == null ? null : tmp0_safe_receiver.vl_1) + ')';
  }
}
class TransitionKind extends Enum {}
class Fragment {
  constructor(start, outgoing) {
    this.hm_1 = start;
    this.im_1 = outgoing;
  }
}
class RegexEngineKind extends Enum {
  get name() {
    return this.e3();
  }
  get ordinal() {
    return this.f3();
  }
}
class MatchResult {}
class MatchResultAgl {
  constructor(matchedText) {
    this.vo_1 = matchedText;
  }
  wo() {
    return this.vo_1;
  }
  bh() {
    return this.vo_1;
  }
  xo(matchedText) {
    return new MatchResultAgl(matchedText);
  }
  copy(matchedText, $super) {
    matchedText = matchedText === VOID ? this.vo_1 : matchedText;
    return $super === VOID ? this.xo(matchedText) : $super.xo.call(this, matchedText);
  }
  toString() {
    return 'MatchResultAgl(matchedText=' + this.vo_1 + ')';
  }
  hashCode() {
    return getStringHashCode(this.vo_1);
  }
  equals(other) {
    if (this === other)
      return true;
    if (!(other instanceof MatchResultAgl))
      return false;
    var tmp0_other_with_cast = other instanceof MatchResultAgl ? other : THROW_CCE();
    if (!(this.vo_1 === tmp0_other_with_cast.vo_1))
      return false;
    return true;
  }
  get matchedText() {
    return this.wo();
  }
}
class Regex_0 {}
class RegexEngine {}
class RegexPlatform {
  constructor(value) {
    this.value = value;
  }
  b3() {
    return this.value;
  }
  matchAt(text, atPosition) {
    var tmp0_safe_receiver = this.value.we(text, atPosition);
    var tmp;
    if (tmp0_safe_receiver == null) {
      tmp = null;
    } else {
      // Inline function 'kotlin.let' call
      tmp = new MatchResultAgl(tmp0_safe_receiver.b3());
    }
    return tmp;
  }
  matchesAt(text, atPosition) {
    return this.value.se(text, atPosition);
  }
  bh() {
    return this.value;
  }
  zo(value) {
    return new RegexPlatform(value);
  }
  copy(value, $super) {
    value = value === VOID ? this.value : value;
    return $super === VOID ? this.zo(value) : $super.zo.call(this, value);
  }
  toString() {
    return 'RegexPlatform(value=' + this.value.toString() + ')';
  }
  hashCode() {
    return hashCode(this.value);
  }
  equals(other) {
    if (this === other)
      return true;
    if (!(other instanceof RegexPlatform))
      return false;
    var tmp0_other_with_cast = other instanceof RegexPlatform ? other : THROW_CCE();
    if (!equals(this.value, tmp0_other_with_cast.value))
      return false;
    return true;
  }
}
class RegexAgl {
  constructor(value) {
    this.value = value;
  }
  b3() {
    return this.value;
  }
  matchAt(text, atPosition) {
    var tmp = this.value.matchAt(text, atPosition);
    return (tmp == null ? true : tmp instanceof MatchResultAgl) ? tmp : THROW_CCE();
  }
  matchesAt(text, atPosition) {
    return this.value.matchesAt(text, atPosition);
  }
  bh() {
    return this.value;
  }
  ap(value) {
    return new RegexAgl(value);
  }
  copy(value, $super) {
    value = value === VOID ? this.value : value;
    return $super === VOID ? this.ap(value) : $super.ap.call(this, value);
  }
  toString() {
    return 'RegexAgl(value=' + toString(this.value) + ')';
  }
  hashCode() {
    return hashCode(this.value);
  }
  equals(other) {
    if (this === other)
      return true;
    if (!(other instanceof RegexAgl))
      return false;
    var tmp0_other_with_cast = other instanceof RegexAgl ? other : THROW_CCE();
    if (!equals(this.value, tmp0_other_with_cast.value))
      return false;
    return true;
  }
}
class RegexEnginePlatform_0 {
  constructor() {
    RegexEnginePlatform_instance = this;
    this.bp_1 = RegexEngineKind_PLATFORM_getInstance();
  }
  yo() {
    return this.bp_1;
  }
  createFor(pattern) {
    return new RegexPlatform(Regex.pe(pattern));
  }
  get kind() {
    return this.yo();
  }
}
class RegexEngineAgl_0 {
  constructor() {
    RegexEngineAgl_instance = this;
    this.cp_1 = RegexEngineKind_AGL_getInstance();
  }
  yo() {
    return this.cp_1;
  }
  createFor(pattern) {
    return new RegexAgl(regexMatcher(pattern));
  }
  get kind() {
    return this.yo();
  }
}
//endregion
var BuildConfig_instance;
function BuildConfig_getInstance() {
  return BuildConfig_instance;
}
function createState($this, isSplit) {
  var state = new State($this.sl_1, isSplit);
  $this.sl_1 = $this.sl_1 + 1 | 0;
  $this.rl_1.r(state);
  return state;
}
function cloneState($this, orig, nullTransitions, map) {
  var tmp;
  if (null == orig) {
    tmp = null;
  } else {
    var clone = map.z2(orig);
    var tmp_0;
    if (null == clone) {
      var c = createState($this, orig.wl_1);
      // Inline function 'kotlin.collections.set' call
      map.r2(orig, c);
      // Inline function 'kotlin.collections.map' call
      var this_0 = orig.xl_1;
      // Inline function 'kotlin.collections.mapTo' call
      var destination = ArrayList.w(collectionSizeOrDefault(this_0, 10));
      var _iterator__ex2g4s = this_0.s();
      while (_iterator__ex2g4s.t()) {
        var item = _iterator__ex2g4s.u();
        var tmp$ret$1 = $this.yl(item, nullTransitions, map);
        destination.r(tmp$ret$1);
      }
      var ctrans = destination;
      c.xl_1.x(ctrans);
      tmp_0 = c;
    } else {
      tmp_0 = clone;
    }
    tmp = tmp_0;
  }
  return tmp;
}
function regexMatcher(pattern) {
  return (new RegexParser(pattern)).cn();
}
var Companion_instance;
function Companion_getInstance() {
  if (Companion_instance === VOID)
    new Companion();
  return Companion_instance;
}
function matches($this, matcher, text, pos) {
  var tmp;
  switch (matcher.dn_1.d3_1) {
    case 0:
      var message = 'should not happen';
      throw IllegalStateException.v4(toString(message));
    case 1:
      tmp = true;
      break;
    case 2:
      var nextPos = pos + 1 | 0;
      tmp = nextPos === charSequenceLength(text) || charSequenceGet(text, pos) === _Char___init__impl__6a9atx(10);
      break;
    case 3:
      tmp = !matches($this, matcher.in(), text, pos);
      break;
    case 4:
      tmp = charSequenceGet(text, pos) === matcher.en_1;
      break;
    case 5:
      var opts = matcher.gn_1;
      var inductionVariable = 0;
      var last = opts.length;
      if (inductionVariable < last)
        do {
          var i = inductionVariable;
          inductionVariable = inductionVariable + 1 | 0;
          if (matches($this, opts[i], text, pos)) {
            return true;
          }
        }
         while (inductionVariable < last);
      return false;
    case 6:
      var containsLower = matcher.hn_1;
      var containsUpper = matcher.fn_1;
      var containsArg = charSequenceGet(text, pos);
      tmp = containsLower <= containsArg ? containsArg <= containsUpper : false;
      break;
    default:
      noWhenBranchMatchedException();
      break;
  }
  return tmp;
}
var EscapeKind_SINGLE_instance;
var EscapeKind_OPTIONS_instance;
var EscapeKind_LITERAL_instance;
var EscapeKind_entriesInitialized;
function EscapeKind_initEntries() {
  if (EscapeKind_entriesInitialized)
    return Unit_instance;
  EscapeKind_entriesInitialized = true;
  EscapeKind_SINGLE_instance = new EscapeKind('SINGLE', 0);
  EscapeKind_OPTIONS_instance = new EscapeKind('OPTIONS', 1);
  EscapeKind_LITERAL_instance = new EscapeKind('LITERAL', 2);
}
var Companion_instance_0;
function Companion_getInstance_0() {
  if (Companion_instance_0 === VOID)
    new Companion_0();
  return Companion_instance_0;
}
function next($this) {
  var c = charSequenceGet($this.zm_1, $this.an_1);
  $this.an_1 = $this.an_1 + 1 | 0;
  return c;
}
function parsePattern($this) {
  var postfix = new MutableStack();
  var opStack = new MutableStack();
  var needConcat = new MutableStack();
  needConcat.nk(false);
  if ($this.ym_1.length > 0) {
    var c = next($this);
    try {
      while ($this.an_1 <= $this.ym_1.length) {
        var tmp0_subject = c;
        if (tmp0_subject === _Char___init__impl__6a9atx(92)) {
          var escaped_matchers = parsePatternEscape($this);
          switch (escaped_matchers.zg_1.d3_1) {
            case 0:
              var tmp = escaped_matchers.ah_1;
              var matcher = tmp instanceof CharacterMatcher ? tmp : THROW_CCE();
              var tmp_0 = Companion_getInstance_0().PREC_LITERAL;
              postfix.nk(new Pair(tmp_0, RegexParser$parsePattern$lambda($this, matcher)));
              if (needConcat.rk()) {
                while (!opStack.mk() && !(opStack.ok().zg_1 === Companion_getInstance_0().PREC_GROUP_OPEN) && opStack.ok().zg_1 < Companion_getInstance_0().PREC_CONCAT) {
                  postfix.nk(opStack.rk());
                }
                var tmp_1 = Companion_getInstance_0().PREC_CONCAT;
                opStack.nk(new Pair(tmp_1, RegexParser$parsePattern$lambda_0($this)));
              }

              needConcat.nk(true);
              break;
            case 2:
              var tmp_2 = escaped_matchers.ah_1;
              var literal = isCharSequence(tmp_2) ? tmp_2 : THROW_CCE();
              if (charSequenceLength(literal) > 0) {
                var cc = charSequenceGet(literal, 0);
                var tmp_3 = Companion_getInstance_0().PREC_LITERAL;
                postfix.nk(new Pair(tmp_3, RegexParser$parsePattern$lambda_1($this, cc)));
                if (needConcat.rk()) {
                  while (!opStack.mk() && !(opStack.ok().zg_1 === Companion_getInstance_0().PREC_GROUP_OPEN) && opStack.ok().zg_1 < Companion_getInstance_0().PREC_CONCAT) {
                    postfix.nk(opStack.rk());
                  }
                  var tmp_4 = Companion_getInstance_0().PREC_CONCAT;
                  opStack.nk(new Pair(tmp_4, RegexParser$parsePattern$lambda_2($this)));
                }
                var i = 1;
                while (i < charSequenceLength(literal)) {
                  var d = charSequenceGet(literal, i);
                  var tmp_5 = Companion_getInstance_0().PREC_LITERAL;
                  postfix.nk(new Pair(tmp_5, RegexParser$parsePattern$lambda_3($this, d)));
                  var tmp_6 = Companion_getInstance_0().PREC_CONCAT;
                  opStack.nk(new Pair(tmp_6, RegexParser$parsePattern$lambda_4($this)));
                  i = i + 1 | 0;
                }
                needConcat.nk(true);
              }

              break;
            case 1:
              // Inline function 'kotlin.TODO' call

              throw NotImplementedError.uj();
            default:
              noWhenBranchMatchedException();
              break;
          }
          c = next($this);
        } else if (tmp0_subject === _Char___init__impl__6a9atx(46)) {
          var tmp_7 = Companion_getInstance_0().PREC_LITERAL;
          postfix.nk(new Pair(tmp_7, RegexParser$parsePattern$lambda_5($this)));
          if (needConcat.rk()) {
            while (!opStack.mk() && !(opStack.ok().zg_1 === Companion_getInstance_0().PREC_GROUP_OPEN) && opStack.ok().zg_1 < Companion_getInstance_0().PREC_CONCAT) {
              postfix.nk(opStack.rk());
            }
            var tmp_8 = Companion_getInstance_0().PREC_CONCAT;
            opStack.nk(new Pair(tmp_8, RegexParser$parsePattern$lambda_6($this)));
          }
          needConcat.nk(true);
          c = next($this);
        } else if (tmp0_subject === _Char___init__impl__6a9atx(36)) {
          var tmp_9 = Companion_getInstance_0().PREC_LITERAL;
          postfix.nk(new Pair(tmp_9, RegexParser$parsePattern$lambda_7($this)));
          if (needConcat.rk()) {
            while (!opStack.mk() && !(opStack.ok().zg_1 === Companion_getInstance_0().PREC_GROUP_OPEN) && opStack.ok().zg_1 < Companion_getInstance_0().PREC_CONCAT) {
              postfix.nk(opStack.rk());
            }
            var tmp_10 = Companion_getInstance_0().PREC_CONCAT;
            opStack.nk(new Pair(tmp_10, RegexParser$parsePattern$lambda_8($this)));
          }
          needConcat.nk(true);
          c = next($this);
        } else if (tmp0_subject === _Char___init__impl__6a9atx(91)) {
          var options = parseCharacterClass($this);
          var tmp_11 = Companion_getInstance_0().PREC_LITERAL;
          postfix.nk(new Pair(tmp_11, RegexParser$parsePattern$lambda_9($this, options)));
          if (needConcat.rk()) {
            while (!opStack.mk() && !(opStack.ok().zg_1 === Companion_getInstance_0().PREC_GROUP_OPEN) && opStack.ok().zg_1 < Companion_getInstance_0().PREC_CONCAT) {
              postfix.nk(opStack.rk());
            }
            var tmp_12 = Companion_getInstance_0().PREC_CONCAT;
            opStack.nk(new Pair(tmp_12, RegexParser$parsePattern$lambda_10($this)));
          }
          needConcat.nk(true);
          c = next($this);
        } else if (tmp0_subject === _Char___init__impl__6a9atx(40)) {
          needConcat.nk(false);
          var tmp_13 = Companion_getInstance_0().PREC_GROUP_OPEN;
          opStack.nk(new Pair(tmp_13, RegexParser$parsePattern$lambda_11));
          c = next($this);
          if (c === _Char___init__impl__6a9atx(63)) {
            // Inline function 'kotlin.TODO' call
            var reason = $this.ym_1;
            throw NotImplementedError.uj('An operation is not implemented: ' + reason);
          }
        } else if (tmp0_subject === _Char___init__impl__6a9atx(124)) {
          while (!opStack.mk() && !(opStack.ok().zg_1 === Companion_getInstance_0().PREC_GROUP_OPEN) && opStack.ok().zg_1 < Companion_getInstance_0().PREC_CHOICE) {
            postfix.nk(opStack.rk());
          }
          var tmp_14 = Companion_getInstance_0().PREC_CHOICE;
          opStack.nk(new Pair(tmp_14, RegexParser$parsePattern$lambda_12($this)));
          needConcat.rk();
          needConcat.nk(false);
          c = next($this);
        } else if (tmp0_subject === _Char___init__impl__6a9atx(63)) {
          var tmp_15 = Companion_getInstance_0().PREC_MULTI_01;
          postfix.nk(new Pair(tmp_15, RegexParser$parsePattern$lambda_13($this)));
          c = next($this);
          var tmp4_subject = c;
          if (tmp4_subject === _Char___init__impl__6a9atx(63)) {
            // Inline function 'kotlin.TODO' call
            throw NotImplementedError.uj();
          } else if (tmp4_subject === _Char___init__impl__6a9atx(43)) {
            // Inline function 'kotlin.TODO' call
            throw NotImplementedError.uj();
          }
        } else if (tmp0_subject === _Char___init__impl__6a9atx(43)) {
          var tmp_16 = Companion_getInstance_0().PREC_MULTI_1n;
          postfix.nk(new Pair(tmp_16, RegexParser$parsePattern$lambda_14($this)));
          c = next($this);
          var tmp5_subject = c;
          if (tmp5_subject === _Char___init__impl__6a9atx(63)) {
            // Inline function 'kotlin.TODO' call
            var reason_0 = $this.ym_1;
            throw NotImplementedError.uj('An operation is not implemented: ' + reason_0);
          } else if (tmp5_subject === _Char___init__impl__6a9atx(43)) {
            // Inline function 'kotlin.TODO' call
            var reason_1 = $this.ym_1;
            throw NotImplementedError.uj('An operation is not implemented: ' + reason_1);
          }
        } else if (tmp0_subject === _Char___init__impl__6a9atx(42)) {
          var tmp_17 = Companion_getInstance_0().PREC_MULTI_0n;
          postfix.nk(new Pair(tmp_17, RegexParser$parsePattern$lambda_15($this)));
          c = next($this);
          var tmp6_subject = c;
          if (tmp6_subject === _Char___init__impl__6a9atx(63)) {
            // Inline function 'kotlin.TODO' call
            var reason_2 = $this.ym_1;
            throw NotImplementedError.uj('An operation is not implemented: ' + reason_2);
          } else if (tmp6_subject === _Char___init__impl__6a9atx(43)) {
            // Inline function 'kotlin.TODO' call
            var reason_3 = $this.ym_1;
            throw NotImplementedError.uj('An operation is not implemented: ' + reason_3);
          }
        } else if (tmp0_subject === _Char___init__impl__6a9atx(123)) {
          var nb = StringBuilder.j();
          c = next($this);
          while (_Char___init__impl__6a9atx(48) <= c ? c <= _Char___init__impl__6a9atx(57) : false) {
            nb.db(c);
            c = next($this);
          }
          var tmp7_elvis_lhs = toIntOrNull(nb.toString(), 10);
          var tmp_18;
          if (tmp7_elvis_lhs == null) {
            var message = 'Counted repetition must be one of the forms {n} | {n,} | {n,m} where n and m are numbers';
            throw IllegalStateException.v4(toString(message));
          } else {
            tmp_18 = tmp7_elvis_lhs;
          }
          var n = tmp_18;
          var tmp8_subject = c;
          if (tmp8_subject === _Char___init__impl__6a9atx(125)) {
            var tmp_19 = Companion_getInstance_0().PREC_REP;
            postfix.nk(new Pair(tmp_19, RegexParser$parsePattern$lambda_16($this, n)));
            c = next($this);
          } else if (tmp8_subject === _Char___init__impl__6a9atx(44)) {
            c = next($this);
            if (c === _Char___init__impl__6a9atx(125)) {
              var tmp_20 = Companion_getInstance_0().PREC_REP;
              postfix.nk(new Pair(tmp_20, RegexParser$parsePattern$lambda_17($this, n)));
              c = next($this);
            } else {
              var mb = StringBuilder.j();
              mb.db(c);
              c = next($this);
              while (_Char___init__impl__6a9atx(48) <= c ? c <= _Char___init__impl__6a9atx(57) : false) {
                mb.db(c);
                c = next($this);
              }
              var tmp10_elvis_lhs = toIntOrNull(mb.toString(), 10);
              var tmp_21;
              if (tmp10_elvis_lhs == null) {
                var message_0 = 'Counted repetition must be one of the forms {n} | {n,} | {n,m} where n and m are numbers';
                throw IllegalStateException.v4(toString(message_0));
              } else {
                tmp_21 = tmp10_elvis_lhs;
              }
              var m = tmp_21;
              if (c === _Char___init__impl__6a9atx(125)) {
                var tmp_22 = Companion_getInstance_0().PREC_REP;
                postfix.nk(new Pair(tmp_22, RegexParser$parsePattern$lambda_18($this, n, m)));
                c = next($this);
              } else {
                // Inline function 'kotlin.error' call
                var message_1 = 'Counted repetition must be one of the forms {n} | {n,} | {n,m} where n and m are numbers';
                throw IllegalStateException.v4(toString(message_1));
              }
            }
          } else {
            // Inline function 'kotlin.error' call
            var message_2 = 'Counted repetition must be one of the forms {n} | {n,} | {n,m} where n and m are numbers';
            throw IllegalStateException.v4(toString(message_2));
          }
        } else if (tmp0_subject === _Char___init__impl__6a9atx(41)) {
          while (!opStack.mk() && !(opStack.ok().zg_1 === Companion_getInstance_0().PREC_GROUP_OPEN)) {
            postfix.nk(opStack.rk());
          }
          if (!opStack.mk() && opStack.ok().zg_1 === Companion_getInstance_0().PREC_GROUP_OPEN) {
            opStack.rk();
          }
          needConcat.rk();
          if (needConcat.rk()) {
            while (!opStack.mk() && !(opStack.ok().zg_1 === Companion_getInstance_0().PREC_GROUP_OPEN) && opStack.ok().zg_1 < Companion_getInstance_0().PREC_CONCAT) {
              postfix.nk(opStack.rk());
            }
            var tmp_23 = Companion_getInstance_0().PREC_CONCAT;
            opStack.nk(new Pair(tmp_23, RegexParser$parsePattern$lambda_19($this)));
          }
          needConcat.nk(true);
          c = next($this);
        } else {
          var cc_0 = c;
          var tmp_24 = Companion_getInstance_0().PREC_LITERAL;
          postfix.nk(new Pair(tmp_24, RegexParser$parsePattern$lambda_20($this, cc_0)));
          if (needConcat.rk()) {
            while (!opStack.mk() && !(opStack.ok().zg_1 === Companion_getInstance_0().PREC_GROUP_OPEN) && opStack.ok().zg_1 < Companion_getInstance_0().PREC_CONCAT) {
              postfix.nk(opStack.rk());
            }
            var tmp_25 = Companion_getInstance_0().PREC_CONCAT;
            opStack.nk(new Pair(tmp_25, RegexParser$parsePattern$lambda_21($this)));
          }
          needConcat.nk(true);
          c = next($this);
        }
      }
    } catch ($p) {
      if ($p instanceof Error) {
        var t = $p;
        var tmp14 = $this.ym_1;
        // Inline function 'kotlin.comparisons.maxOf' call
        var b = $this.an_1 - 5 | 0;
        var tmp15 = Math.max(0, b);
        var tmp12 = $this.ym_1.length;
        // Inline function 'kotlin.comparisons.minOf' call
        var b_0 = $this.an_1;
        // Inline function 'kotlin.text.substring' call
        var endIndex = Math.min(tmp12, b_0);
        // Inline function 'kotlin.js.asDynamic' call
        var before = tmp14.substring(tmp15, endIndex);
        var tmp21 = $this.ym_1;
        var tmp17 = $this.ym_1.length;
        // Inline function 'kotlin.comparisons.maxOf' call
        var b_1 = $this.an_1 - 5 | 0;
        var tmp22 = Math.max(tmp17, b_1);
        var tmp19 = $this.ym_1.length;
        // Inline function 'kotlin.comparisons.minOf' call
        var b_2 = $this.an_1 + 5 | 0;
        // Inline function 'kotlin.text.substring' call
        var endIndex_0 = Math.min(tmp19, b_2);
        // Inline function 'kotlin.js.asDynamic' call
        var after = tmp21.substring(tmp22, endIndex_0);
        var posStr = before + '^' + after;
        // Inline function 'kotlin.error' call
        var message_3 = 'Failed to parse regex "' + $this.ym_1 + '" at position ' + $this.an_1 + ', "' + posStr + '", ' + t.message;
        throw IllegalStateException.v4(toString(message_3));
      } else {
        throw $p;
      }
    }
    while (!opStack.mk()) {
      postfix.nk(opStack.rk());
    }
    // Inline function 'kotlin.collections.forEach' call
    var _iterator__ex2g4s = postfix.ek().s();
    while (_iterator__ex2g4s.t()) {
      var element = _iterator__ex2g4s.u();
      element.ah_1();
    }
  }
  $this.bn_1.xm();
}
function parsePatternEscape($this) {
  var c = next($this);
  var tmp0_subject = c;
  var tmp;
  if (tmp0_subject === _Char___init__impl__6a9atx(92)) {
    tmp = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), c));
  } else if (tmp0_subject === _Char___init__impl__6a9atx(40)) {
    tmp = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), c));
  } else if (tmp0_subject === _Char___init__impl__6a9atx(124)) {
    tmp = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), c));
  } else if (tmp0_subject === _Char___init__impl__6a9atx(91)) {
    tmp = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), c));
  } else if (tmp0_subject === _Char___init__impl__6a9atx(93)) {
    tmp = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), c));
  } else if (tmp0_subject === _Char___init__impl__6a9atx(46)) {
    tmp = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), c));
  } else if (tmp0_subject === _Char___init__impl__6a9atx(36)) {
    tmp = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), c));
  } else if (tmp0_subject === _Char___init__impl__6a9atx(63)) {
    tmp = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), c));
  } else if (tmp0_subject === _Char___init__impl__6a9atx(43)) {
    tmp = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), c));
  } else if (tmp0_subject === _Char___init__impl__6a9atx(42)) {
    tmp = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), c));
  } else if (tmp0_subject === _Char___init__impl__6a9atx(116)) {
    tmp = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(9)));
  } else if (tmp0_subject === _Char___init__impl__6a9atx(110)) {
    tmp = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(10)));
  } else if (tmp0_subject === _Char___init__impl__6a9atx(114)) {
    tmp = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(13)));
  } else if (tmp0_subject === _Char___init__impl__6a9atx(102)) {
    tmp = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(12)));
  } else if (tmp0_subject === _Char___init__impl__6a9atx(97)) {
    tmp = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(7)));
  } else if (tmp0_subject === _Char___init__impl__6a9atx(101)) {
    tmp = new Pair(EscapeKind_SINGLE_getInstance(), new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(27)));
  } else if (tmp0_subject === _Char___init__impl__6a9atx(99)) {
    var reason = 'Control char';
    throw NotImplementedError.uj('An operation is not implemented: ' + reason);
  } else if (tmp0_subject === _Char___init__impl__6a9atx(100)) {
    tmp = Companion_getInstance_0().PREDEFINED_DIGIT;
  } else if (tmp0_subject === _Char___init__impl__6a9atx(68)) {
    tmp = Companion_getInstance_0().PREDEFINED_DIGIT_NEGATED;
  } else if (tmp0_subject === _Char___init__impl__6a9atx(82)) {
    tmp = Companion_getInstance_0().PREDEFINED_UNICODE_LINEBREAK;
  } else if (tmp0_subject === _Char___init__impl__6a9atx(115)) {
    tmp = Companion_getInstance_0().PREDEFINED_WHITESPACE;
  } else if (tmp0_subject === _Char___init__impl__6a9atx(83)) {
    tmp = Companion_getInstance_0().PREDEFINED_WHITESPACE_NEGATED;
  } else if (tmp0_subject === _Char___init__impl__6a9atx(119)) {
    tmp = Companion_getInstance_0().PREDEFINED_WORD;
  } else if (tmp0_subject === _Char___init__impl__6a9atx(87)) {
    tmp = Companion_getInstance_0().PREDEFINED_WORD_NEGATED;
  } else if (tmp0_subject === _Char___init__impl__6a9atx(48)) {
    // Inline function 'kotlin.TODO' call
    var reason_0 = 'Octal value';
    throw NotImplementedError.uj('An operation is not implemented: ' + reason_0);
  } else if (tmp0_subject === _Char___init__impl__6a9atx(120)) {
    // Inline function 'kotlin.TODO' call
    var reason_1 = 'hex value';
    throw NotImplementedError.uj('An operation is not implemented: ' + reason_1);
  } else if (tmp0_subject === _Char___init__impl__6a9atx(117)) {
    // Inline function 'kotlin.TODO' call
    var reason_2 = 'unicode hex value';
    throw NotImplementedError.uj('An operation is not implemented: ' + reason_2);
  } else if (tmp0_subject === _Char___init__impl__6a9atx(81)) {
    var sb = StringBuilder.j();
    var end = false;
    c = next($this);
    while (!end) {
      if (c === _Char___init__impl__6a9atx(92)) {
        c = next($this);
        if (_Char___init__impl__6a9atx(69) === c) {
          end = true;
        } else {
          sb.db(c);
        }
      } else {
        sb.db(c);
        c = next($this);
      }
    }
    tmp = new Pair(EscapeKind_LITERAL_getInstance(), sb.toString());
  } else {
    var reason_3 = toString_0(c) + ' at ' + $this.an_1 + ' in ' + $this.ym_1;
    throw NotImplementedError.uj('An operation is not implemented: ' + reason_3);
  }
  return tmp;
}
function parseCharacterClass($this) {
  // Inline function 'kotlin.collections.mutableListOf' call
  var options = ArrayList.y();
  var c = parseNextCharOrEscape($this);
  var tmp;
  if (_Char___init__impl__6a9atx(94) === c) {
    c = parseNextCharOrEscape($this);
    tmp = true;
  } else {
    tmp = false;
  }
  var negated = tmp;
  var f = c;
  while (!(c === _Char___init__impl__6a9atx(93))) {
    c = parseNextCharOrEscape($this);
    var tmp0_subject = c;
    if (tmp0_subject === _Char___init__impl__6a9atx(93)) {
      options.r(new CharacterMatcher(MatcherKind_LITERAL_getInstance(), f));
    } else if (tmp0_subject === _Char___init__impl__6a9atx(45)) {
      c = parseNextCharOrEscape($this);
      if (c === _Char___init__impl__6a9atx(93)) {
        options.r(new CharacterMatcher(MatcherKind_LITERAL_getInstance(), f));
        options.r(new CharacterMatcher(MatcherKind_LITERAL_getInstance(), _Char___init__impl__6a9atx(45)));
      } else {
        options.r(new CharacterMatcher(MatcherKind_RANGE_getInstance(), f, c));
        c = parseNextCharOrEscape($this);
        f = c;
      }
    } else {
      options.r(new CharacterMatcher(MatcherKind_LITERAL_getInstance(), f));
      f = c;
    }
  }
  var tmp_0;
  if (negated) {
    var tmp_1 = MatcherKind_NEGATED_getInstance();
    var tmp_2 = MatcherKind_ONE_OF_getInstance();
    // Inline function 'kotlin.collections.toTypedArray' call
    var tmp$ret$1 = copyToArray(options);
    // Inline function 'kotlin.arrayOf' call
    // Inline function 'kotlin.js.unsafeCast' call
    // Inline function 'kotlin.js.asDynamic' call
    var tmp$ret$4 = [new CharacterMatcher(tmp_2, VOID, VOID, tmp$ret$1)];
    tmp_0 = new CharacterMatcher(tmp_1, VOID, VOID, tmp$ret$4);
  } else {
    var tmp_3 = MatcherKind_ONE_OF_getInstance();
    // Inline function 'kotlin.collections.toTypedArray' call
    var tmp$ret$5 = copyToArray(options);
    tmp_0 = new CharacterMatcher(tmp_3, VOID, VOID, tmp$ret$5);
  }
  return tmp_0;
}
function parseNextCharOrEscape($this) {
  var c = next($this);
  return c === _Char___init__impl__6a9atx(92) ? parseCharacterClassEscape($this) : c;
}
function parseCharacterClassEscape($this) {
  var c = next($this);
  var tmp;
  if (c === _Char___init__impl__6a9atx(92)) {
    tmp = _Char___init__impl__6a9atx(92);
  } else if (c === _Char___init__impl__6a9atx(36)) {
    tmp = _Char___init__impl__6a9atx(36);
  } else if (c === _Char___init__impl__6a9atx(45)) {
    tmp = _Char___init__impl__6a9atx(45);
  } else if (c === _Char___init__impl__6a9atx(94)) {
    tmp = _Char___init__impl__6a9atx(94);
  } else if (c === _Char___init__impl__6a9atx(91)) {
    tmp = _Char___init__impl__6a9atx(91);
  } else if (c === _Char___init__impl__6a9atx(93)) {
    tmp = _Char___init__impl__6a9atx(93);
  } else if (c === _Char___init__impl__6a9atx(38)) {
    tmp = _Char___init__impl__6a9atx(38);
  } else if (c === _Char___init__impl__6a9atx(116)) {
    tmp = _Char___init__impl__6a9atx(9);
  } else if (c === _Char___init__impl__6a9atx(110)) {
    tmp = _Char___init__impl__6a9atx(10);
  } else if (c === _Char___init__impl__6a9atx(114)) {
    tmp = _Char___init__impl__6a9atx(13);
  } else if (c === _Char___init__impl__6a9atx(102)) {
    tmp = _Char___init__impl__6a9atx(12);
  } else if (c === _Char___init__impl__6a9atx(97)) {
    tmp = _Char___init__impl__6a9atx(7);
  } else if (c === _Char___init__impl__6a9atx(101)) {
    tmp = _Char___init__impl__6a9atx(27);
  } else if (c === _Char___init__impl__6a9atx(99)) {
    var reason = 'Control char';
    throw NotImplementedError.uj('An operation is not implemented: ' + reason);
  } else if (c === _Char___init__impl__6a9atx(117)) {
    var unicodeChar = parseUnicode($this);
    tmp = unicodeChar;
  } else if (c === _Char___init__impl__6a9atx(120)) {
    tmp = parseHex($this);
  } else {
    var message = "Unknown escape code '" + toString_0(c) + "' in character class, at position " + $this.an_1 + ' in ' + $this.ym_1 + ', ';
    throw IllegalStateException.v4(toString(message));
  }
  return tmp;
}
function parseHex($this) {
  var tmp0_elvis_lhs = toHexInt($this, next($this), 16);
  var tmp;
  if (tmp0_elvis_lhs == null) {
    var message = 'Cannot parse Hex, at position ' + $this.an_1;
    throw IllegalStateException.v4(toString(message));
  } else {
    tmp = tmp0_elvis_lhs;
  }
  var hex = tmp;
  var tmp_0 = hex;
  var tmp1_elvis_lhs = toHexInt($this, next($this), 1);
  var tmp_1;
  if (tmp1_elvis_lhs == null) {
    var message_0 = 'Cannot parse Hex, at position ' + $this.an_1;
    throw IllegalStateException.v4(toString(message_0));
  } else {
    tmp_1 = tmp1_elvis_lhs;
  }
  hex = tmp_0 + tmp_1 | 0;
  return numberToChar(hex);
}
function parseUnicode($this) {
  var tmp0_elvis_lhs = toHexInt($this, next($this), 4096);
  var tmp;
  if (tmp0_elvis_lhs == null) {
    var message = 'Cannot parse Unicode, at position ' + $this.an_1;
    throw IllegalStateException.v4(toString(message));
  } else {
    tmp = tmp0_elvis_lhs;
  }
  var unicode = tmp;
  var tmp_0 = unicode;
  var tmp1_elvis_lhs = toHexInt($this, next($this), 256);
  var tmp_1;
  if (tmp1_elvis_lhs == null) {
    var message_0 = 'Cannot parse Unicode, at position ' + $this.an_1;
    throw IllegalStateException.v4(toString(message_0));
  } else {
    tmp_1 = tmp1_elvis_lhs;
  }
  unicode = tmp_0 + tmp_1 | 0;
  var tmp_2 = unicode;
  var tmp2_elvis_lhs = toHexInt($this, next($this), 16);
  var tmp_3;
  if (tmp2_elvis_lhs == null) {
    var message_1 = 'Cannot parse Unicode, at position ' + $this.an_1;
    throw IllegalStateException.v4(toString(message_1));
  } else {
    tmp_3 = tmp2_elvis_lhs;
  }
  unicode = tmp_2 + tmp_3 | 0;
  var tmp_4 = unicode;
  var tmp3_elvis_lhs = toHexInt($this, next($this), 1);
  var tmp_5;
  if (tmp3_elvis_lhs == null) {
    var message_2 = 'Cannot parse Unicode, at position ' + $this.an_1;
    throw IllegalStateException.v4(toString(message_2));
  } else {
    tmp_5 = tmp3_elvis_lhs;
  }
  unicode = tmp_4 + tmp_5 | 0;
  return numberToChar(unicode);
}
function toHexInt($this, c, power) {
  var v = toIntOrNull(toString_0(c), 16);
  return null == v ? null : imul(v, power);
}
function RegexParser$parsePattern$lambda(this$0, $matcher) {
  return () => {
    this$0.bn_1.pm($matcher);
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_0(this$0) {
  return () => {
    this$0.bn_1.qm();
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_1(this$0, $cc) {
  return () => {
    this$0.bn_1.om($cc);
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_2(this$0) {
  return () => {
    this$0.bn_1.qm();
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_3(this$0, $d) {
  return () => {
    this$0.bn_1.om($d);
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_4(this$0) {
  return () => {
    this$0.bn_1.qm();
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_5(this$0) {
  return () => {
    this$0.bn_1.jm();
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_6(this$0) {
  return () => {
    this$0.bn_1.qm();
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_7(this$0) {
  return () => {
    this$0.bn_1.nm();
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_8(this$0) {
  return () => {
    this$0.bn_1.qm();
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_9(this$0, $options) {
  return () => {
    this$0.bn_1.pm($options);
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_10(this$0) {
  return () => {
    this$0.bn_1.qm();
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_11() {
  return Unit_instance;
}
function RegexParser$parsePattern$lambda_12(this$0) {
  return () => {
    this$0.bn_1.rm();
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_13(this$0) {
  return () => {
    this$0.bn_1.sm();
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_14(this$0) {
  return () => {
    this$0.bn_1.tm();
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_15(this$0) {
  return () => {
    this$0.bn_1.um();
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_16(this$0, $n) {
  return () => {
    this$0.bn_1.vm($n, $n);
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_17(this$0, $n) {
  return () => {
    this$0.bn_1.vm($n, -1);
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_18(this$0, $n, $m) {
  return () => {
    this$0.bn_1.vm($n, $m);
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_19(this$0) {
  return () => {
    this$0.bn_1.qm();
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_20(this$0, $cc) {
  return () => {
    this$0.bn_1.om($cc);
    return Unit_instance;
  };
}
function RegexParser$parsePattern$lambda_21(this$0) {
  return () => {
    this$0.bn_1.qm();
    return Unit_instance;
  };
}
function EscapeKind_SINGLE_getInstance() {
  EscapeKind_initEntries();
  return EscapeKind_SINGLE_instance;
}
function EscapeKind_LITERAL_getInstance() {
  EscapeKind_initEntries();
  return EscapeKind_LITERAL_instance;
}
var Companion_instance_1;
function Companion_getInstance_1() {
  if (Companion_instance_1 === VOID)
    new Companion_1();
  return Companion_instance_1;
}
function notOneOf($this, matchers) {
  var chars = toMutableList(Companion_getInstance_1().PRINTABLE_ASCII);
  // Inline function 'kotlin.collections.forEach' call
  var inductionVariable = 0;
  var last = matchers.length;
  while (inductionVariable < last) {
    var element = matchers[inductionVariable];
    inductionVariable = inductionVariable + 1 | 0;
    switch (element.dn_1.d3_1) {
      case 0:
        // Inline function 'kotlin.error' call

        var message = 'should not happen';
        throw IllegalStateException.v4(toString(message));
      case 1:
        new Char($this.anyChar);
        break;
      case 2:
        new Char(_Char___init__impl__6a9atx(10));
        break;
      case 3:
        // Inline function 'kotlin.error' call

        var message_0 = 'should not happen';
        throw IllegalStateException.v4(toString(message_0));
      case 4:
        chars.k2(new Char(element.en_1));
        break;
      case 5:
        // Inline function 'kotlin.collections.forEach' call

        var indexedObject = element.gn_1;
        var inductionVariable_0 = 0;
        var last_0 = indexedObject.length;
        while (inductionVariable_0 < last_0) {
          var element_0 = indexedObject[inductionVariable_0];
          inductionVariable_0 = inductionVariable_0 + 1 | 0;
          chars.q1(allOf($this, element_0));
        }

        break;
      case 6:
        removeAll(chars, Char__rangeTo_impl_tkncvp(element.hn_1, element.fn_1));
        break;
      default:
        noWhenBranchMatchedException();
        break;
    }
  }
  return first(chars).t1_1;
}
function allOf($this, cm) {
  var tmp;
  switch (cm.dn_1.d3_1) {
    case 0:
      tmp = emptyList();
      break;
    case 1:
      tmp = listOf(new Char($this.anyChar));
      break;
    case 2:
      tmp = listOf(new Char(_Char___init__impl__6a9atx(10)));
      break;
    case 3:
      var message = 'should not happen';
      throw IllegalStateException.v4(toString(message));
    case 4:
      tmp = listOf(new Char(cm.en_1));
      break;
    case 5:
      // Inline function 'kotlin.collections.flatMap' call

      var tmp0 = cm.gn_1;
      // Inline function 'kotlin.collections.flatMapTo' call

      var destination = ArrayList.y();
      var inductionVariable = 0;
      var last = tmp0.length;
      while (inductionVariable < last) {
        var element = tmp0[inductionVariable];
        inductionVariable = inductionVariable + 1 | 0;
        var list = allOf($this, element);
        addAll(destination, list);
      }

      tmp = destination;
      break;
    case 6:
      tmp = toList(Char__rangeTo_impl_tkncvp(cm.hn_1, cm.fn_1));
      break;
    default:
      noWhenBranchMatchedException();
      break;
  }
  return tmp;
}
var Companion_instance_2;
function Companion_getInstance_2() {
  if (Companion_instance_2 === VOID)
    new Companion_2();
  return Companion_instance_2;
}
var MatcherKind_EMPTY_instance;
var MatcherKind_ANY_instance;
var MatcherKind_END_OF_LINE_OR_INPUT_instance;
var MatcherKind_NEGATED_instance;
var MatcherKind_LITERAL_instance;
var MatcherKind_ONE_OF_instance;
var MatcherKind_RANGE_instance;
var MatcherKind_entriesInitialized;
function MatcherKind_initEntries() {
  if (MatcherKind_entriesInitialized)
    return Unit_instance;
  MatcherKind_entriesInitialized = true;
  MatcherKind_EMPTY_instance = new MatcherKind('EMPTY', 0);
  MatcherKind_ANY_instance = new MatcherKind('ANY', 1);
  MatcherKind_END_OF_LINE_OR_INPUT_instance = new MatcherKind('END_OF_LINE_OR_INPUT', 2);
  MatcherKind_NEGATED_instance = new MatcherKind('NEGATED', 3);
  MatcherKind_LITERAL_instance = new MatcherKind('LITERAL', 4);
  MatcherKind_ONE_OF_instance = new MatcherKind('ONE_OF', 5);
  MatcherKind_RANGE_instance = new MatcherKind('RANGE', 6);
}
function addNextStates(nextStates, next) {
  var tmp;
  if (null == next) {
    tmp = false;
  } else {
    var tmp_0;
    if (next.wl_1) {
      var tmp0 = next.xl_1;
      var tmp$ret$0;
      $l$block_0: {
        // Inline function 'kotlin.collections.any' call
        var tmp_1;
        if (isInterface(tmp0, Collection)) {
          tmp_1 = tmp0.a1();
        } else {
          tmp_1 = false;
        }
        if (tmp_1) {
          tmp$ret$0 = false;
          break $l$block_0;
        }
        var _iterator__ex2g4s = tmp0.s();
        while (_iterator__ex2g4s.t()) {
          var element = _iterator__ex2g4s.u();
          if (addNextStates(nextStates, element.dm_1)) {
            tmp$ret$0 = true;
            break $l$block_0;
          }
        }
        tmp$ret$0 = false;
      }
      tmp_0 = tmp$ret$0;
    } else {
      nextStates.r(next);
      tmp_0 = equals(next, Companion_getInstance().zl_1);
    }
    tmp = tmp_0;
  }
  return tmp;
}
var TransitionKind_MATCHER_instance;
var TransitionKind_EMPTY_instance;
var TransitionKind_END_OF_LINE_OR_INPUT_instance;
var TransitionKind_entriesInitialized;
function TransitionKind_initEntries() {
  if (TransitionKind_entriesInitialized)
    return Unit_instance;
  TransitionKind_entriesInitialized = true;
  TransitionKind_MATCHER_instance = new TransitionKind('MATCHER', 0);
  TransitionKind_EMPTY_instance = new TransitionKind('EMPTY', 1);
  TransitionKind_END_OF_LINE_OR_INPUT_instance = new TransitionKind('END_OF_LINE_OR_INPUT', 2);
}
function MatcherKind_EMPTY_getInstance() {
  MatcherKind_initEntries();
  return MatcherKind_EMPTY_instance;
}
function MatcherKind_ANY_getInstance() {
  MatcherKind_initEntries();
  return MatcherKind_ANY_instance;
}
function MatcherKind_END_OF_LINE_OR_INPUT_getInstance() {
  MatcherKind_initEntries();
  return MatcherKind_END_OF_LINE_OR_INPUT_instance;
}
function MatcherKind_NEGATED_getInstance() {
  MatcherKind_initEntries();
  return MatcherKind_NEGATED_instance;
}
function MatcherKind_LITERAL_getInstance() {
  MatcherKind_initEntries();
  return MatcherKind_LITERAL_instance;
}
function MatcherKind_ONE_OF_getInstance() {
  MatcherKind_initEntries();
  return MatcherKind_ONE_OF_instance;
}
function MatcherKind_RANGE_getInstance() {
  MatcherKind_initEntries();
  return MatcherKind_RANGE_instance;
}
function TransitionKind_MATCHER_getInstance() {
  TransitionKind_initEntries();
  return TransitionKind_MATCHER_instance;
}
function TransitionKind_EMPTY_getInstance() {
  TransitionKind_initEntries();
  return TransitionKind_EMPTY_instance;
}
var RegexEngineKind_PLATFORM_instance;
var RegexEngineKind_AGL_instance;
function values() {
  return [RegexEngineKind_PLATFORM_getInstance(), RegexEngineKind_AGL_getInstance()];
}
function valueOf(value) {
  switch (value) {
    case 'PLATFORM':
      return RegexEngineKind_PLATFORM_getInstance();
    case 'AGL':
      return RegexEngineKind_AGL_getInstance();
    default:
      RegexEngineKind_initEntries();
      THROW_IAE('No enum constant value.');
      break;
  }
}
var RegexEngineKind_entriesInitialized;
function RegexEngineKind_initEntries() {
  if (RegexEngineKind_entriesInitialized)
    return Unit_instance;
  RegexEngineKind_entriesInitialized = true;
  RegexEngineKind_PLATFORM_instance = new RegexEngineKind('PLATFORM', 0);
  RegexEngineKind_AGL_instance = new RegexEngineKind('AGL', 1);
}
function RegexEngineKind_PLATFORM_getInstance() {
  RegexEngineKind_initEntries();
  return RegexEngineKind_PLATFORM_instance;
}
function RegexEngineKind_AGL_getInstance() {
  RegexEngineKind_initEntries();
  return RegexEngineKind_AGL_instance;
}
var RegexEnginePlatform_instance;
function RegexEnginePlatform_getInstance() {
  if (RegexEnginePlatform_instance === VOID)
    new RegexEnginePlatform_0();
  return RegexEnginePlatform_instance;
}
var RegexEngineAgl_instance;
function RegexEngineAgl_getInstance() {
  if (RegexEngineAgl_instance === VOID)
    new RegexEngineAgl_0();
  return RegexEngineAgl_instance;
}
//region block: post-declaration
initMetadataForObject(BuildConfig_0, 'BuildConfig');
initMetadataForClass(RegexMatcherBuilder, 'RegexMatcherBuilder');
initMetadataForCompanion(Companion);
initMetadataForInterface(RegexMatcher, 'RegexMatcher');
protoOf(RegexMatcherImpl).match = match;
initMetadataForClass(RegexMatcherImpl, 'RegexMatcherImpl', VOID, VOID, [RegexMatcher]);
initMetadataForClass(EscapeKind, 'EscapeKind');
initMetadataForCompanion(Companion_0);
initMetadataForClass(RegexParser, 'RegexParser');
initMetadataForCompanion(Companion_1);
initMetadataForClass(RegexValueProvider, 'RegexValueProvider');
initMetadataForCompanion(Companion_2);
initMetadataForClass(CharacterMatcher, 'CharacterMatcher');
initMetadataForClass(MatcherKind, 'MatcherKind');
initMetadataForClass(State, 'State');
initMetadataForClass(Transition, 'Transition');
initMetadataForClass(TransitionKind, 'TransitionKind');
initMetadataForClass(Fragment, 'Fragment');
initMetadataForClass(RegexEngineKind, 'RegexEngineKind');
initMetadataForInterface(MatchResult, 'MatchResult');
initMetadataForClass(MatchResultAgl, 'MatchResultAgl', VOID, VOID, [MatchResult]);
initMetadataForInterface(Regex_0, 'Regex');
initMetadataForInterface(RegexEngine, 'RegexEngine');
initMetadataForClass(RegexPlatform, 'RegexPlatform', VOID, VOID, [Regex_0]);
initMetadataForClass(RegexAgl, 'RegexAgl', VOID, VOID, [Regex_0]);
initMetadataForObject(RegexEnginePlatform_0, 'RegexEnginePlatform', VOID, VOID, [RegexEngine]);
initMetadataForObject(RegexEngineAgl_0, 'RegexEngineAgl', VOID, VOID, [RegexEngine]);
//endregion
//region block: init
BuildConfig_instance = new BuildConfig_0();
//endregion
//region block: exports
var BuildConfig = {getInstance: BuildConfig_getInstance};
defineProp(RegexValueProvider, 'Companion', Companion_getInstance_1);
RegexEngineKind.values = values;
RegexEngineKind.valueOf = valueOf;
defineProp(RegexEngineKind, 'PLATFORM', RegexEngineKind_PLATFORM_getInstance);
defineProp(RegexEngineKind, 'AGL', RegexEngineKind_AGL_getInstance);
var RegexEnginePlatform = {getInstance: RegexEnginePlatform_getInstance};
var RegexEngineAgl = {getInstance: RegexEngineAgl_getInstance};
export {
  BuildConfig as BuildConfig,
  regexMatcher as regexMatcher,
  RegexValueProvider as RegexValueProvider,
  RegexEngineKind as RegexEngineKind,
  RegexPlatform as RegexPlatform,
  RegexAgl as RegexAgl,
  RegexEnginePlatform as RegexEnginePlatform,
  RegexEngineAgl as RegexEngineAgl,
};
export {
  RegexEngineKind_PLATFORM_getInstance as RegexEngineKind_PLATFORM_getInstancee9x0uwmxnmy0,
  RegexEngineAgl_getInstance as RegexEngineAgl_getInstance1v73djgixeep,
  RegexEnginePlatform_getInstance as RegexEnginePlatform_getInstance3aim5ebqg16so,
  RegexValueProvider as RegexValueProvider1jsd46klwvaq9,
  regexMatcher as regexMatcher7lcajteh1ep3,
};
//endregion

//# sourceMappingURL=net.akehurst.language-agl-regex.mjs.map